🚀 Jais ファミリーモデルカード
Jais ファミリーのモデルは、英語とアラビア語のバイリンガル大規模言語モデル(LLM)の包括的なシリーズです。これらのモデルは、英語の能力も強力でありながら、アラビア語での性能を最適化するように設計されています。我々は、以下の 2 種類の基礎モデルをリリースしています。
- ゼロから事前学習されたモデル (
jais-family-*
)。
- Llama-2 から適応的に事前学習されたモデル (
jais-adapted-*
)。
今回のリリースでは、590M から 70B のパラメータを持つ 8 つのサイズで 20 のモデルを導入しています。これらのモデルは、最大 1.6T のアラビア語、英語、コードデータで学習されています。このシリーズのすべての事前学習モデルは、アラビア語と英語の指示データを使ってダイアログ用に指示微調整(*-chat
)されています。
我々は、この大規模なリリースがアラビア語の自然言語処理研究を加速し、アラビア語話者やバイリンガルコミュニティに多くの下流アプリケーションを可能にすることを期待しています。我々がアラビア語モデルに成功させた学習と適応技術は、他の低・中リソース言語にも拡張可能です。
✨ 主な機能
Jais ファミリーの詳細
- 開発元: Inception、Cerebras Systems。
- 言語: (NLP) アラビア語(MSA)と英語。
- 入力: テキストデータのみ。
- 出力: モデルがテキストを生成します。
- モデルサイズ: 590M、1.3B、2.7B、6.7B、7B、13B、30B、70B。
- デモ: ここからライブデモにアクセス
- ライセンス: Apache 2.0
モデルアーキテクチャ
このファミリーのすべてのモデルは、トランスフォーマーベースのデコーダー専用アーキテクチャ(GPT - 3)を使用した自己回帰型言語モデルです。
Jais モデル(jais-family-*
)はゼロから学習され、SwiGLU 非線形活性化関数と ALiBi 位置符号化を組み込んでいます。これらのアーキテクチャの強化により、モデルは長いシーケンス長での外挿が可能になり、コンテキスト処理と精度が向上します。
Jais 適応モデル(jais-adapted-*
)はLlama - 2 をベースに構築され、RoPE 位置埋め込みとグループ化クエリアテンションを採用しています。我々は、アラビア語データを用いたトークナイザー拡張を導入し、生産性と計算効率を 3 倍以上向上させています。具体的には、Jais - 30b ボキャブラリから 32,000
の新しいアラビア語トークンを Llama - 2 トークナイザーに追加しています。新しいアラビア語トークン埋め込みを初期化するために、まず両方のボキャブラリに存在する共有英語トークンのセットを使って、Jais - 30b の埋め込み空間から Llama の埋め込み空間への線形射影を学習します。次に、この学習した射影を適用して、既存の Jais - 30b アラビア語埋め込みを Llama - 2 埋め込み空間に変換します。
🚀 クイックスタート
以下は、モデルを使用するサンプルコードです。モデルはカスタムモデルクラスを必要とするため、モデルをロードする際に trust_remote_code=True
を有効にする必要があります。
import torch
from transformers import AutoTokenizer, AutoModelForCausalLM
model_path = "inceptionai/jais-family-30b-8k"
device = "cuda" if torch.cuda.is_available() else "cpu"
tokenizer = AutoTokenizer.from_pretrained(model_path)
model = AutoModelForCausalLM.from_pretrained(model_path, device_map="auto", trust_remote_code=True)
def get_response(text, tokenizer=tokenizer, model=model):
input_ids = tokenizer(text, return_tensors="pt").input_ids
inputs = input_ids.to(device)
input_len = inputs.shape[-1]
generate_ids = model.generate(
inputs,
top_p=0.9,
temperature=0.3,
max_length=2048,
min_length=input_len + 4,
repetition_penalty=1.2,
do_sample=True,
)
response = tokenizer.batch_decode(
generate_ids, skip_special_tokens=True, clean_up_tokenization_spaces=True
)[0]
return response
text = "عاصمة دولة الإمارات العربية المتحدة ه"
print(get_response(text))
text = "The capital of UAE is"
print(get_response(text))
🔧 技術詳細
事前学習データ
Jais ファミリーのモデルは、最大 1.6 兆の多様な英語、アラビア語、コードデータで学習されています。データは以下のソースから構成されています。
- ウェブ: 公開されているウェブページ、ウィキペディア記事、ニュース記事、およびアラビア語と英語のソーシャルネットワークコンテンツを使用しました。
- コード: モデルの推論能力を強化するために、様々なプログラミング言語のコードデータを含めています。
- 書籍: 公開されているアラビア語と英語の書籍データの選択肢を使用しており、これにより長距離コンテキストモデリングと首尾一貫したストーリーテリングが向上します。
- 科学: 推論と長いコンテキスト能力を向上させるために、ArXiv 論文のサブセットを含めています。
- 合成: 自社の機械翻訳システムを使って英語をアラビア語に翻訳することで、アラビア語データの量を増やしています。これは、英語のウィキペディアや英語の書籍などの高品質英語リソースに限定しています。
我々は、学習データを広範に前処理し、重複を削除しています。アラビア語については、高い言語品質のデータをフィルタリングするためのカスタム前処理パイプラインを使用しています。このパイプラインの詳細については、Jais 論文を参照してください。
- Jais 事前学習(
jais-family-*
): Jais での言語アライメント混合の以前の実験に基づき、アラビア語:英語:コードデータの比率を 1:2:0.4 で使用しました。このゼロからの事前学習のレシピは、アラビア語データの不足を解消しながら、両言語での性能を向上させます。
- Jais 適応事前学習(
jais-adapted-*
): Llama - 2 の適応事前学習には、英語とコードデータと混合された約 334B のアラビア語トークンの大規模なアラビア語データセットを利用しています。我々は、異なるモデルサイズで混合比率を変えることで、英語での性能を維持しながら強力なアラビア語能力を導入しています。
微調整データ
Jais ファミリーのすべてのチャットモデルは、単ターンとマルチターンの両方の設定でアラビア語と英語のプロンプト - レスポンスペアを使って微調整されています。データソースには、トピックとスタイルの多様性のためにフィルタリングされたオープンソースの微調整データセットが含まれています。さらに、文化的適応性を高めるために、社内で作成された人間データも組み込まれています。このデータは、機械翻訳、蒸留、モデル自己チャットなどの合成方法を使って生成されたコンテンツで補完されています。全体として、更新された指示微調整データセットは、英語とアラビア語でそれぞれ約 1000 万と約 400 万のプロンプト - レスポンスペアで構成されています。
学習手順
(jais-family-*
) モデルの事前学習中は、文書は EOS トークンで区切られたシーケンスにパックされ、モデルは自己回帰的に学習され、すべてのトークンに損失が適用されます。jais - 30b モデルの場合、コンテキスト長は学習時に選りすぐりの長いコンテキスト文書を組み込むことで、2k から 8K から 16K へと段階的に拡張されます。この段階的な拡張により、短いコンテキスト長での初期学習を高速化しながら、学習プロセスの終わりに向かって徐々に大きなコンテキスト長のサポートを拡張することができます。
(jais-adapted-*
) モデルの適応事前学習中は、まずモデルアーキテクチャで説明したように新しいトークナイザーとアラビア語埋め込みを初期化します。学習では、新しいアラビア語埋め込みの高いノルムを克服するために二段階アプローチを実装しています。第一段階では、モデルのバックボーンを凍結し、英語とアラビア語のバイリンガルコーパスから約 150 億のトークンを使って埋め込みを学習します。第二段階では、バックボーンを凍結解除し、すべてのパラメータで継続的な事前学習を行います。
指示微調整中は、各学習例は単ターンまたはマルチターンのプロンプトとそのレスポンスで構成されています。シーケンスごとに 1 つの例ではなく、例はまとめてパックされ、損失はプロンプトトークンにマスクされます。このアプローチにより、バッチごとにより多くの例を処理できるため、学習が高速化されます。
学習ハイパーパラメータ
Jais-family-30b-8k
ハイパーパラメータ |
値 |
精度 |
fp32 |
オプティマイザー |
AdamW |
学習率 |
0 から 0.012(<=69 ウォームアップステップ) 0.012 から 0.00231(>69 かつ <=137273 ステップ) 0.00231 から 0.00048(>137273 かつ <= 260648 ステップ) |
重み減衰 |
0.1 |
バッチサイズ |
2664(<=137273 ステップ) 748(>137273 かつ <= 260648 ステップ) |
コンテキスト長 |
2048(<=137273 ステップ) 8192(>137273 かつ <= 260648 ステップ) |
ステップ数 |
260648 |
学習インフラストラクチャ
学習プロセスは、Condor Galaxy(CG)スーパーコンピュータプラットフォームで実行されました。CG は、40GB の SRAM を持つ 64 台の Cerebras CS - 2 ウェハスケールエンジン(WSE - 2)を含み、合計 960 PetaFLOP/s を達成します。
📚 ドキュメント
評価
我々は、LM - harness を使ってゼロショット設定で、英語とアラビア語の両方に焦点を当てた Jais モデルの包括的な評価を行いました。評価基準は、以下の様々な次元を網羅しています。
- 知識: モデルが事実問題にどれだけうまく答えるか。
- 推論: 推論を必要とする質問に答えるモデルの能力。
- 誤情報/バイアス: モデルが誤ったまたは誤解を招く情報を生成する可能性と、その中立性の評価。
アラビア語評価結果
モデル |
平均 |
ArabicMMLU* |
MMLU |
EXAMS* |
LitQA* |
agqa |
agrc |
Hellaswag |
PIQA |
BoolQA |
Situated QA |
ARC - C |
OpenBookQA |
TruthfulQA |
CrowS - Pairs |
jais-family-30b-16k |
49.2 |
44.0 |
33.4 |
40.9 |
60 |
47.8 |
49.3 |
60.9 |
68.6 |
70.3 |
41.6 |
38.7 |
31.8 |
45.2 |
57 |
jais-family-30b-8k |
49.7 |
46.0 |
34 |
42 |
60.6 |
47.6 |
50.4 |
60.4 |
69 |
67.7 |
42.2 |
39.2 |
33.8 |
45.1 |
57.3 |
jais-family-13b |
46.1 |
34.0 |
30.3 |
42.7 |
58.3 |
40.5 |
45.5 |
57.3 |
68.1 |
63.1 |
41.6 |
35.3 |
31.4 |
41 |
56.1 |
jais-family-6p7b |
44.6 |
32.2 |
29.9 |
39 |
50.3 |
39.2 |
44.1 |
54.3 |
66.8 |
66.5 |
40.9 |
33.5 |
30.4 |
41.2 |
55.4 |
jais-family-2p7b |
41.0 |
29.5 |
28.5 |
36.1 |
45.7 |
32.4 |
40.8 |
44.2 |
62.5 |
62.2 |
39.2 |
27.4 |
28.2 |
43.6 |
53.6 |
jais-family-1p3b |
40.8 |
28.9 |
28.5 |
34.2 |
45.7 |
32.4 |
40.8 |
44.2 |
62.5 |
62.2 |
39.2 |
27.4 |
28.2 |
43.6 |
53.6 |
jais-family-590m |
39.7 |
31.2 |
27 |
33.1 |
41.7 |
33.8 |
38.8 |
38.2 |
60.7 |
62.2 |
37.9 |
... |
... |
... |
... |
📄 ライセンス
このモデルは Apache 2.0 ライセンスの下で提供されています。