🚀 SambaLingo-Arabic-Chat
SambaLingo-Arabic-Chatは、アラビア語と英語で訓練された、人間に適合したチャットモデルです。ベースモデルのSambaLingo-Arabic-Baseの上で、直接嗜好最適化(Direct Preference Optimization)を用いて訓練されています。ベースモデルは、Llama-2-7bを、Cultura-Xデータセットのアラビア語分割からの630億トークンで訓練することで、アラビア語に適応させたものです。このモデルをSambaLingo-chat-spaceで試すことができます。
🚀 クイックスタート
Hugging Faceでのモデルの読み込み
トークナイザーを読み込む際には、use_fast=Falseを設定してください。
from transformers import AutoModelForCausalLM, AutoTokenizer
tokenizer = AutoTokenizer.from_pretrained("sambanovasystems/SambaLingo-Arabic-Chat", use_fast=False)
model = AutoModelForCausalLM.from_pretrained("sambanovasystems/SambaLingo-Arabic-Chat", device_map="auto", torch_dtype="auto")
モデルパイプラインとの対話
トークナイザーを読み込む際には、use_fast=Falseを設定してください。
from transformers import pipeline
pipe = pipeline("text-generation", model="sambanovasystems/SambaLingo-Arabic-Chat", device_map="auto", use_fast=False)
messages = [
{"role": "user", "content": {YOUR_QUESTION}},
]
prompt = pipe.tokenizer.apply_chat_template(messages, tokenize=False, add_generation_prompt=True)
outputs = pipe(prompt)[0]
outputs = outputs["generated_text"]
推論パラメータの提案
- 温度(Temperature): 0.8
- 繰り返しペナルティ(Repetition penalty): 1.0
- Top-p: 0.9
プロンプトガイドライン
このモデルにプロンプトを与えるには、以下のチャットテンプレートを使用してください。
<|user|>\n{question}</s>\n<|assistant|>\n
プロンプトと生成の例
<|user|>
كملك، هل الاحسن أن تكون محبوب أو مخيف</s>
<|assistant|>
لا أستطيع إبداء الرأي أو امتلاك المشاعر، لكن يمكنني تقديم إجابة موضوعية على هذا السؤال. في حين أن كونك محبوبًا يمكن أن يجلب السعادة والرضا، فإن كونك مخيفًا يمكن أن يكون له أيضًا فوائده. على سبيل المثال، يمكن أن يكون الشخص المخيف فعالاً في ردع السلوكيات أو المواقف غير المرغوب فيها، مثل التخريب أو التنمر. ومع ذلك، من المهم أن نتذكر أن الحب والقبول هما قيمتان مهمتان يجب السعي لتحقيقهما، وأن كونك محبوبًا لا ينبغي أن يكون الهدف النهائي. وبدلاً من ذلك، يجب أن نسعى جاهدين لنكون طيبين ورحيمين مع الآخرين، مع الاعتراف أيضًا بأن كل شخص لديه نقاط القوة والضعف الخاصة به.
✨ 主な機能
SambaLingo-Arabic-Chatは、アラビア語と英語で訓練されたチャットモデルで、直接嗜好最適化を用いて訓練されています。ベースモデルはLlama-2-7bをアラビア語に適応させたもので、広範なデータセットを使用して訓練されています。
📚 ドキュメント
モデルの説明
トークナイザーの詳細
ベースのLlamaモデルの語彙を、新しい言語から最大25,000の重複しないトークンを追加することで、32,000トークンから57,000トークンに拡張しました。
評価
評価結果については、私たちの論文を参照してください: SambaLingo: Teaching Large Language Models New Languages
使用方法
直接使用
このモデルの使用は、MetaのLlama 2 Community License Agreementによって管理されています。モデルの重みをダウンロードする前に、ライセンスを確認して承諾してください。
範囲外の使用
SambaLingoは以下の用途には使用しないでください。
- 使命クリティカルなアプリケーション
- 他人の安全に関わるアプリケーション
- 非常に重要な決定を行うアプリケーション
バイアス、リスク、および制限
他のすべての大規模言語モデル(LLM)と同様に、SambaLingoには特定の制限があります。
- 幻覚(Hallucination): モデルは時々、もっともらしく聞こえるが事実と異なるまたは関連性のない情報を含む応答を生成することがあります。
- コードスイッチング(Code Switching): モデルは、単一の応答内で意図せず言語や方言を切り替えることがあり、出力の一貫性と理解しやすさに影響を与えます。
- 繰り返し: モデルは繰り返しのフレーズや文を生成することがあり、魅力的で有益な応答が得られなくなります。
- コーディングと数学: モデルは正確なコードを生成したり、複雑な数学問題を解いたりする能力が限られている場合があります。
- 毒性: モデルは不適切または有害な内容を含む応答を意図せず生成する可能性があります。
🔧 技術詳細
アライメントフェーズは、Zephyr-7Bのレシピに従い、教師付き微調整(SFT)と直接性能最適化(DPO)の2つの段階で構成されています。
SFTフェーズは、ultrachat_200kデータセットと、Google翻訳されたバージョンのultrachat_200kデータセットを混合したもので行われました。グローバルバッチサイズ512、最大シーケンス長2048トークンで1エポック訓練しました。学習率は2e-5の線形減衰を使用し、10%のウォームアップを行いました。
DPOフェーズは、ultrafeedbackデータセットとcai-conversation-harmlessデータセットを、Google翻訳されたデータの10%と混合したもので行われました。グローバルバッチサイズ32で3エポック訓練しました。学習率は5e-7の線形減衰を使用し、10%のウォームアップを行い、DPOの正則化係数としてβ=0.1を使用しました。
📄 ライセンス
このモデルのライセンスはllama2です。
謝辞
私たちは、オープンソースAIコミュニティに心から感謝を表します。この取り組みは、オープンソースなしでは不可能でした。SambaNovaはオープンソースコミュニティを受け入れ、このイニシアチブに積極的に貢献することを目指しています。
以下のグループに特別な感謝を捧げます。
- MetaがLLama 2をオープンソース化し、FLORES-200データセットを公開してくれたこと
- NguyenらがCulturaXデータセットをオープンソース化してくれたこと
- CohereAIがAYA-101をリリースし、多言語命令微調整データセットをオープンソース化してくれたこと
- EleutherAIがオープンソースの評価フレームワークを提供してくれたこと
- Hugging Face-H4チームがZephyrの訓練レシピとアライメントハンドブックのリポジトリをオープンソース化してくれたこと
SambaLingoを引用する
@misc{csaki2024sambalingo,
title={SambaLingo: Teaching Large Language Models New Languages},
author={Zoltan Csaki and Bo Li and Jonathan Li and Qiantong Xu and Pian Pawakapan and Leon Zhang and Yun Du and Hengyu Zhao and Changran Hu and Urmish Thakker},
year={2024},
eprint={2404.05829},
archivePrefix={arXiv},
primaryClass={cs.CL}
}