

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

# JumpStart で基盤モデルへのアクセスを制御するための厳選プライベートハブ
<a name="jumpstart-curated-hubs"></a>

プライベートハブを使用して、事前トレーニング済みの JumpStart 基盤モデルを組織用に厳選します。最新の公開されている基盤モデルや独自の基盤モデルを活用しつつ、ガバナンスガードレールを効かせ、承認されたモデルだけを組織でアクセスできるように管理します。

プライベートモデルハブを使用して、モデルやノートブックを共有し、モデルアーティファクトを一元管理します。モデルの検出可能性が向上し、組織内でのモデルの使用が合理化されます。管理者はプライベートハブを作成し、さまざまなチーム、ユースケース、またはセキュリティ要件に応じたモデルのサブセットを含めることができます。JumpStart プライベートモデルハブは、管理者が SageMaker Python SDK を使用して作成できます。ユーザーは Amazon SageMaker Studio または SageMaker Python SDK を使用して、厳選されたモデルセットを参照し、その中からモデルをトレーニングおよびデプロイできます。

プライベートモデルハブの作成の詳細については、「[Amazon SageMaker JumpStart のプライベートモデルハブの管理者ガイド](jumpstart-curated-hubs-admin-guide.md)」を参照してください。

アカウント間でプライベートモデルハブを共有する方法については、「[とのプライベートモデルハブのクロスアカウント共有 AWS Resource Access Manager](jumpstart-curated-hubs-ram.md)」を参照してください。

プライベートモデルハブへのアクセスの詳細については、「[ユーザーガイド](jumpstart-curated-hubs-user-guide.md)」を参照してください。

# Amazon SageMaker JumpStart のプライベートモデルハブの管理者ガイド
<a name="jumpstart-curated-hubs-admin-guide"></a>

組織内のユーザーがアクセス可能なモデルを厳選したハブに関して、管理者はさまざまなアクションを実行できます。例えば、プライベートハブの作成、追加、削除、アクセス管理を行います。このページでは、厳選されたプライベートハブに対応している AWS リージョンに関する情報と、プライベートハブを使用するための前提条件を取り上げます。

## サポートされている AWS リージョン
<a name="jumpstart-curated-hubs-admin-guide-regions"></a>

厳選されたプライベートハブは現在、以下の AWS 商用リージョンで一般利用可能です。
+ us–east–1
+ us-east-2
+ us-west-2
+ eu-west-1
+ eu-central-1
+ ap-northeast-1
+ ap-northeast-2
+ ap-south-1
+ ap-southeast-1
+ ap-southeast-2
+ il-central-1 (SDK のみ)

1 つのリージョンで許可されるハブの最大数は、デフォルトでは 50 です。

## 前提条件
<a name="jumpstart-curated-hubs-admin-guide-prerequisites"></a>

厳選されたプライベートハブを Studio で使用するには、次の前提条件が必要です。
+ 管理者アクセス権を持つ AWS アカウント
+ Amazon SageMaker Studio にアクセスできる AWS Identity and Access Management (IAM) ロール Amazon SageMaker 
+ JumpStart が有効になっている Amazon SageMaker AI ドメイン
+ ユーザーが独自のモデルを使用しようとする場合は、 AWS Marketplace でそれらのモデルへのサブスクリプションが必要です。
+ AWS 独自のモデルをデプロイする アカウントには、 AWS Marketplace でそれらのモデルへのサブスクリプションが必要です。

Studio の基本的な使用方法については、「[Amazon SageMaker Studio](studio-updated.md)」を参照してください。

# プライベートモデルハブを作成する
<a name="jumpstart-curated-hubs-admin-guide-create"></a>

以下の手順に従って、組織で事前トレーニング済み JumpStart 基盤モデルへのアクセスを制御するためのプライベートハブを作成してください。モデルハブを作成する前に、SageMaker Python SDK をインストールし、必要な IAM アクセス許可を設定する必要があります。

**プライベートハブを作成する**

1. SageMaker Python SDK をインストールし、必要な Python パッケージをインポートします。

   ```
   # Install the SageMaker Python SDK
   !pip3 install sagemaker --force-reinstall --quiet
   
   # Import the necessary Python packages
   import boto3
   from sagemaker import Session
   from sagemaker.jumpstart.hub.hub import Hub
   ```

