🚀 ALMA (Advanced Language Model-based trAnslator)
ALMAは、大規模言語モデル(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ファインチューニングを行います。
モデルチェックポイントは、huggingfaceで公開されています:
⚠️ 重要提示
ALMA-7B-Pretrain
と ALMA-13B-Pretrain
は翻訳モデルではありません。これらは第1段階の単言語ファインチューニング(7Bモデルには200億トークン、13Bモデルには120億トークン)のみを経ており、LoRAモデルと組み合わせて使用する必要があります。
ALMAおよびALMA-Rで使用されるデータセットも、huggingfaceで公開されています (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ライセンスの下で公開されています。