翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。
SageMaker トレーニングジョブを使用した Amazon Nova モデルの微調整
SageMaker トレーニングジョブで Amazon Nova モデルをファインチューニングすると、特定のユースケースに合わせて基盤モデルをカスタマイズする強力な方法が提供されます。
トピック
前提条件
トレーニングジョブを開始する前に、次の点に注意してください。
-
トレーニングジョブの入力データと出力を保存する Amazon S3 バケット。両方のバケットに 1 つのバケットを使用するか、データタイプごとに個別のバケットを使用できます。バケットがトレーニング用の他のすべてのリソースを作成する AWS リージョン のと同じ にあることを確認します。詳細については、「汎用バケットの作成」を参照してください。
-
トレーニングジョブを実行するアクセス許可を持つ IAM ロール。必ず IAM ポリシーを にアタッチしてください
AmazonSageMakerFullAccess
。詳細については、SageMaker 実行ロールの使用方法」を参照してください。 -
Amazon Nova の基本レシピについては、「」を参照してくださいAmazon Nova レシピの取得。
データ準備
高品質で適切にフォーマットされたデータを準備することは、大規模言語モデルのファインチューニングプロセスにおける重要な最初のステップです。教師ありファインチューニング (SFT) と Direct Preference Optimization (DPO) のどちらをフルランクまたは低ランク適応 (LoRA) アプローチで使用する場合でも、モデルトレーニングを成功させるには、データは特定の形式要件に従う必要があります。このセクションでは、Amazon Nova モデルの微調整のためにデータセットを効果的に準備するために必要なデータ形式、検証方法、ベストプラクティスの概要を説明します。
SFT
SFT データ形式の要件 - フルランク SFT と LoRA SFT の両方で、データは Converse 形式に従う必要があります。この形式の例と制約については、「モデルを理解する」の「ファインチューニングのためのデータの準備」を参照してください。
SFT データ検証 - 送信前にデータセット形式を検証するには、Amazon Bedrock サンプルリポジトリjsonl
ファイルが必須の形式仕様に準拠し、潜在的な問題を特定するのに役立ちます。
DPO
DPO データ形式の要件 - フルランクの DPO と LoRA の DPO の両方について、データは Converse 形式に従う必要があります。また、データセットは SFT と同様の形式である必要があります。ただし、最後のターンにはプリファレンスペアが必要です。
DPO データセットのその他の制約 - データセットのその他の制約は SFT でも同じです。詳細については、「データセットの制約」を参照してください。トレーニング用の 1 つの JSONL ファイルと検証用の 1 つの JSONL ファイルが必要です。検証セットはオプションです。
DPO データセットのレコメンデーション - 効果的なトレーニングのために最低 1,000 個の設定ペア。高品質のプリファレンスデータを使用すると、より効率的な結果が得られます。
サンプル DPO データ形式
// N-1 turns same as SFT format { "role": "assistant", "candidates": [ { "content": [ { "text": "..." } // content list can contain multiple 'text' objects ], "preferenceLabel": "preferred" }, { "content": [ { "text": "..." } // content list can contain multiple 'text' objects ], "preferenceLabel": "non-preferred" } ] }
サンプル DPO データ形式 (マルチターン)
{ "system": [ { "text": "..." } ], "messages":[ { "role": "user", "content": [ { "text": "..." } ] }, { "role": "assistant", "content": [ { "text": "..." } ] }, { "role": "user", "content": [ { "text": "..." } ] }, { "role": "assistant", "candidates": [ { "content": [ { "text": "..." } ], "preferenceLabel": "preferred" }, { "content": [ { "text": "..." } ], "preferenceLabel": "non-preferred" } ] } ], }
サンプル DPO データ形式 (イメージ付き)
{ "system": [ { "text": "..." } ], "messages":[ { "role": "user", "content": [ { "text": "..." }, { "text": "..." }, { "image": { "format": "jpeg", "source": { "s3Location": { "uri": "s3://your-bucket/your-path/your-image.jpg", "bucketOwner": "your-aws-account-id" } } } } // "content" can have multiple "text" and "image" objects. // max image count is 10 ] }, { "role": "assistant", "content": [ { "text": "..." } ] }, { "role": "user", "content": [ { "text": "..." }, { "text": "..." }, { "image": { "format": "jpeg", "source": { "s3Location": { "uri": "s3://your-bucket/your-path/your-image.jpg", "bucketOwner": "your-aws-account-id" } } } } // "content" can have multiple "text" and "image" objects. // max image count is 10 ] }, { "role": "assistant", "candidates": [ { "content": [ { "text": "..." } ], "preferenceLabel": "preferred" }, { "content": [ { "text": "..." } ], "preferenceLabel": "non-preferred" } ] } ], }
トレーニングジョブのデフォルトは 1 日間の時間制限ですが、以下の表の見積もりでは、説明のために 5 日間のトレーニング期間を想定しています。ベストプラクティスとして、より長いトレーニングワークロードに対応するために、トレーニング時間の制限を最大 28 日間に増やすことをお勧めします。制限の引き上げをリクエストするには、「クォータの引き上げのリクエスト」を参照してください。
SFT データセットの制限
コンテキストの長さ | モデル | [メソッド] | データセット | 説明 |
---|---|---|---|---|
32,000 コンテキスト長ジョブ |
Amazon Nova Micro | フルランクと LoRA | テキストのみ |
すべてのレコードのコンテキスト長が 32,000 のデータセットを使用し、例えば 5 エポックで を実行する場合、最大 100,000 レコードしか保持できません。 |
Amazon Nova Lite |
フルランク | テキストのみ |
すべてのレコードのコンテキスト長が 32,000 のデータセットを使用し、例えば 5 エポックで を実行する場合、最大 100,000 レコードを持つことができます。 |
|
イメージと動画 |
すべてのレコードのコンテキスト長が 32,000 のデータセットを使用し、たとえば 5 エポックで を実行する場合、最大 50,000 個のレコードを持つことができます。 |
|||
LoRA | テキストのみ |
すべてのレコードのコンテキスト長が 32,000 のデータセットを使用し、例えば 5 エポックで を実行する場合、最大 100,000 レコードを持つことができます。 |
||
イメージと動画 | すべてのレコードのコンテキスト長が 32,000 のデータセットを使用し、たとえば 5 エポックで を実行する場合、最大 90,000 個のレコードを持つことができます。 | |||
Amazon Nova Pro |
フルランク | テキストのみ |
すべてのレコードのコンテキスト長が 32,000 のデータセットを使用し、たとえば 5 エポックで を実行する場合、最大 40,000 個のレコードを持つことができます。 |
|
イメージと動画 |
すべてのレコードのコンテキスト長が 32,000 のデータセットを使用し、たとえば 5 エポックで を実行する場合、最大 30,000 個のレコードを持つことができます。 |
|||
LoRA | テキストのみ |
すべてのレコードのコンテキスト長が 32,000 のデータセットを使用し、たとえば 5 エポックで を実行する場合、最大 40,000 個のレコードを持つことができます。 |
||
イメージと動画 |
すべてのレコードのコンテキスト長が 32,000 のデータセットを使用し、たとえば 5 エポックで を実行する場合、最大 35,000 個のレコードを持つことができます。 |
|||
64,000 コンテキスト長ジョブ |
Amazon Nova Micro | フルランクと LoRA | テキストのみ |
すべてのレコードのコンテキスト長が 64,000 のデータセットを使用し、例えば 5 エポックで を実行する場合、最大 50,000 レコードしか保持できません。 |
Amazon Nova Lite |
フルランク | テキストのみ |
すべてのレコードのコンテキスト長が 64,000 のデータセットを使用し、例えば 5 エポックで を実行する場合、最大 50,000 個のレコードを持つことができます。 |
|
イメージと動画 |
すべてのレコードのコンテキスト長が 64,000 のデータセットを使用し、たとえば 5 エポックで を実行する場合、最大 30,000 個のレコードを持つことができます。 |
|||
LoRA | - |
LoRA は、Nova Lite の 64k ではサポートされていません。 |
||
Amazon Nova Pro | フルランクと LoRA | テキストのみ |
すべてのレコードのコンテキスト長が 64,000 のデータセットを使用し、たとえば 5 エポックで を実行する場合、最大 17,000 個のレコードを持つことができます。 |
|
イメージと動画 |
すべてのレコードのコンテキスト長が 64,000 のデータセットを使用し、例えば 5 エポックで を実行する場合、最大 15,000 個のレコードを持つことができます。 |
DPO データセットの制限
コンテキストの長さ | モデル | [メソッド] | データセット | 説明 |
---|---|---|---|---|
16,000 コンテキスト長ジョブ |
Amazon Nova Micro | フルランク | テキストのみ |
すべてのレコードのコンテキスト長が 16,000 のデータセットを使用し、例えば 5 エポックで を実行する場合、最大 120,000 レコードしか保持できません。 |
LoRA | テキストのみ |
すべてのレコードのコンテキスト長が 16,000 のデータセットを使用し、例えば 5 エポックで を実行する場合、最大 125,000 レコードしか保持できません。 |
||
Amazon Nova Lite |
フルランク | テキストのみ |
すべてのレコードのコンテキスト長が 16,000 のデータセットを使用し、例えば 5 エポックで を実行する場合、最大 130,000 レコードを持つことができます。 |
|
イメージ |
すべてのレコードのコンテキスト長が 16,000 のデータセットを使用し、たとえば 5 エポックで を実行する場合、2 日以内に 20,000 サンプルを完了できます。 |
|||
LoRA | テキストのみ |
すべてのレコードのコンテキスト長が 16,000 のデータセットを使用し、例えば 5 エポックで を実行する場合、最大 140,000 個のレコードを持つことができます。 |
||
イメージ |
すべてのレコードのコンテキスト長が 16,000 のデータセットを使用し、例えば 5 エポックで実行する場合、2 日以内に 20,000 サンプルを完了できます。 |
|||
Amazon Nova Pro |
フルランク | テキストのみ |
すべてのレコードのコンテキスト長が 16,000 のデータセットを使用し、例えば 5 エポックで を実行する場合、最大 45,000 個のレコードを持つことができます。 |
|
イメージ |
すべてのレコードのコンテキスト長が 16,000 のデータセットを使用し、たとえば 5 エポックで実行すると、4 日以内に 20,000 サンプルを完了できます。 |
|||
LoRA | テキストのみ |
すべてのレコードのコンテキスト長が 16,000 のデータセットを使用し、例えば 5 エポックで を実行する場合、最大 55,000 個のレコードを持つことができます。 |
||
イメージ |
すべてのレコードのコンテキスト長が 16,000 のデータセットを使用し、たとえば 5 エポックで実行すると、4 日以内に 20,000 サンプルを完了できます。 |
|||
32,000 コンテキスト長ジョブ |
Amazon Nova Micro | フルランク | テキストのみ |
すべてのレコードのコンテキスト長が 32,000 のデータセットを使用し、例えば 5 エポックで を実行する場合、最大 45,000 レコードしか保持できません。 |
LoRA | テキストのみ |
すべてのレコードのコンテキスト長が 32,000 のデータセットを使用し、例えば 5 エポックで を実行する場合、最大 50,000 レコードしか保持できません。 |
||
Amazon Nova Lite |
フルランク | テキストのみ |
すべてのレコードのコンテキスト長が 32,000 であるデータセットを使用し、たとえば 5 エポックで を実行する場合、最大 55,000 個のレコードを持つことができます。 |
|
イメージ |
すべてのレコードのコンテキスト長が 32,000 のデータセットを使用し、たとえば 5 エポックで を実行する場合、最大 35,000 個のレコードを持つことができます。 |
|||
LoRA | テキストのみ |
すべてのレコードのコンテキスト長が 32,000 のデータセットを使用し、たとえば 5 エポックで を実行する場合、最大 60,000 個のレコードを持つことができます。 |
||
イメージ |
すべてのレコードのコンテキスト長が 32,000 のデータセットを使用し、たとえば 5 エポックで を実行する場合、最大 35,000 個のレコードを持つことができます。 |
|||
Amazon Nova Pro | フルランク | テキストのみ |
すべてのレコードのコンテキスト長が 32,000 であるデータセットを使用し、たとえば 5 エポックで を実行する場合、最大 20,000 個のレコードを持つことができます。 |
|
イメージ |
すべてのレコードのコンテキスト長が 64,000 のデータセットを使用し、例えば 5 エポックで を実行する場合、最大 16,000 個のレコードを持つことができます。 |
|||
LoRA | テキストのみ |
すべてのレコードのコンテキスト長が 32,000 のデータセットを使用し、例えば 5 エポックで を実行する場合、最大 22,000 個のレコードを持つことができます。 |
||
イメージ |
すべてのレコードのコンテキスト長が 64,000 のデータセットを使用し、例えば 5 エポックで を実行する場合、最大 18,000 個のレコードを持つことができます。 |
エポックの数やレコードのコンテキストの長さを減らすことで、より多くのレコードを提供できます。
フルランク SFT および LoRA PEFT 設定
このセクションでは、フルランク教師ありファインチューニング (SFT) アプローチと低ランク適応パラメータ効率ファインチューニング (LoRA PEFT) アプローチの両方のレシピ設定に関するガイダンスについて説明します。これらのレシピファイルは、モデルカスタマイズジョブの設計図として機能し、モデルがデータから学習する方法を決定するトレーニングパラメータ、ハイパーパラメータ、およびその他の重要な設定を指定できます。ハイパーパラメータを調整するには、「ハイパーパラメータの選択」のガイドラインに従います。
ファインチューニング設定 (フルランク SFT および LoRA PEFT)
レシピの点でフルランク SFT と LoRA PEFT の唯一の違いはLoRA PEFT 設定です。これはフルランクの場合は「null」に設定され、LoRA PEFT ベースのファインチューニングを使用する場合は適切な値に設定されます。サンプルレシピは、SageMaker HyperPod レシピ
「実行」設定について。
キー | 定義 | Micro | ライト | Pro (プロ) | |
---|---|---|---|---|---|
構成を実行する | model_type |
使用する Nova モデルバリアントを指定します。このフィールドは変更しないでください。 |
「amazon.nova-micro-v1:0:128k」 |
「amazon.nova-lite-v1:0:300k」 |
「amazon.nova-pro-v1:0:300k」 |
model_name_or_path |
ベースモデルへのパス。 |
「nova-micro/prod」 |
「nova-lite/prod」 |
「nova-pro/prod」 |
|
レプリカ |
分散トレーニングに使用するコンピューティングインスタンスの数。 |
2、4、または 8 |
4、8、または 16 |
6、12、または 24 |
「training_config」設定について。
ルートキー | 子キー | 定義 | 最小 | 最大 | |
---|---|---|---|---|---|
max_length |
トークンの最大シーケンス長。これにより、トレーニングのコンテキストウィンドウのサイズが決まります。最も近い 1024 倍、最大値: 65536 (Lite Lora 32768 の場合) に調整できます。 |
1024 |
32768 をサポートする Lite LoRA を除く 65536。 | ||
global_batch_size |
ステップあたりのサンプルの合計、許容値は 16、32、64 です。最大値: Nova Pro の場合は 32、Nova Lite および Micro の場合は 64。 |
16 | Nova Pro の場合は 32、Nova Lite および Micro の場合は 64。 | ||
トレーナー設定 | トレーナー | max_epochs |
トレーニングデータセットを通過する完全なパスの数。ほとんどのカスタマイズタスクでは、通常 1~5 エポックで十分です。最大 5 つにすることをお勧めします。 |
1 | - |
モデル設定 | モデル | hidden_dropout |
非表示状態の出力を削除する確率。(0.0~0.2) を増やして、小さいデータセットのオーバーフィットを減らします。境界は 0~1 です。 |
0 | 1 |
モデル | attention_dropout |
注意の重みが減る確率。一般化に役立ちます。境界は 0~1 です。 |
0 | 1 | |
モデル | ffn_dropout |
フィードフォワードネットワーク出力を削除する確率。境界は 0~1 です。 |
0 | 1 | |
オプティマイザの設定 | model.optim | lr |
学習レートは、最適化中のステップサイズを制御します。制限は 0~1 です。通常、パフォーマンスを高めるために 1e-6 から 1e-4 の間で設定します。 |
0 | 1 |
model.optim | 名前 |
オプティマイザアルゴリズム。現在は、 |
- | - | |
model.optim | adam_w_mode |
AdamW モード (true/false) を有効にします。 |
- | - | |
model.optim | eps |
数値安定性のためのイプシロン。 |
|||
model.optim | weight_decay |
L2 正則化の強度は、0.0 から 1.0 の間である必要があります。 |
0 | 1 | |
model.optim | ベータ |
Adam オプティマイザのベータは 0.0 から 1.0 の間である必要があります。 |
0 | 1 | |
model.optim | sched_warmup_steps |
学習率を徐々に増やすステップの数。これにより、トレーニングの安定性が向上します。1~20。 |
1 | 20 | |
model.optim | sched_constant_steps |
一定の学習レートでのステップ。 |
1.00E-10 | 1.00E-06 | |
model.optim | sched.min_lr |
減衰終了時の最小学習レート。制限は 0~1 ですが、学習レートより小さくする必要があります。 |
0 | 1 | |
LoRA PEFT 設定 |
model.peft | peft_scheme |
「lora」または「null」を使用します。「lora」はパラメータ効率の高いファインチューニングに LoRA PEFT メソッドを使用します。「null」はフルランクのファインチューニングを開始します。 |
- | - |
model.peft | lora_tuning.loraplus_lr_ratio |
LoRA+ 学習レートスケーリング係数は、0.0~100.0 の間でなければなりません。 |
0 | 100 | |
model.peft | lora_tuning.alpha |
LoRA ウェイトのスケーリング係数。使用できる値は 32、64、96、128、160、192 です。 |
32 | 192 | |
model.peft | lora_tuning.adapter_dropout |
LoRA パラメータの正則化。0.0 から 1.0 の間である必要があります。 |
0 | 1 |
特定の設定の微調整 (DPO)
LoRA PEFT と FullRank SFT と比較した Direct Preference Optimization (DPO) の違いは、dpo_cfg 設定と許容値のみです。DPO 専用に許可されている については、例の下の表を参照してください。サンプルレシピは、SageMaker HyperPod レシピ
ルートキー | 子キー | 定義 | 最小 | 最大 | |
---|---|---|---|---|---|
max_length | トークンの最大シーケンス長。これにより、トレーニングのコンテキストウィンドウのサイズが決まります。最も近い 1024 倍に調整可能、最大値: 32,768。 |
1024 |
32768 |
||
global_batch_size |
グローバルバッチサイズ、許可される値は {16, 32, 64, 128, 256} です。 |
16 | 256 | ||
トレーナー設定 | トレーナー | max_epochs |
トレーニングデータセットを通過する完全なパスの数。ほとんどのカスタマイズタスクでは、通常 1~5 エポックで十分です。最大エポックは 5 です。 |
1 | 5 |
モデル設定 | モデル | hidden_dropout |
非表示状態の出力を削除する確率。(0.0~0.2) を増やして、小さいデータセットのオーバーフィットを減らします。境界は 0~1 です。 |
0 | 1 |
モデル | attention_dropout |
注意の重みが減る確率。一般化に役立ちます。境界は 0~1 です。 |
0 | 1 | |
モデル | ffn_dropout |
フィードフォワードネットワーク出力を削除する確率。境界は 0~1 です。 |
0 | 1 | |
オプティマイザの設定 | model.optim | lr |
学習レートは、最適化中のステップサイズを制御します。制限は 0~1 です。通常、パフォーマンスを高めるために 1e-6 から 1e-4 の間で設定します。 |
0 | 1 |
model.optim | 名前 |
オプティマイザアルゴリズム。現在は、 |
- | - | |
model.optim | adam_w_mode |
AdamW モード (true/false) を有効にします。 |
- | - | |
model.optim | eps |
数値安定性のためのイプシロン。 |
1.00E-10 | 1.00E-06 | |
model.optim | weight_decay |
L2 正則化の強度は、0.0 から 1.0 の間である必要があります。 |
0 | 1 | |
model.optim | ベータ |
Adam オプティマイザのベータは 0.0 から 1.0 の間である必要があります。 |
0 | 1 | |
model.optim | sched_warmup_steps |
学習率を徐々に増やすステップの数。これにより、トレーニングの安定性が向上します。1~20。 |
1 | 20 | |
model.optim | sched_constant_steps |
一定の学習レートでのステップ。 |
|||
model.optim | sched.min_lr |
減衰終了時の最小学習レート。制限は 0~1 ですが、学習レートより小さくする必要があります。 |
0 | 1 | |
LoRA PEFT 設定 |
model.peft | peft_scheme |
「lora」または「null」を使用します。「lora」はパラメータ効率の高いファインチューニングに LoRA PEFT メソッドを使用します。「null」はフルランクのファインチューニングを開始します。 |
- | - |
model.peft | lora_tuning.loraplus_lr_ratio |
LoRA+ 学習レートスケーリング係数は、0.0~100.0 の間でなければなりません。 |
0 | 100 | |
model.peft | lora_tuning.alpha |
LoRA ウェイトのスケーリング係数。使用できる値は 32、64、96、128、160、192 です。 |
32 | 192 | |
model.peft | lora_tuning.adapter_dropout |
LoRA パラメータの正規化。0.0 から 1.0 の間である必要があります。 |
0 | 1 | |
DPO 設定 | model-dpo_cfg | beta |
優先設定の適用の強さ。 |
0.001 | 0.1 |
カスタマイズされた Nova モデルを SageMaker トレーニングジョブで実行する
このセクションでは、Jupyter ノートブック環境を使用して SageMaker トレーニングジョブでカスタマイズされた Nova モデルを実行する方法を示します。トレーニングジョブの設定と起動のプロセスを説明する完全な例と、適切なコンテナイメージ URIs とインスタンス設定を選択するためのリファレンステーブルがあります。このアプローチにより、SageMaker のマネージドインフラストラクチャを活用してモデルをカスタマイズしながら、ファインチューニングワークフローをプログラムで制御できます。詳細については、SageMaker AI 推定器を使用してトレーニングジョブを実行する」を参照してください。
リファレンステーブル
サンプルノートブックを実行する前に、次の表を参照して、適切なコンテナイメージ URIs とインスタンス設定を選択してください。
イメージ URI の選択
レシピ | イメージ URI |
---|---|
SFT イメージ URI |
708977205387.dkr.ecr.us-east-1.amazonaws.com/nova-fine-tune-repo:SM-TJ-SFT-latest |
DPO イメージ URI |
708977205387.dkr.ecr.us-east-1.amazonaws.com/nova-fine-tune-repo:SM-TJ-DPO-latest |
インスタンスタイプとカウントの選択
モデル | ジョブタイプ | インスタンスタイプ | 推奨されるインスタンス数 | 許可されたインスタンス数 |
---|---|---|---|---|
Amazon Nova Micro | ファインチューニング (SFT/DPO) |
p5.48xlarge |
2 | 2、4、8 |
Amazon Nova Lite | ファインチューニング (SFT/DPO) |
p5.48xlarge |
4 | 4、8、16 |
Amazon Nova Pro | ファインチューニング (SFT/DPO) |
p5.48xlarge |
6 | 6、12、24 |
サンプルノートブック
次のサンプルノートブックは、トレーニングジョブを実行する方法を示しています。SageMaker AI トレーニングジョブを使用して Nova モデルをカスタマイズする方法に関するその他の入門ノートブックについては、SageMaker AI 推定器を使用してトレーニングジョブを実行する」を参照してください。
# 1. Install dependencies !pip install sagemaker # 2. Import dependencies and initialize sagemaker session import sagemaker,boto3 sm = boto3.client('sagemaker', region_name='us-east-1') sagemaker_session = sagemaker.session.Session(boto_session=boto3.session.Session(), sagemaker_client=sm) # 3. Configure your job # Define the core configuration for launching a SageMaker Training Job. This includes input/output S3 URIs, container image, hardware setup, and other runtime parameters. Update the placeholders below before submitting the job. job_name = "<Your Job Name>" input_s3_uri = "<S3 path to input data>" validation_s3_uri = "<S3 path to validation data>" # optional, leave blank if no validation data output_s3_uri = "<S3 path to output location>" image_uri = "<Image URI from documentation>" # you can choose the image for SFT/DPO instance_type = "ml.p5.48xlarge" # do not change instance_count = <Integer number of hosts> # change hosts as needed. Refer to documentation for allowed values based on model type. role_arn = "<IAM Role you want to use to run the job>" recipe_path = "<Local path to the recipe file>" # 4. Launch SageMaker Training Job # This block sets up and runs the SageMaker training job using the PyTorch estimator. It configures the training image, hardware, input channels, and TensorBoard integration. Validation data is included if provided. from sagemaker.debugger import TensorBoardOutputConfig from sagemaker.pytorch import PyTorch from sagemaker.inputs import TrainingInput tensorboard_output_config = TensorBoardOutputConfig( s3_output_path=output_s3_uri, ) estimator = PyTorch( output_path=output_s3_uri, base_job_name=job_name, role=role_arn, instance_count=instance_count, instance_type=instance_type, training_recipe=recipe_path, sagemaker_session=sagemaker_session, image_uri=image_uri, tensorboard_output_config=tensorboard_output_config, # Add the setting for using TensorBoard. disable_profiler=True, debugger_hook_config=False ) trainingInput = TrainingInput( s3_data=input_s3_uri, distribution='FullyReplicated', s3_data_type='Converse' ) if (validation_s3_uri): validationInput = TrainingInput( s3_data=validation_s3_uri, distribution='FullyReplicated', s3_data_type='Converse' ) estimator.fit(inputs={"train": trainingInput, "validation": validationInput}) # inputs must be called "train" and "validation", do not change else: estimator.fit(inputs={"train": trainingInput}) # 5. Monitor your training job # To monitor your training job, you can either: # * Go to your AWS console -> Amazon Sagemaker AI -> Training -> Training Jobs # * run the following command # sm.describe_training_job(TrainingJobName="<complete training job name>")
ハイパーパラメータ最適化ガイダンス
Nova LLM モデルを効果的に微調整するには、ハイパーパラメータを慎重に選択する必要があります。このセクションでは基本的なレシピ構造とコンポーネントについて説明しますが、特定のユースケースに合わせてハイパーパラメータを最適化するには、追加のガイダンスが必要になることがよくあります。ハイパーパラメータの選択、ベストプラクティス、最適化戦略に関する包括的な推奨事項については、「ハイパーパラメータの選択」を参照してください。このリソースでは、データセットの特性とトレーニング目標に基づいて、適切な学習率、バッチサイズ、トレーニングエポック、その他の重要なパラメータを選択するための詳細なガイダンスを提供します。最適なモデルパフォーマンスを実現するためにレシピ設定を微調整する場合は、このガイドを参照することをお勧めします。
エポック、学習レート、学習ウォームアップステップの最小値、最大値、デフォルト値の詳細については、「モデルを理解する」の「ハイパーパラメータ」を参照してください。
一般的なレシピの変更
特定のユースケースに基づく一般的なレシピ調整は次のとおりです。
-
小さいデータセットの場合 (< 1,000 の例)
training_config: max_epochs: 2 # More passes through a smaller dataset model: hidden_dropout: 0.1 # Increase regularization weight_decay: 0.01 # Increase regularization
-
コンピューティングが制限された効率のために
peft: peft_scheme: "lora" lora_tuning:
-
複雑な命令チューニングの場合
optim: lr: 5e-6 # Lower learning rate for more stable learning sched: warmup_steps: 100 # Longer warmup for stability