The AI / news

DeepSeek-V3:DeepSeek Trainerをゼロから実装する方法

DeepSeek-V3:DeepSeek Trainerをゼロから実装する方法

PyImageSearchは、DeepSeek-V3を「ゼロから」構築するシリーズの最終章を公開。今回はモデルの訓練とテキスト生成に焦点を当てている。Puneet Mangla氏によるチュートリアルでは、小規模モデル向けの訓練ループ、ハイパーパラメータ、使用データについて詳述している。

この第6部は、Rotary Position Embeddings (RoPE)、Multi-head Latent Attention (MLA)、Mixture of Experts (MoE)、Multi-Token Prediction (MTP)の設定、そしてPyTorchでのアーキテクチャ組み立てを段階的に扱ってきたシリーズの締めくくりとなる。チュートリアルでは、アーキテクチャをデータに適用して動作させるコンポーネントである「トレーナー」を紹介する。

Hugging Faceを基盤とした訓練

トランスフォーマーモデルの訓練には、データ読み込み、最適化、チェックポイント管理、評価の調整が必要だ。著者はこのため、Hugging FaceのTrainer APIを利用し、バージョンはtransformers==4.57.3、datasets==4.8.5、accelerate==1.15.0を使用している。モデルは(logits, loss)のペアを返すため、カスタムのcompute_lossメソッドでTrainerが期待する形式に出力を適合させている。

いくつかの技術が導入されている。勾配蓄積は、GPUメモリが限られている場合に大きなバッチをシミュレートする。4つの例のバッチと4ステップの蓄積で、単一デバイス上での実効サイズは16に達する。学習率は、ウォームアップフェーズの後、線形減衰する。最後に、混合精度訓練(FP16)は計算を高速化できるが、その効果はハードウェアとワークロードに依存する。

データと設定

モデルはTinyStoriesで訓練される。これは、小規模言語モデルに適した語彙と文法を持つ、子供向けのシンプルな物語のデータセットだ。著者は最初の10,000例のみを使用し、シャッフルせずに9,000例を訓練用、1,000例を評価用に分割している。したがって、この評価セットは選択したサブセットから得られたものであり、データセットの公式な検証セットではない。

テキストはGPT-2トークナイザーでトークン化され、バイトペアエンコーディング(BPE)を使用する。パディング位置は-100の値により損失計算から除外される。設定では、学習率を5e-4、ウォームアップステップを10、正則化を0.01、訓練エポック数を2と固定している。チェックポイントは50ステップごとに作成され、3つが保持される。最終的に選択されるモデルは、検証損失が最も低いものとなる。

生成をテストするため、著者は温度0.8、top-kサンプリング50で150の新しいトークンを生成する。例として示された物語は、記録された実行結果ではなく、明示的に説明のためのものである。チュートリアルでは、この小規模モデルは大規模な事前学習モデルには及ばず、その出力が繰り返しになったり、脱線したり、一貫性を失ったりする可能性があると説明している。完全なチュートリアルとソースコードはPyImageSearchのウェブサイトで入手できる。