Instructions to use KexuanShi/Megatron-LM with libraries, inference providers, notebooks, and local apps. Follow these links to get started.
- Libraries
- NeMo
How to use KexuanShi/Megatron-LM with NeMo:
# tag did not correspond to a valid NeMo domain.
- Notebooks
- Google Colab
- Kaggle
| import random | |
| import datasets | |
| from .math_agent import MathAgent | |
| raw_dataset = datasets.load_dataset("BytedTsinghua-SIA/DAPO-Math-17k", split="train") | |
| TRAIN_SIZE = 17917 - 1024 | |
| TEST_SIZE = 1024 | |
| train_dataset = raw_dataset.select(range(TRAIN_SIZE)) | |
| test_dataset = raw_dataset.select(range(TRAIN_SIZE, TRAIN_SIZE + TEST_SIZE)) | |
| class DAPOAgent(MathAgent): | |
| env_id: str = "dapo" | |
| def reformat_datum(self, datum: dict) -> dict: | |
| return { | |
| "problem": datum['prompt'][0]['content'] | |
| .replace( | |
| 'The last line of your response should be of the form Answer: $Answer (without quotes) where $Answer is the answer to the problem.\n\n', | |
| '', | |
| ) | |
| .replace('\nRemember to put your answer on its own line after "Answer:".', ''), | |
| "answer": datum["reward_model"]["ground_truth"], | |
| "problem_id": datum["extra_info"]["index"], | |
| } | |
| def get_dataset(self, validation: bool = False): | |
| return train_dataset if not validation else test_dataset | |
| async def evaluation_prompts( | |
| self, num_prompts: int, validation: bool = False | |
| ) -> list[tuple[str, dict]]: | |
| dataset = self.get_dataset(validation) | |
| prompts = [] | |
| for i, golden in [(i, dataset[i]) for i in range(num_prompts)]: | |
| golden = self.reformat_datum(golden) | |
| prompts.append((self.make_prefix(**golden), golden)) | |
| return prompts | |
| async def get_prompt(self, validation=False) -> tuple[str, dict]: | |
| dataset = self.get_dataset(validation) | |
| golden = dataset[random.randrange(len(dataset))] | |
| golden = self.reformat_datum(golden) | |
| prompt = self.make_prefix(**golden) | |
| return prompt, golden | |
| async def get_reward(self, response, golden: dict) -> float: | |
| return self.compute_score(response, golden, golden_key="answer") | |