

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

# API を使用してテキスト生成モデルをファインチューニングする AutoML ジョブを作成する
<a name="autopilot-create-experiment-finetune-llms"></a>

大規模言語モデル (LLM) は、テキストの生成、要約、補完、質問への回答など、複数の生成タスクに優れています。こうしたモデルのパフォーマンスは、その大きなサイズと、多様なデータセットやさまざまなタスクに関する幅広いトレーニングによるものです。ただし、医療や金融サービスなどの特定の分野では、固有のデータやユースケースに合わせてカスタマイズされたファインチューニングが必要になる場合があります。特定の分野に合わせてトレーニングを調整することで、LLM のパフォーマンスは向上し、ターゲットアプリケーションに対してより正確な出力を提供できます。

Autopilot は、事前にトレーニングされたさまざまな生成テキストモデルをファインチューニングする機能を提供します。特に、Autopilot は、JumpStart に対応した汎用大規模言語モデル (LLM) の**指示ベースのファインチューニング**をサポートしています。

**注記**  
Autopilot でのファインチューニングをサポートするテキスト生成モデルには、現在、SageMaker Canvas によってサポートされているリージョンでのみアクセスできます。[サポートされているリージョンの完全なリスト](https://docs.aws.amazon.com/sagemaker/latest/dg/canvas.html)については、SageMaker Canvas のドキュメントを参照してください。

事前トレーニング済みモデルをファインチューニングするには、そのタスクの出力の生成方法や動作方法について明確な指示でモデルを導く特定のデータセットが必要です。モデルはデータセットから学習し、提供された指示に従うようにパラメータを調整します。指示ベースのファインチューニングでは、プロンプトとレスポンスのペアとしてフォーマットされ、指示としてフレーズ化された、ラベル付きの例を使用します。ファインチューニングの詳細については、[基盤モデルのファインチューニング](https://docs.aws.amazon.com/sagemaker/latest/dg/jumpstart-foundation-models-fine-tuning.html)に関する説明を参照してください。

以下のガイドラインは、SageMaker [API リファレンス](https://docs.aws.amazon.com/sagemaker/latest/dg/autopilot-reference.html)を使用して、テキスト生成 LLM のファインチューニングを行うパイロット実験として Amazon SageMaker Autopilot ジョブを作成するプロセスについて概要を示しています。

**注記**  
テキストと画像の分類、時系列予測、大規模言語モデルのファインチューニングなどのタスクは、[AutoML REST API](autopilot-reference.md) のバージョン 2 でのみ利用できます。選択した言語が Python の場合は、[AWS SDK for Python (Boto3)](https://boto3.amazonaws.com/v1/documentation/api/latest/reference/services/sagemaker/client/create_auto_ml_job_v2.html) を参照することも、Amazon SageMaker Python SDK の [AutoMLV2 オブジェクト](https://sagemaker.readthedocs.io/en/stable/api/training/automlv2.html#sagemaker.automl.automlv2.AutoMLV2)を直接参照することもできます。  
ユーザーインターフェイスの利便性を優先するユーザーは、[Amazon SageMaker Canvas](https://docs.aws.amazon.com/sagemaker/latest/dg/canvas-getting-started.html) を使用して、事前にトレーニングされたモデルや生成 AI 基盤モデルにアクセスしたり、特定のテキスト、画像分類、予測のニーズ、または生成 AI に合わせたカスタムモデルを作成したりできます。

LLM をファインチューニングするための Autopilot 実験をプログラムで作成するには、Amazon SageMaker Autopilot または AWS CLIでサポートされている任意の言語で [https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateAutoMLJobV2.html](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateAutoMLJobV2.html) API を呼び出します。

この API アクションが選択した言語の関数にどのように変換されるかについては、「`CreateAutoMLJobV2`」の「[See Also](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateAutoMLJobV2.html#API_CreateAutoMLJobV2_SeeAlso)」セクションを参照して SDK を選択してください。例として、Python ユーザーの場合は、「 AWS SDK for Python (Boto3)」の「`[create\_auto\_ml\_job\_v2](https://boto3.amazonaws.com/v1/documentation/api/latest/reference/services/sagemaker.html#SageMaker.Client.create_auto_ml_job_v2)` のすべてのリクエスト構文」を参照してください。

**注記**  
Autopilot による大規模言語モデルのファインチューニングでは、複数の候補をトレーニングして評価する必要はありません。代わりに、データセットを使用してターゲットモデルを直接ファインチューニングし、デフォルトの目標メトリクスである交差エントロピー損失を改善します。Autopilot で言語モデルをファインチューニングする場合、`AutoMLJobObjective` フィールドを設定する必要はありません。

LLM をファインチューニングしたら、`[DescribeAutoMLJobV2](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_DescribeAutoMLJobV2.html)` API コールを行うときに `[BestCandidate](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CandidateProperties.html#sagemaker-Type-CandidateProperties-CandidateMetrics)` からさまざまな ROUGE スコアにアクセスして、そのパフォーマンスを評価できます。モデルは、トレーニングおよび検証損失とパープレキシティに関する情報も提供します。ファインチューニングされたモデルによって生成されたテキストの品質を評価するメトリクスの包括的なリストについては、「[Autopilot で大規模言語モデルをファインチューニングするためのメトリクス](autopilot-llms-finetuning-metrics.md)」を参照してください。

## 前提条件
<a name="autopilot-llms-finetuning-api-prerequisites"></a>

Autopilot を使用して SageMaker AI でファインチューニング実験を作成する前に、以下のステップを実行してください。
+ (オプション) ファインチューニングする事前トレーニング済みモデルを選択します。

  Amazon SageMaker Autopilot でファインチューニングできる事前トレーニング済みモデルのリストについては、「[ファインチューニングがサポートされている大規模言語モデル](autopilot-llms-finetuning-models.md)」を参照してください。モデルの選択は必須ではありません。モデルが指定されていない場合、Autopilot はデフォルトで自動的にモデル *Falcon7BInstruct* を使用します。
+ 指示のデータセットを作成します。指示ベースのデータセットの形式要件については、「[データセットのファイルタイプと入力データ形式](autopilot-llms-finetuning-data-format.md)」を参照してください。
+ データセットを Amazon S3 バケットに配置します。
+ 実験を実行するために使用した SageMaker AI 実行ロールに、入力データを含む Amazon S3 バケットへの完全なアクセス権を付与します。
  + SageMaker AI 実行ロールの取得については、「[実行ロールを取得する](sagemaker-roles.md#sagemaker-roles-get-execution-role)」を参照してください。
  + Amazon S3 の 1 つ以上の特定のバケットにアクセスするためのアクセス許可を SageMaker AI 実行ロールに付与する方法については、「[実行ロールを作成する](sagemaker-roles.md#sagemaker-roles-create-execution-role)」の「*Add Additional Amazon S3 Permissions to a SageMaker AI Execution Role*」を参照してください。
+ さらに、JumpStart で使用されるデフォルトストレージの Amazon S3 バケットにアクセスするために必要なアクセス許可を、実行ロールに付与する必要があります。このアクセスは、JumpStart でトレーニング済みのモデルアーティファクトを保存および取得するために必要です。この Amazon S3 バケットへのアクセスを許可するには、実行ロールに新しいインラインカスタムポリシーを作成する必要があります。

  以下は、`us-west-2` で AutoML のファインチューニングジョブを設定するときに JSON エディタで使用できるポリシーの例です。

  *JumpStart のバケット名は、 に依存する事前定義されたパターンに従います AWS リージョン。バケットの名前はリージョンに応じて調整する必要があります。*

  ```
  {
      "Sid": "Statement1",
      "Effect": "Allow",
      "Action": [
          "s3:GetObject",
          "s3:PutObject",
          "s3:ListBucket"
      ],
      "Resource": [
          "arn:aws:s3:::jumpstart-cache-prod-{{us-west-2}}",
          "arn:aws:s3:::jumpstart-cache-prod-{{us-west-2/*}}"
      ]
  }
  ```

これが完了すると、Autopilot API リクエストでこの実行ロールの ARN を使用できます。

## 必須パラメータ
<a name="autopilot-llms-finetuning-api-required-params"></a>

`[CreateAutoMLJobV2](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateAutoMLJobV2.html)` を呼び出して LLM ファインチューニングの Autopilot 実験を作成するには、次の値を指定する必要があります。
+ ジョブの名前を指定する `[AutoMLJobName](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateAutoMLJobV2.html#API_CreateAutoMLJobV2_RequestSyntax)`。名前は `string` 型で、最小長は 1 文字、最大長は 32 文字です。
+ `[AutoMLJobInputDataConfig](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateAutoMLJobV2.html#sagemaker-CreateAutoMLJobV2-request-AutoMLJobInputDataConfig)` 内で `training` タイプの `[AutoMLJobChannel](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_AutoMLJobChannel.html)` を少なくとも 1 つ。このチャネルは、ファインチューニングデータセットがある Amazon S3 バケットの名前を指定します。`validation` チャネルを定義することもできます。validation チャネルが指定されておらず、[https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_AutoMLDataSplitConfig.html](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_AutoMLDataSplitConfig.html) で `ValidationFraction` が設定されている場合、この割合を使用してトレーニングデータセットがトレーニングセットと検証セットにランダムに分割されます。さらに、データセットのコンテンツのタイプ (CSV または Parquet ファイル) を指定できます。
+ トレーニングジョブの設定を行うためのタイプ `[TextGenerationJobConfig](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_TextGenerationJobConfig.html)` の `[AutoMLProblemTypeConfig](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateAutoMLJobV2.html#sagemaker-CreateAutoMLJobV2-request-AutoMLProblemTypeConfig)`。

  特に、ファインチューニングするベースモデルの名前を `BaseModelName` フィールドで指定できます。Amazon SageMaker Autopilot でファインチューニングできる事前トレーニング済みモデルのリストについては、「[ファインチューニングがサポートされている大規模言語モデル](autopilot-llms-finetuning-models.md)」を参照してください。
+ AutoML ジョブのアーティファクトを保存する Amazon S3 出力パスを指定する `[OutputDataConfig](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_AutoMLOutputDataConfig.html)`。
+ データへのアクセスに使用されるロールの ARN を指定する `[RoleArn](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateAutoMLJob.html#sagemaker-CreateAutoMLJob-request-RoleArn)`。

以下は、(`Falcon7BInstruct`) モデルのファインチューニングを目的として `CreateAutoMLJobV2` に API コールを行うときに使用される、完全なリクエスト形式の例です。

```
{
   "AutoMLJobName": "<job_name>",
   "AutoMLJobInputDataConfig": [ 
      { 
         "ChannelType": "training",
         "CompressionType": "None",
         "ContentType": "text/csv", 
         "DataSource": { 
            "S3DataSource": { 
               "S3DataType": "S3Prefix",
               "S3Uri": "s3://<bucket_name>/<input_data>.csv"
            }
         }
      }
   ],
  "OutputDataConfig": {
      "S3OutputPath": "s3://<bucket_name>/output",
      "KmsKeyId": "arn:aws:kms:<region>:<account_id>:key/<key_value>"
   },
   "RoleArn":"arn:aws:iam::<account_id>:role/<sagemaker_execution_role_name>",
   "AutoMLProblemTypeConfig": {
        "TextGenerationJobConfig": {
            "BaseModelName": "Falcon7BInstruct"
       }
   }
}
```

その他のすべてのパラメータは省略可能です。

## 任意指定のパラメータ
<a name="autopilot-llms-finetuning-api-optional-params"></a>

次のセクションでは、ファインチューニング AutoML ジョブに渡すことができるいくつかのオプションパラメータについて詳しく説明します。

### AutoML ジョブのトレーニングデータセットと検証データセットを指定する方法
<a name="autopilot-llms-finetuning-data-training-or-validation"></a>

独自の検証データセットとカスタムデータの分割比率を指定することも、Autopilot にデータセットを自動的に分割させることもできます。

各 [https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_AutoMLJobChannel.html](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_AutoMLJobChannel.html) オブジェクト (必須パラメータ「[AutoMLJobInputDataConfig](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateAutoMLJobV2.html#sagemaker-CreateAutoMLJobV2-request-AutoMLJobInputDataConfig)」を参照) には `ChannelType` があり、`training` 値または `validation` 値に設定することで、機械学習モデルを構築するときにデータをどのように使用するかを指定できます。

少なくとも 1 つのデータソースを指定する必要があり、最大 2 つのデータソースを指定できます。1 つはトレーニングデータ用、もう 1 つは検証データ用です。データをトレーニングデータセットと検証データセットに分割する方法は、データソースが 1 つか 2 つかによって異なります。
+ **データソースが 1 つ**のみである場合、`ChannelType` はデフォルトで `training` に設定され、この値を持つ必要があります。
  + [https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_AutoMLDataSplitConfig.html](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_AutoMLDataSplitConfig.html) の `ValidationFraction` 値を設定しないと、このソースのデータの 0.2 (20%) がデフォルトで検証に使用されます。
  + `ValidationFraction` を 0 から 1 の間の値に設定すると、データセットは指定した値に基づいて分割されます。この値は、検証に使用されるデータセットの割合を指定します。
+ **データソースが 2 つ**である場合は、`AutoMLJobChannel` オブジェクトの 1 つの `ChannelType` を `training` (デフォルト値) に設定する必要があります。他のデータソースの `ChannelType` は `validation` に設定する必要があります。2 つのデータソースは、同じ形式 (CSV または Parquet) と同じスキーマを持つ必要があります。この場合、`ValidationFraction` の値を設定してはいけません。各ソースのすべてのデータがトレーニングまたは検証に使用されるためです。この値を設定すると、エラーが発生します。

### 自動デプロイを有効にする方法
<a name="autopilot-llms-finetuning-auto-model-deployment"></a>

Autopilot を使用して、ファインチューニングされたモデルをエンドポイントに自動的にデプロイできます。ファインチューニングされたモデルの自動デプロイを有効にするには、AutoML ジョブリクエストに `[ModelDeployConfig](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateAutoMLJobV2.html#sagemaker-CreateAutoMLJobV2-request-ModelDeployConfig)` を含めます。これにより、ファインチューニングされたモデルを SageMaker AI エンドポイントにデプロイできます。カスタマイズできる設定は以下のとおりです。
+ Autopilot にエンドポイント名を生成させるには、`[AutoGenerateEndpointName](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_ModelDeployConfig.html#API_ModelDeployConfig_Contents)` を `True` に設定します。
+ エンドポイントに独自の名前を指定するには、`[AutoGenerateEndpointName](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_ModelDeployConfig.html#API_ModelDeployConfig_Contents) to False and provide a name of your choice in [EndpointName](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_ModelDeployConfig.html#API_ModelDeployConfig_Contents)` を設定します。

### AutoML API を使用してモデルをファインチューニングするときに EULA への同意を設定する方法
<a name="autopilot-llms-finetuning-set-eula"></a>

ファインチューニングの前にエンドユーザーライセンス契約への同意を必要とするモデルの場合、`[AutoMLProblemTypeConfig](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateAutoMLJobV2.html#sagemaker-CreateAutoMLJobV2-request-AutoMLProblemTypeConfig)` を設定するときに `[TextGenerationJobConfig](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_TextGenerationJobConfig.html)` で `[ModelAccessConfig](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_ModelAccessConfig.html)` の `AcceptEula` 属性を `True` に設定することで EULA に同意できます。

### モデルの学習プロセスを最適化するためにハイパーパラメータを設定する方法
<a name="autopilot-llms-finetuning-set-hyperparameters"></a>

`[AutoMLProblemTypeConfig](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateAutoMLJobV2.html#sagemaker-CreateAutoMLJobV2-request-AutoMLProblemTypeConfig)` を設定するときに `[TextGenerationJobConfig](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_TextGenerationJobConfig.html)` の `TextGenerationHyperParameters` 属性にハイパーパラメータ値を設定することで、テキスト生成モデルの学習プロセスを最適化できます。

Autopilot では、すべてのモデルで 4 つの一般的なハイパーパラメータを設定できます。
+ `epochCount`: 値は、`1` ～ `10` の範囲の整数値を含む文字列である必要があります。
+ `batchSize`: 値は、`1` ～ `64` の範囲の整数値を含む文字列である必要があります。
+ `learningRate`: 値は、`0` ～ `1` の範囲の浮動小数点値を含む文字列である必要があります。
+ `learningRateWarmupSteps`: 値は、`0` ～ `250` の範囲の整数値を含む文字列である必要があります。

各ハイパーパラメータの詳細については、「[テキスト生成モデルの学習プロセスを最適化するためのハイパーパラメータ](autopilot-llms-finetuning-hyperparameters.md)」を参照してください。

次の JSON 例は、TextGenerationJobConfig に渡された、4 つのハイパーパラメータがすべて設定されている `TextGenerationHyperParameters` フィールドを示しています。

```
"AutoMLProblemTypeConfig": {
  "TextGenerationJobConfig": {
    "BaseModelName": "Falcon7B",
    "TextGenerationHyperParameters": {"epochCount":"5", "learningRate":"0.000001", "batchSize": "32", "learningRateWarmupSteps": "10"}
  }
}
```