翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。
アダプター推論コンポーネントを使用してモデルを微調整する
Amazon SageMaker AI を使用すると、独自のモデルをゼロから作成することなく、事前トレーニング済みの基盤モデルをホストできます。ただし、ビジネス固有のニーズに合わせて汎用基盤モデルを調整するには、そのモデルをファインチューニングしたバージョンを作成する必要があります。コスト効率の高い微調整手法の 1 つは、低ランク適応 (LoRA) です。LoRA の背後にある原則は、大規模な基盤モデルのごく一部だけが、新しいタスクやドメインに適応するために更新する必要があることです。LoRA アダプターは、基本基盤モデルからの推論をわずか数の追加アダプターレイヤーで強化します。
SageMaker AI 推論コンポーネントを使用してベース基盤モデルをホストする場合、アダプター推論コンポーネントを作成してLoRA アダプターでベースモデルを微調整できます。アダプター推論コンポーネントを作成するときは、以下を指定します。
-
アダプター推論コンポーネントを含む基本推論コンポーネント。基本推論コンポーネントには、適応させる基盤モデルが含まれています。アダプター推論コンポーネントは、ベース推論コンポーネントに割り当てたコンピューティングリソースを使用します。
-
LoRA アダプターを Amazon S3 に保存した場所。
アダプター推論コンポーネントを作成したら、直接呼び出すことができます。これを行うと、SageMaker AI はアダプターとベースモデルを組み合わせて、生成されたレスポンスを補強します。
[開始する前に]
アダプター推論コンポーネントを作成する前に、次の要件を満たす必要があります。
-
適応する基盤モデルを含む基本推論コンポーネントがあります。この推論コンポーネントを SageMaker AI エンドポイントにデプロイしました。
エンドポイントへの推論コンポーネントのデプロイの詳細については、「」を参照してくださいリアルタイム推論用のモデルをデプロイする。
-
LoRA アダプターモデルがあり、モデルアーティファクトを
tar.gz
ファイルとして Amazon S3 に保存している。アダプター推論コンポーネントを作成するときに、アーティファクトの S3 URI を指定します。
次の例では、SDK for Python (Boto3) を使用してアダプター推論コンポーネントを作成し、呼び出します。
例 create_inference_component
を呼び出してアダプター推論コンポーネントを作成する
次の例では、アダプター推論コンポーネントを作成し、ベース推論コンポーネントに割り当てます。
sm_client.create_inference_component( InferenceComponentName =
adapter_ic_name
, EndpointName =endpoint_name
, Specification={ "BaseInferenceComponentName":base_inference_component_name
, "Container": { "ArtifactUrl":adapter_s3_uri
}, }, )
この例を独自のコードで使用する場合は、プレースホルダー値を次のように置き換えます。
-
adapter_ic_name
– アダプター推論コンポーネントの一意の名前。 -
endpoint_name
– ベース推論コンポーネントをホストするエンドポイントの名前。 -
base_inference_component_name
– 適応する基盤モデルを含むベース推論コンポーネントの名前。 -
adapter_s3_uri
– LoRA アダプターアーティファクトを含むtar.gz
ファイルを検索する S3 URI。
アダプター推論コンポーネントは、通常の推論コンポーネントのコードと同様のコードで作成します。1 つの違いは、 Specification
パラメータでは ComputeResourceRequirements
キーを省略することです。アダプター推論コンポーネントを呼び出すと、ベース推論コンポーネントによってロードされます。アダプター推論コンポーネントは、ベース推論コンポーネントのコンピューティングリソースを使用します。
SDK for Python (Boto3) を使用した推論コンポーネントの作成とデプロイの詳細については、「」を参照してくださいPython SDK でモデルをデプロイする。
アダプター推論コンポーネントを作成したら、 invoke_endpoint
リクエストでその名前を指定してそのコンポーネントを呼び出します。
例 invoke_endpoint
を呼び出してアダプター推論コンポーネントを呼び出す
次の例では、アダプター推論コンポーネントを呼び出します。
response = sm_rt_client.invoke_endpoint( EndpointName =
endpoint_name
, InferenceComponentName =adapter_ic_name
, Body = json.dumps( { "inputs":prompt
, "parameters": {"max_new_tokens": 100, "temperature":0.9} } ), ContentType = "application/json", ) adapter_reponse = response["Body"].read().decode("utf8")["generated_text"]
この例を独自のコードで使用する場合は、プレースホルダー値を次のように置き換えます。
-
endpoint_name
– ベース推論コンポーネントとアダプター推論コンポーネントをホストするエンドポイントの名前。 -
adapter_ic_name
– アダプター推論コンポーネントの名前。 -
prompt
– 推論リクエストのプロンプト。
SDK for Python (Boto3) を使用した推論コンポーネントの呼び出しの詳細については、「」を参照してくださいリアルタイム推論用のモデルを呼び出す。