[README] [?HF リポジトリ] [?Web バージョン]
中国語 | 英語
Yayi の大規模モデルは、手動で構築された何百万もの高品質ドメイン データに対する命令を微調整することによって取得されます。トレーニング データは、メディア宣伝、世論分析、治安、金融リスク管理、都市ガバナンスなどの 5 つの主要な分野をカバーしています。何百もの自然言語指導タスク。事前トレーニングの初期化重みからドメイン モデルまでの Yayi 大規模モデルの反復プロセス中に、基本的な中国語機能とドメイン分析機能を徐々に強化し、複数ラウンドの対話といくつかのプラグイン機能を追加しました。同時に、数百人のユーザーによる内部テストプロセス中の継続的な手動フィードバック最適化を通じて、モデルのパフォーマンスとセキュリティをさらに向上させました。
私たちは、Yayi 大型モデルのオープンソースを通じて、中国の事前トレーニング済み大型モデル オープンソース コミュニティの発展を促進する独自の取り組みに貢献し、オープンソースを通じて、Yayi 大型モデル エコシステムを構築します。
ニュース: Yayi Large Model は、中国のマルチドメイン タスクに適した最新のプラクティスを探索するために、LLaMA 2 に基づく中国語最適化モデル バージョンをオープンソース化しました。
機種名 | ?HFモデルの識別 | ダウンロードアドレス |
---|---|---|
YAYI -7B | wenge-research/ YAYI -7b | モデルのダウンロード |
YAYI -7B-ラマ2 | wenge-research/ YAYI -7b-llama2 | モデルのダウンロード |
YAYI -13B-ラマ2 | wenge-research/ YAYI -13b-llama2 | モデルのダウンロード |
git clone https://github.com/wenge-research/YAYI.git
cd YAYI
conda create --name YAYI python=3.8
conda activate YAYI
pip install -r requirements.txt
torch
とtransformers
バージョンを推奨バージョンより低くすることは推奨されません。
モデルの重み (バージョン 7b) は、Huggingface モデル ウェアハウスでオープンソース化されており、ダウンロードして使用することができます。以下は、ダウンストリーム タスク推論のためにYAYI -7b
を呼び出すだけのサンプル コードです。これは、FP16 精度推論を使用する場合、A100/A800/3090 などの単一の GPU で実行できます。
from transformers import AutoTokenizer , AutoModelForCausalLM , GenerationConfig
import torch
YAYI _7b_path = "wenge-research/ YAYI -7b"
tokenizer = AutoTokenizer . from_pretrained ( YAYI _7b_path )
model = AutoModelForCausalLM . from_pretrained ( YAYI _7b_path , device_map = "auto" , torch_dtype = torch . bfloat16 )
prompt = "你好"
formatted_prompt = f"<|System|>: n A chat between a human and an AI assistant named YAYI . n YAYI is a helpful and harmless language model developed by Beijing Wenge Technology Co.,Ltd. n n <|Human|>: n { prompt } n n <| YAYI |>:"
inputs = tokenizer ( formatted_prompt , return_tensors = "pt" ). to ( model . device )
eos_token_id = tokenizer ( "<|End|>" ). input_ids [ 0 ]
generation_config = GenerationConfig (
eos_token_id = eos_token_id ,
pad_token_id = eos_token_id ,
do_sample = True ,
max_new_tokens = 100 ,
temperature = 0.3 ,
repetition_penalty = 1.1 ,
no_repeat_ngram_size = 0
)
response = model . generate ( ** inputs , generation_config = generation_config )
print ( tokenizer . decode ( response [ 0 ]))
特別なトークン<|End|>
はモデルのトレーニング中に終了文字として追加されるため、 eos_token_id
上記のコードのGenerationConfig
で終了文字に対応するトークン ID に設定されることに注意してください。 LlaMA2 命令微調整モデルに基づく推論コードは若干異なります。詳細については、Huggingface モデル ウェアハウスの対応するバージョンを参照してください。
このプロジェクトは、モデル トレーニング用のdeepspeed
フレームワークに基づいています。環境を構成した後、対応するスクリプトを実行してトレーニングを開始します。コマンドデータのフルパラメータ微調整、コマンドデータのLoRA微調整、マルチラウンドダイアログデータのフルパラメータ微調整、マルチラウンドダイアログデータのLoRA微調整をサポートします。
データ形式: Alpaca プロジェクトの jsonline データ形式を採用したdata/ YAYI _train_example.json
を参照。各行に 1 つの json データがあり、 "instruction"
、 "input"
、 "output"
の 3 つのフィールドで構成されます。このうち"instruction"
と"input"
は指示の入力、 "output"
は出力された答えです。
操作手順: 次のコマンドを実行して、Yayi 大型モデルのフルパラメータ微調整を開始します。このコマンドは、単一マシンのマルチカード トレーニングをサポートしています。複数のマシンのマルチカード トレーニングを設定する必要がある場合は、deepspeed の公式ドキュメントを参照してください。 4*A100(80G) 以上のハードウェア構成を使用することをお勧めします。
deepspeed --num_gpus=8
--module training.trainer
--data-path ./data/ YAYI _train_example.json
--input-model ./checkpoints/ YAYI -7b
--deepspeed ./config/deepspeed_zero2_bf16.json
--epochs 2
--local-output-dir ./checkpoints
--per-device-train-batch-size 8
--per-device-eval-batch-size 8
--logging-steps 1
--save-steps 100
--save-total-limit 10
--eval-steps 100
--warmup-steps 100
--test-size 400
--lr 5e-6
--seed 515
データ形式: 上記と同様、 data/ YAYI _train_example.json
を参照。
操作手順: LoRA は低リソースで効率的な微調整手法であり、1 枚のカードで数百億のパラメータ モデルをトレーニングできます。このプロジェクトは主にpeft
に基づいた LoRA 微調整を実装します。次のコマンドを実行して、Yayi ラージ モデルの LoRA 微調整を開始します。 A100(80G)1枚で微調整が完了し、学習率をより大きな値に調整できます。このうち--lora-dim
更新行列のランクを設定し、値が大きいほどトレーニング用のパラメータの数が多くなります。 --lora-module-name
変更できる LoRA 更新行列のモジュールを設定します。モデルタイプに応じて。
deepspeed --num_gpus=1
--module training.trainer_lora
--data-path ./data/ YAYI _train_example.json
--input-model ./checkpoints/ YAYI -7b
--deepspeed ./config/deepspeed_zero2_bf16.json
--epochs 2
--local-output-dir ./checkpoints
--per-device-train-batch-size 8
--per-device-eval-batch-size 8
--logging-steps 1
--save-steps 100
--save-total-limit 10
--eval-steps 100
--warmup-steps 100
--test-size 400
--lr 5e-4
--seed 515
--lora-dim 16
--lora-module-name query_key_value
データ形式: 標準の JSON ファイルであるdata/ YAYI _train_example_multi_rounds.json
を参照してください。各データは"system"
と"conversations"
で構成されます。 "system"
はグローバル ロール設定情報であり、空の文字列にすることができます。 "conversations"
人間とYAYI 2人のキャラクターが交互に行う多ラウンドの会話です。
操作手順: 次のコマンドを実行して、Yayi ラージ モデルのフルパラメータ微調整を開始します。マルチラウンド ダイアログ データの場合、モデルによって生成された応答の損失のみが計算されます。このコマンドは、単一マシンのマルチカード トレーニングをサポートしています。複数のマシンのマルチカード トレーニングを設定する必要がある場合は、deepspeed の公式ドキュメントを参照してください。 4*A100(80G) 以上のハードウェア構成を使用することをお勧めします。
deepspeed --num_gpus=8
--module training.trainer_multi_rounds
--data-path ./data/ YAYI _train_example_multi_rounds.json
--input-model ./checkpoints/ YAYI -7b
--deepspeed ./config/deepspeed_zero2_bf16.json
--epochs 2
--local-output-dir ./checkpoints
--per-device-train-batch-size 8
--per-device-eval-batch-size 8
--logging-steps 1
--save-steps 100
--save-total-limit 10
--eval-steps 100
--warmup-steps 100
--test-size 400
--lr 5e-7
--seed 515
data/ YAYI _train_example_multi_rounds.json
を参照。Yayi の大規模モデルは、Zhongke Wenge の 100 万レベルの高品質ドメイン命令微調整データ セットに基づいてトレーニングされており、今回は 50,000 のトレーニング データ セットをオープンソースにし、Huggingface データ ウェアハウスからダウンロードできます。データセットは主に金融、セキュリティ、世論、メディアなどのいくつかの主要な分野をカバーしており、各分野のデータを区別するために、各分野のタスクのほとんどのコマンドデータに個別のプロンプトプレフィックスを追加しています。さらに、トレーニング データには、セキュリティ強化データ、プラグイン機能データ、マルチラウンド ダイアログ データなども含まれます。
現在のデータと基本モデルに基づいてトレーニングされた SFT モデルには、有効性の点で次のような問題がまだあります。
上記のモデル制限に基づいて、私たちは開発者に対し、このプロジェクトによって生成されたオープンソース コード、データ、モデル、およびその後の派生物を研究目的でのみ使用し、商業目的や社会に害を及ぼすその他の用途では使用しないことを要求します。 Yayi Big Model によって生成されたコンテンツの特定と使用には注意し、生成された有害なコンテンツをインターネットに拡散しないでください。何らかの悪影響が生じた場合は、コミュニケーターが責任を負います。
このプロジェクトは研究目的でのみ使用でき、プロジェクト開発者は、このプロジェクトの使用によって引き起こされる損害や損失(データ、モデル、コードなどを含みますがこれらに限定されません)に対して責任を負いません。詳細については免責事項をご覧ください。
このプロジェクトのコードは Apache-2.0 プロトコルに準拠したオープンソースであり、データは CC BY- YAYI 4.0 プロトコルを採用しています。YAYI シリーズのモデル ウェイトの使用にはモデル ライセンスに従う必要があります。