| | import asyncio |
| | import json |
| | import time |
| |
|
| | from datasets import load_dataset |
| |
|
| | from lagent.agents.stream import AsyncAgentForInternLM, AsyncMathCoder |
| | from lagent.llms import INTERNLM2_META |
| | from lagent.llms.vllm_wrapper import AsyncVllmModel |
| | from lagent.prompts.parsers import ToolParser |
| |
|
| | |
| | loop = asyncio.new_event_loop() |
| | asyncio.set_event_loop(loop) |
| | |
| | model = AsyncVllmModel( |
| | path='Qwen/Qwen2-7B-Instruct', |
| | meta_template=INTERNLM2_META, |
| | tp=1, |
| | top_k=1, |
| | temperature=1.0, |
| | stop_words=['<|im_end|>', '\n```\n'], |
| | max_new_tokens=1024, |
| | ) |
| |
|
| | |
| | print('-' * 80, 'interpreter', '-' * 80) |
| |
|
| | ds = load_dataset('lighteval/MATH', split='test') |
| | problems = [item['problem'] for item in ds.select(range(50))] |
| |
|
| | coder = AsyncMathCoder( |
| | llm=model, |
| | interpreter=dict( |
| | type='lagent.actions.AsyncIPythonInterpreter', max_kernels=200), |
| | output_format=ToolParser( |
| | 'interpreter', |
| | template= |
| | ('Integrate step-by-step reasoning and Python code to solve math problems ' |
| | 'using the following guidelines:\n' |
| | '- Analyze the question and write jupyter code to solve the problem;\n' |
| | r"- Present the final result in LaTeX using a '\boxed{{}}' without any " |
| | 'units. \n'), |
| | begin='\n```python\n', |
| | end='\n```\n')) |
| |
|
| | tic = time.time() |
| | coros = [coder(query, session_id=i) for i, query in enumerate(problems)] |
| | res = loop.run_until_complete(asyncio.gather(*coros)) |
| | |
| | print('-' * 120) |
| | print(f'time elapsed: {time.time() - tic}') |
| |
|
| | with open('./tmp_3.json', 'w') as f: |
| | json.dump([coder.get_steps(i) for i in range(len(res))], |
| | f, |
| | ensure_ascii=False, |
| | indent=4) |
| |
|