Spaces:
Sleeping
Sleeping
| import asyncio | |
| import json | |
| import time | |
| import ray | |
| from datasets import load_dataset | |
| from lagent.distributed.ray_serve import AsyncAgentRayActor | |
| from lagent.llms import INTERNLM2_META | |
| from lagent.llms.lmdeploy_wrapper import AsyncLMDeployPipeline | |
| ray.init() | |
| # set up the loop | |
| # initialize the model | |
| loop = asyncio.new_event_loop() | |
| asyncio.set_event_loop(loop) | |
| model = dict( | |
| type=AsyncLMDeployPipeline, | |
| path='internlm/internlm2_5-7b-chat', | |
| meta_template=INTERNLM2_META, | |
| tp=1, | |
| top_k=1, | |
| temperature=1.0, | |
| stop_words=['<|im_end|>', '<|action_end|>'], | |
| max_new_tokens=1024, | |
| ) | |
| # ----------------------- interpreter ----------------------- | |
| print('-' * 80, 'interpreter', '-' * 80) | |
| ds = load_dataset('lighteval/MATH', split='test') | |
| problems = [item['problem'] for item in ds.select(range(5000))] | |
| coder = dict( | |
| type='lagent.agents.stream.AsyncMathCoder', | |
| llm=model, | |
| interpreter=dict(type='AsyncIPythonInterpreter', max_kernels=300), | |
| ) | |
| tic = time.time() | |
| actor1 = AsyncAgentRayActor(coder.copy(), num_gpus=1) | |
| actor2 = AsyncAgentRayActor(coder.copy(), num_gpus=1) | |
| corots = [ | |
| actor1(query, session_id=i) | |
| for i, query in enumerate(problems[:len(problems) // 2]) | |
| ] | |
| corots += [ | |
| actor2(query, session_id=i) | |
| for i, query in enumerate(problems[len(problems) // 2:]) | |
| ] | |
| results = loop.run_until_complete(asyncio.gather(*corots)) | |
| print('-' * 120) | |
| print(f'time elapsed: {time.time() - tic}') | |
| all_step = ray.get([ | |
| actor1.agent_actor.get_steps.remote(i) for i in range(len(problems) // 2) | |
| ]) | |
| all_step += ray.get([ | |
| actor2.agent_actor.get_steps.remote(i) | |
| for i in range(len(problems[len(problems) // 2:])) | |
| ]) | |
| with open('./tmp_1.json', 'w') as f: | |
| json.dump(all_step, f, ensure_ascii=False, indent=4) | |