LLaMAX2-7B-MetaMath / README.md
LLaMAX's picture
Update README.md
042bc28 verified
|
raw
history blame
No virus
3.66 kB
metadata
tags:
  - Multilingual

Model Sources

Model Description

🔥 LLaMAX2-7B-MetaMath is fully fine-tuned on the MetaMathQA dataset based on the powerful multilingual model LLaMAX2-7B.

🔥 Compared with the MetaMath-7B, LLaMAX2-7B-MetaMath performs significantly better in mathematical reasoning in low-resource languages, improving the average accuracy of low-resource languages on MGSM dataset by up to 18.8%.

🔥 LLaMAX2-7B-MetaMath demonstrates good multilingual math reasoning capability in all languages, improving the average accuracy by 6.2% across all languages in MGSM dataset.

Experiments

We evaluated LLaMAX2-7B-MetaMath on the MGSM dataset. Compared with MetaMath-7B, LLaMAX-7B-MetaMath achieves a leading on both high-resource languages (Hrl.) and low-resource languages (Lrl.).

MGSM Avg. Lrl. Hrl. Bn Th Sw Ja Zh De Fr Ru Es En
MetaMath-7B (official) 38.32 6.9 51.8 6.8 7.2 6.8 36.4 38.4 55.2 54.4 52.0 57.2 68.8
MetaMath-7B (Reproduced) 38.08 6.8 51.5 6.0 10.0 4.4 36.4 42.8 52.8 56.0 48.8 58.8 64.8
LLaMAX2-7B-MetaMath 44.28 25.6 52.3 26.8 24.0 26.0 35.6 42.4 56.8 55.2 53.6 56.8 65.6

Model Usage

Prompt template:

def Prompt_template(query):
    prompt = (
         "Below is an instruction that describes a task. "
         "Write a response that appropriately completes the request.\n\n"
         f"### Instruction:\n{query}\n\n### Response: Let's think step by step."
    )
    return prompt

Code Example:

from transformers import AutoTokenizer, LlamaForCausalLM

model = LlamaForCausalLM.from_pretrained(PATH_TO_CONVERTED_WEIGHTS)
tokenizer = AutoTokenizer.from_pretrained(PATH_TO_CONVERTED_TOKENIZER)

query = "Bert fills out the daily crossword puzzle in the newspaper every day. He uses a pencil to fill out the puzzles every two weeks. On average, it takes him 1050 words to use up a pencil. How many words are in each crossword puzzle on average?"
prompt = Prompt_template(query)
inputs = tokenizer(prompt, return_tensors="pt")

generate_ids = model.generate(inputs.input_ids, max_length=30)
tokenizer.batch_decode(generate_ids, skip_special_tokens=True, clean_up_tokenization_spaces=False)[0]

# => "If Bert uses up a pencil to fill out the puzzles every two weeks and it takes him 1050
words to use up a pencil, then he must be filling out 1050 words of crossword puzzles every
two weeks. To find out how many words are in each daily crossword puzzle, we need to divide
the total number of words (1050) by the number of days in two weeks (14). So, there are
1050/14 = 75 words in each daily crossword puzzle on average. #### The answer is: 75“

Citation

if our model helps your work, please cite this paper:

@misc{lu2024llamaxscalinglinguistichorizons,
      title={LLaMAX: Scaling Linguistic Horizons of LLM by Enhancing Translation Capabilities Beyond 100 Languages}, 
      author={Yinquan Lu and Wenhao Zhu and Lei Li and Yu Qiao and Fei Yuan},
      year={2024},
      eprint={2407.05975},
      archivePrefix={arXiv},
      primaryClass={cs.CL},
      url={https://arxiv.org/abs/2407.05975}, 
}