翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。
API を使用してテキスト生成モデルをファインチューニングする AutoML ジョブを作成する
大規模言語モデル (LLM) は、テキストの生成、要約、補完、質問への回答など、複数の生成タスクに優れています。こうしたモデルのパフォーマンスは、その大きなサイズと、多様なデータセットやさまざまなタスクに関する幅広いトレーニングによるものです。ただし、医療や金融サービスなどの特定の分野では、固有のデータやユースケースに合わせてカスタマイズされたファインチューニングが必要になる場合があります。特定の分野に合わせてトレーニングを調整することで、LLM のパフォーマンスは向上し、ターゲットアプリケーションに対してより正確な出力を提供できます。
Autopilot は、事前にトレーニングされたさまざまな生成テキストモデルをファインチューニングする機能を提供します。特に、Autopilot は、JumpStart に対応した汎用大規模言語モデル (LLM) の指示ベースのファインチューニングをサポートしています。
注記
Autopilot でのファインチューニングをサポートするテキスト生成モデルには、現在、SageMaker Canvas によってサポートされているリージョンでのみアクセスできます。サポートされているリージョンの完全なリストについては、SageMaker Canvas のドキュメントを参照してください。
事前トレーニング済みモデルをファインチューニングするには、そのタスクの出力の生成方法や動作方法について明確な指示でモデルを導く特定のデータセットが必要です。モデルはデータセットから学習し、提供された指示に従うようにパラメータを調整します。指示ベースのファインチューニングでは、プロンプトとレスポンスのペアとしてフォーマットされ、指示としてフレーズ化された、ラベル付きの例を使用します。ファインチューニングの詳細については、基盤モデルのファインチューニングに関する説明を参照してください。
以下のガイドラインは、Amazon SageMaker SageMaker Autopilot ジョブを作成するプロセスの概要を示しています。 LLMs https://docs.aws.amazon.com/sagemaker/latest/dg/autopilot-reference.html
注記
テキストと画像の分類、時系列予測、大規模言語モデルのファインチューニングなどのタスクは、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
-
SageMaker AI 実行ロールの取得については、「」を参照してください実行ロールを取得する。
-
Amazon S3 の 1 つ以上の特定のバケットにアクセスするためのアクセス許可を SageMaker AI 実行ロールに付与する方法については、「 で SageMaker AI 実行ロールに Amazon S3 アクセス許可を追加する」を参照してください実行ロールを作成する。 Amazon S3
-
-
さらに、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
を設定します。False
and 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"} } }