API を使用してテキスト生成モデルをファインチューニングする AutoML ジョブを作成する - Amazon SageMaker AI

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

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 Python SDK の AutoMLV2 オブジェクトを直接参照することもできます。

ユーザーインターフェイスの利便性を優先するユーザーは、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 チャネルが指定されておらず、AutoMLDataSplitConfigValidationFraction が設定されている場合、この割合を使用してトレーニングデータセットがトレーニングセットと検証セットにランダムに分割されます。さらに、データセットのコンテンツのタイプ (CSV または Parquet ファイル) を指定できます。

  • トレーニングジョブの設定を行うためのタイプ TextGenerationJobConfigAutoMLProblemTypeConfig

    特に、ファインチューニングするベースモデルの名前を 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 に設定され、この値を持つ必要があります。

    • AutoMLDataSplitConfigValidationFraction 値を設定しないと、このソースのデータの 0.2 (20%) がデフォルトで検証に使用されます。

    • ValidationFraction を 0 から 1 の間の値に設定すると、データセットは指定した値に基づいて分割されます。この値は、検証に使用されるデータセットの割合を指定します。

  • データソースが 2 つである場合は、AutoMLJobChannel オブジェクトの 1 つの ChannelTypetraining (デフォルト値) に設定する必要があります。他のデータソースの ChannelTypevalidation に設定する必要があります。2 つのデータソースは、同じ形式 (CSV または Parquet) と同じスキーマを持つ必要があります。この場合、ValidationFraction の値を設定してはいけません。各ソースのすべてのデータがトレーニングまたは検証に使用されるためです。この値を設定すると、エラーが発生します。

Autopilot を使用して、ファインチューニングされたモデルをエンドポイントに自動的にデプロイできます。ファインチューニングされたモデルの自動デプロイを有効にするには、AutoML ジョブリクエストに ModelDeployConfig を含めます。これにより、微調整されたモデルを SageMaker AI エンドポイントにデプロイできます。カスタマイズできる設定は以下のとおりです。

ファインチューニングの前にエンドユーザーライセンス契約への同意を必要とするモデルの場合、AutoMLProblemTypeConfig を設定するときに TextGenerationJobConfigModelAccessConfigAcceptEula 属性を True に設定することで EULA に同意できます。

AutoMLProblemTypeConfig を設定するときに TextGenerationJobConfigTextGenerationHyperParameters 属性にハイパーパラメータ値を設定することで、テキスト生成モデルの学習プロセスを最適化できます。

Autopilot では、すべてのモデルで 4 つの一般的なハイパーパラメータを設定できます。

  • epochCount: 値は、110 の範囲の整数値を含む文字列である必要があります。

  • batchSize: 値は、164 の範囲の整数値を含む文字列である必要があります。

  • learningRate: 値は、01 の範囲の浮動小数点値を含む文字列である必要があります。

  • learningRateWarmupSteps: 値は、0250 の範囲の整数値を含む文字列である必要があります。

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

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

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