

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

# 機械学習コンポーネントのカスタマイズ
<a name="ml-customization"></a>

では AWS IoT Greengrass、推論、モデル、ランタイム[コンポーネントを構成要素として使用して、デバイスで機械学習推論を実行する方法をカスタマイズ](perform-machine-learning-inference.md#ml-components)するようにサンプル機械学習コンポーネントを設定できます。また、 では、サンプルコンポーネントをテンプレートとして使用し、必要に応じて独自のカスタムコンポーネントを作成する柔軟性 AWS IoT Greengrass も提供します。このモジュラーアプローチを組み合わせて、次の方法で機械学習の推論コンポーネントをカスタマイズできます。

**サンプル推論コンポーネントの使用**  
+ 推論コンポーネントをデプロイするときに設定を修正します。
+ サンプルモデルストアコンポーネントをカスタムモデルコンポーネントに置き換えて、サンプル推論コンポーネントを備えたカスタムモデルを使用します。カスタムモデルは、サンプルモデルと同じランタイムを使用してトレーニングする必要があります。

**カスタム推論コンポーネントの使用**  
+ パブリックモデルコンポーネントとランタイムコンポーネントをカスタム推論コンポーネントの従属関係として追加して、サンプルモデルとランタイムを備えたカスタム推論コードを使用します。
+ カスタムモデルコンポーネントまたはランタイムコンポーネントをカスタム推論コンポーネントの従属関係として作成して追加します。がサンプルコンポーネントを提供し AWS IoT Greengrass ないカスタム推論コードまたはランタイムを使用する場合は、カスタムコンポーネントを使用する必要があります。

**Topics**
+ [パブリック推論コンポーネントの設定の修正](#modify-ml-component-config)
+ [サンプルの推論コンポーネントでカスタムモデルの使用](#override-public-model-store)
+ [カスタム機械学習のコンポーネントを作成](#create-private-ml-components)
+ [カスタム推論コンポーネントを作成](#create-inference-component)

## パブリック推論コンポーネントの設定の修正
<a name="modify-ml-component-config"></a>

[AWS IoT Greengrass コンソール](https://console.aws.amazon.com/greengrass)で、コンポーネントページはコンポーネントのデフォルト設定を表示します。例えば、TensorFlow Lite イメージ分類コンポーネントのデフォルト設定は次のようになります。

```
{
  "accessControl": {
    "aws.greengrass.ipc.mqttproxy": {
      "aws.greengrass.TensorFlowLiteImageClassification:mqttproxy:1": {
        "policyDescription": "Allows access to publish via topic ml/tflite/image-classification.",
        "operations": [
          "aws.greengrass#PublishToIoTCore"
        ],
        "resources": [
          "ml/tflite/image-classification"
        ]
      }
    }
  },
  "PublishResultsOnTopic": "ml/tflite/image-classification",
  "ImageName": "cat.jpeg",
  "InferenceInterval": 3600,
  "ModelResourceKey": {
    "model": "TensorFlowLite-Mobilenet"
  }
}
```

パブリック推論コンポーネントをデプロイするとき、デフォルト設定を修正してデプロイをカスタマイズできます。各パブリック推論コンポーネントに利用可能な設定パラメータの情報については、[AWSが提供する機械学習コンポーネント](perform-machine-learning-inference.md#ml-components) のコンポーネントトピックを参照してください。

このセクションでは、変更されたコンポーネントを AWS IoT Greengrass コンソールからデプロイする方法について説明します。を使用してコンポーネントをデプロイする方法については AWS CLI、「」を参照してください[デプロイの作成](create-deployments.md)。<a name="modify-ml-component-config-console"></a>

**修正済パブリック推論コンポーネント (コンソール) をデプロイするには**

1. [AWS IoT Greengrass コンソール](https://console.aws.amazon.com/greengrass) にサインインします。

1. ナビゲーションメニューで、**[Components]** (コンポーネント) を選択します。

1. **[Components]** (コンポーネント) ページの **[Public components]** (パブリックコンポーネント) タブで、デプロイするコンポーネントを選択します。

1. コンポーネントページで、**[Deploy]** (デプロイ) を選択します。

1. <a name="add-deployment"></a>**[Add to deployment]** (デプロイに追加) から、次のいずれかを選択します。

   1. ターゲットデバイスにある既存のデプロイにこのコンポーネントをマージするには、**[Add to existing deployment]** (既存のデプロイに追加) をクリックし、修正するデプロイを選択します。

   1. ターゲットデバイスに新しいデプロイを作成するには、**[Create new deployment]** (新しいデプロイの作成) を選択します。デバイスに既存のデプロイがある場合は、このステップを選択すると既存のデプロイが置き換えられます。

1. <a name="specify-deployment-target"></a>**[Specify device state]** (ターゲットを指定) ページで、次を実行します。

   1. **[Deployment information]** (デプロイ情報) で、デプロイの名前を入力または変更して、わかりやすくします。

   1. **[Deployment targets]** (デプロイターゲット) でデプロイのターゲットを選択し、**[Next]** (次へ) を選択します。既存のデプロイを修正する場合は、デプロイターゲットを変更できません。

1. **[Select components]** (コンポーネントを選択) ページの **[Public components]** (パブリックコンポーネント) 内で、修正した設定を適用した推論コンポーネントが選択されていることを確認し、**[Next]** (次) を選択します。

1. **[Configure components]** (コンポーネントの設定) ページで、次の手順を実行します: 

   1. 推論コンポーネントを選択して、**[Configure component]** (コンポーネントの設定) を選択します。

   1. **[Configuration update]** (設定更新) 内で、更新する設定値を入力します。例えば、**[Configuration to merge]** (マージする設定) ボックスに次の設定更新を入力し、推論間隔を 15 秒に変更して、`/custom-ml-inference/images/` フォルダに `custom.jpg` という名前のイメージを検索するようにコンポーネントに指示します。

      ```
      {
        "InferenceInterval": "15",
        "ImageName": "custom.jpg",
        "ImageDirectory": "/custom-ml-inference/images/"
      }
      ```

      コンポーネントの設定を全体的にデフォルト値にリセットするには、**[Reset paths]** (パスのリセット) ボックスで空の文字列 `""` を 1 つ指定します。

   1. **[Confirm]** (確認)、**[Next]** (次へ) の順に選択します。

1. **[Configure advanced setting]** (高度な設定を設定) ページで、デフォルト構成設定のままにして **[Next]** (次) を選択します。

1. **[Review]** (レビュー) ページで、**[Deploy]** (デプロイ) を選択します。

## サンプルの推論コンポーネントでカスタムモデルの使用
<a name="override-public-model-store"></a>

サンプル推論コンポーネントを、 がサンプルランタイムコンポーネント AWS IoT Greengrass を提供するランタイムの独自の機械学習モデルで使用する場合は、パブリックモデルコンポーネントを、それらのモデルをアーティファクトとして使用するコンポーネントで上書きする必要があります。高度なレベルで、次の手順を実行して、サンプル推論コンポーネントを備えたカスタムモデルを使用します。

1. S3 バケットのカスタムモデルをアーティファクトとして使用するモデルコンポーネントを作成します。カスタムモデルは、置き換えるモデルと同じランタイムを使用してトレーニングする必要があります。

1. カスタムモデルを使用するには、推論コンポーネントの `ModelResourceKey` 設定パラメータを修正します。推論コンポーネントの設定の更新に関する情報については、「[パブリック推論コンポーネントの設定の修正](#modify-ml-component-config)」を参照してください。

推論コンポーネントをデプロイすると、 はコンポーネントの依存関係の最新バージョン AWS IoT Greengrass を探します。コンポーネントの新しいカスタムバージョンが同じ AWS アカウント および に存在する場合、依存するパブリックモデルコンポーネントを上書きします AWS リージョン。

### カスタムモデルコンポーネント (コンソール) を作成
<a name="create-model-store-component-console"></a>

1. モデルを S3 バケットにアップロードします。モデルを S3 バケットにアップロードする方法については、「*Amazon Simple Storage Service ユーザーガイド*」の「[汎用バケットの概要](https://docs.aws.amazon.com/AmazonS3/latest/userguide/UsingBucket.html)」を参照してください。
**注記**  <a name="s3-artifacts-note"></a>
<a name="sr-artifacts-req"></a>アーティファクトは、コンポーネント AWS リージョン と同じ AWS アカウント および にある S3 バケットに保存する必要があります。 AWS IoT Greengrass がこれらのアーティファクトにアクセスできるようにするには、[Greengrass デバイスロール](device-service-role.md)で `s3:GetObject`アクションを許可する必要があります。デバイスロールの詳細については、「[コアデバイスが AWS サービスとやり取りできるように認可する](device-service-role.md)」を参照してください。

1. [AWS IoT Greengrass コンソール](https://console.aws.amazon.com/greengrass)のナビゲーションメニューで、**[Components]** (コンポーネント) を選択します。

1. パブリックモデルのストアコンポーネントのコンポーネントレシピを取得します。

   1. **[Components]** (コンポーネント) ページの **[Public components]** (パブリックコンポーネント) タブで、新しいバージョンを作成するパブリックモデルコンポーネントを探して選択します。例えば、`variant.DLR.ImageClassification.ModelStore`。

   1. コンポーネントページで、**[View recipe]** (レシピを確認) を選択して表示された JSON レシピをコピーします。

1. **[Components]** (コンポーネント) ページの **[My components]** (マイコンポーネント) タブで、**[Create component]** (コンポーネントの作成) を選択します。

1. **[Create component]** (コンポーネントの作成) ページの **[Component information]** (コンポーネント情報) 内で、**[Enter recipe as JSON]** (JSON としてレシピを入力) をコンポーネントソースとして選択します。

1. **[Recipe]** (レシピ) ボックスで、以前にコピーしたコンポーネントレシピを貼り付けます。

1. <a name="override-model-recipe-config"></a>レシピで次の値を更新します。
   + `ComponentVersion`: コンポーネントのマイナーバージョンをインクリメントします。

     カスタムコンポーネントを作成してパブリックモデルコンポーネントをオーバーライドする場合、既存のコンポーネントバージョンのマイナーバージョンのみを更新する必要があります。例えば、パブリックコンポーネントのバージョンが `2.1.0` の場合、バージョン `2.1.1` でカスタムコンポーネントを作成できます。
   + `Manifests.Artifacts.Uri`: 各 URI 値を使用するモデルの Amazon S3 URI に更新します。
**注記**  
コンポーネントの名前は変更しないでください。

1. **[Create component]** (コンポーネントの作成) を選択します。

### カスタムモデルコンポーネントを作成 (AWS CLI)
<a name="create-model-store-component-cli"></a>

1. モデルを S3 バケットにアップロードします。モデルを S3 バケットにアップロードする方法については、「*Amazon Simple Storage Service ユーザーガイド*」の「[汎用バケットの概要](https://docs.aws.amazon.com/AmazonS3/latest/userguide/UsingBucket.html)」を参照してください。
**注記**  <a name="s3-artifacts-note"></a>
<a name="sr-artifacts-req"></a>アーティファクトは、コンポーネント AWS リージョン と同じ AWS アカウント および にある S3 バケットに保存する必要があります。 AWS IoT Greengrass がこれらのアーティファクトにアクセスできるようにするには、[Greengrass デバイスロール](device-service-role.md)で `s3:GetObject`アクションを許可する必要があります。デバイスロールの詳細については、「[コアデバイスが AWS サービスとやり取りできるように認可する](device-service-role.md)」を参照してください。

1. 次のコマンドを実行して、パブリックコンポーネントのコンポーネントレシピを取得します。このコマンドは、コマンドで指定した出力ファイルにコンポーネントレシピを書き込みます。必要に応じて、取得した Base64 でエンコードされた文字列を JSON または YAML に変換します。

------
#### [ Linux, macOS, or Unix ]

   ```
   aws greengrassv2 get-component \
       --arn <arn> \
       --recipe-output-format <recipe-format> \
       --query recipe \
       --output text | base64 --decode > <recipe-file>
   ```

------
#### [ Windows Command Prompt (CMD) ]

   ```
   aws greengrassv2 get-component ^
       --arn <arn> ^
       --recipe-output-format <recipe-format> ^
       --query recipe ^
       --output text > <recipe-file>.base64
   
   certutil -decode <recipe-file>.base64 <recipe-file>
   ```

------
#### [ PowerShell ]

   ```
   aws greengrassv2 get-component `
       --arn <arn> `
       --recipe-output-format <recipe-format> `
       --query recipe `
       --output text > <recipe-file>.base64
   
   certutil -decode <recipe-file>.base64 <recipe-file>
   ```

------

1. レシピファイルの名前を `<component-name>-<component-version>` に更新します。ここでは、コンポーネントバージョンは新しいコンポーネントのターゲットバージョンです。例えば、`variant.DLR.ImageClassification.ModelStore-2.1.1.yaml`。

1. <a name="override-model-recipe-config"></a>レシピで次の値を更新します。
   + `ComponentVersion`: コンポーネントのマイナーバージョンをインクリメントします。

     カスタムコンポーネントを作成してパブリックモデルコンポーネントをオーバーライドする場合、既存のコンポーネントバージョンのマイナーバージョンのみを更新する必要があります。例えば、パブリックコンポーネントのバージョンが `2.1.0` の場合、バージョン `2.1.1` でカスタムコンポーネントを作成できます。
   + `Manifests.Artifacts.Uri`: 各 URI 値を使用するモデルの Amazon S3 URI に更新します。
**注記**  
コンポーネントの名前は変更しないでください。

1. 次のコマンドを実行して、取得して修正したレシピを使用して新しいコンポーネントを作成します。

   ```
   aws greengrassv2 create-component-version \
       --inline-recipe fileb://path/to/component/recipe
   ```
**注記**  
このステップでは、 AWS IoT Greengrass のサービスに コンポーネントを作成します AWS クラウド。コンポーネントをクラウドにアップロードする前に、Greengrass CLI を使用してコンポーネントをローカルで開発、テスト、デプロイできます。詳細については、「[AWS IoT Greengrass コンポーネントを開発する](develop-greengrass-components.md)」を参照してください。

コンポーネントの作成に関する詳細については、「[AWS IoT Greengrass コンポーネントを開発する](develop-greengrass-components.md)」を参照してください。

## カスタム機械学習のコンポーネントを作成
<a name="create-private-ml-components"></a>

がサンプルコンポーネントを提供し AWS IoT Greengrass ないカスタム推論コードまたはランタイムを使用する場合は、カスタムコンポーネントを作成する必要があります。 AWSが提供するサンプル機械学習モデルとランタイムでカスタム推論コードを使用することも、独自のモデルとランタイムで完全にカスタマイズされた機械学習推論ソリューションを開発することもできます。モデルがサンプルランタイムコンポーネント AWS IoT Greengrass を提供するランタイムを使用している場合は、そのランタイムコンポーネントを使用できます。カスタムコンポーネントは、推論コードと使用するモデルに対してのみ作成する必要があります。

**Topics**
+ [パブリックコンポーネントのレシピを取得](#get-ml-component-recipes)
+ [サンプルコンポーネントのアーティファクトを取得](#get-ml-component-artifacts)
+ [S3 バケットへコンポーネントアーティファクトのアップロード](#upload-ml-component-artifacts)
+ [カスタムコンポーネントの作成](#create-ml-components)

### パブリックコンポーネントのレシピを取得
<a name="get-ml-component-recipes"></a>

既存のパブリック機械学習コンポーネントのレシピをテンプレートとして使用して、カスタムコンポーネントを作成できます。パブリックコンポーネントの最新バージョンのコンポーネントレシピを表示するには、コンソールまたは AWS CLI を次のように使用します。
+ **コンソールの使用**

  1. **[Components]** (コンポーネント) ページの **[Public components]** (パブリックコンポーネント) タブで、パブリックコンポーネントを探して選択します。

  1. コンポーネントページで、**[View recipe]** (レシピを確認) を選択します。
+ **の使用 AWS CLI**

  次のコマンドを実行して、パブリックバリアントコンポーネントのコンポーネントレシピを取得します。このコマンドは、コマンドで指定した JSON または YAML レシピファイルにコンポーネントレシピを書き込みます。

------
#### [ Linux, macOS, or Unix ]

  ```
  aws greengrassv2 get-component \
      --arn <arn> \
      --recipe-output-format <recipe-format> \
      --query recipe \
      --output text | base64 --decode > <recipe-file>
  ```

------
#### [ Windows Command Prompt (CMD) ]

  ```
  aws greengrassv2 get-component ^
      --arn <arn> ^
      --recipe-output-format <recipe-format> ^
      --query recipe ^
      --output text > <recipe-file>.base64
  
  certutil -decode <recipe-file>.base64 <recipe-file>
  ```

------
#### [ PowerShell ]

  ```
  aws greengrassv2 get-component `
      --arn <arn> `
      --recipe-output-format <recipe-format> `
      --query recipe `
      --output text > <recipe-file>.base64
  
  certutil -decode <recipe-file>.base64 <recipe-file>
  ```

------

  コマンドの値を、次のように置き換えます。
  + `<arn>`: パブリックコンポーネントの Amazon リソースネーム (ARN)。
  + `<recipe-format>`: レシピファイルを作成するフォーマット。サポートされている値は`JSON` および `YAML` です。
  + `<recipe-file>`: `<component-name>-<component-version>` フォーマットのレシピの名前。

### サンプルコンポーネントのアーティファクトを取得
<a name="get-ml-component-artifacts"></a>

パブリック機械学習コンポーネントで使用されるアーティファクトをテンプレートとして使用して、推論コードまたはランタイムインストールスクリプトなど、カスタムコンポーネントのアーティファクトを作成できます。

パブリック機械学習コンポーネントに含まれるサンプルアーティファクトを確認するには、パブリック推論コンポーネントをデプロイし、`/greengrass/v2/packages/artifacts-unarchived/component-name/component-version/` フォルダのデバイスのアーティファクトを確認します。

### S3 バケットへコンポーネントアーティファクトのアップロード
<a name="upload-ml-component-artifacts"></a>

カスタムコンポーネントを作成する前に、コンポーネントアーティファクトを S3 バケットにアップロードし、コンポーネントレシピの S3 URI を使用する必要があります。例えば、推論コンポーネントでカスタム推論コードを使用するには、S3 バケットにコードをアップロードします。次に、推論コードの Amazon S3 URI をコンポーネントのアーティファクトとして使用できます。

S3 バケットにコンテンツをアップロードする方法については、「*Amazon Simple Storage Service ユーザーガイド*」の「[汎用バケットの概要](https://docs.aws.amazon.com/AmazonS3/latest/userguide/UsingBucket.html)」を参照してください。

**注記**  <a name="s3-artifacts-note"></a>
<a name="sr-artifacts-req"></a>アーティファクトは、コンポーネント AWS リージョン と同じ AWS アカウント および にある S3 バケットに保存する必要があります。 AWS IoT Greengrass がこれらのアーティファクトにアクセスできるようにするには、[Greengrass デバイスロール](device-service-role.md)で `s3:GetObject`アクションを許可する必要があります。デバイスロールの詳細については、「[コアデバイスが AWS サービスとやり取りできるように認可する](device-service-role.md)」を参照してください。

### カスタムコンポーネントの作成
<a name="create-ml-components"></a>

取得したアーティファクトとレシピを使用してカスタム機械学習コンポーネントを作成できます。例については、[カスタム推論コンポーネントを作成](#create-inference-component)を参照してください。

コンポーネントの作成と Greengrass デバイスへのデプロイの詳細については、「[AWS IoT Greengrass コンポーネントを開発する](develop-greengrass-components.md)」と「[AWS IoT Greengrass コンポーネントをデバイスにデプロイする](manage-deployments.md)」を参照してください。

## カスタム推論コンポーネントを作成
<a name="create-inference-component"></a>

このセクションでは、DLR イメージ分類コンポーネントをテンプレートとして使用して、カスタム推論コンポーネントを作成する方法を説明します。

**Topics**
+ [推論コードを Amazon S3 バケットにアップロード](#create-inference-code)
+ [推論コンポーネントのレシピを作成](#create-inference-component-recipe)
+ [推論コンポーネントの作成](#create-private-inference-component)

### 推論コードを Amazon S3 バケットにアップロード
<a name="create-inference-code"></a>

推論コードを作成し、S3 バケットにアップロードします。S3 バケットにコンテンツをアップロードする方法については、「*Amazon Simple Storage Service ユーザーガイド*」の「[汎用バケットの概要](https://docs.aws.amazon.com/AmazonS3/latest/userguide/UsingBucket.html)」を参照してください。

**注記**  <a name="s3-artifacts-note"></a>
<a name="sr-artifacts-req"></a>アーティファクトは、コンポーネント AWS リージョン と同じ AWS アカウント および にある S3 バケットに保存する必要があります。 AWS IoT Greengrass がこれらのアーティファクトにアクセスできるようにするには、[Greengrass デバイスロール](device-service-role.md)で `s3:GetObject`アクションを許可する必要があります。デバイスロールの詳細については、「[コアデバイスが AWS サービスとやり取りできるように認可する](device-service-role.md)」を参照してください。

### 推論コンポーネントのレシピを作成
<a name="create-inference-component-recipe"></a>

1. 次のコマンドを実行して、DLR イメージ分類コンポーネントのコンポーネントレシピを取得します。このコマンドは、コマンドで指定した JSON または YAML レシピファイルにコンポーネントレシピを書き込みます。

------
#### [ Linux, macOS, or Unix ]

   ```
   aws greengrassv2 get-component \
       --arn arn:aws:greengrass:region:aws:components:aws.greengrass.DLRImageClassification:versions:version \
       --recipe-output-format JSON | YAML \
       --query recipe \
       --output text | base64 --decode > <recipe-file>
   ```

------
#### [ Windows Command Prompt (CMD) ]

   ```
   aws greengrassv2 get-component ^
       --arn arn:aws:greengrass:region:aws:components:aws.greengrass.DLRImageClassification:versions:version ^
       --recipe-output-format JSON | YAML ^
       --query recipe ^
       --output text > <recipe-file>.base64
   
   certutil -decode <recipe-file>.base64 <recipe-file>
   ```

------
#### [ PowerShell ]

   ```
   aws greengrassv2 get-component `
       --arn arn:aws:greengrass:region:aws:components:aws.greengrass.DLRImageClassification:versions:version `
       --recipe-output-format JSON | YAML `
       --query recipe `
       --output text > <recipe-file>.base64
   
   certutil -decode <recipe-file>.base64 <recipe-file>
   ```

------

   *<recipe-file>* を `<component-name>-<component-version>` 形式のレシピの名前に置き換えます。

1. レシピの `ComponentDependencies` オブジェクトに、使用するモデルとランタイムコンポーネントに応じて次の操作を 1 つ以上実行します。
   + DLR コンパイル型モデルを使用する場合、DLR コンポーネントの従属関係を維持します。次の例で示すように、カスタム ランタイム コンポーネントの従属関係に置き換えることもできます。

     **ランタイムコンポーネント**

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

     ```
     { 
         "<runtime-component>": {
             "VersionRequirement": "<version>",
             "DependencyType": "HARD"
         }
     }
     ```

------
#### [ YAML ]

     ```
     <runtime-component>:
         VersionRequirement: "<version>"
         DependencyType: HARD
     ```

------
   + DLR イメージ分類モデルストアの依存関係を維持して、 AWS が提供する事前トレーニング済みの ResNet-50 モデルを使用するか、カスタムモデルコンポーネントを使用するように変更します。パブリックモデルコンポーネントの依存関係を含める場合、コンポーネントの新しいカスタムバージョンが同じ AWS アカウント と に存在する場合 AWS リージョン、推論コンポーネントはそのカスタムコンポーネントを使用します。次の例に示すように、モデルコンポーネントの従属関係を指定します。

     **パブリックモデルコンポーネント**

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

     ```
     {
         "variant.DLR.ImageClassification.ModelStore": {
             "VersionRequirement": "<version>",
             "DependencyType": "HARD"
         }
     }
     ```

------
#### [ YAML ]

     ```
     variant.DLR.ImageClassification.ModelStore:
         VersionRequirement: "<version>"
         DependencyType: HARD
     ```

------

     **カスタムモデルコンポーネント**

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

     ```
     {
         "<custom-model-component>": {
             "VersionRequirement": "<version>",
             "DependencyType": "HARD"
         }
     }
     ```

------
#### [ YAML ]

     ```
     <custom-model-component>:
         VersionRequirement: "<version>"
         DependencyType: HARD
     ```

------

1. `ComponentConfiguration` オブジェクトで、このコンポーネントのデフォルト設定を追加します。コンポーネントをデプロイするときに、後でこの設定を修正できます。次の抜粋は、DLR イメージ分類コンポーネントのコンポーネント設定を示しています。

   例えば、カスタム推論コンポーネントの従属関係としてカスタムモデルコンポーネントを使用する場合、使用しているモデルの名前を提供するように `ModelResourceKey` を修正します。

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

   ```
   {
     "accessControl": {
       "aws.greengrass.ipc.mqttproxy": {
         "aws.greengrass.ImageClassification:mqttproxy:1": {
           "policyDescription": "Allows access to publish via topic ml/dlr/image-classification.",
           "operations": [
             "aws.greengrass#PublishToIoTCore"
           ],
           "resources": [
             "ml/dlr/image-classification"
           ]
         }
       }
     },
     "PublishResultsOnTopic": "ml/dlr/image-classification",
     "ImageName": "cat.jpeg",
     "InferenceInterval": 3600,
     "ModelResourceKey": {
       "armv7l": "DLR-resnet50-armv7l-cpu-ImageClassification",
       "x86_64": "DLR-resnet50-x86_64-cpu-ImageClassification",
       "aarch64": "DLR-resnet50-aarch64-cpu-ImageClassification"
     }
   }
   ```

------
#### [ YAML ]

   ```
   accessControl:
       aws.greengrass.ipc.mqttproxy:
           'aws.greengrass.ImageClassification:mqttproxy:1':
               policyDescription: 'Allows access to publish via topic ml/dlr/image-classification.'
               operations:
                   - 'aws.greengrass#PublishToIoTCore'
               resources:
                   - ml/dlr/image-classification
   PublishResultsOnTopic: ml/dlr/image-classification
   ImageName: cat.jpeg
   InferenceInterval: 3600
   ModelResourceKey:
       armv7l: "DLR-resnet50-armv7l-cpu-ImageClassification"
       x86_64: "DLR-resnet50-x86_64-cpu-ImageClassification"
       aarch64: "DLR-resnet50-aarch64-cpu-ImageClassification"
   ```

------

1. `Manifests` オブジェクトで、コンポーネントが異なるプラットフォームにデプロイされるときに使用されるこのコンポーネントのアーティファクトと設定に関する情報、並びにコンポーネントを正常に実行するために必要な他の情報を提供します。次の抜粋では、DLR イメージ分類コンポーネントの Linux プラットフォームの `Manifests` オブジェクトに対する設定を示しています。

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

   ```
   {
     "Manifests": [
       {
         "Platform": {
           "os": "linux",
           "architecture": "arm"
         },
         "Name": "32-bit armv7l - Linux (raspberry pi)",
         "Artifacts": [
           {
             "URI": "s3://SAMPLE-BUCKET/sample-artifacts-directory/image_classification.zip",
             "Unarchive": "ZIP"
           }
         ],
         "Lifecycle": {
           "Setenv": {
             "DLR_IC_MODEL_DIR": "{variant.DLR.ImageClassification.ModelStore:artifacts:decompressedPath}/{configuration:/ModelResourceKey/armv7l}",
             "DEFAULT_DLR_IC_IMAGE_DIR": "{artifacts:decompressedPath}/image_classification/sample_images/"
           },
           "Run": {
             "RequiresPrivilege": true,
             "script": ". {variant.DLR:configuration:/MLRootPath}/greengrass_ml_dlr_venv/bin/activate\npython3 {artifacts:decompressedPath}/image_classification/inference.py"
           }
         }
       }
     ]
   }
   ```

------
#### [ YAML ]

   ```
   Manifests:
     - Platform:
         os: linux
         architecture: arm
       Name: 32-bit armv7l - Linux (raspberry pi)
       Artifacts:
         - URI: s3://SAMPLE-BUCKET/sample-artifacts-directory/image_classification.zip
           Unarchive: ZIP
       Lifecycle:
         SetEnv:
           DLR_IC_MODEL_DIR: "{variant.DLR.ImageClassification.ModelStore:artifacts:decompressedPath}/{configuration:/ModelResourceKey/armv7l}"
           DEFAULT_DLR_IC_IMAGE_DIR: "{artifacts:decompressedPath}/image_classification/sample_images/"
         Run:
           RequiresPrivilege: true
           script: |-
             . {variant.DLR:configuration:/MLRootPath}/greengrass_ml_dlr_venv/bin/activate
             python3 {artifacts:decompressedPath}/image_classification/inference.py
   ```

------

 コンポーネントレシピの作成の詳細については、「[AWS IoT Greengrass コンポーネントレシピリファレンス](component-recipe-reference.md)」を参照してください。

### 推論コンポーネントの作成
<a name="create-private-inference-component"></a>

 AWS IoT Greengrass コンソールまたは AWS CLI を使用して、先ほど定義したレシピを使用してコンポーネントを作成します。コンポーネントを作成した後、デバイスに推論を実行するためにデプロイできます。推論コンポーネントのデプロイ方法の例については、「[チュートリアル: TensorFlow Lite を使用したサンプルイメージ分類推論の実行](ml-tutorial-image-classification.md)」を参照してください。

#### カスタム推論コンポーネント (コンソール) を作成
<a name="create-inference-component-console"></a>

1. [AWS IoT Greengrass コンソール](https://console.aws.amazon.com/greengrass) にサインインします。

1. ナビゲーションメニューで、**[Components]** (コンポーネント) を選択します。

1. **[Components]** (コンポーネント) ページの **[My components]** (マイコンポーネント) タブで、**[Create component]** (コンポーネントの作成) を選択します。

1. **[Create component]** (コンポーネントの作成) ページの **[Component information]** (コンポーネント情報) 内で、**[Enter recipe as JSON]** (JSON としてレシピを入力) または** [Enter recipe as YAML]** (YAML としてレシピを入力) をコンポーネントソースとして選択します。

1. **[Recipe]** (レシピ) ボックスで、作成したカスタムレシピを入力します。

1. **[Create component]** (コンポーネントの作成) をクリックします。

#### カスタム推論コンポーネント (AWS CLI) を作成
<a name="create-inference-component-cli"></a>

次のコマンドを実行し、作成したレシピを使用して、新しいカスタムコンポーネントを作成します。

```
aws greengrassv2 create-component-version \
    --inline-recipe fileb://path/to/recipe/file
```

**注記**  
このステップでは、 AWS IoT Greengrass のサービスに コンポーネントを作成します AWS クラウド。コンポーネントをクラウドにアップロードする前に、Greengrass CLI を使用してコンポーネントをローカルで開発、テスト、デプロイできます。詳細については、「[AWS IoT Greengrass コンポーネントを開発する](develop-greengrass-components.md)」を参照してください。