🚀 Colossal-LLaMA-2-7B
Colossal-AIチームによって開発された、LLaMA-2をベースにしたオープンソースのモデルです。約85億トークンを用いて15時間の事前学習を行い、低コストで高性能を実現します。
🚀 クイックスタート
Colossal-AIチームは、オープンソースのモデルColossal-LLaMA-2-7B-baseを発表しました。このモデルはLLaMA-2を派生させたもので、約85億トークンを用いて15時間にわたる事前学習を行いました。わずか1000ドル未満のコストで、何百万ドルを費やして最初から事前学習を行った場合と同等の結果を達成することができます。このモデルはLLaMA-2のライセンスとApache 2.0 Licenseの下でライセンスされており、追加の商用利用制限はありません。このソリューションは、特定のドメイン知識やタスクのモデルを構築するためにも使用できます。
Colossal-LLaMA-2-7B-baseは、中国語と英語の両方に対応しており、4096トークンに及ぶ広いコンテキストウィンドウを備えています。実際、C-EvalやMMLUなどの標準的な中国語と英語の評価指標で、同等の規模のモデルと比較して卓越した性能を発揮しています。
💻 使用例
基本的な使用法
from transformers import AutoModelForCausalLM, AutoTokenizer
model = AutoModelForCausalLM.from_pretrained("hpcai-tech/Colossal-LLaMA-2-7b-base", device_map="auto", trust_remote_code=True)
tokenizer = AutoTokenizer.from_pretrained("hpcai-tech/Colossal-LLaMA-2-7b-base", trust_remote_code=True)
input = "明月松间照,\n\n->\n\n"
inputs = tokenizer(input, return_tensors='pt')
inputs = inputs.to('cuda:0')
pred = model.generate(**inputs,
max_new_tokens=512,
do_sample=True,
temperature=0.3,
top_k=50,
top_p=0.95,
num_return_sequences=1)
print(tokenizer.decode(pred.cpu()[0], skip_special_tokens=True)[len(input):])
📚 ドキュメント
性能評価
我々は4つのデータセットに対して包括的な評価を行い、Colossal-Llama-2-7b-baseモデルを様々なモデルと比較しました。
- MMLUには5-shotを使用し、最初に予測されたトークンのロジットに基づいてスコアを計算します。
- CMMLUには5-shotを使用し、最初に予測されたトークンのロジットに基づいてスコアを計算します。
- AGIEvalには5-shotを使用し、4択の質問に対してのみ、完全一致と最初に予測されたトークンのロジットを組み合わせたメトリックを使用してスコアを計算します。完全一致または最初に予測されたトークンのロジットのいずれかが正しければ、モデルはスコアを獲得します。
- GAOKAO-Benchには0-shotを使用し、4択の質問に対してのみ、最初に予測されたトークンのロジットに基づいてスコアを計算します。
- すべてのデータセットの生成設定は貪欲探索です。
- 我々はまた、最新のリーダーボードまたはモデルの公式リポジトリからのCEvalスコアも提供しています。
メトリックの詳細については、Metricsを参照してください。
属性 |
詳細 |
モデル名 |
バックボーン |
:----------------------------: |
:--------: |
|
- |
Baichuan-7B |
- |
Baichuan2-7B-Base |
- |
ChatGLM-6B |
- |
ChatGLM2-6B |
- |
InternLM-7B |
- |
Qwen-7B (original) |
- |
Qwen-7B |
- |
|
|
Llama-2-7B |
- |
Linly-AI/Chinese-LLaMA-2-7B-hf |
Llama-2-7B |
wenge-research/yayi-7b-llama2 |
Llama-2-7B |
ziqingyang/chinese-llama-2-7b |
Llama-2-7B |
TigerResearch/tigerbot-7b-base |
Llama-2-7B |
LinkSoul/Chinese-Llama-2-7b |
Llama-2-7B |
FlagAlpha/Atom-7B |
Llama-2-7B |
|
|
Colossal-LLaMA-2-7b-base |
Llama-2-7B |
括弧内のスコアは、モデルの公式リポジトリに記載されているスコアに対応しています。
ChatGLMモデルにはゼロショットを使用しています。
Qwen-7BをデータセットMMLUで評価する場合、プロンプトは「xxx Answer:」(「:」の後のスペースを削除)となり、Qwen-7Bについては「 A」、「 B」、「 C」、「 D」に対するロジットを計算します。Qwen-7Bの元のバージョンと更新されたバージョンの両方が、他のモデルよりもはるかに決定的である傾向があります。例えば、「 A」に対するロジットは-inf
になり、ソフトマックスは正確に0
になります。
他のモデルと他のデータセットについては、「A」、「B」、「C」、「D」に対するロジットを計算します。
❗️ 評価方法と結果の再現性の詳細については、ColossalEvalを参照してください。
🔧 技術詳細
データ
LLaMA-2などの大規模言語モデルは、高品質なデータセットの異種混合を使用してトレーニングされ、有望な結果をもたらしています。LLaMA-2の中国語コーパスに対する性能を向上させながら、英語での習熟度を維持するには、英語と中国語の両方の内容を含むデータセットの構成と、各構成データセットの品質という2つの重要な要素が重要です。
次の図は、Colossal-LLaMA-2に対して行われたデータ処理パイプラインを示しています。
❗️重要: 我々はすぐにデータ処理ツールキットをオープンソース化する予定です。ご期待ください!
トークナイザー
元のLLaMA-2の語彙には1000文字未満の中国語文字しか含まれていないため、包括的な中国語テキストを効果的にエンコードするには不十分です。また、バイトトークンを使用すると、トランスフォーマーエンコーダーが中国語文字の意味的ニュアンスを捉えることが困難になります。
上記の問題を解決するために、我々はLLaMA-2の語彙を32,000から69,104に拡張しました。Colossal-LLaMA-2トークナイザーでLLaMA-2モデルを使用するために、元のLLaMA-2の埋め込みから平均値を計算して新しい単語埋め込みを初期化し、これらの新しい行を元の埋め込み行列の末尾に追加します。
語彙サイズを拡張することの利点:
- 文字列シーケンスエンコーディングの圧縮率を向上させます。
- 情報の完全性を高めます。
- エンコードされたシーケンスにより多くの価値のある情報を含めることができ、理論的には章レベルのエンコーディング能力を向上させます。
低リソース環境下での大きな語彙サイズの利点:
- 多くの未使用トークンの存在は、限られたトレーニングデータセットに起因する可能性があり、過度のトークンが効果的に学習されていない場合があります。
- 過度の語彙拡張は埋め込み関連のパラメータの増加を招き、メモリ使用量が増加し、トレーニングプロセスの効率に影響を与えます。
両方の面をバランスさせるために、最終的にサイズ69,104の語彙を構築しました。次の表は、7Bレベルの様々なモデルの比較を示しています。
モデル |
語彙サイズ |
圧縮率 |
サンプルの平均長 (トークンレベル) |
Colossal-LLaMA-2 |
69104 |
0.659 |
73.682 |
LLaMA-2-7B |
32000 |
1.205 |
134.689 |
Atom-7B |
65000 |
0.634 |
70.915 |
Baichuan-7B |
64000 |
0.678 |
75.857 |
Baichuan2-7B-base |
125696 |
0.570 |
63.761 |
Chatglm2-6B |
64789 |
0.645 |
72.178 |
InternLM-7B |
103168 |
0.566 |
63.349 |
Qwen-7B |
151643 |
0.578 |
64.703 |
Tigerbot-7B-base |
60515 |
0.630 |
70.515 |
Yayi-7B-llama2 |
32005 |
1.214 |
135.689 |
Chinese-llama-2-7b |
55296 |
0.668 |
74.690 |
Chinese-Falcon-7B |
90046 |
0.669 |
74.858 |
LinkSoul-Chinese-Llama-2-7b |
40076 |
0.958 |
107.089 |
Ziya-LLaMA-13B-v1.1 |
39410 |
0.958 |
107.074 |
トレーニングログ
これは我々の実験のトレーニングログです。
トレーニング戦略
多段階トレーニング
モデルの性能を向上させ、元のLLaMA-2の潜在能力を最大限に引き出すために、我々は多段階トレーニング戦略を開発しました。この戦略は、一連の段階を通じてモデルの能力を体系的に引き出すように設計されています。
そのため、我々はトレーニングプロセスを3つの段階に分けました:
- 大規模事前学習段階 (LLaMA-2によって実施): この初期段階では、モデルの基礎的な能力を一から構築することを目的としています。これには、1兆トークン以上の大量のデータセットを使用する必要があります。
- 中国語知識注入段階: この段階では、モデルに中国語の知識を導入します。これには、中国語に関連する包括的な知識が豊富な高品質のデータセットにアクセスする必要があります。
- 知識リプレイ段階: 質問応答 (QA) メカニズムを通じて、中国語と英語の両方のドメインで知識をリプレイします。
この多段階トレーニングプロセスが完了すると、モデルは英語と中国語の両方のベンチマークで顕著な性能向上を示します。
次の図は、Colossal-LLaMA-2のトレーニングの3つの段階を示しています。
バケットベースのトレーニング
我々の実験では、トレーニングデータセット内の分布と、様々なトピック関連のデータポイントの配置が、特にLLaMA-2の継続的事前学習の文脈で、モデルの全体的な性能に大きな影響を与えることが明らかになりました。
よりバランスの取れた分布を達成し、データセットの順序を制御するために、我々は各サブデータセットを個別のビンに分割する方法を採用しました。これらのビンを組み合わせて個々のデータバケットを構築し、各サブデータセットから1つのビンを提供します。
詳細については、我々のGithubを参照してください。
📄 ライセンス
このモデルはllama2のライセンスの下で提供されています。
制限事項
Colossal-LLaMA-2-7BはLLaMA-2を派生させたものであり、使用に伴うリスクがあります。これまで行われたテストは、専ら英語と中国語で行われており、すべての可能なシナリオを網羅することはできません。他の大規模言語モデルと同様に、Colossal-LLaMA-2-7B-baseの潜在的な結果を事前に予測することは不可能です。特定の状況では、Colossal-LLaMA-2-7B-baseは不正確、偏った、または有毒な応答を生成する可能性があります。したがって、Colossal-LLaMA-2-7B-baseを使用したアプリケーションをデプロイする前に、開発者はアプリケーションの特定の要件に合わせてモデルを調整し、安全性テストを行うことが不可欠です。
引用
@article{bian2021colossal,
title={Colossal-AI: A Unified Deep Learning System For Large-Scale Parallel Training},
author={Bian, Zhengda and Liu, Hon