618ZXW

DeepSeekのフルパワー微調整の秘密を公開!巨人の肩に乗って自分だけのモデルを構築しよう ― チュートリアルはこちら

DeepSeek の爆発的な人気により、API 開発者の間で価格競争が引き起こされました...

しかし、オープンソース モデルの最大の利点は「巨人の肩」を提供することだということを忘れないでください。

DeepSeek-V3/R1 を微調整して、低コストで高品質のプライベート モデルを作成し、ビジネス競争力を向上させることは、現在、業界にとってより差し迫ったニーズである可能性があります。

ちょうど今、 GitHub で約 40,000 のスターを獲得した Colossal-AI が、大規模モデルをトレーニングするためのオープンソース ツールキットをリリースしました。これには次のものが含まれます。

  • フルパワー 671B LoRA 低コスト SFT 微調整を備えた DeepSeek-V3/R1
  • PPO、GRPO、DPO、SimPO を含む完全な強化学習ツールチェーン。
  • DeepSeek シリーズの蒸留モデルを含む HuggingFace オープンソース モデルにシームレスに適応します。
  • NVIDIA GPUHuawei Ascend NPUなどのさまざまなハードウェアと互換性があり、サポートしています。
  • 混合精度トレーニング、勾配チェックポイント、その他のトレーニング加速およびコスト削減機能をサポートします。
  • 柔軟なトレーニング構成インターフェースは、カスタム報酬関数、損失関数などをサポートします。
  • さまざまなハードウェア スケールに適応するために、データ並列処理、モデル並列処理、エキスパート並列処理、ZeRO、オフロードなどの並列戦略を構成するための柔軟なインターフェイスを提供します。

オープンソース アドレス: https://github.com/hpcaitech/...

DeepSeek-V3/R1-671B(フルパワー版)の低コストな監視と微調整

6,710億のパラメータを持つDeepSeek-V3/R1の低コストの微調整を、わずか数ステップで迅速に完了できます。

データセットの準備

このスクリプトは、JSONL 形式のファイルを入力データセットとして受け入れます。次に例を示します。

https://github.com/hpcaitech/..._scripts/lora_sft_data.jsonl をご覧ください。

データセットの各行は、チャット会話のリストである必要があります。例:

[{"role": "user", "content": "こんにちは、お元気ですか?"}, {"role": "assistant", "content": "元気です。今日は何かお手伝いしましょうか?"}]

[{“role”: “user”, “content”: “曹操は赤壁を焼き払ったとき、なぜ119番に電話して助けを求めなかったのですか?”}, {“role”: “assistant”, “content”: “三国時代には電話も近代的な消防システムもなかったので、曹操は119番に電話して助けを求めることができなかったのです。”}]

このデータ形式は、Huggingface チャット テンプレートと互換性があり、カスタム システム プロンプトをサポートしているため、必要に応じて柔軟に構成できます。

モデル重量の準備

より優れた微調整結果を確実に得るために、微調整には BF16 の重みが使用されます。

FP8 DeepSeek-V3/R1 の重みをすでにダウンロードしている場合は、公式の DeepSeek スクリプト https://github.com/deepseek-a..._cast_bf16.py を使用して、重みを GPU 経由で BF16 に変換できます。

国産の Huawei Ascend コンピューティング パワーを使用している場合は、重みを変換するためのスクリプト https://gitee.com/ascend/Mode...\_inference/fp8\_cast\_bf16.py をダウンロードできます。

使い方

データセットとモデルの重みを準備したら、Colossal-AI が提供するワンクリック起動スクリプトを使用できます: https://github.com/hpcaitech/..._scripts/lora_finetune.py。

このスクリプトは一般的なSFTスクリプトに似ており、HuggingFace PEFTと完全に互換性があります。起動コマンド:

colossalai 実行 —hostfile ホストファイルへのパス —nproc\_per\_node 8 lora\_finetune.py —事前トレーニング済み DeepSeek-R1-bf16 へのパス —dataset データセットへのパス.jsonl —プラグイン moe —lr 2e-5 —max\_length 256 -g —ep 8 ​​—pp 3 —batch\_size 24 —lora\_rank 8 —lora\_alpha 16 —num\_epochs 2 —warmup\_steps 8 —tensorboard\_dir ログ —save\_dir DeepSeek-R1-bf16-lora

各パラメータの詳細な情報を得るには、`python lora_finetune.py --help` を実行してください。このスクリプトは、TensorBoard を介して学習率、損失、および勾配ノルムの情報を記録し、トレーニングのモニタリングを容易にします。

LoRA を使用してハードウェア リソースの消費を最適化します。

LoRAなどの最適化を用いることで、サンプルコマンドはSFT DeepSeek-V3/R1-671Bの最小ハードウェア要件を約10分の1に削減し、64GB RAMを搭載したAscend 910B NPU 32個(ep=8、pp=4)またはH100/H800 GPU 24個(ep=8、pp=3)の使用を可能にしました。`--zero_cpu_offload`オプションでCPUオフロードを有効にすると、ハードウェア要件をさらに削減できますが、トレーニング速度が若干低下します。

下の図に示すように、SFT DeepSeek V3/R1 671B を使用すると損失をうまく削減できます。

十分な資金を持つ開発チームの場合、上記のスクリプトを使用して、数百または数千の GPU に並列処理を効率的に拡張し、DeepSeek-V3/R1-671B の完全なパラメータの微調整または並列アクセラレーションを迅速に完了することもできます。

予算が限られているが、強化学習を使用して独自の DeepSeek-R1 のようなモデルを構築したい人のために、Colossal-AI もソリューションを提供しており、小規模なモデルを使用してアルゴリズムを検証しています。

強化学習によるDeepSeekの精製バージョンの微調整

Colossal-AIチームは、DeepSeekの論文に記載されているGRPOアルゴリズムと検証可能な報酬を検証・実装し、Qwen2.5-3B-Baseモデルを用いて実験を行いました。報酬設計は以下の通りです。

  1. フォーマットが正しい場合、報酬 = 0。
  2. 形式は正しいが結果が正しくない場合は報酬 = 1。
  3. フォーマットと結果が正しい場合、報酬 = 10。

Colossal-AI チームは、Qwen2.5-3B-Base モデルを例として使用して、GRPO を検証するためのダイアログ テンプレートと設定を提供しました。

(https://github.com/hpcaitech/..._template/Qwen_Qwen2.5-3B.json)、次の bash ファイルを設定することでワンクリックで起動できます: https://github.com/hpcaitech/..._scripts/train_grpo.sh

さらに、GRPO セクションでは、Colossal-AI チームが検証プロセスから得られたいくつかの調査結果と、参考としてさまざまなパラメータの詳細な説明を提供しています。

コードには柔軟に構成可能な報酬関数のテンプレートが含まれており、ユーザーは特定のニーズに基づいて独自の報酬関数システムを設計できます。

下の図に示すように、3B モデルの場合でも、平均報酬とモデル応答の長さは時間の経過とともに徐々に増加します。

トレーニングが進むにつれて、いくつか興味深い例が見られます。例えば、トレーニングの反復ごとに、モデルは自己修正を始めます。

Colossal-AI: 最高のトレーニング後ツールキット

Colossal-AI は、大規模モデルの事前トレーニングにおけるコストの削減と効率性の向上に関する専門知識を基に、開発者にとってすぐに使用できる最高の事後トレーニング ツールとなることを目指しており、ユーザーがオープンソース モデルに基づいてプライベート モデルを迅速かつコスト効率よく構築できるように支援します。

オープンソース アドレス: https://github.com/hpcaitech/...