병렬 처리 질문 있습니다.
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
제공해주신 레포가 Windows 환경에 너무 비친화적입니다.
0
40
2
마크다운을 텍스트 파일로 변환하기
0
41
1
max token을 제한하는게 왜 성능을 개선하게 되는걸까요?
0
55
2
pyzerox 유니코드 에러
0
81
2
영상 메타데이터 생성 관련 LLM 활용 질문
0
76
1
종합부동산세 부분 tool 사용 질문 드립니다.
0
81
2
uv sync 파이썬 버전문제 onnxruntime
-1
119
2
MCP를 활용해서 간단한 에이전트를 만들어보세요
0
101
1
PDF 형식
0
72
1
5.3 langchain-mcp-adpater를 활용한 MCP 도구 사용 tool_list 지연 사유
0
98
2
3.6 human_in_the_loop 3rd case
0
84
1
summary 를. 시스템메세지에 추가하는 부분에 관하여
0
81
3
병렬 처리 중 retrieve 관련 궁금한 사항
0
80
1
query 에 대한 answer 결과값이 나오지 않습니다.
0
98
2
사람과 관련된 표현이 없는데 rewrite 로 이동하지 않는경우
0
80
1
retriever 관련 질문
0
66
1
인터룹 관련 질문
0
51
2
2.4 Self-RAG 결과가 달라요!
0
80
2
md vs txt 차이..
0
154
2
OpenAI API 호출 때문에 발생하는 Error code: 429 문제
0
125
2
단순 도구 사용과 도구를 가진 에이전트를 사용하는 것의 차이가 궁금합니다.
0
90
1
LangChain과 LangGraph v1
0
142
1
2.4 강의 관련 질문(답변을 검증하는 self rag)
0
77
2
후속강의 문의
0
75
2





