AutoML ジョブを作成して、 を使用してテキスト生成モデルを微調整する API - Amazon SageMaker

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

AutoML ジョブを作成して、 を使用してテキスト生成モデルを微調整する API

大規模言語モデル (LLMs) は、テキスト生成、要約、完了、質問への回答など、複数の生成タスクに優れています。そのパフォーマンスは、その大きなサイズと、さまざまなデータセットやさまざまなタスクに関する広範なトレーニングに起因する可能性があります。ただし、医療や金融サービスなどの特定のドメインでは、一意のデータやユースケースに合わせてカスタマイズされた微調整が必要になる場合があります。トレーニングを特定のドメインに合わせて調整することで、 LLMsはパフォーマンスを向上させ、ターゲットアプリケーションに対してより正確な出力を提供できます。

Autopilot は、事前にトレーニングされた生成テキストモデルの選択を微調整する機能を提供します。特に、Autopilot は、 を搭載した汎用の大規模言語モデル () の選択の命令ベースの微調整をサポートしています JumpStart。LLMs

注記

Autopilot で微調整をサポートするテキスト生成モデルは、現在 SageMaker Canvas でサポートされているリージョンでのみアクセスできます。サポートされているリージョン の完全なリストについては、 SageMaker Canvas のドキュメントを参照してください。 https://docs.aws.amazon.com/sagemaker/latest/dg/canvas.html

事前トレーニング済みモデルを微調整するには、そのタスクの出力の生成方法や動作方法についてモデルをガイドする明確な手順の特定のデータセットが必要です。モデルはデータセットから学習し、提供された指示に準拠するようにパラメータを調整します。命令ベースの微調整では、プロンプトとレスポンスのペアとしてフォーマットされ、命令としてフレーズされたラベル付き例を使用します。微調整の詳細については、「基盤モデルの微調整」を参照してください。

以下のガイドラインでは、 SageMaker APIリファレンス LLMsを使用してテキスト生成を微調整するパイロット実験として Amazon SageMaker Autopilot ジョブを作成するプロセスの概要を示します。

注記

テキストとイメージの分類、時系列予測、大規模言語モデルの微調整などのタスクは、AutoML のバージョン 2 REST APIでのみ利用できます。選択した言語が Python の場合は、Amazon SageMaker Python の AWS SDK for Python (Boto3)または AutoMLV2 オブジェクトSDKを直接参照できます。

ユーザーインターフェイスの利便性を好むユーザーは、Amazon SageMaker Canvas を使用して、事前トレーニング済みのモデルや生成 AI 基盤モデルにアクセスしたり、特定のテキスト、画像分類、予測ニーズ、生成 AI に合わせてカスタムモデルを作成したりできます。

を微調整するためにプログラムで Autopilot 実験を作成するにはLLM、Amazon SageMaker Autopilot または でサポートされているCreateAutoMLJobV2API任意の言語で を呼び出すことができます AWS CLI。

このAPIアクションが任意の言語で関数に変換される方法については、「」セクションのhttps://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateAutoMLJobV2.html#API_CreateAutoMLJobV2_SeeAlso「」を参照して CreateAutoMLJobV2を選択しますSDK。例として、Python ユーザーの場合は、「 AWS SDK for Python (Boto3)」の「create_auto_ml_job_v2 のすべてのリクエスト構文」を参照してください。

注記

Autopilot は、複数の候補をトレーニングして評価することなく、大規模な言語モデルを微調整します。代わりに、データセットを使用して、Autopilot はターゲットモデルを直接微調整して、デフォルトの目標メトリクスであるクロスエントロピー損失を強化します。Autopilot で言語モデルを微調整する場合、 AutoMLJobObjectiveフィールドを設定する必要はありません。

LLM を微調整すると、さまざまな にアクセスしてパフォーマンスを評価できます。ROUGE は、DescribeAutoMLJobV2API通話を行うBestCandidateときに を通じて をスコアリングします。このモデルは、トレーニングと検証の損失と多重性に関する情報も提供します。微調整されたモデルによって生成されたテキストの品質を評価するためのメトリクスの包括的なリストについては、「」を参照してくださいAutopilot で大規模言語モデルを微調整するためのメトリクス

前提条件

Autopilot を使用して で微調整実験を作成する前に SageMaker、必ず次のステップを実行してください。

  • (オプション) 微調整する事前トレーニング済みモデルを選択します。

    Amazon SageMaker Autopilot で微調整できる事前トレーニング済みモデルのリストについては、「」を参照してください微調整でサポートされている大規模言語モデル。モデルの選択は必須ではありません。モデルが指定されていない場合、Autopilot は自動的にモデル Falcon7BInstruct にデフォルト設定されます。

  • 命令のデータセットを作成します。命令ベースのデータセットの形式要件については、データセットファイルタイプと入力データ形式「」を参照してください。

  • データセットを Amazon S3 バケットに配置します。

  • 実験の実行に使用される SageMaker 実行ロールの入力データを含む Amazon S3 バケットへのフルアクセスを許可します。

    • SageMaker 実行ロールの取得については、「」を参照してください実行ロールを取得する

    • Amazon S3 の 1 つ以上の特定のバケットにアクセスするための SageMaker 実行ロール許可の付与については、「」の SageMaker 「実行ロールへの Amazon S3 アクセス許可の追加」を参照してください実行ロールを作成する

  • さらに、 が使用するデフォルトのストレージ Amazon S3 バケットにアクセスするために必要なアクセス許可を実行ロールに提供する必要があります JumpStart。このアクセスは、トレーニング済みのモデルアーティファクトを に保存および取得するために必要です JumpStart。この Amazon S3 バケットへのアクセスを許可するには、実行ロールに新しいインラインカスタムポリシーを作成する必要があります。

    以下は、 で AutoML 微調整ジョブを設定するときにJSONエディタで使用できるポリシーの例ですus-west-2

    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 文字です。

  • 内のtrainingタイプのうち少なくとも AutoMLJobChannel 1 つAutoMLJobInputDataConfig。このチャネルは、微調整データセットがある Amazon S3 バケットの名前を指定します。validation チャンネルを定義するオプションがあります。検証チャネルが指定されておらず、 ValidationFractionが で設定されている場合AutoMLDataSplitConfig、この割合はトレーニングデータセットをトレーニングセットと検証セットにランダムに分割するために使用されます。さらに、データセットのコンテンツのタイプ (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オブジェクト (必要なパラメータ A utoMLJobInputDataConfigを参照) には があり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 エンドポイントにデプロイできます。カスタマイズできる設定は以下のとおりです。

微調整の前にエンドユーザーライセンス契約の承諾を必要とするモデルの場合、 を設定するTextGenerationJobConfigときに の AcceptEula 属性を TrueModelAccessConfig に設定EULAすることで、 を承諾できますAutoMLProblemTypeConfig

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

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

  • epochCount: その値は、1~ の範囲内の整数値を含む文字列である必要があります10

  • batchSize: その値は、1~ の範囲内の整数値を含む文字列である必要があります64

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

  • learningRateWarmupSteps: その値は、0~ の範囲内の整数値を含む文字列である必要があります250

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

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

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