

本文為英文版的機器翻譯版本，如內容有任何歧義或不一致之處，概以英文版為準。

# 自訂您的機器學習元件
<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. 在導覽功能表中，選擇**元件**。

1. 在**元件**頁面上的**公有元件**索引標籤上，選擇您要部署的元件。

1. 在元件頁面上，選擇**部署**。

1. <a name="add-deployment"></a>從**新增至部署**中，選擇下列其中一項：

   1. 若要將此元件合併至目標裝置上的現有部署，請選擇**新增至現有部**署，然後選取要修訂的部署。

   1. 若要在目標裝置上建立新部署，請選擇**建立新部署**。如果您的設備上有現有的部署，則選擇此步驟將取代現有部署。

1. <a name="specify-deployment-target"></a>在**指定目標**頁面上，執行下列作業：

   1. 在**部署資訊**下，輸入或修改部署的易記名稱。

   1. 在**部署目標**下，選取部署的目標，然後選擇**下一步**。如果您要修訂既有部署，則無法變更部署目標。

1. 在**選取元件**頁面的**公有元件**下，驗證已選取具有已修改組態的推論元件，然後選擇**下一步**。

1. 在**設定元件**頁面上，執行下列動作：

   1. 選取推論元件，然後選擇**設定元件**。

   1. 在**組態更新**下，輸入您要更新的組態值。例如，在**要合併的組態**方塊中輸入下列組態更新，將推論間隔變更為 15 秒，並指示元件尋找`/custom-ml-inference/images/`資料夾中名為 `custom.jpg`的映像。

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

      若要將元件的整個組態重設為其預設值，`""`請在**重設路徑**方塊中指定單一空白字串。

   1. 選擇**確認**，然後選擇**下一步**。

1. 在**設定進階設定**頁面上，保留預設組態設定，然後選擇**下一步**。

1. 在**檢閱**頁面上，選擇**部署**

## 搭配範例推論元件使用自訂模型
<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 使用者指南》中的使用 Amazon S3 儲存貯體](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)導覽功能表中，選擇**元件**。

1. 擷取公有模型存放區元件的元件配方。

   1. 在**元件**頁面上的**公有元件**索引標籤上，尋找並選擇您要為其建立新版本的公有模型元件。例如 `variant.DLR.ImageClassification.ModelStore`。

   1. 在元件頁面上，選擇**檢視配方**並複製顯示的 JSON 配方。

1. 在**元件**頁面上的**我的元件**索引標籤上，選擇**建立元件**。

1. 在**建立元件**頁面的**元件資訊**下，選取**將配方輸入為 JSON** 做為元件來源。

1. 在**配方**方塊中，貼上您先前複製的元件配方。

1. <a name="override-model-recipe-config"></a>在配方中，更新下列值：
   + `ComponentVersion`：增加元件的次要版本。

     當您建立自訂元件以覆寫公有模型元件時，您只能更新現有元件版本的次要版本。例如，如果公有元件版本為 `2.1.0`，您可以使用版本 建立自訂元件`2.1.1`。
   + `Manifests.Artifacts.Uri`：將每個 URI 值更新為您要使用的模型的 Amazon S3 URI。
**注意**  
請勿變更元件的名稱。

1. 選擇**建立元件**。

### 建立自訂模型元件 (AWS CLI)
<a name="create-model-store-component-cli"></a>

1. 將模型上傳至 S3 儲存貯體。如需將模型上傳至 S3 儲存貯體的資訊，請參閱《[Amazon Simple Storage Service 使用者指南》中的使用 Amazon S3 儲存貯體](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. 在**元件**頁面上的**公有元件**索引標籤上，尋找並選擇公有元件。

  1. 在元件頁面上，選擇**檢視配方**。
+ **使用 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 Resource Name (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 URIs，才能建立自訂元件。例如，若要在推論元件中使用自訂推論程式碼，請將程式碼上傳至 S3 儲存貯體。然後，您可以使用推論程式碼的 Amazon S3 URI 做為元件中的成品。

如需將內容上傳至 S3 儲存貯體的資訊，請參閱《[Amazon Simple Storage Service 使用者指南》中的使用 Amazon S3 儲存貯體](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 使用者指南》中的使用 Amazon S3 儲存貯體](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` 物件中，根據您要使用的模型和執行時間元件，執行下列一或多個動作：
   + 如果您想要使用 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. 在導覽功能表中，選擇**元件**。

1. 在**元件**頁面上的**我的元件**索引標籤上，選擇**建立元件**。

1. 在**建立元件**頁面的**元件資訊**下，選取將**配方輸入為 JSON** 或將**配方輸入為 YAML** 做為元件來源。

1. 在**配方**方塊中，輸入您建立的自訂配方。

1. 按一下**建立元件**。

#### 建立自訂推論元件 (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)。