View a markdown version of this page

厳選されたハブモデルをファインチューニングする - Amazon SageMaker AI

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

厳選されたハブモデルをファインチューニングする

厳選されたプライベートモデルハブでは、モデル参照を使用してファインチューニングトレーニングジョブを実行できます。モデル参照は、SageMaker AI パブリックハブで公開されている JumpStart モデルを参照しますが、特定のユースケースに合わせて独自のデータでモデルをファインチューニングできます。ファインチューニングジョブの後、エンドポイントで使用またはデプロイできるモデルの重みにアクセスできます。

SageMaker Python SDK を使用して、厳選されたハブモデルをわずか数行のコードでファインチューニングできます。公開されている JumpStart モデルのファインチューニングに関する一般的な情報については、「ファインチューニング用の基盤モデルとハイパーパラメータ」を参照してください。

前提条件

厳選されたハブで JumpStart モデル参照をファインチューニングするには、以下を実行します。

  1. ユーザーの IAM ロールに SageMaker AI TrainHubModel アクセス許可がアタッチされていることを確認します。詳細については、AWS IAM ユーザーガイドの「IAM ID アクセス許可の追加および削除」を参照してください。

    ユーザーの IAM ロールには、以下の例のようなポリシーをアタッチする必要があります。

    JSON
    { "Version":"2012-10-17", "Statement": [ { "Sid": "VisualEditor0", "Effect": "Allow", "Action": "sagemaker:TrainHubModel", "Resource": "arn:aws:sagemaker:*:111122223333:hub/*" } ] }
    注記

    厳選されたハブが複数のアカウント間で共有されており、ハブコンテンツが別のアカウントによって所有されている場合は、次の例に示すように、リクエスト元アカウントに TrainHubModel アクセス許可も付与するリソースベースの IAM ポリシーが HubContent (モデル参照リソース) にあることを確認してください。

    JSON
    { "Version":"2012-10-17", "Statement": [ { "Sid": "AllowCrossAccountSageMakerAccess", "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::111122223333:root" }, "Action": [ "sagemaker:TrainHubModel" ], "Resource": [ "arn:aws:sagemaker:*:111122223333:hub/*" ] } ] }
  2. ファインチューニングする JumpStart モデルへのモデル参照を含む、厳選されたプライベートハブを用意します。プライベートハブの作成の詳細については、「プライベートモデルハブを作成する」を参照してください。一般公開されている JumpStart モデルをプライベートハブに追加する方法については、「プライベートハブにモデルを追加する」を参照してください。

    注記

    選択した JumpStart モデルはファインチューニング可能である必要があります。SageMaker Python SDK の hub.list_sagemaker_public_hub_models()メソッドを使用して、利用可能なモデルをプログラムで一覧表示できます。

  3. モデルのファインチューニングに使用するトレーニングデータセットを用意します。データセットは、ファインチューニングするモデルに適したトレーニング形式である必要があります。

厳選されたハブモデル参照をファインチューニングする

次の手順では、SageMaker Python SDK を使用して、厳選されたプライベートハブでモデル参照をファインチューニングする方法を示しています。

  1. SageMaker Python SDK の最新バージョン (少なくとも 3.0.0) がインストールされていることを確認します。詳細については、「ドキュメントを読む」ウェブサイトのSageMaker Python SDK のバージョン 3.x を使用する」を参照してください。

    !pip install --upgrade sagemaker
  2. SageMaker Python SDK から AWS SDK for Python (Boto3) と必要なモジュールをインポートします。

    import boto3 from sagemaker.train import ModelTrainer from sagemaker.train.configs import Compute, InputData from sagemaker.core.jumpstart.configs import JumpStartConfig from sagemaker.core.helper.session_helper import Session
  3. Boto3 セッション、SageMaker AI クライアント、SageMaker Python SDK セッションを初期化します。

    sagemaker_client = boto3.Session(region_name=<AWS-region>).client("sagemaker") sm_session = Session(sagemaker_client=sagemaker_client)
  4. ModelTrainer を使用して を作成し、JumpStart モデル ID、モデルリファレンスを含むハブの名前、SageMaker Python SDK セッションfrom_jumpstart_configを指定します。使用可能なモデル IDs をプログラムで一覧表示するには、SageMaker Python SDK の hub.list_sagemaker_public_hub_models()メソッドを使用します。

    オプションで、ModelTrainer の作成時に フィールドinstance_typeinstance_countフィールドを指定できます。指定しない場合、トレーニングジョブでは使用しているモデルのデフォルトのインスタンスタイプとカウントを使用します。

    必要に応じて、ファインチューニングされたモデルの重みを保存する Amazon S3 の場所を output_path で指定することもできます。output_path を指定しない場合、デフォルトの SageMaker AI Amazon S3 バケットをアカウントのリージョンに使用します。名前は sagemaker-<region>-<account-id> という形式になります。

    jumpstart_config = JumpStartConfig( model_id="meta-textgeneration-llama-3-2-1b", hub_name=<your-hub-name>, # For gated models, set accept_eula=True to accept the end-user license agreement. # This example uses False. Change it to True to accept the EULA for gated models. accept_eula=False, ) model_trainer = ModelTrainer.from_jumpstart_config( jumpstart_config=jumpstart_config, # Optional: specify your desired instance type and count for the training job. # compute=Compute(instance_type="ml.g5.2xlarge", instance_count=1), # Optional: specify a custom S3 location to store the fine-tuned model artifacts. # output_path="s3://<output-path-for-model-artifacts>", )
  5. InputData オブジェクトを作成します。channel_name を に設定trainし、 data_sourceをファインチューニングデータセットの場所に設定します。次の例では、 をデータセットの Amazon S3 URI <your-fine-tuning-dataset>に置き換えます。ローカルモードや複数のトレーニングデータチャネルの使用など、その他の考慮事項がある場合は、SageMaker Python SDK ドキュメント」のSageMaker Train」を参照してください。

    training_input = InputData( channel_name="train", data_source="s3://<your-fine-tuning-dataset>", )
  6. モデルトレーナーの train()メソッドを呼び出し、トレーニングデータを渡します。train() コールではなく JumpStartConfig (前のステップで示した) で EULA の承諾を宣言します。

    注記

    前のJumpStartConfig例では、 を設定しますaccept_eula=False。ゲートモデルの場合、EULA を受け入れるTrueには値を に変更する必要があります。

    model_trainer.train(input_data_config=[training_input])

これでファインチューニングジョブが開始されます。

SageMaker AI コンソールで、または ListTrainingJobs API を使用して、トレーニングジョブを表示することでファインチューニングジョブを確認できます。

ModelTrainer オブジェクトで指定された Amazon S3 output_path (リージョンのデフォルトの SageMaker AI Amazon S3 バケット、または該当する場合は指定したカスタム Amazon S3 パス) で、ファインチューニングされたモデルアーティファクトにアクセスできます。