🚀 SambaLingo-Serbian-Chat
SambaLingo-Serbian-Chatは、セルビア語と英語で学習された、人間に合わせたチャットモデルです。このモデルは、ベースモデルのSambaLingo-Serbian-Baseの上で、直接的な嗜好最適化(Direct Preference Optimization)を用いて学習されています。ベースモデルは、Llama-2-7bを、Cultura-Xデータセットのセルビア語分割からの170億トークンで学習することで、セルビア語に適応させたものです。このモデルは、SambaLingo-chat-spaceで試すことができます。
🚀 クイックスタート
Hugging Faceでのモデルの読み込み
トークナイザーを読み込む際には、use_fast=Falseを設定してください。
from transformers import AutoModelForCausalLM, AutoTokenizer
tokenizer = AutoTokenizer.from_pretrained("sambanovasystems/SambaLingo-Serbian-Chat", use_fast=False)
model = AutoModelForCausalLM.from_pretrained("sambanovasystems/SambaLingo-Serbian-Chat", device_map="auto", torch_dtype="auto")
モデルパイプラインとのやり取り
トークナイザーを読み込む際には、use_fast=Falseを設定してください。
from transformers import pipeline
pipe = pipeline("text-generation", model="sambanovasystems/SambaLingo-Serbian-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
- トップp(Top-p): 0.9
プロンプトガイドライン
このモデルにプロンプトを与えるには、以下のチャットテンプレートを使用してください。
<|user|>\n{question}</s>\n<|assistant|>\n
プロンプトと生成の例
<|user|>
Od kada datiraju prva naselja na prostoru danasnjeg Beograda, i kada je grad osnovan?</s>
<|assistant|>
Beograd su naseljavali ljudi još u praistoriji, a prva naselja datiraju iz neolitskih vremena, pre oko 7.000 godina. Međutim, grad Beograd nije osnovan upravo u to vreme, već u srednjem veku, kada su Srbi u 9. veku osnovali srednjovekovni grad Beograd, na mestu današnjeg Kalemegdana. Grad je kasnije pretrpeo razna oсвајања, razaranja i obnavljanja, da bi se na kraju razvio u značajnu evropsku metropolu.
✨ 主な機能
SambaLingo-Serbian-Chatは、セルビア語と英語でのチャットに最適化された言語モデルです。ベースモデルのLlama-2-7bをセルビア語に適応させ、直接的な嗜好最適化を用いて学習することで、人間に合わせた回答を生成することができます。
📦 インストール
このモデルは、Hugging Faceのモデルハブから直接利用することができます。上記のクイックスタートセクションに記載されているコードを使用して、モデルを読み込むことができます。
📚 ドキュメント
モデルの説明
学習の詳細
アライメントフェーズは、Zephyr-7Bのレシピに従い、教師付きファインチューニング(SFT)と直接的な性能最適化(DPO)の2つの段階から構成されています。
SFTフェーズは、ultrachat_200kデータセットと、Google翻訳されたバージョンのultrachat_200kデータセットを混合したもので行われました。グローバルバッチサイズ512、最大シーケンス長2048トークンで1エポック学習されました。線形減衰学習率2e-5と10%のウォームアップを使用しました。
DPOフェーズは、ultrafeedbackデータセットとcai-conversation-harmlessデータセットで行われ、10%のデータをGoogle翻訳したものを混合しました。グローバルバッチサイズ32で3エポック学習されました。線形減衰学習率5e-7、10%のウォームアップ、およびβ=0.1をDPOの正則化係数として使用しました。
トークナイザーの詳細
ベースのLlamaモデルの語彙を、新しい言語から最大25,000の重複しないトークンを追加することで、32,000トークンから57,000トークンに拡張しました。
評価
評価結果については、論文を参照してください: SambaLingo: Teaching Large Language Models New Languages
使用方法
直接使用
このモデルの使用は、MetaのLlama 2 Community License Agreementによって管理されています。モデルの重みをダウンロードする前に、ライセンスを確認して受け入れてください。
範囲外の使用
SambaLingoは、以下の用途には使用しないでください。
- 使命クリティカルなアプリケーション
- 他人の安全に関わるアプリケーション
- 非常に重要な決定を行うアプリケーション
バイアス、リスク、および制限
他のすべての大規模言語モデル(LLM)と同様に、SambaLingoには特定の制限があります。
- 幻覚: モデルは時々、もっともらしいが事実上誤ったまたは関係のない情報を含む応答を生成することがあります。
- コードスイッチング: モデルは、単一の応答内で意図せず言語や方言を切り替えることがあり、出力の一貫性と理解性に影響を与えます。
- 繰り返し: モデルは繰り返しのフレーズや文を生成することがあり、魅力的で有益な応答が得られないことがあります。
- コーディングと数学: モデルが正確なコードを生成したり、複雑な数学問題を解いたりする能力は限られています。
- 毒性: モデルは誤って不適切または有害な内容を含む応答を生成することがあります。
🔧 技術詳細
このモデルは、Llama-2-7bをベースに、セルビア語に適応させるためにCultura-Xデータセットを使用して学習されました。アライメントフェーズでは、SFTとDPOの2段階の学習を行い、人間に合わせた回答を生成するように最適化されています。
📄 ライセンス
このモデルは、Llama 2のライセンスに基づいて提供されています。詳細については、Llama 2 Community License Agreementを参照してください。
謝辞
この取り組みは、オープンソースがなければ不可能でした。オープンソース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}
}