Skip to content

Commit 79407c4

Browse files
committed
fix memory leak
1 parent f532854 commit 79407c4

3 files changed

Lines changed: 28 additions & 15 deletions

File tree

ajet/default_config/ajet_default.yaml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
ajet:
33
project_name: "ajet_default_project"
44
experiment_name: "read_yaml_name"
5-
experiment_dir: "{exp-dir}/{experiment_name}" # {exp-dir}/{experiment_name}
5+
experiment_dir: "auto" # {exp-dir}/{experiment_name}
66
backbone: verl # `debug` or `trinity` or `verl`
77

88

ajet/default_config/ajet_ts_default.yaml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
ajet:
33
project_name: "ajet_default_project"
44
experiment_name: "read_yaml_name"
5-
experiment_dir: "{exp-dir}/{experiment_name}" # {exp-dir}/{experiment_name}
5+
experiment_dir: "auto" # {exp-dir}/{experiment_name}
66
backbone: verl
77

88
model:

ajet/tuner_lib/experimental/as_oai_model_client.py

Lines changed: 26 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -131,23 +131,36 @@ def _begin_service_threading(self):
131131
# begin to run the llm request, monitored by context tracker
132132
# we re-use previously created thread for best performance
133133
if DEBUG: logger.info(f"[client] {self.episode_uuid} | before asyncio run self.llm_infer")
134+
135+
# Check if there's a running event loop
134136
try:
135137
loop = asyncio.get_running_loop()
136-
except:
138+
created_new_loop = False
139+
except RuntimeError:
140+
# No running loop, create a new one
137141
loop = asyncio.new_event_loop()
138-
context_tracker_executor = SharedInferenceTrackerThreadExecutor(self.max_inference_tracker_threads).get_shared_executor()
139-
future = loop.run_in_executor(
140-
context_tracker_executor,
141-
asyncio.run,
142-
self.llm_proxy_with_tracker.chat_completion_request(
143-
req=parsed_msg.completion_request,
144-
timeline_uuid=parsed_msg.timeline_uuid,
145-
agent_name=parsed_msg.agent_name,
146-
target_tag=parsed_msg.target_tag,
147-
episode_uuid=parsed_msg.episode_uuid,
142+
asyncio.set_event_loop(loop)
143+
created_new_loop = True
144+
145+
try:
146+
context_tracker_executor = SharedInferenceTrackerThreadExecutor(self.max_inference_tracker_threads).get_shared_executor()
147+
future = loop.run_in_executor(
148+
context_tracker_executor,
149+
asyncio.run,
150+
self.llm_proxy_with_tracker.chat_completion_request(
151+
req=parsed_msg.completion_request,
152+
timeline_uuid=parsed_msg.timeline_uuid,
153+
agent_name=parsed_msg.agent_name,
154+
target_tag=parsed_msg.target_tag,
155+
episode_uuid=parsed_msg.episode_uuid,
156+
)
148157
)
149-
)
150-
result = loop.run_until_complete(future).model_dump_json() # type: ignore
158+
result = loop.run_until_complete(future).model_dump_json() # type: ignore
159+
finally:
160+
# Clean up the event loop if we created it
161+
if created_new_loop:
162+
loop.close()
163+
asyncio.set_event_loop(None)
151164

152165
if DEBUG: logger.info(f"[client] {self.episode_uuid} | before send_string (send llm call result)")
153166

0 commit comments

Comments
 (0)