一般設定 - Amazon SageMaker AI

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

一般設定

config.yaml ファイルは、トレーニングレシピとクラスターを指定します。トレーニングジョブの環境変数などのランタイム設定も含まれています。

defaults: - _self_ - cluster: slurm - recipes: training/llama/hf_llama3_8b_seq8192_gpu instance_type: p5.48xlarge git: repo_url_or_path: null branch: null commit: null entry_script: null token: null env_vars: NCCL_DEBUG: WARN

以下のパラメータを config.yaml で変更できます。

  1. defaults: デフォルトのクラスターやデフォルトのレシピなど、デフォルト設定を指定します。

  2. instance_type: アプリケーションを実行するために使用する Amazon EC2 インスタンスタイプ。

  3. git: トレーニングジョブの SageMaker HyperPod レシピアダプタリポジトリの場所を指定します。

  4. env_vars: ランタイムトレーニングジョブに渡す環境変数を指定できます。例えば、NCCL_DEBUG 環境変数を指定することで、NCCL のログ記録レベルを調整できます。

レシピは、トレーニングジョブアーキテクチャを定義するコア設定です。このファイルには、以下などのトレーニングジョブに関する重要な情報が多数含まれています。

  • モデル並列処理を使用するかどうか

  • 使用するデータソース名

  • 混合精度トレーニング

  • チェックポイント関連の設定

レシピはそのまま使用できます。以下の情報を使用して変更することもできます。

実行

以下は、トレーニングジョブを実行するための基本的な実行情報です。

run: name: llama-8b results_dir: ${base_results_dir}/${.name} time_limit: "6-00:00:00" model_type: hf
  1. name: 設定ファイルでトレーニングジョブの名前を指定します。

  2. results_dir: トレーニングジョブの結果が保存されるディレクトリを指定できます。

  3. time_limit: ハードウェアリソースを長時間占有しないように、トレーニングジョブの最大トレーニング時間を設定できます。

  4. model_type: 使用しているモデルのタイプを指定できます。例えば、モデルが HuggingFace からのものである hf かどうかを指定できます。

exp_manager

exp_manager は実験を設定します。exp_manager では、出力ディレクトリやチェックポイント設定などのフィールドを指定できます。以下は、exp_manager を設定する方法の例です。

exp_manager: exp_dir: null name: experiment create_tensorboard_logger: True
  1. exp_dir: 実験ディレクトリには、トレーニングジョブの標準出力ファイルと標準エラーファイルが含まれています。デフォルトでは、現在のディレクトリを使用します。

  2. name: exp_dir で実験を識別するために使用される実験名。

  3. create_tensorboard_logger: TensorBoard ロガーを有効または無効にするには、True または False と指定します。

Checkpointing

3 種類のチェックポイントがサポートされています。

  • 自動チェックポイント

  • 手動チェックポイント

  • 完全チェックポイント

自動チェックポイント

SageMaker HyperPod レシピアダプタが自動的に管理するチェックポイントを保存またはロードする場合は、auto_checkpoint を有効にできます。auto_checkpoint を有効にするには、enabledTrue に設定します。自動チェックポイントは、トレーニングとファインチューニングの両方に使用できます。自動チェックポイントは、共有ファイルシステムと Amazon S3 の両方に使用できます。

exp_manager checkpoint_dir: ${recipes.exp_manager.exp_dir}/checkpoints/ auto_checkpoint: enabled: True

自動チェックポイントは、自動的に計算された最適な保存間隔で local_state_dict を非同期的に保存します。

注記

このチェックポイントモードの場合、自動保存チェックポイントはトレーニング実行間の再シャーディングをサポートしません。最新の自動保存チェックポイントから再開するには、同じシャード度を保持する必要があります。自動再開のために追加情報を指定する必要はありません。

手動チェックポイント

shared_state_dict に中間チェックポイントを非同期的に保存するように checkpoint_callback_params を変更できます。例えば、次の設定を指定して、10 ステップごとにシャードチェックポイントを有効にし、最新の 3 つのチェックポイントを保持できます。

シャードチェックポイントを使用すると、トレーニング実行間のシャード度を変更し、resume_from_checkpoint を設定してチェックポイントをロードできます。

