基盤モデルの微調整 - Amazon SageMaker

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

基盤モデルの微調整

基盤モデルは計算コストが高く、ラベルの付いていない大規模なコーパスでトレーニングされます。事前トレーニング済みの基盤モデルを微調整することは、小規模なコーパスでモデルをカスタマイズしながら、その幅広い機能を活用する手頃な方法です。微調整は、さらにトレーニングを重ねるカスタマイズ方法で、モデルの重みは変わります。

微調整は、次のような必要がある場合に役立ちます。

  • 特定のビジネスニーズに合わせたモデルのカスタマイズ

  • 業界用語、専門用語、その他の特殊な用語など、ドメイン固有の言語をうまく扱うためのモデル

  • 特定のタスクに対するパフォーマンスの強化

  • アプリケーションにおける正確で相対的、かつコンテキスト対応のレスポンス

  • より事実に即しており、有害性が低く、特定の要件により合致したレスポンス

ユースケースと選択した基盤モデルに応じて、微調整には主に 2 つのアプローチがあります。

  1. ドメイン固有のデータに基づいてモデルを微調整することに関心がある場合は、「ドメイン適応の微調整」を参照してください。

  2. プロンプトとレスポンスの例を使用してインストラクションベースの微調整を行うことに興味がある場合は、「インストラクションベースの微調整」を参照してください。

微調整に使用できる基盤モデル

以下の JumpStart 基盤モデルのいずれかを微調整できます。

  • ブルーム 3B

  • ブルーム 7B1

  • BloomZ 3B FP16

  • BloomZ 7B1 FP16

  • コードラマ 13B

  • コードラマ 13B Python

  • コードラマ 34B

  • コードラマ 34B Python

  • コードラマ 70B

  • コードラマ 70B Python

  • コードラマ 7B

  • コードラマ 7B Python

  • CyberAgentLM2-7B-Chat (CALM2-7B-Chat)

  • Falcon 40B BF16

  • Falcon 40B 指示 BF16

  • Falcon 7B BF16

  • Falcon 7B 指示 BF16

  • Flan-T5 ベース

  • Flan-T5 Large

  • Flan-T5 スモール

  • Flan-T5 XL

  • Flan-T5 XXL

  • Gemma 2B

  • Gemma 2B インストラクション

  • Gemma 7B

  • Gemma 7B インストラクション

  • GPT-2 XL

  • GPT-J 6B

  • GPT-Neo 1.3B

  • GPT-Neo 125M

  • GPT-NEO 2.7B

  • LightGPT 命令 6B

  • ラマ 2 13B

  • ラマ 2 13B チャット

  • ラマ 2 13B Neuron

  • ラマ 2 70B

  • Llama 2 70B チャット

  • ラマ 2 7B

  • Llama 2 7B チャット

  • ラマ 2 7B ニューロン

  • 霧状 7B

  • 混合 8x7B

  • 混合 8x7B 指示

  • RedPajama INCITE ベース 3B V1

  • RedPajama INCITE ベース 7B V1

  • RedPajama INCITE Chat 3B V1

  • RedPajama INCITE Chat 7B V1

  • RedPajama INCITE 命令 3B V1

  • RedPajama INCITE 命令 7B V1

  • Stable Diffusion 2.1

一般的にサポートされている微調整ハイパーパラメータ

さまざまな基盤モデルが、微調整時にさまざまなハイパーパラメータをサポートします。以下は、トレーニング中にモデルをさらにカスタマイズできる、一般的にサポートされているハイパーパラメータです。

推論パラメータ 説明

epoch

トレーニング中にモデルが微調整データセットを通過するパスの数。1 より大きい整数である必要があります。

learning_rate

微調整トレーニング例の各バッチを実行した後のモデルの重みの更新レート。0 より大きい正の浮動小数点数である必要があります。

instruction_tuned

モデルを命令トレーニングするかどうか。'True' または 'False' を指定する必要があります。

per_device_train_batch_size

トレーニング用の GPU コアまたは CPU あたりのバッチサイズ。正の整数である必要があります。

per_device_eval_batch_size

評価用の GPU コアまたは CPU あたりのバッチサイズ。正の整数である必要があります。

max_train_samples

デバッグまたはより迅速なトレーニングのために、トレーニング例の数をこの値に切り捨てます。値 -1 は、モデルがすべてのトレーニングサンプルを使用することを意味します。正の整数または -1 である必要があります。

max_val_samples

デバッグまたはより迅速なトレーニングのために、検証例の数をこの値に切り捨てます。値 -1 は、モデルがすべての検証サンプルを使用することを意味します。正の整数または -1 である必要があります。

max_input_length

トークン化後の入力シーケンスの最大合計長。これより長いシーケンスは切り捨てられます。-1 の場合、 max_input_lengthは最小 1024 に設定され、 はトークナイザによってmodel_max_length定義されます。正の値に設定すると、 max_input_lengthは指定された値とトークナイザでmodel_max_length定義された の最小値に設定されます。正の整数または -1 である必要があります。

validation_split_ratio

検証チャネルがない場合、トレーニングデータと分割されたトレーニング検証の比率。0~1 の間で指定する必要があります。

train_data_split_seed

検証データが存在しない場合、入力トレーニングデータのランダム分割がモデルで使用されるトレーニングデータおよび検証データに修正されます。整数である必要があります。

preprocessing_num_workers

前処理に使用するプロセスの数。の場合None、前処理にはメインプロセスが使用されます。

lora_r

低ランク適応 (LoRA) r 値。これは、重み更新のスケーリング係数として機能します。正の整数である必要があります。

lora_alpha

低ランク適応 (LoRA) アルファ値。重み更新のスケーリング係数として機能します。通常、 のサイズの 2~4 倍ですlora_r。正の整数である必要があります。

lora_dropout

低ランク適応 (LoRA ) レイヤーのドロップアウト値は、0~1 の正の浮動小数点数である必要があります。

int8_quantization

の場合True、モデルはトレーニング用に 8 ビットの精度でロードされます。

enable_fsdp

の場合True、トレーニングは完全シャーディングデータ並列処理を使用します。

Studio でモデルを微調整するときに、ハイパーパラメータ値を指定できます。詳細については、「Studio で基盤モデルを微調整する」を参照してください。

SDK を使用してモデルを微調整するときに、 SageMaker Pythonデフォルトのハイパーパラメータ値を上書きすることもできます。詳細については、「JumpStartEstimator クラスで公開されている基盤モデルを微調整する」を参照してください。