🚀 ALMA (Advanced Language Model-based trAnslator)
ALMA(Advanced Language Model-based trAnslator)は、大規模言語モデル(LLM)に基づく翻訳モデルです。新しい翻訳モデルパラダイムを採用しており、単言語データでのファインチューニングから始まり、高品質の並列データを用いてさらに最適化されます。この二段階のファインチューニングプロセスにより、強力な翻訳性能が保証されます。
詳細については、論文を参照してください。
@misc{xu2023paradigm,
title={A Paradigm Shift in Machine Translation: Boosting Translation Performance of Large Language Models},
author={Haoran Xu and Young Jin Kim and Amr Sharaf and Hany Hassan Awadalla},
year={2023},
eprint={2309.11674},
archivePrefix={arXiv},
primaryClass={cs.CL}
}
ALMA-R (NEW!) がリリースされました! ALMA-RはALMAモデルをベースに構築されており、ALMAで使用されている教師ありファインチューニングの代わりに、提案されたContrastive Preference Optimization (CPO) を用いてさらにLoRAファインチューニングを行っています。CPOファインチューニングには、嗜好学習のためにトリプレット嗜好データが必要です。ALMA-Rは現在、GPT-4やWMTの優勝モデルと匹敵する、あるいはそれを上回る性能を発揮します!
@misc{xu2024contrastive,
title={Contrastive Preference Optimization: Pushing the Boundaries of LLM Performance in Machine Translation},
author={Haoran Xu and Amr Sharaf and Yunmo Chen and Weiting Tan and Lingfeng Shen and Benjamin Van Durme and Kenton Murray and Young Jin Kim},
year={2024},
eprint={2401.08417},
archivePrefix={arXiv},
primaryClass={cs.CL}
}
論文で提示された6つの翻訳モデルをリリースしています:
- ALMA-7B:LLaMA-2-7Bを200億の単言語トークンで全重みファインチューニングし、その後、人が書いた並列データで全重みファインチューニングを行う。
- ALMA-7B-LoRA:LLaMA-2-7Bを200億の単言語トークンで全重みファインチューニングし、その後、人が書いた並列データでLoRAファインチューニングを行う。
- ALMA-7B-R (NEW!):ALMA-7B-LoRAに対して、対照的嗜好最適化を用いてさらにLoRAファインチューニングを行う。
- ALMA-13B:LLaMA-2-7Bを120億の単言語トークンで全重みファインチューニングし、その後、人が書いた並列データで全重みファインチューニングを行う。
- ALMA-13B-LoRA(最良のシステム):LLaMA-2-7Bを120億の単言語トークンで全重みファインチューニングし、その後、人が書いた並列データでLoRAファインチューニングを行う。
- ALMA-13B-R (NEW!):ALMA-13B-LoRAに対して、対照的嗜好最適化を用いてさらにLoRAファインチューニングを行う。
モデルのチェックポイントはHugging Faceで公開されています:
なお、ALMA-7B-Pretrain
と ALMA-13B-Pretrain
は翻訳モデルではありません。これらは第1段階の単言語ファインチューニング(7Bモデルには200億トークン、13Bモデルには120億トークン)のみを経ており、LoRAモデルと組み合わせて使用する必要があります。
ALMAとALMA-Rで使用されるデータセットも、Hugging Faceで公開されています(NEW!)
🚀 クイックスタート
システムALMA-13B-LoRAを使用した翻訳のクイックスタートです。「我爱机器翻译。」を英語に翻訳する例です:
基本的な使用法
import torch
from peft import PeftModel
from transformers import AutoModelForCausalLM
from transformers import LlamaTokenizer
model = AutoModelForCausalLM.from_pretrained("haoranxu/ALMA-13B-Pretrain", torch_dtype=torch.float16, device_map="auto")
model = PeftModel.from_pretrained(model, "haoranxu/ALMA-13B-Pretrain-LoRA")
tokenizer = LlamaTokenizer.from_pretrained("haoranxu/ALMA-13B-Pretrain", padding_side='left')
prompt="Translate this from Chinese to English:\nChinese: 我爱机器翻译。\nEnglish:"
input_ids = tokenizer(prompt, return_tensors="pt", padding=True, max_length=40, truncation=True).input_ids.cuda()
with torch.no_grad():
generated_ids = model.generate(input_ids=input_ids, num_beams=5, max_new_tokens=20, do_sample=True, temperature=0.6, top_p=0.9)
outputs = tokenizer.batch_decode(generated_ids, skip_special_tokens=True)
print(outputs)
詳細については、GitHubリポジトリを参照してください。
📄 ライセンス
このプロジェクトはMITライセンスの下で公開されています。