翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。
API を使用してテキスト生成モデルをファインチューニングする AutoML ジョブを作成する
大規模言語モデル (LLM) は、テキストの生成、要約、補完、質問への回答など、複数の生成タスクに優れています。こうしたモデルのパフォーマンスは、その大きなサイズと、多様なデータセットやさまざまなタスクに関する幅広いトレーニングによるものです。ただし、医療や金融サービスなどの特定の分野では、固有のデータやユースケースに合わせてカスタマイズされたファインチューニングが必要になる場合があります。特定の分野に合わせてトレーニングを調整することで、LLM のパフォーマンスは向上し、ターゲットアプリケーションに対してより正確な出力を提供できます。
Autopilot は、事前にトレーニングされたさまざまな生成テキストモデルをファインチューニングする機能を提供します。特に、Autopilot は、JumpStart に対応した汎用大規模言語モデル (LLM) の指示ベースのファインチューニングをサポートしています。
注記
Autopilot でのファインチューニングをサポートするテキスト生成モデルには、現在、SageMaker Canvas によってサポートされているリージョンでのみアクセスできます。サポートされているリージョンの完全なリストについては、SageMaker Canvas のドキュメントを参照してください。
事前トレーニング済みモデルをファインチューニングするには、そのタスクの出力の生成方法や動作方法について明確な指示でモデルを導く特定のデータセットが必要です。モデルはデータセットから学習し、提供された指示に従うようにパラメータを調整します。指示ベースのファインチューニングでは、プロンプトとレスポンスのペアとしてフォーマットされ、指示としてフレーズ化された、ラベル付きの例を使用します。ファインチューニングの詳細については、基盤モデルのファインチューニングに関する説明を参照してください。
以下のガイドラインは、SageMaker API リファレンスを使用して、テキスト生成 LLM のファインチューニングを行うパイロット実験として Amazon SageMaker Autopilot ジョブを作成するプロセスについて概要を示しています。
注記
テキストと画像の分類、時系列予測、大規模言語モデルのファインチューニングなどのタスクは、AutoML REST API のバージョン 2 でのみ利用できます。選択した言語が Python の場合は、AWS SDK for Python (Boto3)
ユーザーインターフェイスの利便性を優先するユーザーは、Amazon SageMaker Canvas を使用して、事前にトレーニングされたモデルや生成 AI 基盤モデルにアクセスしたり、特定のテキスト、画像分類、予測のニーズ、または生成 AI に合わせたカスタムモデルを作成したりできます。
LLM をファインチューニングするための Autopilot 実験をプログラムで作成するには、Amazon SageMaker Autopilot または AWS CLI でサポートされている任意の言語で CreateAutoMLJobV2 API を呼び出します。
この API アクションが選択した言語の関数にどのように変換されるかについては、「CreateAutoMLJobV2」の「See Also」セクションを参照して SDK を選択してください。例として、Python ユーザーの場合は、「AWS SDK for Python (Boto3)」の「create_auto_ml_job_v2 のすべてのリクエスト構文」を参照してください。
注記
Autopilot による大規模言語モデルのファインチューニングでは、複数の候補をトレーニングして評価する必要はありません。代わりに、データセットを使用してターゲットモデルを直接ファインチューニングし、デフォルトの目標メトリクスである交差エントロピー損失を改善します。Autopilot で言語モデルをファインチューニングする場合、AutoMLJobObjective フィールドを設定する必要はありません。
LLM をファインチューニングしたら、DescribeAutoMLJobV2 API コールを行うときに BestCandidate からさまざまな ROUGE スコアにアクセスして、そのパフォーマンスを評価できます。モデルは、トレーニングおよび検証損失とパープレキシティに関する情報も提供します。ファインチューニングされたモデルによって生成されたテキストの品質を評価するメトリクスの包括的なリストについては、「Autopilot で大規模言語モデルをファインチューニングするためのメトリクス」を参照してください。
前提条件
Autopilot を使用して SageMaker AI でファインチューニング実験を作成する前に、以下のステップを実行してください。
-
(オプション) ファインチューニングする事前トレーニング済みモデルを選択します。
Amazon SageMaker Autopilot でファインチューニングできる事前トレーニング済みモデルのリストについては、「ファインチューニングがサポートされている大規模言語モデル」を参照してください。モデルの選択は必須ではありません。モデルが指定されていない場合、Autopilot はデフォルトで自動的にモデル Falcon7BInstruct を使用します。
-
指示のデータセットを作成します。指示ベースのデータセットの形式要件については、「データセットのファイルタイプと入力データ形式」を参照してください。
-
データセットを Amazon S3 バケットに配置します。
-
実験を実行するために使用した SageMaker AI 実行ロールに、入力データを含む Amazon S3 バケットへの完全なアクセス権を付与します。
-
SageMaker AI 実行ロールの取得については、「実行ロールを取得する」を参照してください。
-
Amazon S3 の 1 つ以上の特定のバケットにアクセスするためのアクセス許可を SageMaker AI 実行ロールに付与する方法については、「実行ロールを作成する」の「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 を使用できます。
必須パラメータ
CreateAutoMLJobV2 を呼び出して LLM ファインチューニングの Autopilot 実験を作成するには、次の値を指定する必要があります。
-
ジョブの名前を指定する
AutoMLJobName。名前はstring型で、最小長は 1 文字、最大長は 32 文字です。 -
AutoMLJobInputDataConfig内でtrainingタイプのAutoMLJobChannelを少なくとも 1 つ。このチャネルは、ファインチューニングデータセットがある Amazon S3 バケットの名前を指定します。validationチャネルを定義することもできます。validation チャネルが指定されておらず、AutoMLDataSplitConfigでValidationFractionが設定されている場合、この割合を使用してトレーニングデータセットがトレーニングセットと検証セットにランダムに分割されます。さらに、データセットのコンテンツのタイプ (CSV または Parquet ファイル) を指定できます。 -
トレーニングジョブの設定を行うためのタイプ
TextGenerationJobConfigのAutoMLProblemTypeConfig。特に、ファインチューニングするベースモデルの名前を
BaseModelNameフィールドで指定できます。Amazon SageMaker Autopilot でファインチューニングできる事前トレーニング済みモデルのリストについては、「ファインチューニングがサポートされている大規模言語モデル」を参照してください。 -
AutoML ジョブのアーティファクトを保存する Amazon S3 出力パスを指定する
OutputDataConfig。 -
データへのアクセスに使用されるロールの ARN を指定する
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" } } }
その他のすべてのパラメータは省略可能です。
任意指定のパラメータ
次のセクションでは、ファインチューニング AutoML ジョブに渡すことができるいくつかのオプションパラメータについて詳しく説明します。
独自の検証データセットとカスタムデータの分割比率を指定することも、Autopilot にデータセットを自動的に分割させることもできます。
各 AutoMLJobChannel オブジェクト (必須パラメータ「AutoMLJobInputDataConfig」を参照) には ChannelType があり、training 値または validation 値に設定することで、機械学習モデルを構築するときにデータをどのように使用するかを指定できます。
少なくとも 1 つのデータソースを指定する必要があり、最大 2 つのデータソースを指定できます。1 つはトレーニングデータ用、もう 1 つは検証データ用です。データをトレーニングデータセットと検証データセットに分割する方法は、データソースが 1 つか 2 つかによって異なります。
-
データソースが 1 つのみである場合、
ChannelTypeはデフォルトでtrainingに設定され、この値を持つ必要があります。-
AutoMLDataSplitConfigのValidationFraction値を設定しないと、このソースのデータの 0.2 (20%) がデフォルトで検証に使用されます。 -
ValidationFractionを 0 から 1 の間の値に設定すると、データセットは指定した値に基づいて分割されます。この値は、検証に使用されるデータセットの割合を指定します。
-
-
データソースが 2 つである場合は、
AutoMLJobChannelオブジェクトの 1 つのChannelTypeをtraining(デフォルト値) に設定する必要があります。他のデータソースのChannelTypeはvalidationに設定する必要があります。2 つのデータソースは、同じ形式 (CSV または Parquet) と同じスキーマを持つ必要があります。この場合、ValidationFractionの値を設定してはいけません。各ソースのすべてのデータがトレーニングまたは検証に使用されるためです。この値を設定すると、エラーが発生します。
Autopilot を使用して、ファインチューニングされたモデルをエンドポイントに自動的にデプロイできます。ファインチューニングされたモデルの自動デプロイを有効にするには、AutoML ジョブリクエストに ModelDeployConfig を含めます。これにより、ファインチューニングされたモデルを SageMaker AI エンドポイントにデプロイできます。カスタマイズできる設定は以下のとおりです。
-
Autopilot にエンドポイント名を生成させるには、
AutoGenerateEndpointNameをTrueに設定します。 -
エンドポイントに独自の名前を指定するには、
AutoGenerateEndpointName toを設定します。Falseand provide a name of your choice in EndpointName
ファインチューニングの前にエンドユーザーライセンス契約への同意を必要とするモデルの場合、AutoMLProblemTypeConfig を設定するときに TextGenerationJobConfig で ModelAccessConfig の AcceptEula 属性を True に設定することで EULA に同意できます。
AutoMLProblemTypeConfig を設定するときに TextGenerationJobConfig の TextGenerationHyperParameters 属性にハイパーパラメータ値を設定することで、テキスト生成モデルの学習プロセスを最適化できます。
Autopilot では、すべてのモデルで 4 つの一般的なハイパーパラメータを設定できます。
-
epochCount: 値は、1~10の範囲の整数値を含む文字列である必要があります。 -
batchSize: 値は、1~64の範囲の整数値を含む文字列である必要があります。 -
learningRate: 値は、0~1の範囲の浮動小数点値を含む文字列である必要があります。 -
learningRateWarmupSteps: 値は、0~250の範囲の整数値を含む文字列である必要があります。
各ハイパーパラメータの詳細については、「テキスト生成モデルの学習プロセスを最適化するためのハイパーパラメータ」を参照してください。
次の JSON 例は、TextGenerationJobConfig に渡された、4 つのハイパーパラメータがすべて設定されている TextGenerationHyperParameters フィールドを示しています。
"AutoMLProblemTypeConfig": { "TextGenerationJobConfig": { "BaseModelName": "Falcon7B", "TextGenerationHyperParameters": {"epochCount":"5", "learningRate":"0.000001", "batchSize": "32", "learningRateWarmupSteps": "10"} } }