注記
  • PEFT ファインチューニングの場合、シャードチェックポイントは Amazon S3 をサポートしません。

  • 自動チェックポイントと手動チェックポイントは相互排他性です。

  • 変更できるのは、FSDP シャード度とレプリケーション度のみです。

exp_manager: checkpoint_callback_params: # Set save_top_k = 0 to disable sharded checkpointing save_top_k: 3 every_n_train_steps: 10 monitor: "step" mode: "max" save_last: False resume_from_checkpoint: ${recipes.exp_manager.exp_dir}/checkpoints/

チェックポイントの詳細については、「SMP を使用したチェックポイント」を参照してください。

完全チェックポイント

エクスポートされた full_state_dict チェックポイントは、推論またはファインチューニングに使用できます。hf_model_name_or_path を使用してチェックポイント全体をロードできます。このモードでは、モデルの重みのみが保存されます。

full_state_dict モデルをエクスポートするには、次のパラメータを設定できます。

注記

現時点では、完全チェックポイントは Amazon S3 チェックポイントではサポートされていません。完全なチェックポイントを有効にする場合、exp_manager.checkpoint_dir の S3 パスを設定することはできません。ただし、exp_manager.export_full_model.final_export_dir を Amazon S3 パスに設定しながら、exp_manager.checkpoint_dir をローカルファイルシステム上の特定のディレクトリに設定することができます。

exp_manager: export_full_model: # Set every_n_train_steps = 0 to disable full checkpointing every_n_train_steps: 0 save_last: True final_export_dir : null

モデル

モデルアーキテクチャとトレーニングプロセスのさまざまな側面を定義します。これには、モデル並列処理、精度、データ処理の設定などがあります。以下は、モデルセクション内で設定できる主要なコンポーネントです。

モデル並列処理

レシピを指定したら、トレーニングするモデルを定義します。モデル並列処理を定義することもできます。例えば、tensor_model_parallel_degree を定義できます。FP8 精度でトレーニングなどの他の機能を有効にすることができます。例えば、テンソル並列処理とコンテキスト並列処理を使用してモデルをトレーニングできます。

model: model_type: llama_v3 # Base configs train_batch_size: 4 val_batch_size: 1 seed: 12345 grad_clip: 1.0 # Model parallelism tensor_model_parallel_degree: 4 expert_model_parallel_degree: 1 context_parallel_degree: 2

さまざまなタイプのモデル並列処理手法の理解を深めるには、次のアプローチを参照してください。

FP8

FP8 (8 ビット浮動小数点精度) を有効にするには、次の例で FP8 に関連する設定を指定できます。

model: # FP8 config fp8: True fp8_amax_history_len: 1024 fp8_amax_compute_algo: max

FP8 データ形式は現時点では、P5 インスタンスタイプでのみサポートされていることに注意が必要です。P4 などの古いインスタンスタイプを使用している場合は、モデルトレーニングプロセスの FP8 機能を無効にします。FP8 の詳細については、「混合精度トレーニング」を参照してください。

data

データの下にデータパスを追加することで、トレーニングジョブのカスタムデータセットを指定できます。システムのデータモジュールは、次のデータ形式をサポートしています。

  1. JSON

  2. JSONGZ (圧縮 JSON)

  3. ARROW

ただし、事前にトークン化された独自のデータセットを準備するのはお客様の責任となります。特定の要件を持つ上級ユーザーの場合は、カスタマイズしたデータモジュールを実装して統合するオプションもあります。HuggingFace データセットの詳細については「データセット」を参照してください。

model: data: train_dir: /path/to/your/train/data val_dir: /path/to/your/val/data dataset_type: hf use_synthetic_data: False

モデルのトレーニング方法を指定できます。デフォルトでは、レシピはファインチューニングではなく事前トレーニングを使用します。次の例では、LoRA (Low-Rank Adaptation) を使用してファインチューニングジョブを実行するようにレシピを設定しています。

model: # Fine tuning config do_finetune: True # The path to resume from, needs to be HF compatible hf_model_name_or_path: null hf_access_token: null # PEFT config peft: peft_type: lora rank: 32 alpha: 16 dropout: 0.1

レシピの詳細については、SageMaker HyperPod のレシピ」を参照してください。