

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

# アダプター推論コンポーネントを使用してモデルをファインチューニングする
<a name="realtime-endpoints-adapt"></a>

Amazon SageMaker AI では、独自のモデルをゼロから作成することなく、事前トレーニング済みの基盤モデルをホストできます。ただし、自社のビジネスに固有のニーズに合わせて汎用基盤モデルを調整するには、そのファインチューニングされたバージョンを作成する必要があります。コスト効率の高いファインチューニング手法の 1 つが Low-Rank Adaptation (LoRA) です。大規模な基盤モデルのごく一部しか、新しいタスクやドメインに合わせて更新する必要がないという原則が LoRA にはあります。LoRA アダプターでは、わずか数個の追加のアダプターレイヤーでベース基盤モデルからの推論を強化します。

SageMaker AI 推論コンポーネントを使用してベース基盤モデルをホストする場合、*アダプター推論コンポーネント*を作成することで、そのベースモデルを LoRA アダプターでファインチューニングできます。アダプター推論コンポーネントを作成するときは以下を指定します。
+ アダプター推論コンポーネントを含めることになる*ベース推論コンポーネント*。ベース推論コンポーネントには調整する基盤モデルが含まれています。アダプター推論コンポーネントでは、ベース推論コンポーネントに割り当てたコンピューティングリソースを使用します。
+ LoRA アダプターを Amazon S3 に保存した場所。

作成したアダプター推論コンポーネントは直接呼び出すことができます。これを行うと、SageMaker AI によってアダプターがベースモデルと組み合わされ、生成された応答が強化されます。

**[開始する前に]**

アダプター推論コンポーネントを作成する前に、次の要件を満たす必要があります。
+ 調整する基盤モデルを含むベース推論コンポーネントが用意されている。この推論コンポーネントを SageMaker AI エンドポイントにデプロイした。

  推論コンポーネントをエンドポイントにデプロイする方法の詳細については、「[リアルタイム推論用のモデルをデプロイする](realtime-endpoints-deploy-models.md)」を参照してください。
+ LoRA アダプターモデルがあり、モデルアーティファクトが `tar.gz` ファイルとして Amazon S3 に保存されている。アダプター推論コンポーネントを作成するときに、アーティファクトの S3 URI を指定します。

次の例では、SDK for Python (Boto3) を使用してアダプター推論コンポーネントの作成と呼び出しを行っています。

**Example アダプター推論コンポーネントを作成するための `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。
通常の推論コンポーネントのコードに似たコードでアダプター推論コンポーネントを作成します。`Specification` パラメータで `ComputeResourceRequirements` キーを省略する点が通常の推論コンポーネントのコードとは異なる点です。アダプター推論コンポーネントを呼び出すと、ベース推論コンポーネントによってロードされます。アダプター推論コンポーネントでは、ベース推論コンポーネントのコンピューティングリソースを使用します。  
SDK for Python (Boto3) を使用した推論コンポーネントの作成とデプロイの詳細については、「[Python SDK でモデルをデプロイする](realtime-endpoints-deploy-models.md#deploy-models-python)」を参照してください。

アダプター推論コンポーネントを作成したら、`invoke_endpoint` リクエストでその名前を指定してそのコンポーネントを呼び出します。

**Example アダプター推論コンポーネントを呼び出すための `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) を使用した推論コンポーネントの呼び出しの詳細については、「[リアルタイム推論用のモデルを呼び出す](realtime-endpoints-test-endpoints.md)」を参照してください。