1. SageMaker AI セッションを初期化します。

   ```
   sm_client = boto3.client('sagemaker')
   session = Session(sagemaker_client=sm_client)
   session.get_caller_identity_arn()
   ```

1. 内部ハブ名、UI 表示名、UI ハブの説明など、プライベートハブの詳細情報を設定します。
**注記**  
ハブの作成時に Amazon S3 バケット名を指定しない場合は、新しいバケットが自動的に作成されます。新しいバケットの名前の構造は `sagemaker-hubs-REGION-ACCOUNT_ID` です。

   ```
   HUB_NAME="Example-Hub"
   HUB_DISPLAY_NAME="Example Hub UI Name"
   HUB_DESCRIPTION="A description of the example private curated hub."
   REGION="us-west-2"
   ```

1. **管理者** IAM ロールに、プライベートハブを作成するために必要な Amazon S3 アクセス許可があることを確認します。ロールに必要なアクセス許可がない場合は、IAM コンソールの **[ロール]** ページに移動します。**管理者**ロールを選択し、**[アクセス許可ポリシー]** ペインで **[許可を追加]** を選択して、JSON エディタを使用して次のアクセス許可を持つインラインポリシーを作成します。

------
#### [ JSON ]

****  

   ```
   {
       "Version":"2012-10-17",		 	 	 
       "Statement": [
           {
               "Action": [
                   "s3:ListBucket",
                   "s3:GetObject",
                   "s3:GetObjectTagging"
               ],
               "Resource": [
                   "arn:aws:s3:::jumpstart-cache-prod-REGION",
                   "arn:aws:s3:::jumpstart-cache-prod-REGION/*"
               ],
               "Effect": "Allow"
           }
       ]
   }
   ```

------

1. `hub.create()` を使用して、**手順 3** の設定情報でプライベートモデルハブを作成します。

   ```
   hub = Hub(hub_name=HUB_NAME, sagemaker_session=session)
   
   try:
   # Create the private hub
     hub.create(
         description=HUB_DESCRIPTION,
         display_name=HUB_DISPLAY_NAME
     )
     print(f"Successfully created Hub with name {HUB_NAME} in {REGION}")
   # Check that no other hubs with this internal name exist
   except Exception as e:
     if "ResourceInUse" in str(e):
       print(f"A hub with the name {HUB_NAME} already exists in your account.")
     else:
       raise e
   ```

1. 次の `describe` コマンドを使用して、新しいプライベートハブの設定を確認します。

   ```
   hub.describe()
   ```

# プライベートハブにモデルを追加する
<a name="jumpstart-curated-hubs-admin-guide-add-models"></a>

