

Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.

# Lakukan inferensi machine learning
<a name="perform-machine-learning-inference"></a>

Dengan AWS IoT Greengrass, Anda dapat melakukan inferensi pembelajaran mesin (ML) di perangkat edge pada data yang dihasilkan secara lokal menggunakan model terlatih cloud. Anda memperoleh manfaat dari latensi rendah dan penghematan biaya dari menjalankan inferensi lokal, tetapi masih mendapat manfaat dari daya komputasi cloud untuk model pelatihan dan pemrosesan yang kompleks.

AWS IoT Greengrass membuat langkah-langkah yang diperlukan untuk melakukan inferensi lebih efisien. Anda dapat melatih model inferensi Anda di mana saja dan men-deploy-nya secara lokal sebagai *komponen machine learning*. Misalnya, Anda dapat membangun dan melatih model pembelajaran mendalam di [Amazon SageMaker ](https://console.aws.amazon.com/sagemaker) AI. Kemudian, Anda dapat menyimpan model ini di bucket [Amazon S3](https://console.aws.amazon.com/s3), sehingga Anda dapat menggunakan model ini sebagai artefak di komponen Anda untuk melakukan inferensi pada perangkat inti Anda.

**Topics**
+ [Cara kerja inferensi AWS IoT Greengrass ML](#how-ml-inference-works)
+ [Apa yang berbeda di AWS IoT Greengrass versi 2?](#ml-differences)
+ [Persyaratan](#ml-requirements)
+ [Sumber model yang didukung](#ml-model-sources)
+ [Waktu aktif machine learning yang didukung](#ml-runtime-libraries)
+ [AWS-menyediakan komponen pembelajaran mesin](#ml-components)
+ [Gunakan Amazon SageMaker AI Edge Manager di perangkat inti Greengrass](use-sagemaker-edge-manager.md)
+ [Sesuaikan komponen machine learning Anda](ml-customization.md)
+ [Menyelesaikan masalah inferensi machine learning](ml-troubleshooting.md)

## Cara kerja inferensi AWS IoT Greengrass ML
<a name="how-ml-inference-works"></a>

AWS menyediakan [komponen pembelajaran mesin](#ml-components) yang dapat Anda gunakan untuk membuat penerapan satu langkah untuk melakukan inferensi pembelajaran mesin di perangkat Anda. Anda juga dapat menggunakan komponen ini sebagai templat untuk membuat komponen kustom untuk memenuhi kebutuhan spesifik Anda.<a name="ml-component-types"></a>

AWS menyediakan kategori komponen pembelajaran mesin berikut:
+ **Komponen model**—Berisi model machine learning sebagai artefak Greengrass.
+ **Komponen waktu aktif**—Berisi skrip yang menginstal kerangka kerja machine learning dan dependensinya pada perangkat inti Greengrass.
+ **Komponen Inferensi**—Berisi kode inferensi dan mencakup dependensi komponen untuk menginstal kerangka machine learning dan mengunduh model machine learning yang telah dilatih sebelumnya.

Setiap penerapan yang Anda buat untuk melakukan inferensi pembelajaran mesin terdiri dari setidaknya satu komponen yang menjalankan aplikasi inferensi Anda, menginstal kerangka kerja pembelajaran mesin, dan mengunduh model pembelajaran mesin Anda. Untuk melakukan inferensi sampel dengan komponen AWS-provided, Anda menerapkan komponen inferensi ke perangkat inti Anda, yang secara otomatis menyertakan model dan komponen runtime yang sesuai sebagai dependensi. Untuk menyesuaikan penerapan, Anda dapat menyambungkan atau menukar komponen model sampel dengan komponen model khusus, atau Anda dapat menggunakan resep komponen untuk komponen yang AWS disediakan sebagai templat untuk membuat komponen inferensi, model, dan runtime kustom Anda sendiri. 

Untuk melakukan inferensi pembelajaran mesin dengan menggunakan komponen khusus:

1. Buat komponen model. Komponen ini berisi model pembelajaran mesin yang ingin Anda gunakan untuk melakukan inferensi. AWS menyediakan contoh model DLR dan Lite yang telah dilatih sebelumnya. TensorFlow Untuk menggunakan model kustom, buat komponen model Anda sendiri.

1. Buat komponen waktu aktif. Komponen ini berisi skrip yang diperlukan untuk menginstal runtime pembelajaran mesin untuk model Anda. AWS [menyediakan komponen runtime sampel untuk [Deep Learning Runtime](https://github.com/neo-ai/neo-ai-dlr) (DLR) dan Lite. TensorFlow ](https://www.tensorflow.org/lite/guide/python) Untuk menggunakan waktu aktif lain dengan model kustom Anda dan kode inferensi, buat komponen waktu aktif Anda sendiri.

1. Buat komponen inferensi. Komponen ini berisi kode inferensi Anda, dan menyertakan komponen model dan runtime Anda sebagai dependensi. AWS menyediakan komponen inferensi sampel untuk klasifikasi gambar dan deteksi objek menggunakan DLR dan Lite. TensorFlow Untuk melakukan jenis inferensi lainnya, atau untuk menggunakan model dan waktu aktif kustom, buat komponen inferensi Anda sendiri.

1. Deploy komponen inferensi. Saat Anda menerapkan komponen ini, AWS IoT Greengrass juga secara otomatis menerapkan dependensi komponen model dan runtime.

Untuk memulai dengan komponen AWS-provided, lihat[Tutorial: Lakukan inferensi klasifikasi gambar sampel menggunakan Lite TensorFlow](ml-tutorial-image-classification.md).

Untuk informasi selengkapnya tentang cara membuat komponen machine learning kustom, lihat [Sesuaikan komponen machine learning Anda](ml-customization.md).

## Apa yang berbeda di AWS IoT Greengrass versi 2?
<a name="ml-differences"></a>

AWS IoT Greengrass mengkonsolidasikan unit fungsional untuk pembelajaran mesin—seperti model, runtime, dan kode inferensi—ke dalam komponen yang memungkinkan Anda menggunakan proses satu langkah untuk menginstal runtime machine learning, mengunduh model terlatih, dan melakukan inferensi di perangkat Anda. 

Dengan menggunakan komponen pembelajaran mesin AWS yang disediakan, Anda memiliki fleksibilitas untuk mulai melakukan inferensi pembelajaran mesin dengan kode inferensi sampel dan model yang telah dilatih sebelumnya. Anda dapat menyambungkan komponen model khusus untuk menggunakan model terlatih khusus Anda sendiri dengan komponen inferensi dan runtime yang disediakan. AWS Untuk solusi machine learning yang sepenuhnya disesuaikan, Anda dapat menggunakan komponen publik sebagai templat untuk membuat komponen khusus dan menggunakan jenis waktu aktif, model, atau inferensi apa pun yang Anda inginkan.

## Persyaratan
<a name="ml-requirements"></a>

Untuk membuat dan menggunakan komponen pembelajaran mesin, Anda harus memiliki yang berikut:
+ Sebuah perangkat inti Greengrass. Jika Anda tidak memilikinya, lihat [Tutorial: Memulai dengan AWS IoT Greengrass V2](getting-started.md).
+ Minimal 500 MB ruang penyimpanan lokal untuk menggunakan komponen pembelajaran mesin sampel yang AWS disediakan.

## Sumber model yang didukung
<a name="ml-model-sources"></a>

AWS IoT Greengrass mendukung penggunaan model pembelajaran mesin terlatih khusus yang disimpan di Amazon S3. Anda juga dapat menggunakan pekerjaan pengemasan Amazon SageMaker AI edge untuk langsung membuat komponen model untuk model yang dikompilasi SageMaker AI Neo Anda. Untuk informasi tentang menggunakan SageMaker AI Edge Manager dengan AWS IoT Greengrass, lihat[Gunakan Amazon SageMaker AI Edge Manager di perangkat inti Greengrass](use-sagemaker-edge-manager.md).

Bucket S3 yang berisi model Anda harus memenuhi persyaratan berikut:
+ Mereka tidak boleh dienkripsi menggunakan SSE-C. Untuk bucket yang menggunakan enkripsi sisi server, inferensi pembelajaran AWS IoT Greengrass mesin saat ini hanya mendukung opsi enkripsi SSE-S3 atau SSE-KMS. Untuk informasi selengkapnya tentang opsi enkripsi sisi server, lihat [Melindungi data menggunakan enkripsi sisi server](https://docs.aws.amazon.com/AmazonS3/latest/dev/serv-side-encryption.html) di Panduan Pengguna Layanan Penyimpanan Sederhana *Amazon*.
+ Nama mereka tidak boleh menyertakan periode (`.`). Untuk informasi selengkapnya, lihat aturan tentang penggunaan bucket gaya hosted-virtual dengan SSL di [Aturan untuk penamaan bucket di Panduan Pengguna Layanan](https://docs.aws.amazon.com/AmazonS3/latest/dev/BucketRestrictions.html#bucketnamingrules) Penyimpanan *Sederhana Amazon*.
+ <a name="sr-artifacts-req"></a>Bucket S3 yang menyimpan sumber model Anda harus sama Akun AWS dan Wilayah AWS sebagai komponen pembelajaran mesin Anda.
+ AWS IoT Greengrass harus memiliki `read` izin ke sumber model. AWS IoT Greengrass Untuk mengaktifkan akses bucket S3, peran perangkat Greengrass harus memungkinkan [tindakan](device-service-role.md). `s3:GetObject` Untuk informasi lebih lanjut tentang peran perangkat, lihat [Otorisasi perangkat inti untuk berinteraksi dengan layanan AWS](device-service-role.md).

## Waktu aktif machine learning yang didukung
<a name="ml-runtime-libraries"></a>

AWS IoT Greengrass memungkinkan Anda membuat komponen khusus untuk menggunakan runtime pembelajaran mesin apa pun pilihan Anda untuk melakukan inferensi pembelajaran mesin dengan model terlatih khusus Anda. Untuk informasi selengkapnya tentang cara membuat komponen machine learning kustom, lihat [Sesuaikan komponen machine learning Anda](ml-customization.md).

Untuk membuat proses memulai pembelajaran mesin lebih efisien, AWS IoT Greengrass berikan contoh inferensi, model, dan komponen runtime yang menggunakan runtime machine learning berikut: 
+  [Deep Learning Runtime](https://github.com/neo-ai/neo-ai-dlr) (DLR) v1.6.0 dan v1.3.0
+  [TensorFlow Lite](https://www.tensorflow.org/lite/guide/python) v2.5.0 

## AWS-menyediakan komponen pembelajaran mesin
<a name="ml-components"></a>

Tabel berikut mencantumkan komponen AWS yang disediakan yang digunakan untuk pembelajaran mesin. 

**catatan**  <a name="component-nucleus-dependency-update-note"></a>
Beberapa komponen AWS yang disediakan bergantung pada versi minor spesifik dari inti Greengrass. Karena ketergantungan ini, Anda perlu memperbarui komponen ini saat memperbarui inti Greengrass ke versi minor baru. Untuk informasi tentang versi spesifik dari inti yang masing-masing komponen bergantung padanya, lihat topik komponen yang sesuai. Untuk informasi selengkapnya terkait cara memperbarui inti, lihat [Perbarui perangkat lunak AWS IoT Greengrass Core (OTA)](update-greengrass-core-v2.md).


| Komponen | Deskripsi | [Jenis komponen](develop-greengrass-components.md#component-types) | Sistem operasi yang didukung | [Sumber terbuka](open-source.md) | 
| --- | --- | --- | --- | --- | 
| [SageMaker Manajer AI Edge](sagemaker-edge-manager-component.md) | Menyebarkan agen Amazon SageMaker AI Edge Manager di perangkat inti Greengrass. | Generik | Linux, Windows | Tidak | 
| [Klasifikasi citra DLR](dlr-image-classification-component.md) | Komponen inferensi yang menggunakan penyimpanan model klasifikasi gambar DLR dan komponen waktu aktif DLR sebagai dependensi akan menginstal DLR, men-download model klasifikasi gambar sampel, dan melakukan inferensi klasifikasi gambar pada perangkat yang didukung. | Generik | Linux, Windows | Tidak | 
| [Deteksi objek DLR](dlr-object-detection-component.md) | Komponen inferensi yang menggunakan penyimpanan model deteksi gambar DLR dan komponen waktu aktif DLR sebagai dependensi akan menginstal DLR, men-download sampel model deteksi, dan melakukan inferensi deteksi gambar pada perangkat yang didukung. | Generik | Linux, Windows | Tidak | 
| [Penyimpanan model klasifikasi gambar DLR](dlr-image-classification-model-store-component.md) | Komponen model yang berisi sampel ResNet -50 model klasifikasi gambar sebagai artefak Greengrass. | Generik | Linux, Windows | Tidak | 
| [Penyimpanan model deteksi DLR](dlr-object-detection-model-store-component.md) | Komponen model yang berisi model deteksi YOLOv3 objek sampel sebagai artefak Greengrass. | Generik | Linux, Windows | Tidak | 
| [Runtime DLR](dlr-component.md) | Komponen waktu aktif yang berisi skrip instalasi yang digunakan untuk menginstal DLR dan dependensinya pada perangkat inti Greengrass. | Generik | Linux, Windows | Tidak | 
| [TensorFlow Klasifikasi gambar ringan](tensorflow-lite-image-classification-component.md) | Komponen inferensi yang menggunakan penyimpanan model klasifikasi gambar TensorFlow Lite dan komponen runtime TensorFlow Lite sebagai dependensi untuk menginstal TensorFlow Lite, mengunduh model klasifikasi gambar sampel, dan melakukan inferensi klasifikasi gambar pada perangkat yang didukung. | Generik | Linux, Windows | Tidak | 
| [TensorFlow Deteksi objek Lite](tensorflow-lite-object-detection-component.md) | Komponen inferensi yang menggunakan penyimpanan model deteksi objek TensorFlow Lite dan komponen runtime TensorFlow Lite sebagai dependensi untuk menginstal TensorFlow Lite, mengunduh model deteksi objek sampel, dan melakukan inferensi deteksi objek pada perangkat yang didukung. | Generik | Linux, Windows | Tidak | 
| [TensorFlow Toko model klasifikasi gambar Lite](tensorflow-lite-image-classification-model-store-component.md) | Komponen model yang berisi contoh model MobileNet v1 sebagai artefak Greengrass. | Generik | Linux, Windows | Tidak | 
| [TensorFlow Toko model deteksi objek Lite](tensorflow-lite-object-detection-model-store-component.md) | Komponen model yang berisi contoh model Single Shot Detection (SSD) sebagai MobileNet artefak Greengrass. | Generik | Linux, Windows | Tidak | 
| [TensorFlow Runtime ringan](tensorflow-lite-component.md) | Komponen runtime yang berisi skrip instalasi yang digunakan untuk menginstal TensorFlow Lite dan dependensinya pada perangkat inti Greengrass. | Generik | Linux, Windows | Tidak | 

# Gunakan Amazon SageMaker AI Edge Manager di perangkat inti Greengrass
<a name="use-sagemaker-edge-manager"></a>

**penting**  
SageMaker AI Edge Manager dihentikan pada 26 April 2024. Untuk informasi selengkapnya tentang melanjutkan penerapan model Anda ke perangkat edge, lihat [SageMaker AI Edge Manager end of life](https://docs.aws.amazon.com/sagemaker/latest/dg/edge-eol.html).

Amazon SageMaker AI Edge Manager adalah agen perangkat lunak yang berjalan pada perangkat edge. SageMaker AI Edge Manager menyediakan manajemen model untuk perangkat edge sehingga Anda dapat mengemas dan menggunakan model Amazon SageMaker AI Neo yang dikompilasi langsung di perangkat inti Greengrass. Dengan menggunakan SageMaker AI Edge Manager, Anda juga dapat mengambil sampel data input dan output model dari perangkat inti Anda, dan mengirim data tersebut ke AWS Cloud untuk pemantauan dan analisis. Karena SageMaker AI Edge Manager menggunakan SageMaker AI Neo untuk mengoptimalkan model Anda untuk perangkat keras target Anda, Anda tidak perlu menginstal runtime DLR langsung di perangkat Anda. Pada perangkat Greengrass SageMaker , AI Edge Manager tidak memuat sertifikat AWS IoT lokal atau menghubungi AWS IoT titik akhir penyedia kredensi secara langsung. Sebagai gantinya, SageMaker AI Edge Manager menggunakan [layanan pertukaran token](token-exchange-service-component.md) untuk mengambil kredensi sementara dari titik akhir TES. 

Bagian ini menjelaskan cara kerja SageMaker AI Edge Manager pada perangkat inti Greengrass.



## Cara kerja SageMaker AI Edge Manager di perangkat Greengrass
<a name="how-to-use-sdge-manager-with-greengrass"></a>

Untuk menerapkan agen SageMaker AI Edge Manager ke perangkat inti Anda, buat penerapan yang menyertakan komponen. `aws.greengrass.SageMakerEdgeManager` AWS IoT Greengrass mengelola instalasi dan siklus hidup agen Edge Manager di perangkat Anda. Ketika versi baru dari agen biner tersedia, deploy versi terbaru dari komponen `aws.greengrass.SageMakerEdgeManager` untuk meningkatkan versi agen yang diinstal pada perangkat Anda. 

Saat Anda menggunakan SageMaker AI Edge Manager dengan AWS IoT Greengrass, alur kerja Anda mencakup langkah-langkah tingkat tinggi berikut:

1. Kompilasi model dengan SageMaker AI Neo.

1. Package model SageMaker AI yang dikompilasi Neo Anda menggunakan pekerjaan pengemasan tepi SageMaker AI. Ketika Anda menjalankan tugas pengemasan edge untuk model Anda, Anda dapat memilih untuk membuat komponen model dengan model kemasan sebagai artefak yang dapat digunakan untuk perangkat inti Greengrass Anda. 

1. Buat komponen inferensi kustom. Anda menggunakan komponen inferensi ini untuk berinteraksi dengan agen Edge Manager untuk melakukan inferensi pada perangkat inti. Operasi ini meliputi pemuatan model, pemanggilan permintaan prediksi untuk menjalankan inferensi, dan pembongkaran model ketika komponen dimatikan. 

1. Terapkan komponen SageMaker AI Edge Manager, komponen model yang dikemas, dan komponen inferensi untuk menjalankan model Anda di mesin inferensi SageMaker AI (agen Edge Manager) di perangkat Anda.

Untuk informasi selengkapnya tentang membuat pekerjaan kemasan tepi dan komponen inferensi yang bekerja dengan SageMaker AI Edge Manager, lihat [Menyebarkan Paket Model dan Agen Manajer Edge dengan AWS IoT Greengrass](https://docs.aws.amazon.com/sagemaker/latest/dg/edge-greengrass.html) Panduan *Pengembang Amazon SageMaker AI*.

[Tutorial: Memulai SageMaker AI Edge Manager](get-started-with-edge-manager-on-greengrass.md)Tutorial menunjukkan cara mengatur dan menggunakan agen SageMaker AI Edge Manager pada perangkat inti Greengrass yang ada, AWS menggunakan kode contoh yang disediakan yang dapat Anda gunakan untuk membuat inferensi sampel dan komponen model. 

Saat Anda menggunakan SageMaker AI Edge Manager di perangkat inti Greengrass, Anda juga dapat menggunakan fitur pengambilan data untuk mengunggah data sampel ke perangkat inti Greengrass. AWS Cloud Capture data adalah fitur SageMaker AI yang Anda gunakan untuk mengunggah input inferensi, hasil inferensi, dan data inferensi tambahan ke bucket S3 atau direktori lokal untuk analisis masa depan. Untuk informasi selengkapnya tentang penggunaan data pengambilan dengan SageMaker AI Edge Manager, lihat [Mengelola Model](https://docs.aws.amazon.com/sagemaker/latest/dg/edge-manage-model.html#edge-manage-model-capturedata) di *Panduan Pengembang Amazon SageMaker AI*.

## Persyaratan
<a name="greengrass-edge-manager-agent-requirements"></a>

Anda harus memenuhi persyaratan berikut untuk menggunakan agen SageMaker AI Edge Manager di perangkat inti Greengrass.<a name="sm-edge-manager-component-reqs"></a>
+ <a name="sm-req-core-device"></a>Perangkat inti Greengrass yang berjalan di Amazon Linux 2, platform Linux berbasis Debian (x86\$164 atau Armv8), atau Windows (x86\$164). Jika Anda tidak memilikinya, lihat [Tutorial: Memulai dengan AWS IoT Greengrass V2](getting-started.md).
+ <a name="sm-req-python"></a>[Python](https://www.python.org/downloads/) 3.6 atau yang lebih baru, termasuk `pip` untuk versi Python Anda, diinstal pada perangkat inti anda.
+ [Peran perangkat Greengrass](device-service-role.md) yang dikonfigurasi dengan berikut ini: 
  + <a name="sm-req-iam-trust-relationship"></a>Hubungan kepercayaan yang memungkinkan `credentials.iot.amazonaws.com` dan `sagemaker.amazonaws.com` untuk meneruskan peran, seperti yang ditunjukkan dalam contoh kebijakan IAM berikut.

    ```
    { 
      "Version": "2012-10-17",		 	 	 
      "Statement": [ 
        { 
          "Effect": "Allow", 
          "Principal": {
            "Service": "credentials.iot.amazonaws.com"
           }, 
          "Action": "sts:AssumeRole" 
        },
        { 
          "Effect": "Allow", 
          "Principal": {
            "Service": "sagemaker.amazonaws.com"
          }, 
          "Action": "sts:AssumeRole" 
        } 
      ] 
    }
    ```
  + <a name="sm-req-iam-sagemanakeredgedevicefleetpolicy"></a>Kebijakan yang dikelola [AmazonSageMakerEdgeDeviceFleetPolicy](https://console.aws.amazon.com/iam/home#/policies/arn:aws:iam::aws:policy/service-role/AmazonSageMakerEdgeDeviceFleetPolicy)IAM.
  + <a name="sm-req-iam-s3-putobject"></a>Tindakan `s3:PutObject`, seperti yang ditunjukkan dalam contoh kebijakan IAM berikut.

    ```
    {
      "Version": "2012-10-17",		 	 	 
      "Statement": [
        {
          "Action": [
            "s3:PutObject"
          ],
          "Resource": [
            "*"
          ],
          "Effect": "Allow"
        }
      ]
    }
    ```
+ <a name="sm-req-s3-bucket"></a>Bucket Amazon S3 yang dibuat sama Akun AWS dan Wilayah AWS sebagai perangkat inti Greengrass Anda. SageMaker AI Edge Manager memerlukan bucket S3 untuk membuat armada perangkat edge, dan menyimpan data sampel dari inferensi yang berjalan di perangkat Anda. Untuk informasi selengkapnya tentang pembuatan bucket S3, lihat [Memulai Amazon S3](https://docs.aws.amazon.com/AmazonS3/latest/userguide/GetStartedWithS3.html).
+ <a name="sm-req-edge-device-fleet"></a>Armada perangkat SageMaker AI edge yang menggunakan alias AWS IoT peran yang sama dengan perangkat inti Greengrass Anda. Untuk informasi selengkapnya, lihat [Buat armada perangkat edge](get-started-with-edge-manager-on-greengrass.md#create-edge-device-fleet-for-greengrass).
+ <a name="sm-req-edge-device"></a>Perangkat inti Greengrass Anda terdaftar sebagai perangkat edge di armada perangkat AI Edge Anda. SageMaker Nama perangkat tepi harus cocok dengan nama AWS IoT benda untuk perangkat inti Anda. Untuk informasi selengkapnya, lihat [Daftarkan perangkat inti Greengrass Anda](get-started-with-edge-manager-on-greengrass.md#register-greengrass-core-device-in-sme).

## SageMaker Memulai dengan AI Edge Manager
<a name="use-sm-edge-manager"></a>

Anda dapat menyelesaikan tutorial untuk mulai menggunakan SageMaker AI Edge Manager. Tutorial ini menunjukkan kepada Anda cara memulai menggunakan SageMaker AI Edge Manager dengan komponen sampel AWS yang disediakan pada perangkat inti yang ada. Komponen sampel ini menggunakan komponen SageMaker AI Edge Manager sebagai dependensi untuk menyebarkan agen Edge Manager, dan melakukan inferensi menggunakan model pra-terlatih yang dikompilasi menggunakan AI Neo. SageMaker Lihat informasi yang lebih lengkap di [Tutorial: Memulai SageMaker AI Edge Manager](get-started-with-edge-manager-on-greengrass.md).

# Sesuaikan komponen machine learning Anda
<a name="ml-customization"></a>

Di AWS IoT Greengrass, Anda dapat mengonfigurasi [komponen pembelajaran mesin](perform-machine-learning-inference.md#ml-components) sampel untuk menyesuaikan cara Anda melakukan inferensi pembelajaran mesin di perangkat Anda dengan komponen inferensi, model, dan runtime sebagai blok bangunan. AWS IoT Greengrass juga memberi Anda fleksibilitas untuk menggunakan komponen sampel sebagai templat dan membuat komponen kustom Anda sendiri sesuai kebutuhan. Anda dapat mencampur dan mencocokkan pendekatan modular ini untuk menyesuaikan komponen inferensi machine learning Anda dengan cara berikut:

**Menggunakan komponen inferensi sampel**  
+ Ubah konfigurasi komponen inferensi ketika Anda men-deploy-nya.
+ Gunakan model kustom dengan komponen inferensi sampel dengan mengganti komponen penyimpanan model sampel dengan komponen model kustom. Model kustom Anda harus dilatih menggunakan waktu aktif yang sama seperti model sampel.

**Menggunakan komponen inferensi kustom**  
+ Gunakan kode inferensi kustom dengan model sampel dan waktu aktif dengan menambahkan komponen model publik dan komponen waktu aktif sebagai dependensi komponen inferensi kustom.
+ Buat dan tambahkan komponen model kustom atau komponen waktu aktif sebagai dependensi komponen inferensi kustom. Anda harus menggunakan komponen kustom jika Anda ingin menggunakan kode inferensi kustom atau runtime yang AWS IoT Greengrass tidak menyediakan komponen sampel. 

**Topics**
+ [Ubah konfigurasi komponen inferensi publik](#modify-ml-component-config)
+ [Gunakan model kustom dengan komponen inferensi sampel](#override-public-model-store)
+ [Buat komponen machine learning khusus](#create-private-ml-components)
+ [Buat komponen inferensi khusus](#create-inference-component)

## Ubah konfigurasi komponen inferensi publik
<a name="modify-ml-component-config"></a>

Di [konsol AWS IoT Greengrass](https://console.aws.amazon.com/greengrass) tersebut, halaman komponen menampilkan konfigurasi default komponen tersebut. Misalnya, konfigurasi default komponen klasifikasi gambar TensorFlow Lite terlihat seperti berikut:

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

Ketika Anda men-deploy komponen inferensi publik, Anda dapat mengubah konfigurasi default untuk menyesuaikan deployment Anda. Untuk informasi tentang parameter konfigurasi yang tersedia untuk setiap komponen inferensi publik, lihat topik komponen di [AWS-menyediakan komponen pembelajaran mesin](perform-machine-learning-inference.md#ml-components).

Bagian ini menjelaskan cara menerapkan komponen yang dimodifikasi dari AWS IoT Greengrass konsol. Untuk informasi tentang penerapan komponen menggunakan AWS CLI, lihat[Buat deployment](create-deployments.md).<a name="modify-ml-component-config-console"></a>

**Untuk men-deploy komponen inferensi publik yang dimodifikasi (konsol)**

1. Masuk ke [konsol AWS IoT Greengrass](https://console.aws.amazon.com/greengrass) tersebut.

1. Pada menu navigasi, pilih **Komponen**.

1. Pada halaman **Komponen**, pada tab **Komponen publik**, pilih komponen yang ingin Anda deploy.

1. Pada halaman komponen, pilih **Deploy**.

1. <a name="add-deployment"></a>Dari **Tambahkan ke deployment**, pilih salah satu langkah berikut ini:

   1. Untuk menggabungkan komponen ini ke deployment yang ada pada perangkat target Anda, pilih **Tambahkan ke deployment yang ada**, lalu pilih deployment yang ingin Anda revisi.

   1. Untuk membuat deployment baru di perangkat target Anda, pilih **Buat deployment baru**. Jika Anda memiliki deployment yang ada di perangkat, dengan memilih langkah ini Anda akan menggantikan deployment yang ada. 

1. <a name="specify-deployment-target"></a>Di halaman **Tentukan target**, lakukan hal berikut: 

   1. Di bawah informasi **Deployment**, masukkan atau ubah nama yang ramah untuk deployment Anda.

   1. Di bawah **Target deployment**, pilih target untuk deployment Anda, dan pilih **Selanjutnya**. Anda tidak dapat mengubah target deployment jika Anda merevisi deployment yang ada.

1. Pada halaman **Pilih komponen**, di bawah **Komponen publik** verifikasi bahwa komponen inferensi dengan konfigurasi yang dimodifikasi dipilih, dan pilih **Selanjutnya**.

1. Pada halaman **Konfigurasikan komponen**, lakukan hal berikut: 

   1. Pilih komponen inferensi, dan pilih **Konfigurasikan komponen**.

   1. Di bawah **Pembaruan konfigurasi**, masukkan nilai konfigurasi yang ingin Anda perbarui. Sebagai contoh, masukkan pembaruan konfigurasi berikut di kotak **Konfigurasikan untuk menggabungkan** untuk mengubah interval inferensi menjadi 15 detik, dan instruksikan komponen untuk mencari citra bernama `custom.jpg` di folder `/custom-ml-inference/images/`. 

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

      Untuk me-reset seluruh konfigurasi komponen ke nilai default-nya, tentukan string kosong tunggal `""` di kotak **Reset path**. 

   1. Pilih **Konfirmasi** dan kemudian pilih **Selanjutnya**.

1. Pada halaman **Konfigurasikan pengaturan lanjutan**, simpan pengaturan konfigurasi default tersebut, dan pilih **Selanjutnya**.

1. Di halaman **Tinjauan**, pilih **Deploy**.

## Gunakan model kustom dengan komponen inferensi sampel
<a name="override-public-model-store"></a>

Jika Anda ingin menggunakan komponen inferensi sampel dengan model pembelajaran mesin Anda sendiri untuk runtime yang AWS IoT Greengrass menyediakan komponen runtime sampel, Anda harus mengganti komponen model publik dengan komponen yang menggunakan model tersebut sebagai artefak. Pada tingkat tinggi Anda menyelesaikan langkah-langkah berikut untuk menggunakan model kustom dengan komponen inferensi sampel:

1. Buat komponen model yang menggunakan model kustom dalam bucket S3 sebagai artefak. Model kustom Anda harus dilatih dengan menggunakan waktu aktif yang sama seperti model sampel.

1. Ubah parameter konfigurasi `ModelResourceKey` dalam komponen inferensi untuk menggunakan model kustom tersebut. Untuk informasi tentang pembaruan konfigurasi komponen inferensi, lihat [Ubah konfigurasi komponen inferensi publik](#modify-ml-component-config)

Saat Anda menerapkan komponen inferensi, AWS IoT Greengrass cari versi terbaru dari dependensi komponennya. Ini mengesampingkan komponen model publik dependen jika versi kustom komponen yang lebih baru ada dalam versi yang sama Akun AWS dan. Wilayah AWS

### Buat komponen model kustom (konsol)
<a name="create-model-store-component-console"></a>

1. Unggah model Anda ke bucket S3. Untuk informasi tentang mengunggah model ke bucket S3, lihat [Bekerja dengan Bucket Amazon S3](https://docs.aws.amazon.com/AmazonS3/latest/userguide/UsingBucket.html) di Panduan Pengguna Layanan Penyimpanan *Sederhana Amazon*.
**catatan**  <a name="s3-artifacts-note"></a>
<a name="sr-artifacts-req"></a>Anda harus menyimpan artefak Anda dalam ember S3 yang sama Akun AWS dan Wilayah AWS sebagai komponen. AWS IoT Greengrass Untuk mengaktifkan akses artefak ini, peran perangkat [Greengrass](device-service-role.md) harus memungkinkan tindakan. `s3:GetObject` Untuk informasi lebih lanjut tentang peran perangkat, lihat [Otorisasi perangkat inti untuk berinteraksi dengan layanan AWS](device-service-role.md).

1. Pada menu navigasi [konsol AWS IoT Greengrass](https://console.aws.amazon.com/greengrass) tersebut, pilih **Komponen**.

1. Ambil resep komponen untuk komponen penyimpanan model publik.

   1. Pada halaman **Komponen**, pada tab **Komponen publik**, cari dan pilih komponen model publik yang ingin Anda buat versi barunya. Misalnya, `variant.DLR.ImageClassification.ModelStore`.

   1. Pada halaman komponen, pilih **Lihat resep** dan salin resep JSON yang ditampilkan.

1. Pada halaman **Komponen**, pada tab **Komponen saya**, pilih **Buat komponen**.

1. Pada halaman **Buat Komponen**, di bawah **Informasi komponen**, pilih **Masukkan resep sebagai JSON** sebagai sumber komponen Anda.

1. Di kotak **Resep**, tempelkan komponen resep yang sebelumnya telah Anda salin.

1. <a name="override-model-recipe-config"></a>Dalam resep tersebut, perbarui nilai berikut:
   + `ComponentVersion`: Kenaikan versi minor komponen. 

     Ketika Anda membuat komponen kustom untuk menimpa komponen model publik, Anda harus memperbarui hanya versi minor dari versi komponen yang ada. Sebagai contoh, jika versi komponen publik `2.1.0` Anda dapat membuat komponen kustom dengan versi `2.1.1`.
   + `Manifests.Artifacts.Uri`: Perbarui setiap nilai URI untuk Amazon S3 URI model yang ingin Anda gunakan.
**catatan**  
Jangan ubah nama komponen.

1. Pilih **Buat komponen**.

### Buat komponen model kustom (AWS CLI)
<a name="create-model-store-component-cli"></a>

1. Unggah model Anda ke bucket S3. Untuk informasi tentang mengunggah model ke bucket S3, lihat [Bekerja dengan Bucket Amazon S3](https://docs.aws.amazon.com/AmazonS3/latest/userguide/UsingBucket.html) di Panduan Pengguna Layanan Penyimpanan *Sederhana Amazon*.
**catatan**  <a name="s3-artifacts-note"></a>
<a name="sr-artifacts-req"></a>Anda harus menyimpan artefak Anda dalam ember S3 yang sama Akun AWS dan Wilayah AWS sebagai komponen. AWS IoT Greengrass Untuk mengaktifkan akses artefak ini, peran perangkat [Greengrass](device-service-role.md) harus memungkinkan tindakan. `s3:GetObject` Untuk informasi lebih lanjut tentang peran perangkat, lihat [Otorisasi perangkat inti untuk berinteraksi dengan layanan AWS](device-service-role.md).

1. Jalankan perintah berikut untuk mengambil resep komponen pada komponen publik. Perintah ini menuliskan resep komponen untuk file output yang Anda berikan dalam perintah Anda. Konversi string berkode base64 yang diambil untuk JSON atau YAML, sesuai keperluan.

------
#### [ 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. Perbarui nama file resep untuk `<component-name>-<component-version>`, di mana versi komponen adalah versi target komponen baru. Misalnya, `variant.DLR.ImageClassification.ModelStore-2.1.1.yaml`. 

1. <a name="override-model-recipe-config"></a>Dalam resep tersebut, perbarui nilai berikut:
   + `ComponentVersion`: Kenaikan versi minor komponen. 

     Ketika Anda membuat komponen kustom untuk menimpa komponen model publik, Anda harus memperbarui hanya versi minor dari versi komponen yang ada. Sebagai contoh, jika versi komponen publik `2.1.0` Anda dapat membuat komponen kustom dengan versi `2.1.1`.
   + `Manifests.Artifacts.Uri`: Perbarui setiap nilai URI untuk Amazon S3 URI model yang ingin Anda gunakan.
**catatan**  
Jangan ubah nama komponen.

1. Jalankan perintah berikut untuk membuat komponen baru dengan menggunakan resep yang telah Anda ambil dan ubah.

   ```
   aws greengrassv2 create-component-version \
       --inline-recipe fileb://path/to/component/recipe
   ```
**catatan**  
Langkah ini menciptakan komponen dalam AWS IoT Greengrass layanan di AWS Cloud. Anda dapat menggunakan Greengrass CLI untuk mengembangkan, menguji, dan men-deploy komponen Anda secara lokal sebelum Anda meng-upload ke cloud. Untuk informasi selengkapnya, lihat [Kembangkan AWS IoT Greengrass komponen](develop-greengrass-components.md).

Untuk informasi selengkapnya tentang membuat komponen, lihat [Kembangkan AWS IoT Greengrass komponen](develop-greengrass-components.md).

## Buat komponen machine learning khusus
<a name="create-private-ml-components"></a>

Anda harus membuat komponen kustom jika Anda ingin menggunakan kode inferensi kustom atau runtime yang AWS IoT Greengrass tidak menyediakan komponen sampel. Anda dapat menggunakan kode inferensi kustom Anda dengan model pembelajaran mesin sampel dan runtime yang AWS disediakan, atau Anda dapat mengembangkan solusi inferensi pembelajaran mesin yang sepenuhnya disesuaikan dengan model dan runtime Anda sendiri. Jika model Anda menggunakan runtime yang AWS IoT Greengrass menyediakan komponen runtime sampel, maka Anda dapat menggunakan komponen runtime tersebut, dan Anda perlu membuat komponen khusus hanya untuk kode inferensi dan model yang ingin Anda gunakan. 

**Topics**
+ [Ambil resep untuk komponen publik](#get-ml-component-recipes)
+ [Ambil contoh artefak komponen](#get-ml-component-artifacts)
+ [Unggah artefak komponen ke bucket S3](#upload-ml-component-artifacts)
+ [Buat komponen khusus](#create-ml-components)

### Ambil resep untuk komponen publik
<a name="get-ml-component-recipes"></a>

Anda dapat menggunakan resep komponen machine learning publik yang ada sebagai templat untuk membuat komponen kustom. Untuk melihat resep komponen untuk versi terbaru dari komponen publik, gunakan konsol atau AWS CLI sebagai berikut:
+ **Menggunakan konsol**

  1. Pada halaman **Komponen**, pada tab **Komponen publik**, cari dan pilih komponen model publik yang ingin Anda buat versi barunya.

  1. Pada halaman komponen, pilih **Lihat resep**.
+ **Menggunakan AWS CLI**

  Jalankan perintah berikut untuk mengambil resep komponen pada komponen varian publik. Perintah ini menuliskan resep komponen untuk file resep JSON atau YAML yang Anda berikan dalam perintah Anda. 

------
#### [ 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>
  ```

------

  Ganti nilai-nilai dalam perintah Anda sebagai berikut:
  + `<arn>`. Amazon Resource Name (ARN) dari komponen publik. 
  + `<recipe-format>`. Format di mana Anda ingin membuat file resep. Nilai yang didukung adalah `JSON` dan `YAML`.
  + `<recipe-file>`. Nama resep dalam format `<component-name>-<component-version>`. 

### Ambil contoh artefak komponen
<a name="get-ml-component-artifacts"></a>

Anda dapat menggunakan artefak yang digunakan oleh komponen machine learning publik sebagai templat untuk membuat artefak komponen kustom Anda, seperti kode inferensi atau skrip instalasi waktu aktif. 

Untuk melihat artefak sampel yang disertakan dalam komponen machine learning publik, deploy komponen inferensi publik dan kemudian lihat artefak pada perangkat Anda di folder `/greengrass/v2/packages/artifacts-unarchived/component-name/component-version/`. 

### Unggah artefak komponen ke bucket S3
<a name="upload-ml-component-artifacts"></a>

Sebelum Anda dapat membuat komponen kustom, Anda harus mengunggah artefak komponen ke bucket S3 dan menggunakan S3 URIs dalam resep komponen Anda. Misalnya, untuk menggunakan kode inferensi kustom dalam komponen inferensi Anda, unggah kode tersebut ke bucket S3. Anda kemudian dapat menggunakan Amazon S3 URI kode inferensi Anda sebagai artefak dalam komponen Anda. 

Untuk informasi tentang mengunggah konten ke bucket S3, lihat [Bekerja dengan Bucket Amazon S3](https://docs.aws.amazon.com/AmazonS3/latest/userguide/UsingBucket.html) di Panduan Pengguna Layanan Penyimpanan *Sederhana Amazon*.

**catatan**  <a name="s3-artifacts-note"></a>
<a name="sr-artifacts-req"></a>Anda harus menyimpan artefak Anda dalam ember S3 yang sama Akun AWS dan Wilayah AWS sebagai komponen. AWS IoT Greengrass Untuk mengaktifkan akses artefak ini, peran perangkat [Greengrass](device-service-role.md) harus memungkinkan tindakan. `s3:GetObject` Untuk informasi lebih lanjut tentang peran perangkat, lihat [Otorisasi perangkat inti untuk berinteraksi dengan layanan AWS](device-service-role.md).

### Buat komponen khusus
<a name="create-ml-components"></a>

Anda dapat menggunakan artefak dan resep yang telah Anda ambil untuk membuat komponen machine learning kustom Anda. Sebagai contoh, lihat [Buat komponen inferensi khusus](#create-inference-component).

Untuk informasi detail tentang membuat dan men-deploy komponen ke perangkat Greengrass, lihat [Kembangkan AWS IoT Greengrass komponen](develop-greengrass-components.md) dan [Menyebarkan AWS IoT Greengrass komponen ke perangkat](manage-deployments.md).

## Buat komponen inferensi khusus
<a name="create-inference-component"></a>

Bagian ini menunjukkan kepada Anda cara membuat komponen inferensi kustom dengan menggunakan komponen klasifikasi gambar DLR sebagai templat.

**Topics**
+ [Unggah kode inferensi Anda ke bucket Amazon S3](#create-inference-code)
+ [Buat resep untuk komponen inferensi Anda](#create-inference-component-recipe)
+ [Buat komponen inferensi](#create-private-inference-component)

### Unggah kode inferensi Anda ke bucket Amazon S3
<a name="create-inference-code"></a>

Buat kode inferensi Anda dan kemudian unggah ke bucket S3. Untuk informasi tentang mengunggah konten ke bucket S3, lihat [Bekerja dengan Bucket Amazon S3](https://docs.aws.amazon.com/AmazonS3/latest/userguide/UsingBucket.html) di Panduan Pengguna Layanan Penyimpanan *Sederhana Amazon*.

**catatan**  <a name="s3-artifacts-note"></a>
<a name="sr-artifacts-req"></a>Anda harus menyimpan artefak Anda dalam ember S3 yang sama Akun AWS dan Wilayah AWS sebagai komponen. AWS IoT Greengrass Untuk mengaktifkan akses artefak ini, peran perangkat [Greengrass](device-service-role.md) harus memungkinkan tindakan. `s3:GetObject` Untuk informasi lebih lanjut tentang peran perangkat, lihat [Otorisasi perangkat inti untuk berinteraksi dengan layanan AWS](device-service-role.md).

### Buat resep untuk komponen inferensi Anda
<a name="create-inference-component-recipe"></a>

1. Jalankan perintah berikut untuk mengambil resep komponen pada komponen klasifikasi citra DLR. Perintah ini menuliskan resep komponen untuk file resep JSON atau YAML yang Anda berikan dalam perintah Anda. 

------
#### [ 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>
   ```

------

   Ganti *<recipe-file>* dengan nama resep dalam format`<component-name>-<component-version>`. 

1. Di objek `ComponentDependencies` dalam resep Anda, lakukan salah satu atau lebih hal berikut ini tergantung pada model dan waktu aktif komponen yang ingin Anda gunakan:
   + Jaga dependensi komponen DLR jika Anda ingin menggunakan model terkompilasi DLR. Anda juga dapat menggantinya dengan dependensi pada komponen waktu aktif kustom, seperti yang ditunjukkan dalam contoh berikut.

     **Komponen runtime**

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

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

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

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

------
   + Pertahankan dependensi penyimpanan model klasifikasi gambar DLR untuk menggunakan model ResNet -50 yang telah dilatih sebelumnya yang AWS menyediakan, atau memodifikasinya untuk menggunakan komponen model kustom. Saat Anda menyertakan dependensi untuk komponen model publik, jika versi kustom komponen yang lebih baru ada dalam komponen yang sama Akun AWS dan Wilayah AWS, maka komponen inferensi menggunakan komponen kustom tersebut. Tentukan dependensi komponen model seperti yang ditunjukkan dalam contoh berikut.

     **Komponen model publik**

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

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

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

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

------

     **Komponen model kustom**

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

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

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

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

------

1. Di objek `ComponentConfiguration`, tambahkan konfigurasi default untuk komponen ini. Anda nanti dapat mengubah konfigurasi ini ketika Anda men-deploy komponen tersebut. Kutipan berikut menunjukkan konfigurasi komponen untuk komponen klasifikasi gambar DLR. 

   Misalnya, jika Anda menggunakan komponen model kustom sebagai dependensi untuk komponen inferensi kustom Anda, maka ubah `ModelResourceKey` untuk memberikan nama-nama model yang Anda gunakan.

------
#### [ 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. Di objek `Manifests`, berikan informasi tentang artefak tersebut dan konfigurasi komponen ini yang digunakan ketika komponen tersebut di-deploy pada beberapa platform yang berbeda dan informasi lain yang diperlukan untuk berhasil menjalankan komponen tersebut. Kutipan berikut menunjukkan konfigurasi objek `Manifests` untuk platform Linux dalam komponen klasifikasi gambar DLR.

------
#### [ 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
   ```

------

 Untuk informasi detail tentang membuat resep komponen, lihat [AWS IoT Greengrass referensi resep komponen](component-recipe-reference.md).

### Buat komponen inferensi
<a name="create-private-inference-component"></a>

Gunakan AWS IoT Greengrass konsol atau AWS CLI untuk membuat komponen menggunakan resep yang baru saja Anda tentukan. Setelah Anda membuat komponen, Anda dapat men-deploy-nya untuk melakukan inferensi pada perangkat Anda. Untuk contoh cara menggunakan komponen inferensi, lihat [Tutorial: Lakukan inferensi klasifikasi gambar sampel menggunakan Lite TensorFlow](ml-tutorial-image-classification.md).

#### Buat komponen inferensi kustom (konsol)
<a name="create-inference-component-console"></a>

1. Masuk ke [konsol AWS IoT Greengrass](https://console.aws.amazon.com/greengrass) tersebut.

1. Pada menu navigasi, pilih **Komponen**.

1. Pada halaman **Komponen**, pada tab **Komponen saya**, pilih **Buat komponen**.

1. Pada halaman **Buat Komponen**, di bawah **Informasi komponen**, pilih **Masukkan resep sebagai JSON** atau **Masukkan resep sebagai YAML** sebagai sumber komponen Anda.

1. Di kotak **Resep**, masukkan resep kustom yang Anda buat. 

1. Klik **Buat Komponen**.

#### Buat komponen inferensi khusus (AWS CLI)
<a name="create-inference-component-cli"></a>

Jalankan perintah berikut untuk membuat komponen baru dengan menggunakan resep yang telah Anda buat.

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

**catatan**  
Langkah ini menciptakan komponen dalam AWS IoT Greengrass layanan di AWS Cloud. Anda dapat menggunakan Greengrass CLI untuk mengembangkan, menguji, dan men-deploy komponen Anda secara lokal sebelum Anda meng-upload ke cloud. Lihat informasi yang lebih lengkap di [Kembangkan AWS IoT Greengrass komponen](develop-greengrass-components.md).

# Menyelesaikan masalah inferensi machine learning
<a name="ml-troubleshooting"></a>

Gunakan informasi pemecahan masalah dan solusi di bagian ini untuk membantu menyelesaikan masalah dengan komponen machine learning Anda. Untuk komponen inferensi pembelajaran mesin publik, lihat pesan kesalahan di log komponen berikut:

------
#### [ Linux or Unix ]
+ `/greengrass/v2/logs/aws.greengrass.DLRImageClassification.log`
+ `/greengrass/v2/logs/aws.greengrass.DLRObjectDetection.log`
+ `/greengrass/v2/logs/aws.greengrass.TensorFlowLiteImageClassification.log`
+ `/greengrass/v2/logs/aws.greengrass.TensorFlowLiteObjectDetection.log`

------
#### [ Windows ]
+ `C:\greengrass\v2\logs\aws.greengrass.DLRImageClassification.log`
+ `C:\greengrass\v2\logs\aws.greengrass.DLRObjectDetection.log`
+ `C:\greengrass\v2\logs\aws.greengrass.TensorFlowLiteImageClassification.log`
+ `C:\greengrass\v2\logs\aws.greengrass.TensorFlowLiteObjectDetection.log`

------

Jika komponen diinstal dengan benar, maka log komponen akan berisi lokasi pustaka yang digunakannya untuk inferensi.

**Topics**
+ [Gagal mengambil pustaka](#rpi-update-error)
+ [Cannot open shared object file](#rpi-import-cv-error)
+ [Error: ModuleNotFoundError: No module named '<library>'](#troubleshooting-venv-errors-not-found)
+ [Tidak ada perangkat berkemampuan CUDA yang terdeteksi](#troubleshooting-cuda-error)
+ [Tidak ada file atau direktori seperti itu](#troubleshooting-venv-errors-no-such-file)
+ [RuntimeError: module compiled against API version 0xf but this version of NumPy is <version>](#troubleshooting-rpi-numpy-version-error)
+ [picamera.exc.PiCameraError: Camera is not enabled](#troubleshooting-rpi-camera-stack-error)
+ [Kesalahan memori](#troubleshooting-memory-errors)
+ [Kesalahan ruang disk](#troubleshooting-disk-space-errors)
+ [Batas waktu mengalami kesalahan](#troubleshooting-timeout-errors)

## Gagal mengambil pustaka
<a name="rpi-update-error"></a>

Kesalahan berikut terjadi ketika skrip penginstal gagal mengunduh pustaka yang diperlukan selama penerapan pada perangkat Raspberry Pi.

```
Err:2 http://raspbian.raspberrypi.org/raspbian buster/main armhf python3.7-dev armhf 3.7.3-2+deb10u1
404 Not Found [IP: 93.93.128.193 80] 
E: Failed to fetch http://raspbian.raspberrypi.org/raspbian/pool/main/p/python3.7/libpython3.7-dev_3.7.3-2+deb10u1_armhf.deb 404 Not Found [IP: 93.93.128.193 80]
```

Jalankan `sudo apt-get update` dan deploy komponen Anda lagi.

## Cannot open shared object file
<a name="rpi-import-cv-error"></a>

Anda mungkin melihat kesalahan yang mirip dengan berikut ini ketika skrip penginstal gagal mengunduh dependensi yang diperlukan untuk `opencv-python` selama deployment pada perangkat Raspberry Pi.

```
ImportError: libopenjp2.so.7: cannot open shared object file: No such file or directory
```

Jalankan perintah berikut untuk secara manual menginstal dependensi untuk `opencv-python`:

```
sudo apt-get install libopenjp2-7 libilmbase23 libopenexr-dev libavcodec-dev libavformat-dev libswscale-dev libv4l-dev libgtk-3-0 libwebp-dev
```

## Error: ModuleNotFoundError: No module named '<library>'
<a name="troubleshooting-venv-errors-not-found"></a>

Anda mungkin melihat kesalahan ini di log komponen runtime HTML (`variant.DLR.log`atau`variant.TensorFlowLite.log`) saat pustaka runtime HTML atau dependensinya tidak diinstal dengan benar. Kesalahan ini dapat terjadi dalam kasus-kasus berikut:
+ Jika Anda menggunakan `UseInstaller` opsi, yang diaktifkan secara default, kesalahan ini menunjukkan bahwa komponen runtime HTML gagal menginstal runtime atau dependensinya. Lakukan hal-hal berikut:

  1. Konfigurasikan komponen runtime ML untuk menonaktifkan `UseInstaller` opsi.

  1. Instal runtime ML dan dependensinya, dan buat mereka tersedia untuk pengguna sistem yang menjalankan komponen ML. Untuk informasi selengkapnya, lihat berikut ini:
     + [Opsi runtime DLR UseInstaller ](dlr-component.md#dlr-component-config-useinstaller-term)
     + [TensorFlowOpsi runtime UseInstaller Lite](tensorflow-lite-component.md#tensorflow-lite-component-config-useinstaller-term)
+ Jika Anda tidak menggunakan `UseInstaller` opsi, kesalahan ini menunjukkan bahwa runtime HTML atau dependensinya tidak diinstal untuk pengguna sistem yang menjalankan komponen ML. Lakukan hal-hal berikut:

  1. Periksa apakah pustaka diinstal untuk pengguna sistem yang menjalankan komponen ML. Ganti *ggc\$1user* dengan nama pengguna sistem, dan ganti *tflite\$1runtime* dengan nama perpustakaan untuk memeriksa.

------
#### [ Linux or Unix ]

     ```
     sudo -H -u ggc_user bash -c "python3 -c 'import tflite_runtime'"
     ```

------
#### [ Windows ]

     ```
     runas /user:ggc_user "py -3 -c \"import tflite_runtime\""
     ```

------

  1. Jika pustaka tidak diinstal, instal untuk pengguna itu. Ganti *ggc\$1user* dengan nama pengguna sistem, dan ganti *tflite\$1runtime* dengan nama perpustakaan.

------
#### [ Linux or Unix ]

     ```
     sudo -H -u ggc_user bash -c "python3 -m pip install --user tflite_runtime"
     ```

------
#### [ Windows ]

     ```
     runas /user:ggc_user "py -3 -m pip install --user tflite_runtime"
     ```

------

     Untuk informasi selengkapnya tentang dependensi untuk setiap runtime ML, lihat berikut ini:
     + [Opsi runtime DLR UseInstaller ](dlr-component.md#dlr-component-config-useinstaller-term)
     + [TensorFlowOpsi runtime UseInstaller Lite](tensorflow-lite-component.md#tensorflow-lite-component-config-useinstaller-term)

  1. Jika masalah berlanjut, instal pustaka untuk pengguna lain untuk mengonfirmasi apakah perangkat ini dapat menginstal pustaka. Pengguna dapat berupa, misalnya, pengguna Anda, pengguna root, atau pengguna administrator. Jika Anda tidak berhasil menginstal pustaka untuk pengguna mana pun, perangkat Anda mungkin tidak mendukung pustaka. Konsultasikan dokumentasi perpustakaan untuk meninjau persyaratan dan memecahkan masalah penginstalan.

## Tidak ada perangkat berkemampuan CUDA yang terdeteksi
<a name="troubleshooting-cuda-error"></a>

Anda mungkin melihat kesalahan berikut saat menggunakan akselerasi GPU. Jalankan perintah berikut untuk mengaktifkan akses GPU untuk pengguna Greengrass.

```
sudo usermod -a -G video ggc_user
```

## Tidak ada file atau direktori seperti itu
<a name="troubleshooting-venv-errors-no-such-file"></a>

Kesalahan berikut menunjukkan bahwa komponen waktu aktif tidak dapat mengatur lingkungan virtual dengan benar:
+ `MLRootPath/greengrass_ml_dlr_conda/bin/conda: No such file or directory `
+ `MLRootPath/greengrass_ml_dlr_venv/bin/activate: No such file or directory ` 
+ `MLRootPath/greengrass_ml_tflite_conda/bin/conda: No such file or directory ` 
+ `MLRootPath/greengrass_ml_tflite_venv/bin/activate: No such file or directory `

Periksa log untuk memastikan bahwa semua waktu aktif dependensi diinstal dengan benar. Untuk informasi selengkapnya tentang pustaka yang diinstal oleh skrip penginstal, lihat topik berikut ini:
+ [Runtime DLR](dlr-component.md)
+ [TensorFlow Runtime ringan](tensorflow-lite-component.md)

Secara default *MLRootPath* diatur ke`/greengrass/v2/work/component-name/greengrass_ml`. Untuk mengubah lokasi ini, sertakan [Runtime DLR](dlr-component.md) atau komponen waktu aktif [TensorFlow Runtime ringan](tensorflow-lite-component.md) secara langsung dalam deployment Anda, dan tentukan nilai yang diubah untuk parameter `MLRootPath` dalam pembaruan gabungan konfigurasi. Untuk informasi lebih lanjut tentang mengonfigurasi komponen, lihat [Perbarui konfigurasi komponen](update-component-configurations.md).

**catatan**  
Untuk komponen DLR v1.3.x, Anda mengatur parameter `MLRootPath` dalam konfigurasi komponen inferensi, dan nilai defaultnya adalah `$HOME/greengrass_ml`.

## RuntimeError: module compiled against API version 0xf but this version of NumPy is <version>
<a name="troubleshooting-rpi-numpy-version-error"></a>

Anda mungkin melihat kesalahan berikut saat menjalankan inferensi pembelajaran mesin pada Raspberry Pi yang menjalankan Raspberry Pi OS Bullseye.

```
RuntimeError: module compiled against API version 0xf but this version of numpy is 0xd
ImportError: numpy.core.multiarray failed to import
```

Kesalahan ini terjadi karena Raspberry Pi OS Bullseye menyertakan versi sebelumnya NumPy dari versi yang dibutuhkan OpenCV. Untuk memperbaiki masalah ini, jalankan perintah berikut untuk meningkatkan NumPy ke versi terbaru.

```
pip3 install --upgrade numpy
```

## picamera.exc.PiCameraError: Camera is not enabled
<a name="troubleshooting-rpi-camera-stack-error"></a>

Anda mungkin melihat kesalahan berikut saat menjalankan inferensi pembelajaran mesin pada Raspberry Pi yang menjalankan Raspberry Pi OS Bullseye.

```
picamera.exc.PiCameraError: Camera is not enabled. Try running 'sudo raspi-config' and ensure that the camera has been enabled.
```

Kesalahan ini terjadi karena Raspberry Pi OS Bullseye menyertakan tumpukan kamera baru yang tidak kompatibel dengan komponen ML. Untuk memperbaiki masalah ini, aktifkan tumpukan kamera lama.<a name="raspberry-pi-bullseye-enable-legacy-camera-stack"></a>

**Untuk mengaktifkan tumpukan kamera lama**

1. Jalankan perintah berikut untuk membuka alat konfigurasi Raspberry Pi.

   ```
   sudo raspi-config
   ```

1. Pilih **Opsi Antarmuka**.

1. Pilih **Kamera lama** untuk mengaktifkan tumpukan kamera lama.

1. Reboot Raspberry Pi.

## Kesalahan memori
<a name="troubleshooting-memory-errors"></a>

Kesalahan berikut biasanya terjadi ketika perangkat tidak memiliki cukup memori dan proses komponen terganggu.
+ `stderr. Killed.`
+ `exitCode=137`

Kami merekomendasikan minimal 500 MB memori untuk men-deploy komponen inferensi machine learning.

## Kesalahan ruang disk
<a name="troubleshooting-disk-space-errors"></a>

Kesalahan `no space left on device` biasanya terjadi ketika sebuah klaster tidak memiliki penyimpanan yang cukup. Pastikan bahwa ada cukup ruang disk yang tersedia di perangkat Anda sebelum Anda menyebarkan komponen lagi. Kami merekomendasikan minimal 500 MB memori untuk men-deploy komponen inferensi machine learning publik.

## Batas waktu mengalami kesalahan
<a name="troubleshooting-timeout-errors"></a>

Komponen machine learning publik mengunduh file model machine learning besar yang lebih besar dari 200 MB. Jika waktu download habis saat deployment, periksa kecepatan koneksi internet Anda dan coba lagi lakukan deployment.