병렬 처리 질문 있습니다.
graph_builder.add_edge('get_tax_base_equation', 'calculate_tax_base')
graph_builder.add_edge('get_tax_deduction', 'calculate_tax_base')
graph_builder.add_edge('get_market_ratio', 'calculate_tax_base')2.7 병렬 처리를 통한 효율 개선 (feat. 프롬프트 엔지니어링).ipynb 에서 질문 있습니다.
3개가 병렬로 실행된다면 분명 먼저 끝나는 노드가 있을 거고 그러면 완료 노드 순서에 맞게 calculate_tax_base를 실행해야 하지만 결과를 보면 calculate_tax_base를 한번만 실행하더라고요. 그러면 어떠한 조작 없이도 ranggraph에서 add_edge를 사용한 노드라면 자동으로 병렬 처리 완료 상태를 보관하고 3개가 전부 종료 된 후 실행된다고 이해했는데 맞을 까요?
제가 이해한게 맞다면 add_edge를 사용하지 않은 노드(Comand 명령어 사용한 노드)들의 병렬 처리에서 스레드 동기화 처리가 자동으로 안되기 때문에 반드시 add_edge를 반드시 사용해야하나요?
이런 질문을 드리는 이유는 Command를 병렬로 처리해보고 있는데 궁금증이 생겨서 그렇습니다.!
messages = [
{"role": "system", "content": system_prompt},
] + state["messages"]
response = llm.with_structured_output(Routers).invoke(messages)
datasources = [router['next'] for router in response['nexts']]
print(datasources)
# FINISH를 analyst_node로 변환
goto_nodes = [
"analyst_node" if ds == "FINISH" else ds
for ds in datasources
]
# 병렬 실행을 위해 전체 리스트 반환
return Command(goto=goto_nodes)
답변 1
0
안녕하세요! 좋은 질문 감사합니다. 답변을 드리자면
3개가 병렬로 실행된다면 분명 먼저 끝나는 노드가 있을 거고 그러면 완료 노드 순서에 맞게 calculate_tax_base를 실행해야 하지만 결과를 보면 calculate_tax_base를 한번만 실행하더라고요. 그러면 어떠한 조작 없이도 ranggraph에서 add_edge를 사용한 노드라면 자동으로 병렬 처리 완료 상태를 보관하고 3개가 전부 종료 된 후 실행된다고 이해했는데 맞을 까요?
맞습니다. 3개가 모두 종료된 다음에 실행됩니다
그리고 앞에 3가지는 종종
pretty_print()로 확인했을 때 다 안보이는 경우가 많은데, 병렬작업이 끝나고 실행되는 노드의 state를 확인해보시면 정상적으로 다 끝난것을 확인하실 수 있을거에요
이런 질문을 드리는 이유는 Command를 병렬로 처리해보고 있는데 궁금증이 생겨서 그렇습니다.!
add_edge의 경우에는 DAG를 구성하기 때문에 의도하신대로 종속성을 가지고 병렬로 처리해야할 노드가 완료되는 것을 기다리지만,Command()는 DAG구성이 되지 않습니다.그래서 병렬로 실행은 가능하겠지만, analyst_node로 들어가기 전에 다른 노드의 작업들이 끝났다는게 보장되지 않을거에요.
다만 이건 이론상의 내용이고 저도 실제로 시도해보지는 않아서 만약 가능하다고 판단되시면 공유해주실 수 있을까요? 저를 비롯해서 유사한 궁금증을 갖고있는 다른 수강생분들께도 많은 도움이 될 것 같습니다
추가로 설명이 필요한 부분이 있으시면 말씀해주세요!
0
선생님 안녕하세요. Command()를 사용하여 병렬 처리하는 방법에 대해 고민을 계속 했습니다. 현재는 해당 문제를 해결 한 것 같아서 제가 해결한 내용 공유 드립니다.
https://github.com/tkddls3319/goto_supervisor_fastapi
코드 최종 결과 질문드립니다.
0
34
2
AgentState의 messages 확인해주세요.
0
33
2
2.3 Agentic RAG 관련 질문이 있습니다.
0
37
2
깃허브 레포지토리 확인 요청
0
50
2
제공해주신 레포가 Windows 환경에 너무 비친화적입니다.
0
86
2
마크다운을 텍스트 파일로 변환하기
0
94
1
max token을 제한하는게 왜 성능을 개선하게 되는걸까요?
0
84
2
pyzerox 유니코드 에러
0
105
2
영상 메타데이터 생성 관련 LLM 활용 질문
0
96
1
종합부동산세 부분 tool 사용 질문 드립니다.
0
96
2
uv sync 파이썬 버전문제 onnxruntime
-1
155
2
MCP를 활용해서 간단한 에이전트를 만들어보세요
0
129
1
PDF 형식
0
87
1
5.3 langchain-mcp-adpater를 활용한 MCP 도구 사용 tool_list 지연 사유
0
112
2
3.6 human_in_the_loop 3rd case
0
98
1
summary 를. 시스템메세지에 추가하는 부분에 관하여
0
106
3
병렬 처리 중 retrieve 관련 궁금한 사항
0
89
1
query 에 대한 answer 결과값이 나오지 않습니다.
0
110
2
사람과 관련된 표현이 없는데 rewrite 로 이동하지 않는경우
0
87
1
retriever 관련 질문
0
73
1
인터룹 관련 질문
0
52
2
2.4 Self-RAG 결과가 달라요!
0
92
2
md vs txt 차이..
0
193
2
OpenAI API 호출 때문에 발생하는 Error code: 429 문제
0
144
2