プライベートハブを作成したら、許可リストに登録されたモデルを追加できます。利用可能な JumpStart モデルを網羅したリストについては、SageMaker Python SDK リファレンスの「[Built-in Algorithms with pre-trained Model Table](https://sagemaker.readthedocs.io/en/stable/doc_utils/pretrainedmodels.html)」を参照してください。

1. `hub.list_sagemaker_public_hub_models()` メソッドを使用して、利用可能なモデルをプログラムでフィルタリングできます。必要に応じて、フレームワーク (`"framework == pytorch"`)、画像分類などのタスク (`"task == ic"`) といったカテゴリでフィルタリングできます。フィルターの詳細については、「[https://github.com/aws/sagemaker-python-sdk/blob/master/src/sagemaker/jumpstart/notebook_utils.py](https://github.com/aws/sagemaker-python-sdk/blob/master/src/sagemaker/jumpstart/notebook_utils.py)」を参照してください。`hub.list_sagemaker_public_hub_models()` メソッドの filter パラメータの指定は任意です。

   ```
   filter_value = "framework == meta"
   response = hub.list_sagemaker_public_hub_models(filter=filter_value)
   models = response["hub_content_summaries"]
   while response["next_token"]:
       response = hub.list_sagemaker_public_hub_models(filter=filter_value, next_token=response["next_token"])
       models.extend(response["hub_content_summaries"])
   
   print(models)
   ```

1. フィルタリングして選んだモデルを、`hub.create_model_reference()` メソッドでそのモデルの ARN を指定して追加できます。

   ```
   for model in models:
       print(f"Adding {model.get('hub_content_name')} to Hub")
       hub.create_model_reference(model_arn=model.get("hub_content_arn"), model_name=model.get("hub_content_name"))
   ```

# プライベートハブのリソースを更新する
<a name="jumpstart-curated-hubs-update"></a>

プライベートハブのリソースを更新して、メタデータを変更できます。更新できるリソースには、Amazon SageMaker JumpStart モデル、カスタムモデル、ノートブック、データセット、JsonDoc へのモデル参照が含まれます。

モデル、ノートブック、データセット、または JsonDoc リソースを更新するときに、コンテンツの説明、表示名、キーワード、サポートステータスを更新できます。JumpStart モデルへのモデル参照を更新する際は、使用する最小モデルバージョンを指定するフィールドのみを更新できます。
+ 「モデルまたはノートブックリソースを更新」して DataSet/JsonDoc を含めます。CLI コマンドでは、DataSets/JsonDocs を hub-content-type 引数に追加する必要があります。

更新するリソースに固有のセクションに従います。

## モデルまたはノートブックリソースを更新する
<a name="jumpstart-curated-hubs-update-model-notebook"></a>

モデルまたはノートブックリソースを更新するには、[UpdateHubContent](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_UpdateHubContent.html) API を使用します。

この API で更新できる有効なメタデータフィールドは次のとおりです。
+ `HubContentDescription` - リソースの説明。
+ `HubContentDisplayName` - リソースの表示名。
+ `HubContentMarkdown` – Markdown 形式のリソースの説明。
+ `HubContentSearchKeywords` – リソースの検索可能なキーワード。
+ `SupportStatus` - リソースの現在のステータス。

リクエストには、前述の 1 つ以上のフィールドの変更を含めます。ハブコンテンツタイプなど、他のフィールドを更新しようとすると、エラーが発生します。

------
#### [ AWS SDK for Python (Boto3) ]

次の例は、 を使用して [ UpdateHubContent](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_UpdateHubContent.html) リクエスト AWS SDK for Python (Boto3) を送信する方法を示しています。

**注記**  
リクエストで指定した `HubContentVersion` は、特定のバージョンのメタデータが更新されることを意味しています。ハブコンテンツの利用可能なすべてのバージョンを確認するには、[ListHubContentVersions](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_ListHubContentVersions.html) API を使用できます。

```
import boto3
sagemaker_client = boto3.Session(region_name=<AWS-region>).client("sagemaker")

sagemaker_client.update_hub_contents(
    HubName=<hub-name>,
    HubContentName=<resource-content-name>,
    HubContentType=<"Model"|"Notebook">,
    HubContentVersion='1.0.0', # specify the correct version that you want to update
    HubContentDescription=<updated-description-string>
)
```

------
#### [ AWS CLI ]

次の例は、 を使用して [ update-hub-content](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/sagemaker/update-hub-content.html) リクエスト AWS CLI を送信する方法を示しています。

```
aws sagemaker update-hub-content \
--hub-name <hub-name> \
--hub-content-name <resource-content-name> \
--hub-content-type <"Model"|"Notebook"> \
--hub-content-version "1.0.0" \
--hub-content-description <updated-description-string>
```

------

## モデル参照を更新する
<a name="jumpstart-curated-hubs-update-model-reference"></a>

JumpStart モデルへのモデル参照を更新するには、[UpdateHubContentReference](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_UpdateHubContentReference.html) API を使用します。

更新できるのはモデル参照の `MinVersion` フィールドだけです。

------
#### [ AWS SDK for Python (Boto3) ]

次の例は、 を使用して [ UpdateHubContentReference](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_UpdateHubContentReference.html) リクエスト AWS SDK for Python (Boto3) を送信する方法を示しています。

```
import boto3
sagemaker_client = boto3.Session(region_name=<AWS-region>).client("sagemaker")

update_response = sagemaker_client.update_hub_content_reference(
    HubName=<hub-name>,
    HubContentName=<model-reference-content-name>,
    HubContentType='ModelReference',
    MinVersion='1.0.0'
)
```

------
#### [ AWS CLI ]

次の例は、 を使用して [ update-hub-content-reference ](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/sagemaker/update-hub-content-reference.html)リクエスト AWS CLI を送信する方法を示しています。

```
aws sagemaker update-hub-content-reference \
 --hub-name <hub-name> \
 --hub-content-name <model-reference-content-name> \
 --hub-content-type "ModelReference" \
 --min-version "1.0.0"
```

------

# とのプライベートモデルハブのクロスアカウント共有 AWS Resource Access Manager
<a name="jumpstart-curated-hubs-ram"></a>

プライベートモデルハブを作成したら、 AWS Resource Access Manager () を使用してハブを必要なアカウントと共有できますAWS RAM。プライベートハブの作成の詳細については、「[プライベートモデルハブを作成する](jumpstart-curated-hubs-admin-guide-create.md)」を参照してください。以下のページでは、 AWS RAM内のプライベートハブに関連するマネージドアクセス許可について詳しく説明します。内でリソース共有を作成する方法については AWS RAM、「」を参照してください[クロスアカウントハブ共有を設定する](jumpstart-curated-hubs-ram-setup.md)。

## 厳選されたプライベートハブのマネージドアクセス許可
<a name="jumpstart-curated-hubs-ram-permissions"></a>

使用可能なアクセス許可は、読み取り、読み取りと使用、フルアクセスです。アクセス許可名、説明、各権限で使用できる特定の API のリストを以下に示します。
+ 読み取りアクセス許可 (`AWS RAMPermissionSageMaker AIHubRead`): 読み取り権限があると、リソースコンシューマーアカウントは共有ハブのコンテンツを読み取り、詳細とメタデータを表示できます。
  + `DescribeHub`: ハブとその設定に関する詳細情報を取得します。
  + `DescribeHubContent`: 特定のハブで使用できるモデルに関する詳細情報を取得します。
  + `ListHubContent`: ハブで使用可能なすべてのモデルを一覧表示します。
  + `ListHubContentVersions`: ハブで使用可能なすべてのモデルのバージョンを一覧表示します。
+ 読み取りと使用のアクセス許可 (`AWS RAMPermissionSageMaker AIHubReadAndUse`): 読み取りと使用の権限があると、リソースコンシューマーアカウントは共有ハブ内のコンテンツを読み取り、利用可能なモデルを推論用にデプロイできます。
  + `DescribeHub`: ハブとその設定に関する詳細情報を取得します。
  + `DescribeHubContent`: 特定のハブで使用できるモデルに関する詳細情報を取得します。
  + `ListHubContent`: ハブで使用可能なすべてのモデルを一覧表示します。
  + `ListHubContentVersions`: ハブで使用可能なすべてのモデルのバージョンを一覧表示します。
  + `DeployHubModel`: 推論に使用できるオープンウェイトハブモデルをデプロイするためのアクセスを許可します。
+ フルアクセス許可 (`AWS RAMPermissionSageMaker AIHubFullAccessPolicy`): フルアクセス権限があると、リソースコンシューマーアカウントは、共有ハブ内のコンテンツの読み取り、ハブコンテンツの追加と削除、推論に使用できるモデルのデプロイを実行できます。
  + `DescribeHub`: ハブとその設定に関する詳細情報を取得します。
  + `DescribeHubContent`: 特定のハブで使用できるモデルに関する詳細情報を取得します。
  + `ListHubContent`: ハブで使用可能なすべてのモデルを一覧表示します。
  + `ListHubContentVersions`: ハブで使用可能なすべてのモデルのバージョンを一覧表示します。
  + `ImportHubContent`: ハブのコンテンツをインポートします。
  + `DeleteHubContent`: ハブのコンテンツを削除します。
  + `CreateHubContentReference`: SageMaker AI **パブリックモデル**ハブのモデルをプライベートハブで共有するためのハブコンテンツ参照を作成します。
  + `DeleteHubContentReference`: SageMaker AI **パブリックモデル**ハブのモデルをプライベートハブで共有するためのハブコンテンツ参照を削除します。
  + `DeployHubModel`: 推論に使用できるオープンウェイトハブモデルをデプロイするためのアクセスを許可します。

独自のモデルには `DeployHubModel` アクセス許可は必要ありません。

# クロスアカウントハブ共有を設定する
<a name="jumpstart-curated-hubs-ram-setup"></a>

SageMaker は [AWS Resource Access Manager (AWS RAM)](https://docs.aws.amazon.com/ram/latest/userguide/what-is.html) を使用して、複数のアカウント間でプライベートハブを安全に共有できるようにします。「 *AWS RAM ユーザーガイド*」の[AWS 「リソース](https://docs.aws.amazon.com/ram/latest/userguide/getting-started-sharing.html#getting-started-sharing-create)の共有」の手順とともに、次の手順を使用してクロスアカウントハブ共有を設定します。

**リソース共有を作成する**

1. [AWS RAM コンソール](https://console.aws.amazon.com/ram/home)で **[リソース共有を作成]** を選択します。

1. リソース共有の詳細を指定するときに、**[SageMaker Hubs]** リソースタイプを選択し、共有対象のプライベートハブを 1 つ以上選択します。ハブを他のアカウントと共有すると、そのコンテンツがすべて暗黙的に共有されます。

1. アクセス許可をリソース共有に関連付けます。マネージドアクセス許可の詳細については、「[厳選されたプライベートハブのマネージドアクセス許可](jumpstart-curated-hubs-ram.md#jumpstart-curated-hubs-ram-permissions)」を参照してください。

1.  AWS アカウント IDs を使用して、共有リソースへのアクセスを許可するアカウントを指定します。

1. リソース共有の設定を確認し、**[リソース共有の作成]** を選択します。リソース共有とプリンシパルの関連付けが完了するまでに数分かかることがあります。

詳細については、「 *AWS Resource Access Manager ユーザーガイド*[」の AWS 「リソースの共有](https://docs.aws.amazon.com/ram/latest/userguide/getting-started-sharing.html)」を参照してください。

リソース共有とプリンシパルの関連付けが設定されると、指定された AWS アカウントにリソース共有への参加の招待が届きます。共有リソースにアクセスするには、 AWS アカウントが招待を受け入れる必要があります。

を通じてリソース共有の招待を受け入れる方法の詳細については AWS RAM、「 *AWS Resource Access Manager ユーザーガイド*」の[「共有 AWS リソースの使用](https://docs.aws.amazon.com/ram/latest/userguide/getting-started-shared.html)」を参照してください。

# プライベートハブからモデルを削除する
<a name="jumpstart-curated-hubs-admin-guide-delete-models"></a>

組織が使用するプライベートハブからモデルを削除できます。それには、`hub.delete_model_reference()` メソッドで、削除対象のモデルの ARN を指定します。これで、プライベートハブからそのモデルへのアクセスが削除されます。

```
hub.delete_model_reference(model-name)
```

# JumpStart 制限付きモデルへのアクセスを制限する
<a name="jumpstart-curated-hubs-gated-model-access"></a>

Amazon SageMaker JumpStart では、公開されている基盤モデルと独自基盤モデルの両方へのアクセスを提供しています。プライベート Amazon S3 バケットには、アクセスするためにモデルの EULA (エンドユーザーライセンス契約) に同意する必要がある特定の制限付きモデルがあります。詳細については、「[SageMaker Python SDK で EULA に同意する](jumpstart-foundation-models-choose.md#jumpstart-foundation-models-choose-eula-python-sdk)」を参照してください。

現在のデフォルトの動作では、ユーザーがモデルの EULA に同意すると、ユーザーはモデルにアクセスして[ファインチューニングトレーニングジョブ](jumpstart-foundation-models-use-python-sdk-estimator-class.md)を作成できます。ただし、管理者がこれらの制限付きモデルへのファインチューニングアクセスを制限したい場合は、リクエストが制限付きモデルに送信されるたびに `CreateTrainingJob` アクションを使用するアクセス許可を拒否するポリシーを設定できます。

以下は、管理者がユーザーの IAM ロールに追加できる AWS Identity and Access Management (IAM) ポリシーの例です。

```
{
    "Effect": "Deny",
    "Action": "sagemaker:CreateTrainingJob",
    "Resource": "*",
    "Condition": {
        "Bool": {
            "sagemaker:DirectGatedModelAccess": "true"
        }
    }
}
```

制限付きモデルへの無制限アクセスを提供せずに特定のモデルへのアクセスをユーザーに許可する場合は、厳選されたハブを設定し、特定のモデルをハブに追加します。詳細については、「[JumpStart で基盤モデルへのアクセスを制御するための厳選プライベートハブ](jumpstart-curated-hubs.md)」を参照してください。

# SageMaker **パブリックモデル**ハブへのアクセスを削除する
<a name="jumpstart-curated-hubs-admin-guide-remove-public-hub"></a>

厳選されたプライベートハブを Studio で JumpStart に追加するだけでなく、SageMaker **パブリックモデル**ハブへのユーザーによるアクセスを削除することもできます。SageMaker **パブリックモデル**ハブからは、利用可能なすべての JumpStart 基盤モデルにアクセスできます。

SageMaker **パブリックモデル**ハブへのアクセスを削除し、ユーザーがアクセス可能なハブを 1 つのプライベートハブに限定した場合、ユーザーが Studio の左側のナビゲーションペインで **[JumpStart]** を選択すると、そのプライベートハブに直接移動します。ユーザーが複数のプライベートハブにアクセスできる場合は、Studio の左側のナビゲーションペインで **[JumpStart]** を選択すると、**[ハブ]** メニューページが表示されます。

次のインラインポリシーを使用して、SageMaker **パブリックモデル**ハブへのユーザーによるアクセスを削除します。

**注記**  
以下のポリシーで、ハブからアクセスする追加の Amazon S3 バケットを指定できます。*`REGION`* は、実際のハブのリージョンに置き換えてください。

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Action": "s3:*",
            "Effect": "Deny",
            "NotResource": [
                "arn:aws:s3:::jumpstart-cache-prod-us-east-1/*.ipynb",
                "arn:aws:s3:::jumpstart-cache-prod-us-east-1/*eula*",
                "arn:aws:s3:::amzn-s3-demo-bucket/*"
            ]
        },
        {
            "Action": "sagemaker:*",
            "Effect": "Deny",
            "Resource": [
                "arn:aws:sagemaker:us-east-1:aws:hub/SageMakerPublicHub",
                "arn:aws:sagemaker:us-east-1:aws:hub-content/SageMakerPublicHub/*/*"
            ]
        }
    ]
}
```

------

# プライベートハブを削除する
<a name="jumpstart-curated-hubs-admin-guide-delete"></a>

管理者アカウントからプライベートハブを削除できます。プライベートハブを削除する前に、そのハブ内のコンテンツを削除しておく必要があります。次のコマンドを使用して、ハブのコンテンツとハブ本体を削除します。

```
# List the model references in the private hub
response = hub.list_models()
models = response["hub_content_summaries"]
while response["next_token"]:
    response = hub.list_models(next_token=response["next_token"])
    models.extend(response["hub_content_summaries"])

# Delete all model references in the hub
for model in models:
    hub.delete_model_reference(model_name=model.get('HubContentName'))

# Delete the private hub
hub.delete()
```

# トラブルシューティング
<a name="jumpstart-curated-hubs-admin-guide-troubleshooting"></a>

以下のセクションでは、プライベートモデルハブの作成時に発生する可能性のある IAM アクセス許可の問題に関する情報と、それらの問題の解決方法を説明します。

**`ValidationException` when calling the `CreateModel` operation: Could not access model data**

この例外は、**管理者**ロールに適切な Amazon S3 アクセス許可が設定されていない場合に発生します。プライベートハブの作成に必要な Amazon S3 アクセス許可の詳細については、「[プライベートモデルハブを作成する](jumpstart-curated-hubs-admin-guide-create.md)」の**手順 3** を参照してください。

**`Access Denied` または `Forbidden` when calling `create()`**

SageMaker **パブリックモデル**ハブに関連付けられた Amazon S3 バケットへの適切なアクセス許可がない場合、プライベートハブの作成時にアクセスが拒否されます。プライベートハブの作成に必要な Amazon S3 アクセス許可の詳細については、「[プライベートモデルハブを作成する](jumpstart-curated-hubs-admin-guide-create.md)」の**手順 3** を参照してください。

# ユーザーガイド
<a name="jumpstart-curated-hubs-user-guide"></a>

以下のトピックでは、Amazon SageMaker JumpStart の厳選されたモデルハブでのモデルへのアクセスと使用について説明しています。Amazon SageMaker Studio インターフェイスを介して、または SageMaker Python SDK を使用してプログラムで、厳選されたハブモデルにアクセスする方法について説明します。さらに、厳選されたハブモデルをファインチューニングして、特定のユースケースやビジネスニーズに合わせて調整する方法について説明します。

**Topics**
+ [Amazon SageMaker JumpStart で厳選されたモデルハブにアクセスする](jumpstart-curated-hubs-access-hubs.md)
+ [厳選されたハブモデルをファインチューニングする](jumpstart-curated-hubs-fine-tune.md)

# Amazon SageMaker JumpStart で厳選されたモデルハブにアクセスする
<a name="jumpstart-curated-hubs-access-hubs"></a>

Studio または SageMaker Python SDK のいずれかから、プライベートモデルハブにアクセスできます。

## Studio でプライベートモデルハブにアクセスする
<a name="jumpstart-curated-hubs-user-guide-studio"></a>

**重要**  
2023 年 11 月 30 日以降、従来の Amazon SageMaker Studio のエクスペリエンスは Amazon SageMaker Studio Classic と名前が変更されました。以下のセクションは、更新後の Studio のエクスペリエンスに沿った内容になっています。Studio Classic アプリケーションを使用する場合は、「[Amazon SageMaker Studio Classic](studio.md)」を参照してください。

Amazon SageMaker Studio で、**[ホーム]** ページまたは左側のパネルの **[ホーム]** メニューから JumpStart ランディングページを開きます。**SageMaker JumpStart** ランディングページが開いて、モデルハブを調べたり、モデルを検索したりできます。
+ **[ホーム]** ページで、**[構築済みの自動ソリューション]** ペインの **[JumpStart]** を選択します。
+ 左側のパネルの **[ホーム]** メニューから、**[JumpStart]** ノードに移動します。

Amazon SageMaker Studio の基本的な操作方法については、「[Amazon SageMaker Studio](studio-updated.md)」を参照してください。

Studio の **SageMaker JumpStart** ランディングページから、組織の許可リストに登録されているモデルを含むプライベートモデルハブを探すことができます。アクセス可能なモデルハブが 1 つだけの場合は、**SageMaker JumpStart** ランディングページからそのハブに直接移動します。複数のハブにアクセスできる場合は、**[ハブ]** ページが表示されます。

Studio でアクセスできるモデルのファインチューニング、デプロイ、評価の詳細については、「[Studio で基盤モデルを使用する](jumpstart-foundation-models-use-studio-updated.md)」を参照してください。

## SageMaker Python SDK を使用してプライベートモデルハブにアクセスする
<a name="jumpstart-curated-hubs-user-guide-sdk"></a>

SageMaker Python SDK を使用してプライベートモデルハブにアクセスできます。厳選されたハブの読み取り、使用、編集のアクセス権は、管理者によって提供されます。

**注記**  
ハブがアカウント間で共有されている場合、`HUB_NAME` はハブ ARN である必要があります。ハブがアカウント間で共有されていない場合、`HUB_NAME` はハブ名になります。

1. SageMaker Python SDK をインストールし、必要な Python パッケージをインポートします。

   ```
   # Install the SageMaker Python SDK
       !pip3 install sagemaker --force-reinstall --quiet
       
       # Import the necessary Python packages
       import boto3
       from sagemaker import Session
       from sagemaker.jumpstart.hub.hub import Hub
       from sagemaker.jumpstart.model import JumpStartModel
       from sagemaker.jumpstart.estimator import JumpStartEstimator
   ```

1. SageMaker AI セッションを初期化し、ハブ名とリージョンを使用してプライベートハブに接続します。

   ```
   # If a hub is shared across accounts, then the HUB_NAME must be the hub ARN
       HUB_NAME="Example-Hub-ARN" 
       REGION="us-west-2" 
       
       # Initialize a SageMaker session
       sm_client = boto3.client('sagemaker') 
       sm_runtime_client = boto3.client('sagemaker-runtime') 
       session = Session(sagemaker_client=sm_client, 
                           sagemaker_runtime_client=sm_runtime_client)
       
       # Initialize the private hub
       hub = Hub(hub_name=HUB_NAME, sagemaker_session=session)
   ```

1. プライベートハブに接続したら、次のコマンドを使用して、そのハブで使用可能なすべてのモデルを一覧表示できます。

   ```
   response = hub.list_models()
       models = response["hub_content_summaries"]
       while response["next_token"]:
           response = hub.list_models(next_token=response["next_token"])
           models.extend(response["hub_content_summaries"])
           
       print(models)
   ```

1. 次のコマンドでモデル名を使用して、特定のモデルに関する詳細情報を取得できます。

   ```
   response = hub.describe_model(model_name="example-model")
       print(response)
   ```

SageMaker Python SDK を使用してアクセスできるモデルのファインチューニングとデプロイの詳細については、「[SageMaker Python SDK で基盤モデルを使用する](jumpstart-foundation-models-use-python-sdk.md)」を参照してください。

# 厳選されたハブモデルをファインチューニングする
<a name="jumpstart-curated-hubs-fine-tune"></a>

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

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

## 前提条件
<a name="jumpstart-curated-hubs-fine-tune-prereqs"></a>

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

1. ユーザーの IAM ロールに SageMaker AI `TrainHubModel` アクセス許可がアタッチされていることを確認します。詳細については、*AWS IAM ユーザーガイド*の「[IAM ID アクセス許可の追加および削除](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_manage-attach-detach.html)」を参照してください。

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

------
#### [ JSON ]

****  

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

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

****  

   ```
   {
       "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/*"
               ]
           }
       ]
   }
   ```

1. ファインチューニングする JumpStart モデルへのモデル参照を含む、厳選されたプライベートハブを用意します。プライベートハブの作成の詳細については、「[プライベートモデルハブを作成する](jumpstart-curated-hubs-admin-guide-create.md)」を参照してください。一般公開されている JumpStart モデルをプライベートハブに追加する方法については、「[プライベートハブにモデルを追加する](jumpstart-curated-hubs-admin-guide-add-models.md)」を参照してください。
**注記**  
選択した JumpStart モデルはファインチューニング可能である必要があります。「[Built-in Algorithms with Pre-trained Models Table](https://sagemaker.readthedocs.io/en/stable/doc_utils/pretrainedmodels.html)」で、モデルがファインチューニング可能かどうかを確認できます。

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

## 厳選されたハブモデル参照をファインチューニングする
<a name="jumpstart-curated-hubs-fine-tune-pysdk"></a>

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

1. SageMaker Python SDK の最新バージョン (少なくとも `2.242.0`) がインストールされていることを確認します。詳細については、「[Use Version 2.x of the SageMaker Python SDK](https://sagemaker.readthedocs.io/en/stable/v2.html)」を参照してください。

   ```
   !pip install --upgrade sagemaker
   ```

1.  AWS SDK for Python (Boto3) と必要なモジュールを SageMaker Python SDK からインポートします。

   ```
   import boto3
   from sagemaker.jumpstart.estimator import JumpStartEstimator
   from sagemaker.session import Session
   ```

1. Boto3 セッション、SageMaker AI クライアント、SageMaker Python SDK セッションを初期化します。

   ```
   sagemaker_client = boto3.Session(region_name=<AWS-region>).client("sagemaker")
   sm_session = Session(sagemaker_client=sagemaker_client)
   ```

1. `JumpStartEstimator` を作成し、JumpStart モデル ID、モデル参照を含むハブの名前、SageMaker Python SDK セッションを指定します。モデル ID のリストについては、「[Built-in Algorithms with Pre-trained Model Table](https://sagemaker.readthedocs.io/en/stable/doc_utils/pretrainedmodels.html)」を参照してください。

   必要に応じて、推定器の作成時に `instance_type` フィールドと `instance_count` フィールドを指定できます。指定しない場合、トレーニングジョブでは使用しているモデルのデフォルトのインスタンスタイプとカウントを使用します。

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

   ```
   estimator = JumpStartEstimator(
       model_id="meta-textgeneration-llama-3-2-1b",
       hub_name=<your-hub-name>,
       sagemaker_session=sm_session, # If you don't specify an existing session, a default one is created for you
       # Optional: specify your desired instance type and count for the training job
       # 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>"
   )
   ```

1. ファインチューニングデータセットの場所を指定する `training` キーを使用してディクショナリを作成します。この例では Amazon S3 URI を参照しています。ローカルモードや複数のトレーニングデータチャネルの使用など、その他の考慮事項がある場合は、SageMaker Python SDK ドキュメントの「[JumpStartEstimator.fit()](https://sagemaker.readthedocs.io/en/stable/api/training/estimators.html#sagemaker.jumpstart.estimator.JumpStartEstimator.fit)」で詳細を参照してください。

   ```
   training_input = {
       "training": "s3://<your-fine-tuning-dataset>"
   }
   ```

1. 推定器の `fit()` メソッドを呼び出し、トレーニングデータと EULA の同意 (該当する場合) を渡します。
**注記**  
次の例では `accept_eula=False.` を設定しています。EULA に同意するには、値を手動で `True` に変更する必要があります。

   ```
   estimator.fit(inputs=training_input, accept_eula=False)
   ```

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

SageMaker AI コンソールで、または [ListTrainingJobs](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_ListTrainingJobs.html) API を使用して、トレーニングジョブを表示することでファインチューニングジョブを確認できます。

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