モデル概要
モデル特徴
モデル能力
使用事例
🚀 Llama3-German-8B-32k (version 0.1)
このバージョンのモデルは、以下で説明されている長文脈拡張バージョンを指します。
Llama3-German-8B-v0.1は、MetaのLlama3-8Bに基づく大規模言語モデルです。これは、650億の高品質トークンを用いた継続的事前学習により、ドイツ語に特化しています。これは、以前のLeoLMやOcciglotモデルと同様のアプローチです。
Llama3自体は15Tのトークンで学習されましたが、そのうち多言語のトークンは<1Tでした。このため、ドイツ語での性能は最適ではなく、言語能力が低下し、文法エラーが頻繁に発生することがあります。これが、継続的事前学習の必要性を生み出しました。当モデルのベンチマーク結果では、学習中にリプレイを行わなかったにもかかわらず、英語の性能低下は最小限です。重要なことに、Llama3-German-8B-v0.1はドイツ語で大幅な改善を示しており、特に言語理解と一般的な推論を測定するHellaswagベンチマークで顕著です。
DiscoResearch/Llama3-German-8B-v0.1は、DiscoResearchとOcciglotの共同努力の成果であり、DFKI(ドイツ人工知能研究センター)とhessian.Aiの支援を受けています。Occiglotは、最新のデータセットリリースの一部として、データの前処理、フィルタリング、重複排除を行い、hessian.Aiの42スーパーコンピュータでのコンピューティング割り当てを共有してくれました。
🚀 クイックスタート
これはベースモデルであり、使用前にファインチューニングが必要な場合があります。様々なファインチューニング済みおよび長文脈バージョンについては、コレクションを参照してください。
✨ 主な機能
モデルの学習とハイパーパラメータ
モデルは、hessian.Ai 42の128台のGPUで約60時間学習されました。詳細なハイパーパラメータは以下の通りです。
パラメータ | 値 |
---|---|
シーケンス長 | 8192トークン |
学習率 | 1.5e-5から1.5e-6(コサインスケジュール) |
バッチサイズ | 4194304(512*8192)トークン |
マイクロバッチサイズ | 4*8192トークン |
学習ステップ | 15500 |
ウォームアップステップ | 155(1%) |
重み減衰 | 0.05 |
オプティマイザ | AdamW |
データの収集と前処理
事前学習には、occiglot-fineweb-0.5データセットからの650億のドイツ語トークンを使用しました。 データは、LLM-Datasetsの複数の精選されたデータセットと、OSCARのUngoliantパイプラインで処理された12のCommon-Crawlリリースで構成されています。
すべてのデータは、Huggingfaceのfine-webに基づく言語固有のフィルターセットでさらにフィルタリングされ、グローバルに重複排除されました。
詳細については、データセットカードと対応するブログ記事を参照してください。
評価と結果
モデルは、GermanBenchを使用して、一般的な英語ベンチマークとそれらのドイツ語版のセットで評価されました。
次の図は、ベースモデルmeta-llama/Meta-Llama3-8Bと2つの異なるハイパーパラメータ構成との比較でのベンチマーク結果を示しています。
異なる学習率を試して、うまく機能する設定を特定しました。最終的にリリースされたモデルは、学習率1.5e-5のバージョンです。
ベースモデルと長文脈モデルの詳細なベンチマークスコアは、次の表にあります。
モデル | truthful_qa_de | truthfulqa_mc | arc_challenge | arc_challenge_de | hellaswag | hellaswag_de | MMLU | MMLU-DE | 平均 |
---|---|---|---|---|---|---|---|---|---|
DiscoResearch/Llama3-German-8B | 0.49499 | 0.44838 | 0.55802 | 0.49829 | 0.79924 | 0.65395 | 0.62240 | 0.54413 | 0.57743 |
DiscoResearch/Llama3-German-8B-32k | 0.48920 | 0.45138 | 0.54437 | 0.49232 | 0.79078 | 0.64310 | 0.58774 | 0.47971 | 0.55982 |
meta-llama/Meta-Llama-3-8B-Instruct | 0.47498 | 0.43923 | 0.59642 | 0.47952 | 0.82025 | 0.60008 | 0.66658 | 0.53541 | 0.57656 |
長文脈拡張
ベースモデルに加えて、最大65kトークンの文脈長を処理できるLlama3-German-8Bの長文脈バージョン(DiscoResearch/Llama3-German-8B-32k)をリリースしています。このバリアントは、32kの文脈長で追加の1億トークンで学習され、rope_theta値を1.5e6
、学習率を1.5e-5
、バッチサイズを256*8192
トークンで使用し、それ以外はベースモデルと同じハイパーパラメータで学習されました。
命令微調整
命令微調整されたバージョンも提供しています:DiscoResearch/Llama3-DiscoLeo-Instruct-8B-v0.1。これは、DiscoLMドイツ語データセットを使用して微調整されています(長文脈モデルとしてもDiscoResearch/Llama3-DiscoLeo-Instruct-8B-32k-v0.1で利用可能)。 それぞれのモデルカードで詳細を確認できます。また、meta-llama/Meta-Llama3-8B-Instructと私たちの微調整モデルの実験的なマージ(DiscoResearch/Llama3-DiscoLeo-8B-DARE-Experimental)もチェックしてみてください。これは、Llama3-Instructの優れた機能を維持し、卓越したドイツ語能力を追加する試みです。
ドキュメントパッキング
私たちは、Dingらによる「Fewer Truncations Improve Language Modeling」論文に基づく、より賢いドキュメントパッキング戦略を採用しています。最初適合降順アルゴリズムを使用して、ドキュメントを切り捨てることなくバッチにパッキングします。 私たちは、より効率的な処理のために、10000ドキュメントのチャンクでデータをパッキングし、99%以上のパッキング効率を維持しています。シーケンス長より長いドキュメントは、シーケンス長のチャンクに分割されます。
このアプローチにより、同じデータと同じハイパーパラメータで学習する場合、全体的により高いベンチマークスコアが得られます。次の数値は、3e-5 lr
と12kステップの初期実験からのもので、元の論文で示されたものと同様の改善を示しています。
タスク | 単純なパッキング | 少ない切り捨てパッキング | 増加率 |
---|---|---|---|
truthfulqa_mc | 0.452648 | 0.467687 | 3.32% |
arc_challenge | 0.517918 | 0.528157 | 1.98% |
truthful_qa_de | 0.485529 | 0.492979 | 1.53% |
arc_challenge_de | 0.480375 | 0.493174 | 2.66% |
hellaswag | 0.776041 | 0.773352 | -0.35% |
hellaswag_de | 0.655248 | 0.653356 | -0.29% |
MMLU | 0.573719 | 0.579802 | 1.06% |
MMLU-DE | 0.504509 | 0.503863 | -0.13% |
以下は、論文で説明されている最初適合降順アルゴリズムの簡単な実装です。
def pack_documents(tokenized_documents):
# Sort documents by their length in descending order
sorted_docs = sorted(tokenized_documents, key=len, reverse=True)
# Initialize bins
bins = []
# Function to find the first bin that can accommodate the document
def find_bin(doc):
for b in bins:
if sum(len(d) for d in b) + len(doc) <= 8192:
return b
return None
# Place each document in the first available bin or create a new bin
for doc in sorted_docs:
target_bin = find_bin(doc)
if target_bin is not None:
target_bin.append(doc)
else:
# Create a new bin with this document if no suitable bin is found
bins.append([doc])
# Return results
return bins
モデルの構成
私たちは、DiscoLeo-8Bを以下の構成でリリースしています。
- 継続的事前学習済みのベースモデル
- 長文脈バージョン(32kの文脈長)
- ベースモデルの命令微調整バージョン
- 長文脈モデルの命令微調整バージョン
- Llama3-Instructとの実験的な
DARE-TIES
マージ - 量子化バージョンのコレクション
💻 使用例
基本的な使用法
from transformers import AutoModelForCausalLM, AutoTokenizer
import torch
device="cuda"
model = AutoModelForCausalLM.from_pretrained(
"DiscoResearch/Llama3-DiscoLeo-Instruct-8B-v0.1",
torch_dtype="auto",
device_map="auto"
)
tokenizer = AutoTokenizer.from_pretrained("DiscoResearch/Llama3-DiscoLeo-Instruct-8B-v0.1")
prompt = "Schreibe ein Essay über die Bedeutung der Energiewende für Deutschlands Wirtschaft"
messages = [
{"role": "system", "content": "Du bist ein hilfreicher Assistent."},
{"role": "user", "content": prompt}
]
text = tokenizer.apply_chat_template(
messages,
tokenize=False,
add_generation_prompt=True
)
model_inputs = tokenizer([text], return_tensors="pt").to(device)
generated_ids = model.generate(
model_inputs.input_ids,
max_new_tokens=512
)
generated_ids = [
output_ids[len(input_ids):] for input_ids, output_ids in zip(model_inputs.input_ids, generated_ids)
]
response = tokenizer.batch_decode(generated_ids, skip_special_tokens=True)[0]
📄 ライセンス
このモデルは、Llama3ライセンスの下で提供されています。
謝辞
このモデルは、Björn Plüster(DiscoResearch、ellamind)によって学習および評価されました。データの準備とプロジェクトの監督は、Manuel Brack(DFKI、TU-Darmstadt)によって行われました。データセットの収集と精選の初期作業は、Malte OstendorffとPedro Ortiz Suarezによって行われました。命令微調整は、Jan-Philipp HarriesとDaniel Auras(DiscoResearch、ellamind)によって作成されたDiscoLMドイツ語データセットを使用して行われました。私たちは、このコラボレーションを開始してくれたLAIONと友人たち、特にChristoph SchuhmannとJenia Jitsevに感謝を表します。
モデルの学習は、42スーパーコンピュータでのコンピューティンググラントによってサポートされています。これは、hessian AI、AIイノベーションラボ(ヘッセン州高等教育局、研究局、芸術局(HMWK)とヘッセン州内務局、安全保障局、国土安全保障局(HMinD)によって資金提供されています)、およびAIサービスセンター(連邦教育研究省(BMBF)によって資金提供されています)の開発における中心的な要素です。 学習データの精選は、ドイツ連邦経済気候行動省(BMWK)によって部分的に資金提供されています。 プロジェクトOpenGPT-X(プロジェクト番号68GX21007D)を通じてです。



