

Pemberitahuan akhir dukungan: Pada 7 Oktober 2026, AWS akan menghentikan dukungan untuk. AWS IoT Greengrass Version 1 Setelah 7 Oktober 2026, Anda tidak akan lagi dapat mengakses sumber daya. AWS IoT Greengrass V1 Untuk informasi lebih lanjut, silakan kunjungi [Migrasi dari AWS IoT Greengrass Version 1](https://docs.aws.amazon.com/greengrass/v2/developerguide/migrate-from-v1.html).

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="ml-inference"></a>

Fitur ini tersedia untuk AWS IoT Greengrass Core v1.6 atau yang lebih baru.

Dengan AWS IoT Greengrass, Anda dapat melakukan inferensi pembelajaran mesin (ML) di edge pada data yang dihasilkan secara lokal menggunakan model terlatih cloud. Anda mendapatkan keuntungan dari latensi rendah dan penghematan biaya untuk menjalankan inferensi lokal, namun masih memanfaatkan daya komputasi cloud untuk model pelatihan dan pemrosesan yang rumit.

Untuk memulai melakukan inferensi lokal, lihat [Cara mengkonfigurasi inferensi pembelajaran mesin menggunakan Konsol Manajemen AWS](ml-console.md).

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

Anda dapat melatih model inferensi Anda di mana saja, men-deploy secara lokal sebagai *sumber daya machine learning* di grup Greengrass, dan kemudian mengaksesnya dari fungsi Greengrass Lambda. Misalnya, Anda dapat membangun dan melatih model pembelajaran mendalam di [SageMaker AI](https://console.aws.amazon.com/sagemaker) dan menerapkannya ke inti Greengrass Anda. Kemudian, fungsi Lambda Anda dapat menggunakan model lokal untuk melakukan inferensi pada perangkat yang terhubung dan mengirim data pelatihan baru kembali ke cloud.

Diagram berikut menunjukkan alur kerja inferensi AWS IoT Greengrass ML.

![\[Komponen alur kerja pembelajaran machine learning dan aliran informasi antara perangkat core, AWS IoT Greengrass layanan, dan model cloud-trained.\]](http://docs.aws.amazon.com/id_id/greengrass/v1/developerguide/images/ml-inference/diagram-ml-overview.png)


AWS IoT Greengrass Inferensi ML menyederhanakan setiap langkah alur kerja ML, termasuk:
+ Membangun dan deploying prototipe kerangka ML.
+ Mengakses model cloud-trained dan deploying mereka ke perangkat Greengrass core.
+ Membuat aplikasi inferensi yang dapat mengakses akselerator perangkat keras (seperti GPUs dan FPGAs) sebagai sumber daya [lokal](access-local-resources.md).

## Sumber daya machine learning
<a name="ml-resources"></a>

Sumber daya pembelajaran mesin mewakili model inferensi terlatih cloud yang digunakan ke inti. AWS IoT Greengrass Untuk men-deploy sumber daya machine learning, pertama Anda tambahkan sumber daya ke grup Greengrass, dan kemudian Anda tentukan bagaimana fungsi Lambda dalam grup dapat mengaksesnya. Selama penyebaran grup, AWS IoT Greengrass mengambil paket model sumber dari cloud dan mengekstraknya ke direktori di dalam namespace runtime Lambda. Kemudian, fungsi Greengrass Lambda menggunakan model lokal di-deploy untuk melakukan inferensi.

Untuk memperbarui model lokal yang di-deploy, pertama perbarui model sumber (di cloud) yang sesuai dengan sumber daya machine learning, dan kemudian men-deploy grup. Selama deployment, AWS IoT Greengrass memeriksa sumber untuk perubahan. Jika perubahan terdeteksi, maka AWS IoT Greengrass perbarui model lokal.

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

AWS IoT Greengrass mendukung sumber model SageMaker AI dan Amazon S3 untuk sumber daya pembelajaran mesin.

Persyaratan berikut berlaku untuk sumber model:
+ Bucket S3 yang menyimpan sumber model SageMaker AI dan Amazon S3 Anda tidak boleh dienkripsi menggunakan SSE-C. Untuk bucket yang menggunakan enkripsi sisi server, inferensi AWS IoT Greengrass ML 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-nama bucket S3 yang menyimpan sumber model SageMaker AI dan Amazon S3 Anda tidak boleh menyertakan period (). `.` 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*.
+  Wilayah AWS [Dukungan tingkat layanan harus tersedia untuk keduanya [AWS IoT Greengrass](https://docs.aws.amazon.com/general/latest/gr/greengrass.html)dan SageMaker AI.](https://docs.aws.amazon.com/general/latest/gr/sagemaker.html) Saat ini, AWS IoT Greengrass mendukung model SageMaker AI di Wilayah berikut:
  + AS Timur (Ohio)
  + AS Timur (Virginia Utara)
  + US West (Oregon)
  + Asia Pasifik (Mumbai)
  + Asia Pasifik (Seoul)
  + Asia Pasifik (Singapura)
  + Asia Pasifik (Sydney)
  + Asia Pasifik (Tokyo)
  + Eropa (Frankfurt)
  + Eropa (Irlandia)
  + Eropa (London)
+ AWS IoT Greengrass harus memiliki `read` izin ke sumber model, seperti yang dijelaskan di bagian berikut.

**SageMaker AI**  
AWS IoT Greengrass mendukung model yang disimpan sebagai pekerjaan pelatihan SageMaker AI. SageMaker AI adalah layanan ML yang dikelola sepenuhnya yang dapat Anda gunakan untuk membangun dan melatih model menggunakan algoritme bawaan atau kustom. Untuk informasi lebih lanjut, lihat [Apa itu SageMaker AI?](https://docs.aws.amazon.com/sagemaker/latest/dg/whatis.html) di *Panduan Pengembang SageMaker AI*.  
Jika Anda mengonfigurasi lingkungan SageMaker AI Anda dengan [membuat bucket](https://docs.aws.amazon.com/sagemaker/latest/dg/gs-config-permissions.html) yang namanya berisi`sagemaker`, maka AWS IoT Greengrass memiliki izin yang cukup untuk mengakses pekerjaan pelatihan SageMaker AI Anda. Kebijakan terkelola `AWSGreengrassResourceAccessRolePolicy` mengizinkan akses ke bucket yang namanya berisi string `sagemaker`. Kebijakan ini terlampir pada [peran layanan Greengrass](service-role.md).  
Jika tidak, Anda harus memberikan AWS IoT Greengrass `read` izin ke ember tempat pekerjaan pelatihan Anda disimpan. Untuk melakukannya, menanamkan kebijakan inline berikut di peran layanan. Anda dapat membuat daftar beberapa ember ARNs.    
****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "s3:GetObject"
            ],
            "Resource": [
                "arn:aws:s3:::amzn-s3-demo-bucket"
            ]
        }
    ]
}
```

**Amazon S3**  
AWS IoT Greengrass mendukung model yang disimpan di Amazon S3 sebagai `tar.gz` atau `.zip` file.  
 AWS IoT Greengrass Untuk mengaktifkan mengakses model yang disimpan di bucket Amazon S3, Anda harus memberikan AWS IoT Greengrass `read` izin untuk mengakses bucket dengan melakukan **salah satu** hal berikut:  
+ Simpan model Anda dalam bucket yang namanya berisi `greengrass`.

  Kebijakan terkelola `AWSGreengrassResourceAccessRolePolicy` mengizinkan akses ke bucket yang namanya berisi string `greengrass`. Kebijakan ini terlampir pada [peran layanan Greengrass](service-role.md).

   
+ Menanam kebijakan inline di peran layanan Greengrass.

  Jika nama bucket Anda tidak berisi `greengrass`, tambahkan kebijakan inline berikut untuk peran layanan. Anda dapat membuat daftar beberapa ember ARNs.

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

****  

  ```
  {
      "Version":"2012-10-17",		 	 	 
      "Statement": [
          {
              "Effect": "Allow",
              "Action": [
                  "s3:GetObject"
              ],
              "Resource": [
                  "arn:aws:s3:::amzn-s3-demo-bucket"
              ]
          }
      ]
  }
  ```

------

  Untuk informasi lebih lanjut, lihat. [Menanamkan kebijakan inline](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_manage-attach-detach.html#embed-inline-policy-console) dalam *Panduan Pengguna IAM*.

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

Persyaratan berikut berlaku untuk membuat dan menggunakan sumber daya machine learning:
+ Anda harus menggunakan AWS IoT Greengrass Core v1.6 atau yang lebih baru.
+ Fungsi Lambda yang ditetapkan pengguna dapat melakukan operasi `read` atau `read and write` pada sumber daya. Izin untuk operasi lain tidak tersedia. Mode kontainerisasi fungsi Lambda berafiliasi menentukan bagaimana Anda mengatur izin akses. Untuk informasi selengkapnya, lihat [Mengakses sumber daya machine learning dari fungsi Lambda](access-ml-resources.md).
+ Anda harus menyediakan jalur penuh sumber daya pada sistem operasi perangkat core.
+ Nama sumber daya atau ID memiliki panjang maksimum 128 karakter dan harus menggunakan pola `[a-zA-Z0-9:_-]+`.

## Waktu aktif dan perpustakaan untuk inferensi ML
<a name="ml-libraries"></a>

Anda dapat menggunakan runtime dan pustaka HTML berikut dengan. AWS IoT Greengrass
+  [Runtime pembelajaran mendalam Amazon SageMaker Neo](#dlc-optimize-info) 
+ Apache MXNet
+ TensorFlow

Runtime dan pustaka ini dapat diinstal pada platform NVIDIA Jetson TX2, Intel Atom, dan Raspberry Pi. Untuk informasi unduhan, lihat [Waktu aktif dan perpustakaan machine learning yang didukung](what-is-gg.md#ml-runtimes-libs). Anda dapat menginstalnya langsung di perangkat core Anda.

Pastikan untuk membaca informasi berikut tentang kompatibilitas dan keterbatasan.

### SageMaker Runtime pembelajaran mendalam AI Neo
<a name="dlc-optimize-info"></a>

 Anda dapat menggunakan runtime pembelajaran mendalam SageMaker AI Neo untuk melakukan inferensi dengan model pembelajaran mesin yang dioptimalkan di perangkat Anda AWS IoT Greengrass . Model-model ini dioptimalkan menggunakan kompiler pembelajaran mendalam SageMaker AI Neo untuk meningkatkan kecepatan prediksi inferensi pembelajaran mesin. Untuk informasi lebih lanjut tentang pengoptimalan model di SageMaker AI, lihat [dokumentasi SageMaker AI Neo](https://docs.aws.amazon.com/sagemaker/latest/dg/neo.html). 

**catatan**  
 Saat ini, Anda dapat mengoptimalkan model machine learning menggunakan kompilator Neo deep learning di Amazon Web Services Region tertentu saja. Namun, Anda dapat menggunakan runtime pembelajaran mendalam Neo dengan model yang dioptimalkan di masing-masing Wilayah AWS tempat AWS IoT Greengrass inti didukung. Untuk informasi lebih lanjut, lihat [Cara Mengonfigurasi Inferensi Machine Learning yang Dioptimalkan](ml-dlc-console.md). 

### MXNet pembuatan versi
<a name="mxnet-version-compatibility"></a>

Apache saat ini MXNet tidak memastikan kompatibilitas ke depan, jadi model yang Anda latih menggunakan versi kerangka kerja yang lebih baru mungkin tidak berfungsi dengan baik di versi kerangka kerja yang lebih lama. Untuk menghindari konflik antara tahapan pelatihan model dan penyajian model, dan untuk memberikan end-to-end pengalaman yang konsisten, gunakan versi MXNet kerangka kerja yang sama di kedua tahap.

### MXNet pada Raspberry Pi
<a name="mxnet-engine-rpi"></a>

Fungsi Greengrass Lambda yang mengakses model MXNet lokal harus mengatur variabel lingkungan berikut:

```
MXNET_ENGINE_TYPE=NativeEngine
```

Anda dapat mengatur variabel lingkungan dalam kode fungsi atau menambahkannya ke konfigurasi grup spesifik fungsi ini. Untuk contoh yang menambahkannya sebagai pengaturan konfigurasi, lihat [langkah](ml-console.md#ml-console-config-lambda).

**catatan**  
Untuk penggunaan umum MXNet kerangka kerja, seperti menjalankan contoh kode pihak ketiga, variabel lingkungan harus dikonfigurasi pada Raspberry Pi.

### TensorFlow batasan penyajian model pada Raspberry Pi
<a name="tensorflow-limitations"></a>

Rekomendasi berikut untuk meningkatkan hasil inferensi didasarkan pada pengujian kami dengan pustaka Arm TensorFlow 32-bit pada platform Raspberry Pi. Rekomendasi ini ditujukan untuk pengguna tingkat lanjut untuk referensi saja, tanpa jaminan apa pun.
+ Model yang dilatih menggunakan [Titik pemeriksaan](https://www.tensorflow.org/guide/checkpoint) format harus "dibekukan" ke format penyangga protokol sebelum disajikan. Sebagai contoh, lihat [perpustakaan model klasifikasi gambar TensorFlow -Slim](https://github.com/tensorflow/models/tree/master/research/slim).
+ Jangan gunakan TF-estimator dan perpustakaan TF-slim baik pelatihan atau kode inferensi. Sebagai gantinya, gunakan `.pb` pola pemuatan model file yang ditunjukkan dalam contoh berikut.

  ```
  graph = tf.Graph() 
  graph_def = tf.GraphDef()
  graph_def.ParseFromString(pb_file.read()) 
  with graph.as_default():
    tf.import_graph_def(graph_def)
  ```

**catatan**  
Untuk informasi selengkapnya tentang platform yang didukung TensorFlow, lihat [Menginstal TensorFlow](https://www.tensorflow.org/install/#installing_from_sources) di TensorFlow dokumentasi.

# Mengakses sumber daya machine learning dari fungsi Lambda
<a name="access-ml-resources"></a>

Fungsi Lambda yang ditentukan pengguna dapat mengakses sumber daya pembelajaran mesin untuk menjalankan inferensi lokal pada intinya. AWS IoT Greengrass Sumber daya machine learning terdiri dari model terlatih dan artefak lainnya yang diunduh ke perangkat core.

Untuk mengizinkan fungsi Lambda mengakses sumber daya machine learning pada core, Anda harus melampirkan sumber daya ke fungsi Lambda dan menentukan izin akses. Mode [kontainerisasi](lambda-group-config.md#lambda-function-containerization) dari afiliasi (atau *terlampir*) fungsi Lambda menentukan bagaimana Anda melakukan hal ini.

## Izin akses untuk sumber daya machine learning
<a name="ml-resource-permissions"></a>

Mulai dari AWS IoT Greengrass Core v1.10.0, Anda dapat menentukan pemilik sumber daya untuk sumber daya pembelajaran mesin. Pemilik sumber daya mewakili grup OS dan izin yang AWS IoT Greengrass digunakan untuk mengunduh artefak sumber daya. Jika pemilik sumber daya tidak didefinisikan, artefak sumber daya yang diunduh hanya dapat diakses oleh root.
+ Jika fungsi Lambda nonkontainerisasi yang mengakses sumber daya machine learning, Anda harus menentukan pemilik sumber daya karena tidak ada kontrol izin dari kontainer. Fungsi nonkontainerisasi Lambda dapat mewarisi izin pemilik sumber daya dan menggunakannya untuk mengakses sumber daya.

   
+ Jika hanya fungsi Lambda terkontainerisasi yang mengakses sumber daya, kami sarankan Anda menggunakan izin tingkat fungsi bukannya mendefinisikan pemilik sumber daya.

   

### Properti pemilik sumber daya
<a name="ml-resource-owner"></a>

Pemilik sumber daya menentukan pemilik grup dan izin pemilik grup.

  
**Pemilik grup**. Grup ID (GID) dari grup OS Linux yang ada pada perangkat core. Izin grup ditambahkan ke proses Lambda. Secara khusus, GID ditambahkan ke grup IDs tambahan fungsi Lambda.  
Jika fungsi Lambda dalam grup Greengrass dikonfigurasi untuk [jalankan sebagai](lambda-group-config.md#lambda-access-identity) grup OS yang sama dengan pemilik sumber daya untuk sumber machine learning, sumber daya harus dilampirkan pada fungsi Lambda. Jika tidak, penerapan gagal karena konfigurasi ini memberikan izin implisit yang dapat digunakan fungsi Lambda untuk mengakses sumber daya tanpa otorisasi. AWS IoT Greengrass Pemeriksaan validasi deployment dilewati jika fungsi Lambda berjalan sebagai root (UID = 0).  
Kami merekomendasikan bahwa Anda menggunakan grup OS yang tidak digunakan oleh sumber daya lain, fungsi Lambda, atau file pada Greengrass core. Menggunakan grup OS bersama memberikan melekat fungsi Lambda izin akses lebih dari yang mereka butuhkan. Jika Anda menggunakan grup OS bersama, fungsi Lambda terlampir juga harus dilampirkan ke semua sumber daya machine learning yang menggunakan grup OS bersama. Jika tidak, deployment gagal.

  
**Izin pemilik grup**. Izin hanya baca atau baca dan tulis untuk menambah proses Lambda.  
Fungsi Lambda nonkontainerisasi harus mewarisi izin akses ini ke sumber daya. Fungsi Lambda terkontainerisasi dapat mewarisi izin tingkat sumber daya ini atau menentukan izin tingkat fungsi. Jika mereka menentukan izin tingkat fungsi, izin harus sama atau lebih ketat daripada izin tingkat sumber daya.

Tabel berikut menunjukkan konfigurasi izin akses yang didukung.

------
#### [ GGC v1.10 or later ]


| Properti | Jika hanya fungsi Lambda terkontainerisasi yang mengakses sumber daya | Jika ada fungsi Lambda nonkontainerisasi yang mengakses sumber daya | 
| --- |--- |--- |
| **Properti tingkat fungsi** | 
| --- |
| Izin (baca/tulis) |  Diperlukan kecuali sumber daya mendefinisikan pemilik sumber daya. Jika pemilik sumber daya didefinisikan, izin tingkat fungsi harus sama atau lebih ketat daripada izin pemilik sumber daya. Jika hanya fungsi Lambda terkontainerisasi yang mengakses sumber daya, kami sarankan Anda tidak menentukan pemilik sumber daya.  |  **Fungsi Lambda non-kontainer:** Tidak didukung. Fungsi Lambda nonkontainerisasi harus mewarisi izin tingkat sumber daya. **Fungsi Lambda dalam peti kemas:** Opsional, tetapi harus sama atau lebih ketat daripada izin tingkat sumber daya. | 
| **Properti tingkat sumber daya** | 
| --- |
| Pemilik sumber daya | Opsional (tidak disarankan). | Wajib. | 
| Izin (baca/tulis) | Opsional (tidak disarankan). | Wajib. | 

------
#### [ GGC v1.9 or earlier ]


| Properti | Jika hanya fungsi Lambda terkontainerisasi yang mengakses sumber daya | Jika ada fungsi Lambda nonkontainerisasi yang mengakses sumber daya | 
| --- |--- |--- |
| **Properti tingkat fungsi** | 
| --- |
| Izin (baca/tulis) |  Wajib.  | Tidak didukung. | 
| **Properti tingkat sumber daya** | 
| --- |
| Pemilik sumber daya | Tidak didukung. | Tidak didukung. | 
| Izin (baca/tulis) | Tidak didukung. | Tidak didukung. | 

------

**catatan**  
Saat Anda menggunakan AWS IoT Greengrass API untuk mengonfigurasi fungsi dan sumber daya Lambda, properti tingkat fungsi juga diperlukan`ResourceId`. Properti `ResourceId` melampirkanl sumber daya machine learning untuk fungsi Lambda.

## Mendefinisikan izin akses untuk fungsi Lambda (konsol)
<a name="ml-resource-permissions-console"></a>

Di AWS IoT konsol, Anda menentukan izin akses saat mengonfigurasi sumber pembelajaran mesin atau melampirkannya ke fungsi Lambda.

**Fungsi Lambda dalam peti kemas**  
Jika hanya fungsi Lambda terkontainerisasi terlampir pada sumber daya machine learning:  
+ Pilih **Tidak ada grup sistem** sebagai pemilik sumber daya untuk sumber daya pembelajaran mesin. Ini adalah pengaturan yang direkomendasikan ketika hanya fungsi Lambda terkontainerisasi yang mengakses sumber daya machine learning. Jika tidak, Anda mungkin memberikan fungsi Lambda yang dilampirkan izin akses lebih dari yang mereka butuhkan.

   
 

**Fungsi Lambda nonkontainerisasi** (memerlukankan GC v1.10 atau lebih baru)  
Jika ada fungsi Lambda nonkontainerisasi terlampir pada sumber daya machine learning:  
+ Tentukan **ID grup Sistem (GID)** yang akan digunakan sebagai pemilik sumber daya untuk sumber daya pembelajaran mesin. Pilih **Tentukan grup sistem dan izin** dan masukkan GID. Anda dapat menggunakan `getent group` perintah pada perangkat inti Anda untuk mencari ID grup sistem.

   
+ Pilih **Akses hanya-baca atau akses** **Baca dan tulis** untuk izin **grup Sistem**.

## Mendefinisikan izin akses untuk fungsi Lambda (API)
<a name="ml-resource-permissions-api"></a>

Di AWS IoT Greengrass API, Anda menentukan izin untuk sumber daya pembelajaran mesin di `ResourceAccessPolicy` properti untuk fungsi Lambda atau `OwnerSetting` properti untuk sumber daya.

**Fungsi Lambda dalam peti kemas**  
Jika hanya fungsi Lambda terkontainerisasi terlampir pada sumber daya machine learning:  
+ Untuk fungsi Lambda terkontainerisasi, tentukan izin akses di properti `Permission` dari properti `ResourceAccessPolicies` ini. Contoh:

  ```
  "Functions": [
      {
          "Id": "my-containerized-function",
          "FunctionArn": "arn:aws:lambda:us-west-2:123456789012:function:function-name:alias-or-version", 
          "FunctionConfiguration": {
              "Environment": {
                  "ResourceAccessPolicies": [
                      { 
                          "ResourceId": "my-resource-id",
                          "Permission": "ro-or-rw"
                      }
                  ]
              }, 
              "MemorySize": 512, 
              "Pinned": true, 
              "Timeout": 5
          }
      }
  ]
  ```
+ Untuk sumber daya machine learning, abaikan properti `OwnerSetting` ini. Contoh:

  ```
  "Resources": [
      {
          "Id": "my-resource-id",
          "Name": "my-resource-name",
          "ResourceDataContainer": {
              "S3MachineLearningModelResourceData": {
                  "DestinationPath": "/local-destination-path",
                  "S3Uri": "s3://uri-to-resource-package"
              }
          }
      }
  ]
  ```

  Ini adalah konfigurasi yang direkomendasikan ketika hanya fungsi Lambda terkontainerisasi yang mengakses sumber daya machine learning. Jika tidak, Anda mungkin memberikan fungsi Lambda yang dilampirkan izin akses lebih dari yang mereka butuhkan.
 

**Fungsi Lambda nonkontainerisasi** (memerlukankan GC v1.10 atau lebih baru)  
Jika ada fungsi Lambda nonkontainerisasi terlampir pada sumber daya machine learning:  
+ Untuk fungsi Lambda nonkontainerisasi, abaikan properti `Permission` di `ResourceAccessPolicies`. Konfigurasi ini diperlukan dan memungkinkan fungsi untuk mewarisi izin tingkat sumber daya. Contoh:

  ```
  "Functions": [
      {
          "Id": "my-non-containerized-function",
          "FunctionArn": "arn:aws:lambda:us-west-2:123456789012:function:function-name:alias-or-version", 
          "FunctionConfiguration": {
              "Environment": {
                  "Execution": {
                      "IsolationMode": "NoContainer",
                  },            
                  "ResourceAccessPolicies": [
                      { 
                          "ResourceId": "my-resource-id"
                      }
                  ]
              }, 
              "Pinned": true, 
              "Timeout": 5
          }
      }
  ]
  ```
+ Untuk fungsi Lambda terkontainerisasi yang juga mengakses sumber daya machine learning, abaikan properti `Permission` di `ResourceAccessPolicies` atau tentukan izin yang sama atau lebih ketat sebagai izin tingkat sumber daya. Contoh:

  ```
  "Functions": [
      {
          "Id": "my-containerized-function",
          "FunctionArn": "arn:aws:lambda:us-west-2:123456789012:function:function-name:alias-or-version", 
          "FunctionConfiguration": {
              "Environment": {
                  "ResourceAccessPolicies": [
                      { 
                          "ResourceId": "my-resource-id",
                          "Permission": "ro-or-rw" // Optional, but cannot exceed the GroupPermission defined for the resource.
                      }
                  ]
              }, 
              "MemorySize": 512, 
              "Pinned": true, 
              "Timeout": 5
          }
      }
  ]
  ```
+ Untuk sumber daya machine learning, tentukan `OwnerSetting` properti, termasuk anak `GroupOwner` dan `GroupPermission` properti. Contoh:

  ```
  "Resources": [
      {
          "Id": "my-resource-id",
          "Name": "my-resource-name",
          "ResourceDataContainer": {
              "S3MachineLearningModelResourceData": {
                  "DestinationPath": "/local-destination-path",
                  "S3Uri": "s3://uri-to-resource-package",
                  "OwnerSetting": { 
                      "GroupOwner": "os-group-id",
                      "GroupPermission": "ro-or-rw"
                  }
              }
          }
      }
  ]
  ```

## Mengakses sumber daya machine learning dari kode fungsi Lambda
<a name="access-resource-function-code"></a>

Fungsi Lambda yang ditentukan pengguna menggunakan antarmuka OS platform spesifik untuk mengakses sumber daya machine learning pada perangkat core.

------
#### [ GGC v1.10 or later ]

Untuk fungsi Lambda terkontainerisasi, sumber daya dipasang di dalam kontainer Greengrass dan tersedia di jalur tujuan lokal yang didefinisikan untuk sumber daya. Untuk fungsi Lambda nonkontainerisasi, sumber daya adalah symlinked ke direktori kerja Lambda-spesifik dan diteruskan ke `AWS_GG_RESOURCE_PREFIX` variabel lingkungan dalam proses Lambda.

Untuk mendapatkan jalur ke artefak yang diunduh dari sumber daya machine learning, fungsi Lambda menambahkan `AWS_GG_RESOURCE_PREFIX` ke jalur tujuan lokal yang ditetapkan untuk sumber daya. Untuk fungsi Lambda terkontainerisasi, nilai yang dikembalikan adalah garis miring tunggal (`/`).

```
resourcePath = os.getenv("AWS_GG_RESOURCE_PREFIX") + "/destination-path"
with open(resourcePath, 'r') as f:
    # load_model(f)
```

------
#### [ GGC v1.9 or earlier ]

Artefak yang diunduh dari sumber machine learning terletak di jalur tujuan lokal yang ditentukan untuk sumber daya. Hanya fungsi Lambda terkontainerisasi yang dapat mengakses sumber daya machine learning di Core AWS IoT Greengrass v1.9 dan sebelumnya.

```
resourcePath = "/local-destination-path"
with open(resourcePath, 'r') as f:
    # load_model(f)
```

------

Implementasi pemuatan model Anda tergantung pada perpustakaan ML Anda.

## Pemecahan masalah
<a name="access-ml-resources-troubleshooting"></a>

Gunakan informasi berikut untuk membantu memecahkan masalah dengan mengakses sumber daya machine learning.

**Topics**
+ [MLModelPemilik Tidak Valid - GroupOwnerSetting disediakan dalam sumber daya model ML, tetapi GroupOwner atau GroupPermission tidak ada](#nocontainer-lambda-invalid-ml-model-owner)
+ [NoContainer fungsi tidak dapat mengonfigurasi izin saat melampirkan sumber daya Machine Learning. <function-arn>mengacu pada sumber daya Machine Learnin <resource-id>dengan izin <ro/rw> dalam kebijakan akses sumber daya.](#nocontainer-lambda-invalid-resource-access-policy)
+ [Fungsi <function-arn>mengacu pada sumber daya Machine Learning <resource-id>dengan izin yang hilang di keduanya ResourceAccessPolicy dan sumber daya OwnerSetting.](#nocontainer-lambda-missing-access-permission)
+ [Fungsi <function-arn>mengacu pada sumber daya Machine Learning <resource-id>dengan izin\$1 "rw\$1”, sedangkan pengaturan pemilik sumber daya GroupPermission hanya mengizinkan\$1 "ro\$1”.](#container-lambda-invalid-rw-permissions)
+ [NoContainer Fungsi <function-arn>mengacu pada sumber daya jalur tujuan bersarang.](#nocontainer-lambda-nested-destination-path)
+ [Lambda <function-arn> mendapatkan akses ke sumber daya <resource-id> dengan berbagi id pemilik grup yang sama](#lambda-runas-and-resource-owner)

### MLModelPemilik Tidak Valid - GroupOwnerSetting disediakan dalam sumber daya model ML, tetapi GroupOwner atau GroupPermission tidak ada
<a name="nocontainer-lambda-invalid-ml-model-owner"></a>

**Solusi:** Anda menerima kesalahan ini jika sumber pembelajaran mesin berisi [ResourceDownloadOwnerSetting](https://docs.aws.amazon.com/greengrass/v1/apireference/definitions-resourcedownloadownersetting.html)objek tetapi diperlukan `GroupOwner` atau `GroupPermission` properti tidak ditentukan. Untuk mengatasi masalah ini, tentukan properti yang hilang.

 

### NoContainer fungsi tidak dapat mengonfigurasi izin saat melampirkan sumber daya Machine Learning. <function-arn>mengacu pada sumber daya Machine Learnin <resource-id>dengan izin <ro/rw> dalam kebijakan akses sumber daya.
<a name="nocontainer-lambda-invalid-resource-access-policy"></a>

**Solusi:** Anda menerima error ini jika fungsi Lambda non-containerized menentukan tingkat fungsi izin untuk sumber daya machine learning. Fungsi non-wadah harus mewarisi izin dari izin pemilik sumber daya yang ditetapkan pada sumber daya machine learning. Untuk mengatasi masalah ini, pilih untuk [mewarisi izin pemilik sumber daya](#non-container-config-console) (konsol) atau [menghapus izin dari fungsi Lambda sumber daya kebijakan akses](#non-container-config-api) (API).

 

### Fungsi <function-arn>mengacu pada sumber daya Machine Learning <resource-id>dengan izin yang hilang di keduanya ResourceAccessPolicy dan sumber daya OwnerSetting.
<a name="nocontainer-lambda-missing-access-permission"></a>

**Solusi:** Anda menerima kesa ini jika izin untuk sumber daya machine learning tidak dikonfigurasi untuk fungsi Lambda terlampir atau sumber daya. Untuk mengatasi masalah ini, konfigurasikan izin di [ResourceAccessPolicy](https://docs.aws.amazon.com/greengrass/v1/apireference/definitions-resourceaccesspolicy.html)properti untuk fungsi Lambda atau properti untuk [OwnerSetting](https://docs.aws.amazon.com/greengrass/v1/apireference/definitions-ownersetting.html)sumber daya.

 

### Fungsi <function-arn>mengacu pada sumber daya Machine Learning <resource-id>dengan izin\$1 "rw\$1”, sedangkan pengaturan pemilik sumber daya GroupPermission hanya mengizinkan\$1 "ro\$1”.
<a name="container-lambda-invalid-rw-permissions"></a>

**Solusi:** Anda menerima error ini jika izin akses yang ditetapkan untuk fungsi Lambda terlampir melebihi izin pemilik sumber daya yang ditetapkan untuk sumber daya machine learning. Untuk mengatasi masalah ini, tetapkan izin yang lebih ketat untuk fungsi Lambda atau kurang membatasi izin untuk pemilik sumber daya.

 

### NoContainer Fungsi <function-arn>mengacu pada sumber daya jalur tujuan bersarang.
<a name="nocontainer-lambda-nested-destination-path"></a>

**Solusi:** Anda menerima error ini jika beberapa sumber daya machine learning yang terlampir pada fungsi Lambda non-containerized menggunakan lintasan tujuan yang sama atau lintasan tujuan bersarang. Untuk mengatasi masalah ini, tentukan jalur tujuan terpisah untuk sumber daya.

 

### Lambda <function-arn> mendapatkan akses ke sumber daya <resource-id> dengan berbagi id pemilik grup yang sama
<a name="lambda-runas-and-resource-owner"></a>

**Solusi:** Anda menerima keslaahan ini di `runtime.log` jika kelompok OS yang sama ditentukan sebagai fungsi Lambda [Jalankan sebagai](lambda-group-config.md#lambda-access-identity) identitas dan [pemilik sumber daya](#ml-resource-owner) untuk sumber daya machine learning, tetapi sumber daya tidak terlampir pada fungsi Lambda. Konfigurasi ini memberikan fungsi Lambda izin implisit yang dapat digunakan untuk mengakses sumber daya tanpa otorisasi. AWS IoT Greengrass 

Untuk mengatasi masalah ini, gunakan grup OS yang berbeda untuk salah satu properti atau melampirkan sumber daya machine learning untuk fungsi Lambda.

## Lihat juga
<a name="access-ml-resources-see-also"></a>
+ [Lakukan inferensi machine learning](ml-inference.md)
+ [Cara mengkonfigurasi inferensi pembelajaran mesin menggunakan Konsol Manajemen AWS](ml-console.md)
+ [Cara mengonfigurasi inferensi pembelajaran mesin yang dioptimalkan menggunakan Konsol Manajemen AWS](ml-dlc-console.md)
+ [AWS IoT Greengrass Version 1 Referensi API](https://docs.aws.amazon.com/greengrass/v1/apireference/api-doc.html)

# Cara mengkonfigurasi inferensi pembelajaran mesin menggunakan Konsol Manajemen AWS
<a name="ml-console"></a>

Untuk mengikuti langkah-langkah dalam tutorial ini, Anda memerlukan AWS IoT Greengrass Core v1.10 atau yang lebih baru.

Anda dapat melakukan machine learning (ML) inferensi lokal pada perangkat core Greengrass menggunakan data yang dihasilkan secara lokal. Untuk informasi, termasuk persyaratan dan kendala, lihat [Tampilkan inferensi machine learning](ml-inference.md).

Tutorial ini menjelaskan cara menggunakan grup Greengrass Konsol Manajemen AWS untuk menjalankan aplikasi inferensi Lambda yang mengenali gambar dari kamera secara lokal, tanpa mengirim data ke cloud. Aplikasi inferensi mengakses modul kamera pada Raspberry Pi dan menjalankan inferensi menggunakan model open source. [SqueezeNet](https://github.com/DeepScale/SqueezeNet)

Tutorial ini berisi langkah-langkah tingkat tinggi berikut:

1. [Mengonfigurasi Raspberry Pi](#config-raspberry-pi)

1. [Instal MXNet kerangka kerja](#install-mxnet)

1. [Buat paket model](#package-ml-model)

1. [Buat dan publikasikan fungsi Lambda](#ml-console-create-lambda)

1. [Menambahkan fungsi Lambda ke grup](#ml-console-config-lambda)

1. [Menambahkan sumber daya ke grup](#ml-console-add-resources)

1. [Menambahkan langganan ke grup](#ml-console-add-subscription)

1. [Men-deploy grup](#ml-console-deploy-group)

1. [Tes aplikasi](#ml-console-test-app)

## Prasyarat
<a name="ml-inference-prerequisites"></a>

Untuk menyelesaikan tutorial ini, Anda memerlukan:
+ Raspberry Pi 4 Model B, atau Raspberry Pi 3 Model B/B \$1, diatur dan dikonfigurasi untuk digunakan dengan. AWS IoT Greengrass Untuk mengatur Raspberry Pi Anda dengan AWS IoT Greengrass, jalankan [Pengaturan Perangkat Greengrass](quick-start.md) tersebut, atau pastikan bahwa Anda telah menyelesaikan [Modul 1](https://docs.aws.amazon.com/greengrass/latest/developerguide/module1.html) dan [Modul 2](https://docs.aws.amazon.com/greengrass/latest/developerguide/module2.html) dari [Memulai dengan AWS IoT Greengrass](gg-gs.md).
**catatan**  
Raspberry Pi mungkin memerlukan [Catu daya](https://www.raspberrypi.org/documentation/hardware/raspberrypi/power/) 2.5A untuk menjalankan kerangka kerja deep learning yang biasanya digunakan untuk klasifikasi citra. Catu daya dengan peringkat lebih rendah dapat menyebabkan perangkat melakukan reboot.
+ [Modul Kamera Raspberry Pi V2 - 8 megapiksel, 1080p](https://www.amazon.com/Raspberry-Pi-Camera-Module-Megapixel/dp/B01ER2SKFS). Untuk informasi tentang cara mengatur kamera, lihat [Menghubungkan kamera dalam](https://www.raspberrypi.org/documentation/usage/camera/) dokumentasi Raspberry Pi. 
+ Sebuah grup Greengrass dan core Greengrass. Untuk informasi tentang cara membuat grup atau inti Greengrass, lihat. [Memulai dengan AWS IoT Greengrass](gg-gs.md)

**catatan**  
Tutorial ini menggunakan Raspberry Pi, tetapi AWS IoT Greengrass mendukung platform lain, seperti [Intel Atom](#atom-lambda-config) dan [NVIDIA Jetson TX2](#jetson-lambda-config). Dalam contoh untuk Jetson TX2, Anda dapat menggunakan gambar statis alih-alih gambar yang dialirkan dari kamera. Jika menggunakan TX2 contoh Jetson, Anda mungkin perlu menginstal Python 3.6 alih-alih Python 3.7. Untuk informasi tentang mengonfigurasi perangkat Anda sehingga Anda dapat menginstal perangkat lunak AWS IoT Greengrass Core, lihat[Mengatur perangkat lain](setup-filter.other.md).  
Untuk platform pihak ketiga yang AWS IoT Greengrass tidak mendukung, Anda harus menjalankan fungsi Lambda Anda dalam mode non-kontainer. Untuk menjalankan dalam mode nonkontainerisasi, Anda harus menjalankan fungsi Lambda Anda sebagai root. Untuk informasi lebih lanjut, lihat [Pertimbangan ketika memilih fungsi Lambda kontainerisasi](lambda-group-config.md#lambda-containerization-considerations) dan [Mengatur identitas akses default untuk fungsi Lambda dalam grup](lambda-group-config.md#lambda-access-identity-groupsettings).

## Langkah 1: Mengonfigurasi Pi Raspberry
<a name="config-raspberry-pi"></a>

Pada langkah ini, instal pembaruan untuk sistem operasi Raspbian, instal perangkat lunak modul kamera dan Python dependensi, dan mengaktifkan antarmuka kamera.

Jalankan perintah berikut di terminal Raspberry Pi Anda.

1. Menginstal pembaruan untuk Raspbian.

   ```
   sudo apt-get update
   sudo apt-get dist-upgrade
   ```

1. <a name="install-picamera-step"></a>Instal antarmuka `picamera` untuk modul kamera dan pustaka Python lain yang diperlukan untuk tutorial ini.

   ```
   sudo apt-get install -y python3-dev python3-setuptools python3-pip python3-picamera
   ```

   Memvalidasi instalasi:
   + Pastikan bahwa instalasi Python 3.7 anda termasuk pip.

     ```
     python3 -m pip
     ```

     Jika pip tidak terpasang, unduh dari [Situs web pip](https://pip.pypa.io/en/stable/installing/) tersebut, kemudian jalankan perintah berikut.

     ```
     python3 get-pip.py
     ```
   + Pastikan bahwa versi Python Anda adalah 3.7 atau lebih tinggi.

     ```
     python3 --version
     ```

     Jika output mencantumkan versi sebelumnya, jalankan perintah berikut.

     ```
     sudo apt-get install -y python3.7-dev
     ```
   + Pastikan bahwa Setuptools dan Picamera berhasil diinstal.

     ```
     sudo -u ggc_user bash -c 'python3 -c "import setuptools"'
     sudo -u ggc_user bash -c 'python3 -c "import picamera"'
     ```

     Jika output tidak mengandung error, validasi berhasil.
**catatan**  
Jika Python yang dapat dieksekusi diinstal pada perangkat anda adalah `python3.7`, gunakan `python3.7` daripada `python3` untuk perintah di tutorial ini. Pastikan bahwa instalasi pip Anda memetakan versi `python3.7` atau `python3` yang tepat untuk menghindari kesalahan dependensi.

1. Reboot Raspberry Pi.

   ```
   sudo reboot
   ```

1. Buka alat konfigurasi Raspberry Pi.

   ```
   sudo raspi-config
   ```

1. Gunakan tombol panah untuk membuka **Opsi Antarmuka** dan mengaktifkan antarmuka kamera. Jika diminta, izinkan perangkat melakukan reboot.

1. Gunakan perintah berikut untuk menguji pengaturan kamera.

   ```
   raspistill -v -o test.jpg
   ```

   Hal ini akan membuka jendela pratinjau pada Raspberry Pi, menyimpan gambar bernama `test.jpg` ke direktori Anda saat ini, dan menampilkan informasi tentang kamera di terminal Raspberry Pi.

## Langkah 2: Instal MXNet kerangka kerja
<a name="install-mxnet"></a>

Pada langkah ini, instal MXNet pustaka di Raspberry Pi Anda.

1. <a name="ssh-rpi-step"></a>Masuk ke Raspberry Pi Anda dari jarak jauh.

   ```
   ssh pi@your-device-ip-address
   ```

1. Buka MXNet dokumentasi, buka [Instalasi MXNet](https://mxnet.apache.org/get_started/?), dan ikuti instruksi untuk menginstal MXNet pada perangkat.
**catatan**  
Kami merekomendasikan menginstal versi 1.5.0 dan membangun MXNet dari sumber untuk tutorial ini untuk menghindari konflik perangkat.

1. Setelah Anda menginstal MXNet, validasi konfigurasi berikut:
   + Pastikan akun `ggc_user` sistem dapat menggunakan MXNet kerangka kerja.

     ```
     sudo -u ggc_user bash -c 'python3 -c "import mxnet"'
     ```
   + Pastikan NumPy sudah terpasang.

     ```
     sudo -u ggc_user bash -c 'python3 -c "import numpy"'
     ```

## Langkah 3: Buat paket MXNet model
<a name="package-ml-model"></a>

Pada langkah ini, buat paket model yang berisi contoh MXNet model terlatih untuk diunggah ke Amazon Simple Storage Service (Amazon S3). AWS IoT Greengrass dapat menggunakan paket model dari Amazon S3, asalkan Anda menggunakan format tar.gz atau zip.

1. Di komputer Anda, unduh MXNet sampel untuk Raspberry Pi dari[Sampel machine learning](what-is-gg.md#gg-ml-samples).

1.  Unzip file `mxnet-py3-armv7l.tar.gz` yang diunduh. 

1. Buka direktori `squeezenet` tersebut.

   ```
   cd path-to-downloaded-sample/mxnet-py3-armv7l/models/squeezenet
   ```

   File `squeezenet.zip` dalam direktori ini adalah paket model Anda. Ini berisi artefak model SqueezeNet open source untuk model klasifikasi gambar. Kemudian, Anda mengunggah paket model ini ke Amazon S3.

## Langkah 4: Buat dan publikasikan Fungsi Lambda
<a name="ml-console-create-lambda"></a>

Pada langkah ini, buat paket deployment fungsi Lambda dan fungsi Lambda. Kemudian, publikasikan versi fungsi dan buat alias.

Pertama, buat paket deployment fungsi Lambda.

1. Di komputer Anda, navigasikan ke direktori `examples` dalam paket contoh yang Anda unzip di [Langkah 3: Buat paket MXNet model](#package-ml-model).

   ```
   cd path-to-downloaded-sample/mxnet-py3-armv7l/examples
   ```

   Direktori `examples` berisi kode fungsi dan dependensi.
   + `greengrassObjectClassification.py` adalah kode inferensi yang digunakan dalam tutorial ini. Anda dapat menggunakan kode ini sebagai templat untuk membuat fungsi inferensi Anda sendiri.
   + <a name="ml-samples-ggc-sdk"></a>`greengrasssdk` adalah versi 1.5.0 dari AWS IoT Greengrass Core SDK for Python.
**catatan**  <a name="ml-samples-ggc-sdk-upgrade"></a>
Jika versi baru tersedia, Anda dapat mengunduh dan membarui versi SDK dalam paket deployment Anda. Untuk informasi selengkapnya, lihat [AWS IoT Greengrass Core SDK for GitHub Python](https://github.com/aws/aws-greengrass-core-sdk-python/).

1.  Kompres isi `examples` ke dalam sebuah file bernama `greengrassObjectClassification.zip`. Ini paket deployment Anda. 

   ```
   zip -r greengrassObjectClassification.zip .
   ```
**catatan**  <a name="ml-samples-function-zip"></a>
 Pastikan `.py` dan dependensi berada di root direktori. 

    

   Selanjutnya, Buat fungsi Lambda.

1. Dari AWS IoT konsol, pilih **Fungsi** dan **Buat fungsi**.

1. Pilih **Tulis dari awal** dan gunakan nilaiinilai berikut untuk membuat fungsi Anda:
   + Untuk **Nama fungsi**, masukkan **greengrassObjectClassification**.
   + Untuk **Waktu pengoperasian**, pilih **Python 3.7**.

   Untuk **Izin**, pertahankan pengaturan default. Hal ini menciptakan peran eksekusi yang memberikan izin Lambda basic. Peran ini tidak digunakan oleh AWS IoT Greengrass

1. Pilih **Buat fungsi**.

    

   Sekarang, unggah paket deployment fungsi Lambda Anda dan daftarkan handler.

1. Pilih fungsi Lambda Anda dan unggah paket penerapan fungsi Lambda Anda.

   1. <a name="lambda-console-upload"></a>Pada tab **Kode** ini, di bawah **Sumber kode**, pilih **Unggah dari**. Dari dropdown, pilih **file .zip**.  
![\[Unggah dari dropdown dengan file .zip disorot.\]](http://docs.aws.amazon.com/id_id/greengrass/v1/developerguide/images/lra-console/upload-deployment-package.png)

   1. Pilih **Unggah**, lalu pilih paket deployment `greengrassObjectClassification.zip` Anda. Lalu, pilih **Simpan**.

   1. <a name="lambda-console-runtime-settings-para"></a>Pada tab **Kode** fungsi, di bawah **Pengaturan waktu aktif**, pilih **Edit**, dan kemudian masukkan nilai-nilai berikut.
      + Untuk **waktu aktif**, pilih **Python 3.7**.
      + Untuk **Handler**, masukkan **greengrassObjectClassification.function\$1handler**.

      Pilih **Simpan**.

   Berikutnya, mempublikasikan versi pertama fungsi Lambda Anda. Kemudian, buat [alias untuk versi](https://docs.aws.amazon.com/lambda/latest/dg/versioning-aliases.html).
**catatan**  
Grup Greengrass dapat mereferensi fungsi Lambda dengan alias (direkomendasikan) atau dengan versi. Menggunakan alias membuatnya lebih mudah untuk mengelola pembaruan kode karena Anda tidak perlu mengubah tabel langganan atau definisi grup ketika kode fungsi diperbarui. Sebaliknya, Anda hanya mengarahkan alias ke versi fungsi baru.

1. Dari menu **Tindakan** tersebut, pilih **Publikasikan versi baru**.  
![\[Opsi Publikasikan versi baru di menu Tindakan.\]](http://docs.aws.amazon.com/id_id/greengrass/v1/developerguide/images/ml-inference/lambda-publish-version.png)

1. Untuk **Versi Deskripsi**, masukkan **First version**, lalu pilih **Publikasikan**.

1. Pada halaman konfigurasi **greengrassObjectClassification: 1**, dari menu **Tindakan**, pilih **Buat alias**.  
![\[Opsi Buat alias di menu Tindakan.\]](http://docs.aws.amazon.com/id_id/greengrass/v1/developerguide/images/ml-inference/lambda-create-alias.png)

1. Pada halaman **Buat alias baru** tersebut, gunakan nilai-nilai berikut:
   + Untuk **Nama**, masukkan **mlTest**.
   + Untuk **UID**, masukkan **1**.
**catatan**  
AWS IoT Greengrass **tidak mendukung alias Lambda untuk versi \$1LATEST.**

1. Pilih **Simpan**.

    

   Sekarang, tambahkan fungsi Lambda ke grup Greengrass Anda.

## Langkah 5: Tambahkan fungsi Lambda ke grup Greengrass
<a name="ml-console-config-lambda"></a>

Pada langkah ini, menambahkan fungsi Lambda ke grup dan kemudian mengonfigurasi siklus hidup dan lingkungan variabel.

Pertama, tambahkan fungsi Lambda ke grup Greengrass Anda.

1. **Di panel navigasi AWS IoT konsol, di bawah **Kelola**, perluas perangkat **Greengrass**, lalu pilih Grup (V1).**

1. Dari halaman konfigurasi grup, pilih tab **fungsi Lambda**.

1. **Di bawah bagian **Fungsi Lambda Saya**, pilih Tambah.**

1. Untuk **fungsi Lambda, pilih**. **greengrassObjectClassification**

1. **Untuk **versi fungsi Lambda**, pilih alias:MLTest.**

    

   Selanjutnya, konfigurasikan variabel siklus hidup dan lingkungan dari fungsi Lambda.

1. Pada bagian **konfigurasi fungsi Lambda**, buat pembaruan berikut.
**catatan**  
Kami merekomendasikan Anda menjalankan fungsi Lambda Anda tanpa kontainerisasi kecuali kasus bisnis Anda memerlukannya. Hal ini membantu mengaktifkan akses ke perangkat GPU dan kamera Anda tanpa mengonfigurasi sumber daya perangkat. Jika Anda menjalankan tanpa containerization, Anda juga harus memberikan akses root ke fungsi Lambda AWS IoT Greengrass Anda. 

   1. **Untuk berjalan tanpa kontainerisasi:**
      + Untuk **pengguna dan grup Sistem**, pilih**Another user ID/group ID**. Untuk **ID pengguna Sistem**, masukkan**0**. Untuk **ID grup Sistem**, masukkan**0**.

        Hal ini memungkinkan fungsi Lambda Anda untuk berjalan sebagai root. Untuk informasi lebih lanjut untuk menjalankan sebagai root, lihat [Mengatur identitas akses default untuk fungsi Lambda dalam grup](lambda-group-config.md#lambda-access-identity-groupsettings).
**Tip**  
Anda juga harus memperbarui file `config.json` untuk memberikan akses root ke fungsi Lambda Anda. Untuk prosedur ini, lihat [Menjalankan fungsi Lambda sebagai root](lambda-group-config.md#lambda-running-as-root).
      + **Untuk **kontainerisasi fungsi Lambda, pilih No container**.**

        Untuk informasi lebih lanjut untuk berjalan tanpa konainerisasi, lihat [Pertimbangan ketika memilih fungsi Lambda kontainerisasi](lambda-group-config.md#lambda-containerization-considerations).
      + Untuk **Timeout**, masukkan **10 seconds**.
      + Untuk **Pinned**, pilih **True**. 

        Untuk informasi selengkapnya, lihat [Konfigurasi siklus hidup untuk fungsi Greengrass Lambda](lambda-functions.md#lambda-lifecycle).

   1.  **Untuk menjalankan dalam mode kontainer sebagai gantinya:** 
**catatan**  
Kami tidak merekomendasikan untuk dijalankan dalam mode kontainer kecuali jika kasus bisnis Anda memerlukannya.
      + Untuk **pengguna dan grup Sistem**, pilih **Gunakan grup default**.
      + **Untuk **kontainerisasi fungsi Lambda**, pilih Gunakan default grup.**
      + Untuk **Batas memori**, masukkan **96 MB**.
      + Untuk **Timeout**, masukkan **10 seconds**.
      + Untuk **Pinned**, pilih **True**. 

        Untuk informasi selengkapnya, lihat [Konfigurasi siklus hidup untuk fungsi Greengrass Lambda](lambda-functions.md#lambda-lifecycle).

1. Di bawah **Lingkungan variabel**, buat pasangan kunci-nilai. Pasangan kunci-nilai diperlukan oleh fungsi yang berinteraksi dengan MXNet model pada Raspberry Pi.

   Untuk kuncinya, gunakan MXNET\$1ENGINE\$1TYPE. Untuk nilainya, gunakan NaiveEngine. 
**catatan**  
Dalam fungsi Lambda yang ditetapkan pengguna milik Anda, Anda secara opsional dapat mengatur variabel lingkungan dalam kode fungsi Anda.

1. Simpan nilai default untuk semua properti lainnya dan pilih **Tambahkan fungsi Lambda**.

## Langkah 6: Tambahkan sumber daya ke grup Greengrass
<a name="ml-console-add-resources"></a>

Pada langkah ini, membuat sumber daya untuk modul kamera dan model inferensi ML dan afiliasi sumber daya dengan fungsi Lambda. Hal ini memungkinkan fungsi Lambda untuk mengakses sumber daya pada perangkat core.

**catatan**  
Jika Anda menjalankan dalam mode non-kontainer, AWS IoT Greengrass dapat mengakses GPU dan kamera perangkat Anda tanpa mengonfigurasi sumber daya perangkat ini. 

Pertama, buat dua sumber daya perangkat lokal untuk kamera: satu untuk memori berbagi dan satu untuk antarmuka perangkat. Untuk informasi lebih lanjut tentang akses sumber daya lokal, lihat [Akses sumber daya lokal dengan fungsi dan konektor Lambda](access-local-resources.md).

1. Pada halaman konfigurasi grup, pilih tab **Sumber Daya**.

1. Di bagian **Sumber daya lokal**, pilih **Tambahkan sumber daya lokal**.

1. Pada halaman **Tambahkan sumber daya lokal**, gunakan nilai berikut:
   + Untuk **Nama sumber daya**, masukkan **videoCoreSharedMemory**.
   + Untuk **Jenis sumber daya**, pilih **Perangkat**.
   + Untuk **jalur perangkat lokal**, masukkan**/dev/vcsm**.

     Jalur perangkat adalah jalur absolut lokal sumber daya perangkat. Jalur ini hanya dapat merujuk ke perangkat karakter atau memblokir perangkat di bawah `/dev`.
   + Untuk **pemilik grup sistem dan izin akses file**, pilih **Secara otomatis menambahkan izin sistem file dari grup sistem yang memiliki sumber daya.**

     Opsi **pemilik grup sistem dan izin akses file** memungkinkan Anda memberikan izin akses file tambahan ke proses Lambda. Untuk informasi selengkapnya, lihat [Izin akses file pemilik grup](access-local-resources.md#lra-group-owner).

1. Selanjutnya, Anda menambahkan sumber daya perangkat lokal untuk antarmuka kamera.

1. Pilih **Tambahkan sumber daya lokal**.

1. Pada halaman **Tambahkan sumber daya lokal**, gunakan nilai berikut:
   + Untuk **Nama sumber daya**, masukkan **videoCoreInterface**.
   + Untuk **Jenis sumber daya**, pilih **Perangkat**.
   + Untuk **jalur perangkat lokal**, masukkan**/dev/vchiq**.
   + Untuk **pemilik grup sistem dan izin akses file**, pilih **Secara otomatis menambahkan izin sistem file dari grup sistem yang memiliki sumber daya.** 

1. Di bagian bawah halaman, pilih **Tambahkan sumber daya**.

 

Sekarang, tambahkan model inferensi sebagai sumber daya machine learning. Langkah ini mencakup mengunggah paket model `squeezenet.zip` ke Amazon S3.

1. Pada tab **Sumber Daya** untuk grup Anda, di bagian **Machine Learning**, pilih **Tambahkan sumber pembelajaran mesin**.

1. Pada halaman **Tambahkan sumber daya pembelajaran mesin**, untuk **nama Sumber Daya**, masukkan**squeezenet\$1model**.

1. Untuk **sumber Model**, pilih **Gunakan model yang disimpan di S3, seperti model yang dioptimalkan melalui Deep Learning Compiler**.

1. Untuk **URI S3**, masukkan jalur tempat bucket S3 disimpan. 

1.  Pilih **Jelajahi S3**. Ini membuka tab baru ke konsol Amazon S3. 

1.  Pada konsol Amazon S3, unggah file `squeezenet.zip` ke bucket S3. Untuk selengkapnya, lihat [Bagaimana cara mengunggah file dan folder ke Bucket S3?](https://docs.aws.amazon.com/AmazonS3/latest/user-guide/upload-objects.html) di *Panduan Pengguna Layanan Penyimpanan Sederhana Amazon*. 
**catatan**  
Agar bucket S3 dapat diakses, nama bucket Anda harus berisi string **greengrass** dan bucket harus berada di wilayah yang sama dengan yang Anda gunakan pada AWS IoT Greengrass. Pilih nama yang unik (seperti **greengrass-bucket-*user-id*-*epoch-time***). Jangan gunakan periode (`.`) dalam nama bucket. 

1. Pada tab AWS IoT Greengrass konsol, cari dan pilih bucket S3 Anda. Temukan file `squeezenet.zip` yang Anda unggah, dan pilih **Pilihan**. Anda mungkin harus memilih **Refresh** untuk memperbarui daftar bucket dan file yang tersedia. 

1. Untuk **Jalur tujuan**, masukkan **/greengrass-machine-learning/mxnet/squeezenet**.

   Hal ini adalah tujuan untuk model lokal di Lambda waktu aktif namespace. Saat Anda menyebarkan grup, AWS IoT Greengrass mengambil paket model sumber dan kemudian mengekstrak konten ke direktori yang ditentukan. Contoh fungsi Lambda untuk tutorial ini sudah dikonfigurasi untuk menggunakan jalur ini (dalam variabel `model_path` tersebut).

1. Di bawah **Pemilik grup sistem dan izin akses file**, pilih **Tidak ada grup sistem**.

1. Pilih **Tambahkan sumber daya**.

### Menggunakan model terlatih SageMaker AI
<a name="sm-models"></a>

Tutorial ini menggunakan model yang disimpan di Amazon S3, tetapi Anda juga dapat dengan mudah menggunakan model SageMaker AI. AWS IoT Greengrass Konsol ini memiliki integrasi SageMaker AI bawaan, jadi Anda tidak perlu mengunggah model ini secara manual ke Amazon S3. Untuk persyaratan dan batasan penggunaan model SageMaker AI, lihat[Sumber model yang didukung](ml-inference.md#supported-model-sources).

Untuk menggunakan model SageMaker AI:
+ Untuk **sumber Model**, pilih **Gunakan model yang dilatih dalam AWS SageMaker AI**, lalu pilih nama pekerjaan pelatihan model.
+ Untuk **jalur Tujuan**, masukkan jalur ke direktori tempat fungsi Lambda Anda mencari model.

## Langkah 7: Menambahkan langganan ke grup Greengrass
<a name="ml-console-add-subscription"></a>

Pada langkah ini, tambahkan langganan ke grup. Langganan ini memungkinkan fungsi Lambda untuk mengirim hasil prediksi AWS IoT dengan memublikasikan ke topik MQTT.

1. Pada halaman konfigurasi grup, pilih tab **Langganan**, lalu pilih **Tambah Langganan**.

1. Pada halaman **Detail langganan**, konfigurasikan sumber dan target, sebagai berikut:

   1. Di **tipe Sumber**, pilih **fungsi Lambda**, lalu pilih. **greengrassObjectClassification**

   1. Di **Jenis target**, pilih **Layanan**, lalu pilih **IoT Cloud**.

1. Di **Filter topik****hello/world**, masukkan, lalu pilih **Buat langganan**.

## Langkah 8: Men-deploy grup Greengrass
<a name="ml-console-deploy-group"></a>

Pada langkah ini, men-deploy versi definisi grup untuk perangkat core Greengrass. Definisi berisi fungsi Lambda, sumber daya, dan konfigurasi langganan yang ditambahkan.

1. Pastikan AWS IoT Greengrass inti sedang berjalan. Jalankan perintah berikut di terminal Raspberry Pi Anda, sesuai kebutuhan.

   1. Untuk memeriksa apakah daemon sedang berjalan:

      ```
      ps aux | grep -E 'greengrass.*daemon'
      ```

      Jika outputnya berisi entri `root` untuk `/greengrass/ggc/packages/1.11.6/bin/daemon`, maka daemon sedang berjalan.
**catatan**  
Versi di jalur tergantung pada versi perangkat lunak AWS IoT Greengrass Core yang diinstal pada perangkat inti Anda.

   1. Untuk memulai daemon:

      ```
      cd /greengrass/ggc/core/
      sudo ./greengrassd start
      ```

1. Pada halaman konfigurasi grup, pilih **Deploy**.  
![\[Halaman grup dengan deployment dan Deploy disorot.\]](http://docs.aws.amazon.com/id_id/greengrass/v1/developerguide/images/console-group-deployments-deploy.png)

1. **Di tab **Fungsi Lambda, di bawah bagian Fungsi** **Lambda Sistem**, pilih **detektor IP** dan pilih Edit.**

1. Dalam kotak dialog **Edit pengaturan detektor IP**, pilih **Secara otomatis mendeteksi dan mengganti titik akhir broker MQTT**.

1. Pilih **Simpan**.

   Hal ini mengaktifkan perangkat untuk secara otomatis memperoleh informasi konektivitas untuk core, seperti alamat IP, DNS, dan nomor port. Deteksi otomatis direkomendasikan, tetapi AWS IoT Greengrass juga mendukung titik akhir yang ditentukan secara manual. Anda hanya diminta untuk metode penemuan pertama kalinya bahwa grup di-deploy.
**catatan**  
Jika diminta, berikan izin untuk membuat peran layanan [Greengrass dan kaitkan dengan peran layanan](service-role.md) Anda saat ini. Akun AWS Wilayah AWS Peran ini memungkinkan AWS IoT Greengrass untuk mengakses sumber daya Anda dalam AWS layanan.

   Halaman **Deployment** menampilkan timestamp deployment, ID versi, dan status. Setelah selesai, status yang ditampilkan untuk penerapan harus **Selesai**.

   Untuk informasi lebih lanjut tentang deployment, lihat [Menyebarkan AWS IoT Greengrass grup ke inti AWS IoT Greengrass](deployments.md). Untuk bantuan penyelesaian masalah, lihat [Pemecahan masalah AWS IoT Greengrass](gg-troubleshooting.md).

## Langkah 9: Tes aplikasi inferensi
<a name="ml-console-test-app"></a>

Sekarang Anda dapat memverifikasi apakah deployment dikonfigurasi dengan benar. Untuk menguji, Anda berlangganan topik `hello/world` dan melihat hasil prediksi yang diterbitkan oleh fungsi Lambda.

**catatan**  
Jika monitor terpasang ke Raspberry Pi, umpan kamera aktif ditampilkan pada jendela pratinjau.

1. Di AWS IoT konsol, di bawah **Uji**, pilih klien pengujian **MQTT**.

1. Untuk **Berlangganan**, gunakan nilai-nilai berikut:
   + Untuk topik berlangganan, gunakan hello/world.
   + **Di bawah **Konfigurasi tambahan**, untuk tampilan **payload MQTT, pilih Display payloads** sebagai string.**

1. Pilih **Langganan**.

   Jika tes berhasil, pesan dari fungsi Lambda muncul di bagian bawah halaman. Setiap pesan berisi lima hasil prediksi dari citra, menggunakan format: probabilitas, ID kelas diprediksi, dan nama kelas yang sesuai.  
![\[Halaman Langganan menampilkan hasil tes dengan data pesan.\]](http://docs.aws.amazon.com/id_id/greengrass/v1/developerguide/images/ml-inference/prediction-results.png)

### Memecahkan masalah inferensi AWS IoT Greengrass ML
<a name="ml-inference-troubleshooting"></a>

Jika tes tidak berhasil, Anda dapat mencoba langkah-langkah penyelesaian masalah berikut. Jalankan perintah di terminal Raspberry Pi Anda.

#### Periksa catatan error
<a name="troubleshooting-check-logs"></a>

1. <a name="root-access-logs"></a>Beralih ke pengguna root dan arahkan ke direktori `log` tersebut. Akses ke AWS IoT Greengrass log memerlukan izin root.

   ```
   sudo su
   cd /greengrass/ggc/var/log
   ```

1. Di direktori `system` tersebut, periksa `runtime.log` atau `python_runtime.log`.

   Di direktori `user/region/account-id` tersebut, periksa `greengrassObjectClassification.log`.

   Untuk informasi selengkapnya, lihat [Pemecahan masalah dengan catatan](gg-troubleshooting.md#troubleshooting-logs).

##### Membongkar kesalahan di runtime.log
<a name="troubleshooting-targz-unpacking"></a>

Jika `runtime.log` berisi error yang mirip dengan berikut ini, pastikan bahwa paket model sumber `tar.gz` Anda memiliki direktori induk.

```
Greengrass deployment error: unable to download the artifact model-arn: Error while processing. 
Error while unpacking the file from /tmp/greengrass/artifacts/model-arn/path to /greengrass/ggc/deployment/path/model-arn,
error: open /greengrass/ggc/deployment/path/model-arn/squeezenet/squeezenet_v1.1-0000.params: no such file or directory
```

Jika paket Anda tidak memiliki direktori induk yang berisi file model, gunakan perintah berikut untuk repackage model tersebut:

```
tar -zcvf model.tar.gz ./model
```

Contoh:

```
─$ tar -zcvf test.tar.gz ./test
./test
./test/some.file
./test/some.file2
./test/some.file3
```

**catatan**  
Jangan sertakan trailing karakter `/*` dalam perintah ini.

 

#### Verifikasi bahwa fungsi Lambda berhasil di-deploy
<a name="troubleshooting-check-lambda"></a>

1. Daftar isi dari Lambda di-deploy di direktori `/lambda` tersebut. Mengganti nilai placeholder sebelum Anda menjalankan perintah.

   ```
   cd /greengrass/ggc/deployment/lambda/arn:aws:lambda:region:account:function:function-name:function-version
   ls -la
   ```

1. Verifikasi bahwa direktori berisi konten yang sama sebagai paket deployment `greengrassObjectClassification.zip` yang Anda unggah di [Langkah 4: Buat dan publikasikan Fungsi Lambda](#ml-console-create-lambda).

   Pastikan bahwa file `.py` dan dependensi berada di root direktori.

 

#### Verifikasi bahwa model inferensi berhasil di-deploy
<a name="troubleshooting-check-model"></a>

1. Cari nomor identifikasi proses (PID) dari proses waktu aktif Lambda:

   ```
   ps aux | grep 'lambda-function-name*'
   ```

   Pada output, PID muncul di kolom kedua baris untuk proses waktu aktif Lambda.

1. Masukkan namespace waktu aktif Lambda. Pastikan untuk mengganti *pid* nilai placeholder sebelum Anda menjalankan perintah.
**catatan**  
Direktori ini dan isinya berada di namespace waktu aktif Lambda, sehingga mereka tidak terlihat dalam namespace Linux biasa.

   ```
   sudo nsenter -t pid -m /bin/bash
   ```

1. Daftar isi dari direktori lokal yang Anda tentukan untuk sumber daya ML.

   ```
   cd /greengrass-machine-learning/mxnet/squeezenet/
   ls -ls
   ```

   Anda akan melihat file berikut ini:

   ```
   32 -rw-r--r-- 1 ggc_user ggc_group   31675 Nov 18 15:19 synset.txt
   32 -rw-r--r-- 1 ggc_user ggc_group   28707 Nov 18 15:19 squeezenet_v1.1-symbol.json
   4832 -rw-r--r-- 1 ggc_user ggc_group 4945062 Nov 18 15:19 squeezenet_v1.1-0000.params
   ```

## Langkah selanjutnya
<a name="next-steps"></a>

Selanjutnya, jelajahi aplikasi inferensi lainnya. AWS IoT Greengrass menyediakan fungsi Lambda lain yang dapat Anda gunakan untuk mencoba inferensi lokal. Anda dapat menemukan contoh paket di folder pustaka precompiled yang Anda unduh di [Langkah 2: Instal MXNet kerangka kerja](#install-mxnet).

## Mengonfigurasi Intel Atom
<a name="atom-lambda-config"></a>

 Untuk menjalankan tutorial ini pada perangkat Intel Atom, Anda harus memberikan citra sumber, Mengonfigurasi fungsi Lambda, dan menambahkan sumber daya perangkat lokal lain. Untuk menggunakan GPU sebagai inferensi, pastikan perangkat lunak berikut diinstal pada perangkat Anda:
+ OpenCL versi 1.0 atau yang lebih baru
+ Python 3.7 dan pip
**catatan**  
Jika perangkat Anda termasuk prebuilt dengan Python 3.6, Anda dapat membuat symlink ke Python 3.7 sebagai gantinya. Untuk informasi selengkapnya, lihat [Step 2](#python-symlink).
+ [NumPy](https://pypi.org/project/numpy/)
+ [OpenCV di atas Roda](https://pypi.org/project/opencv-python/)

1. Unduh citra PNG atau JPG statis untuk fungsi Lambda yang akan digunakan untuk klasifikasi citra. Contoh tersebut bekerja paling baik dengan file citra kecil. 

   Simpan file citra Anda di direktori yang memuat file `greengrassObjectClassification.py` (atau dalam subdirektori dari direktori ini). Hal ini ada dalam paket deployment fungsi Lambda yang Anda unggah di [Langkah 4: Buat dan publikasikan Fungsi Lambda](#ml-console-create-lambda).
**catatan**  
 Jika Anda menggunakan AWS DeepLens, Anda dapat menggunakan kamera onboard atau memasang kamera Anda sendiri untuk melakukan inferensi pada gambar yang diambil, bukan gambar statis. Namun, kami sangat merekomendasikan Anda mulai dengan citra statis terlebih dahulu.   
Jika Anda menggunakan kamera, pastikan bahwa paket `awscam` APT diinstal dan diperbarui. Untuk informasi lebih lanjut, lihat [Perbarui perangkat AWS DeepLens Anda](https://docs.aws.amazon.com/deeplens/latest/dg/deeplens-manual-updates.html) pada *AWS DeepLens Panduan Developer*.

1. <a name="python-symlink"></a>Jika anda tidak menggunakan Python 3.7, pastikan untuk membuat symlink dari Python 3.x ke Python 3.7. Ini mengonfigurasi perangkat Anda untuk menggunakan Python 3 dengan. AWS IoT Greengrass Jalankan perintah berikut untuk menemukan instalasi Python Anda:

   ```
   which python3
   ```

   Jalankan perintah berikut untuk membuat symlink:

   ```
   sudo ln -s path-to-python-3.x/python3.x path-to-python-3.7/python3.7
   ```

   Reboot perangkat.

1. Edit konfigurasi fungsi Lambda. Ikuti prosedur di [Langkah 5: Tambahkan fungsi Lambda ke grup Greengrass](#ml-console-config-lambda). 
**catatan**  
 Kami merekomendasikan Anda menjalankan fungsi Lambda Anda tanpa kontainerisasi kecuali kasus bisnis Anda memerlukannya. Hal ini membantu mengaktifkan akses ke perangkat GPU dan kamera Anda tanpa mengonfigurasi sumber daya perangkat. Jika Anda menjalankan tanpa containerization, Anda juga harus memberikan akses root ke fungsi Lambda AWS IoT Greengrass Anda. 

   1. **Untuk berjalan tanpa kontainerisasi:**
      + Untuk **pengguna dan grup Sistem**, pilih**Another user ID/group ID**. Untuk **ID pengguna Sistem**, masukkan**0**. Untuk **ID grup Sistem**, masukkan**0**.

        Hal ini memungkinkan fungsi Lambda Anda untuk berjalan sebagai root. Untuk informasi lebih lanjut untuk menjalankan sebagai root, lihat [Mengatur identitas akses default untuk fungsi Lambda dalam grup](lambda-group-config.md#lambda-access-identity-groupsettings).
**Tip**  
Anda juga harus memperbarui file `config.json` untuk memberikan akses root ke fungsi Lambda Anda. Untuk prosedur ini, lihat [Menjalankan fungsi Lambda sebagai root](lambda-group-config.md#lambda-running-as-root).
      + **Untuk **kontainerisasi fungsi Lambda, pilih No container**.**

        Untuk informasi lebih lanjut untuk berjalan tanpa konainerisasi, lihat [Pertimbangan ketika memilih fungsi Lambda kontainerisasi](lambda-group-config.md#lambda-containerization-considerations).
      + Perbarui nilai **Timeout** menjadi 5 detik. Hal ini memastikan bahwa permintaan tidak timeout terlalu cepat. Dibutuhkan beberapa menit setelah pengaturan untuk menjalankan inferensi.
      + Di bawah **Pinned**, pilih **True**.
      + **Di bawah **Parameter Tambahan**, untuk **akses Baca ke direktori /sys**, pilih Diaktifkan.** 
      +  Untuk **Siklus hidup Lambda**, pilih **Jadikan fungsi ini berumur panjang dan biarkan berjalan tanpa batas**. 

   1.  **Untuk menjalankan dalam mode kontainer sebagai gantinya:** 
**catatan**  
Kami tidak merekomendasikan untuk dijalankan dalam mode kontainer kecuali jika kasus bisnis Anda memerlukannya.
      + Perbarui nilai **Timeout** menjadi 5 detik. Hal ini memastikan bahwa permintaan tidak timeout terlalu cepat. Dibutuhkan beberapa menit setelah pengaturan untuk menjalankan inferensi.
      +  Untuk **Pinned**, pilih **True**. 
      + **Di bawah **Parameter Tambahan**, untuk **akses Baca ke direktori /sys**, pilih Diaktifkan.** 

1. **Jika berjalan dalam mode kontainerisasi**, tambahkan sumber daya perangkat lokal yang diperlukan untuk memberikan akses ke GPU perangkat Anda.
**catatan**  
Jika Anda menjalankan dalam mode non-kontainer, AWS IoT Greengrass dapat mengakses GPU perangkat Anda tanpa mengonfigurasi sumber daya perangkat. 

   1. Pada halaman konfigurasi grup, pilih tab **Sumber Daya**.

   1. Pilih **Tambahkan sumber daya lokal**.

   1. Mendefinisikan sumber daya:
      + Untuk **Nama sumber daya**, masukkan **renderD128**.
      + Untuk **jenis sumber daya**, pilih **Perangkat lokal**.
      + Untuk **Jalur perangkat**, masukkan **/dev/dri/renderD128**.
      + Untuk **pemilik grup sistem dan izin akses file**, pilih **Secara otomatis menambahkan izin sistem file dari grup sistem yang memiliki sumber daya.**
      + Untuk **Afiliasi fungsi Lambda**, berikan **Akses baca dan tulis** pada fungsi Lambda Anda.

## Mengkonfigurasi NVIDIA Jetson TX2
<a name="jetson-lambda-config"></a>

Untuk menjalankan tutorial ini pada NVIDIA Jetson TX2, berikan gambar sumber dan konfigurasikan fungsi Lambda. Jika menggunakan GPU, Anda juga harus menambahkan sumber daya perangkat lokal.

1.  Pastikan perangkat Jetson Anda dikonfigurasi sehingga Anda dapat menginstal perangkat lunak AWS IoT Greengrass Core. Untuk informasi lebih lanjut tentang konfigurasi perangkat Anda, lihat [Mengatur perangkat lain](setup-filter.other.md). 

1. Buka MXNet dokumentasi, buka [Instalasi MXNet di Jetson](https://mxnet.apache.org/get_started/jetson_setup), dan ikuti petunjuk untuk menginstal MXNet di perangkat Jetson.
**catatan**  
 Jika Anda ingin membangun MXNet dari sumber, ikuti petunjuk untuk membangun pustaka bersama. Edit pengaturan berikut di `config.mk` file Anda agar berfungsi dengan perangkat Jetson TX2 :   
Tambahkan `-gencode arch=compute-62, code=sm_62` ke pengaturan `CUDA_ARCH` tersebut.
Hidupkan CUDA.  

     ```
     USE_CUDA = 1
     ```

1. Unduh citra PNG atau JPG statis untuk fungsi Lambda yang akan digunakan untuk klasifikasi citra. Aplikasi ini bekerja paling baik dengan file citra kecil. Atau, Anda dapat menyetel kamera melalui forum Jetson untuk menangkap citra sumber.

   Simpan file citra Anda di direktori yang memuat file `greengrassObjectClassification.py` tersebut. Anda juga dapat menyimpannya dalam subdirektori di direktori ini. Direktori ini ada dalam paket deployment fungsi Lambda yang Anda unggah di [Langkah 4: Buat dan publikasikan Fungsi Lambda](#ml-console-create-lambda).

1. Buat symlink dari Python 3.7 ke Python 3.6 untuk menggunakan Python 3 dengan. AWS IoT Greengrass Jalankan perintah berikut untuk menemukan instalasi Python Anda:

   ```
   which python3
   ```

   Jalankan perintah berikut untuk membuat symlink:

   ```
   sudo ln -s path-to-python-3.6/python3.6 path-to-python-3.7/python3.7
   ```

   Reboot perangkat.

1. Pastikan akun `ggc_user` sistem dapat menggunakan MXNet kerangka kerja:

   ```
   “sudo -u ggc_user bash -c 'python3 -c "import mxnet"'
   ```

1. Edit konfigurasi fungsi Lambda. Ikuti prosedur di [Langkah 5: Tambahkan fungsi Lambda ke grup Greengrass](#ml-console-config-lambda).
**catatan**  
 Kami merekomendasikan Anda menjalankan fungsi Lambda Anda tanpa kontainerisasi kecuali kasus bisnis Anda memerlukannya. Hal ini membantu mengaktifkan akses ke perangkat GPU dan kamera Anda tanpa mengonfigurasi sumber daya perangkat. Jika Anda menjalankan tanpa containerization, Anda juga harus memberikan akses root ke fungsi Lambda AWS IoT Greengrass Anda. 

   1. **Untuk berjalan tanpa kontainerisasi:**
      + Untuk **pengguna dan grup Sistem**, pilih**Another user ID/group ID**. Untuk **ID pengguna Sistem**, masukkan**0**. Untuk **ID grup Sistem**, masukkan**0**.

        Hal ini memungkinkan fungsi Lambda Anda untuk berjalan sebagai root. Untuk informasi lebih lanjut untuk menjalankan sebagai root, lihat [Mengatur identitas akses default untuk fungsi Lambda dalam grup](lambda-group-config.md#lambda-access-identity-groupsettings).
**Tip**  
Anda juga harus memperbarui file `config.json` untuk memberikan akses root ke fungsi Lambda Anda. Untuk prosedur ini, lihat [Menjalankan fungsi Lambda sebagai root](lambda-group-config.md#lambda-running-as-root).
      + **Untuk **kontainerisasi fungsi Lambda, pilih No container**.**

        Untuk informasi lebih lanjut untuk berjalan tanpa konainerisasi, lihat [Pertimbangan ketika memilih fungsi Lambda kontainerisasi](lambda-group-config.md#lambda-containerization-considerations).
      + **Di bawah **Parameter Tambahan**, untuk **akses Baca ke direktori /sys**, pilih Diaktifkan.** 
      +  Di bawah **Variabel lingkungan**, tambahkan pasangan nilai kunci berikut untuk fungsi Lambda Anda. Ini mengkonfigurasi AWS IoT Greengrass untuk menggunakan MXNet kerangka kerja.     
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/id_id/greengrass/v1/developerguide/ml-console.html)

   1.  **Untuk menjalankan dalam mode kontainer sebagai gantinya:** 
**catatan**  
Kami tidak merekomendasikan untuk dijalankan dalam mode kontainer kecuali jika kasus bisnis Anda memerlukannya.
      + Meningkatkan nilai **Batas memori** tersebut. Gunakan 500 MB untuk CPU, atau setidaknya 2000 MB untuk GPU. 
      + **Di bawah **Parameter Tambahan**, untuk **akses Baca ke direktori /sys**, pilih Diaktifkan.** 
      +  Di bawah **Variabel lingkungan**, tambahkan pasangan nilai kunci berikut untuk fungsi Lambda Anda. Ini mengkonfigurasi AWS IoT Greengrass untuk menggunakan MXNet kerangka kerja.     
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/id_id/greengrass/v1/developerguide/ml-console.html)

1. **Jika berjalan dalam mode kontainerisasi**, tambahkan sumber daya perangkat lokal berikut untuk memberikan akses ke GPU perangkat Anda. Ikuti prosedur di [Langkah 6: Tambahkan sumber daya ke grup Greengrass](#ml-console-add-resources).
**catatan**  
 Jika Anda menjalankan dalam mode non-kontainer, AWS IoT Greengrass dapat mengakses GPU perangkat Anda tanpa mengonfigurasi sumber daya perangkat. 

   Untuk setiap sumber daya:
   + Untuk **Jenis sumber daya**, pilih **Perangkat**.
   + Untuk **pemilik grup sistem dan izin akses file**, pilih **Secara otomatis menambahkan izin sistem file dari grup sistem yang memiliki sumber daya.**

          
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/id_id/greengrass/v1/developerguide/ml-console.html)

1. **Jika berjalan dalam mode kontainerisasi**, tambahkan sumber daya volume lokal berikut untuk memberikan akses ke kamera perangkat Anda. Ikuti prosedur di [Langkah 6: Tambahkan sumber daya ke grup Greengrass](#ml-console-add-resources).
**catatan**  
 Jika Anda menjalankan dalam mode non-kontainer, AWS IoT Greengrass dapat mengakses kamera perangkat Anda tanpa mengonfigurasi sumber daya volume. 
   + Untuk **Jenis sumber daya**, pilih **Volume**.
   + Untuk **pemilik grup sistem dan izin akses file**, pilih **Secara otomatis menambahkan izin sistem file dari grup sistem yang memiliki sumber daya.**

          
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/id_id/greengrass/v1/developerguide/ml-console.html)

# Cara mengonfigurasi inferensi pembelajaran mesin yang dioptimalkan menggunakan Konsol Manajemen AWS
<a name="ml-dlc-console"></a>

Untuk mengikuti langkah-langkah dalam tutorial ini, Anda harus menggunakan AWS IoT Greengrass Core v1.10 atau yang lebih baru.

Anda dapat menggunakan kompiler pembelajaran mendalam SageMaker AI Neo untuk mengoptimalkan efisiensi prediksi model inferensi pembelajaran mesin asli di Tensorflow, Apache,, ONNX, dan XGBoost kerangka kerja untuk MXNet jejak PyTorch yang lebih kecil dan kinerja yang lebih cepat. Anda kemudian dapat mengunduh model yang dioptimalkan dan menginstal runtime pembelajaran mendalam SageMaker AI Neo dan menerapkannya ke AWS IoT Greengrass perangkat Anda untuk inferensi yang lebih cepat. 

Tutorial ini menjelaskan cara menggunakan Konsol Manajemen AWS untuk mengkonfigurasi grup Greengrass untuk menjalankan contoh inferensi Lambda yang mengenali gambar dari kamera secara lokal, tanpa mengirim data ke cloud. Contoh kesimpulan mengakses modul kamera pada Raspberry Pi. Dalam tutorial ini, Anda mengunduh model prepackaged yang dilatih oleh Resnet-50 dan dioptimalkan di kompilator Neo deep learning. Anda kemudian menggunakan model untuk melakukan klasifikasi gambar lokal pada AWS IoT Greengrass perangkat Anda. 

Tutorial ini berisi langkah-langkah tingkat tinggi berikut:

1. [Mengonfigurasi Raspberry Pi](#config-raspberry-pi-dlc)

1. [PasangNeo deep learning deep learning](#install-dlr)

1. [Buat fungsi inferensi Lambda](#ml-console-dlc-create-lambda)

1. [Tambahkan fungsi Lambda ke grup](#ml-console-dlc-config-lambda)

1. [Tambahkan sumber daya model NEO-dioptimalkan ke grup](#ml-console-dlc-add-resources)

1. [Tambahkan sumber daya perangkat kamera ke grup](#ml-console-dlc-add-cam-resource)

1. [Tambahkan langganan ke grup](#ml-console-dlc-add-subscription)

1. [Men-deploy grup](#ml-console-dlc-deploy-group)

1. [Uji contoh](#ml-console-dlc-test-app)

## Prasyarat
<a name="ml-inference-prerequisites"></a>

 Untuk menyelesaikan tutorial ini, Anda memerlukan: 
+  Raspberry Pi 4 Model B, atau Raspberry Pi 3 Model B/B \$1, diatur dan dikonfigurasi untuk digunakan dengan. AWS IoT Greengrass Untuk mengatur Raspberry Pi Anda dengan AWS IoT Greengrass, jalankan [Pengaturan Perangkat Greengrass](quick-start.md) tersebut, atau pastikan bahwa Anda telah menyelesaikan [Modul 1](https://docs.aws.amazon.com/greengrass/latest/developerguide/module1.html) dan [Modul 2](https://docs.aws.amazon.com/greengrass/latest/developerguide/module2.html) dari [Memulai dengan AWS IoT Greengrass](gg-gs.md). 
**catatan**  
Raspberry Pi mungkin memerlukan [Catu daya](https://www.raspberrypi.org/documentation/hardware/raspberrypi/power/) 2.5A untuk menjalankan kerangka kerja deep learning yang biasanya digunakan untuk klasifikasi citra. Catu daya dengan peringkat lebih rendah dapat menyebabkan perangkat melakukan reboot.
+  [Modul Kamera Raspberry Pi V2 - 8 megapiksel, 1080p](https://www.amazon.com/Raspberry-Pi-Camera-Module-Megapixel/dp/B01ER2SKFS). Untuk mempelajari cara mengatur kamera, lihat [Menghubungkan kamera](https://www.raspberrypi.org/documentation/usage/camera/) dalam dokumentasi Raspberry Pi. 
+  Sebuah grup Greengrass dan Greengrass core. Untuk mempelajari cara membuat grup Greengrass atau core, lihat [Memulai dengan AWS IoT Greengrass](gg-gs.md). 

**catatan**  
 Tutorial ini menggunakan Raspberry Pi, tetapi AWS IoT Greengrass mendukung platform lain, seperti [Intel Atom](#atom-lambda-dlc-config) dan [NVIDIA Jetson TX2](#jetson-lambda-dlc-config). Jika menggunakan contoh Intel Atom, Anda mungkin butuh menginstal Python 3.6 bukannya Python 3.7. Untuk informasi tentang mengonfigurasi perangkat sehingga Anda dapat menginstal perangkat lunak AWS IoT Greengrass Core, lihat[Mengatur perangkat lain](setup-filter.other.md).   
Untuk platform pihak ketiga yang AWS IoT Greengrass tidak mendukung, Anda harus menjalankan fungsi Lambda Anda dalam mode non-kontainer. Untuk menjalankan dalam mode nonkontainerisasi, Anda harus menjalankan fungsi Lambda Anda sebagai root. Untuk informasi lebih lanjut, lihat [Pertimbangan ketika memilih fungsi Lambda kontainerisasi](lambda-group-config.md#lambda-containerization-considerations) dan [Mengatur identitas akses default untuk fungsi Lambda dalam grup](lambda-group-config.md#lambda-access-identity-groupsettings).

## Langkah 1: Mengonfigurasi Pi Raspberry
<a name="config-raspberry-pi-dlc"></a>

 Pada langkah ini, instal pembaruan untuk sistem operasi Raspbian, instal perangkat lunak modul kamera dan Python dependensi, dan mengaktifkan antarmuka kamera. 

Jalankan perintah berikut di terminal Raspberry Pi Anda.

1. Menginstal pembaruan untuk Raspbian.

   ```
   sudo apt-get update
   sudo apt-get dist-upgrade
   ```

1. <a name="install-picamera-step"></a>Instal antarmuka `picamera` untuk modul kamera dan pustaka Python lain yang diperlukan untuk tutorial ini.

   ```
   sudo apt-get install -y python3-dev python3-setuptools python3-pip python3-picamera
   ```

   Memvalidasi instalasi:
   + Pastikan bahwa instalasi Python 3.7 anda termasuk pip.

     ```
     python3 -m pip
     ```

     Jika pip tidak terpasang, unduh dari [Situs web pip](https://pip.pypa.io/en/stable/installing/) tersebut, kemudian jalankan perintah berikut.

     ```
     python3 get-pip.py
     ```
   + Pastikan bahwa versi Python Anda adalah 3.7 atau lebih tinggi.

     ```
     python3 --version
     ```

     Jika output mencantumkan versi sebelumnya, jalankan perintah berikut.

     ```
     sudo apt-get install -y python3.7-dev
     ```
   + Pastikan bahwa Setuptools dan Picamera berhasil diinstal.

     ```
     sudo -u ggc_user bash -c 'python3 -c "import setuptools"'
     sudo -u ggc_user bash -c 'python3 -c "import picamera"'
     ```

     Jika output tidak mengandung error, validasi berhasil.
**catatan**  
Jika Python yang dapat dieksekusi diinstal pada perangkat anda adalah `python3.7`, gunakan `python3.7` daripada `python3` untuk perintah di tutorial ini. Pastikan bahwa instalasi pip Anda memetakan versi `python3.7` atau `python3` yang tepat untuk menghindari kesalahan dependensi.

1. Reboot Raspberry Pi.

   ```
   sudo reboot
   ```

1. Buka alat konfigurasi Raspberry Pi.

   ```
   sudo raspi-config
   ```

1. Gunakan tombol panah untuk membuka **Opsi Antarmuka** dan mengaktifkan antarmuka kamera. Jika diminta, izinkan perangkat melakukan reboot.

1. Gunakan perintah berikut untuk menguji pengaturan kamera.

   ```
   raspistill -v -o test.jpg
   ```

   Hal ini akan membuka jendela pratinjau pada Raspberry Pi, menyimpan gambar bernama `test.jpg` ke direktori Anda saat ini, dan menampilkan informasi tentang kamera di terminal Raspberry Pi.

## Langkah 2: Instal runtime pembelajaran mendalam Amazon SageMaker Neo
<a name="install-dlr"></a>

 Dalam langkah ini, menginstal waktu aktif deep learning (DLR) Neo pada Anda Raspberry Pi. 

**catatan**  
Kami sarankan menginstal versi 1.1.0 untuk tutorial ini.

1. <a name="ssh-rpi-step"></a>Masuk ke Raspberry Pi Anda secara jarak jauh.

   ```
   ssh pi@your-device-ip-address
   ```

1.  Buka dokumentasi DLR, buka [Menginstal DLR](https://neo-ai-dlr.readthedocs.io/en/latest/install.html), dan menemukan URL wheel untuk perangkat Raspberry Pi. Kemudian, ikuti petunjuk untuk menginstal DLR di perangkat Anda. Sebagai contoh, Anda dapat menggunakan pip:

   ```
   pip3 install rasp3b-wheel-url
   ```

1. Setelah Anda menginstal DLR, validasikan konfigurasi berikut:
   + Pastikan `ggc_user` akun sistem dapat menggunakan perpustakaan DLR.

     ```
     sudo -u ggc_user bash -c 'python3 -c "import dlr"'
     ```
   + Pastikan NumPy sudah terpasang.

     ```
     sudo -u ggc_user bash -c 'python3 -c "import numpy"'
     ```

## Langkah 3: Buat fungsi Lambda inferensi
<a name="ml-console-dlc-create-lambda"></a>

 Pada langkah ini, buat paket deployment fungsi Lambda dan fungsi Lambda. Kemudian, terbitkan versi fungsi dan membuat alias. 

1. Pada komputer Anda, unduh sampel DLR untuk Raspberry Pi dari [Sampel machine learning](what-is-gg.md#gg-ml-samples).

1.  Unzip yang diunduh `dlr-py3-armv7l.tar.gz` File. 

   ```
   cd path-to-downloaded-sample
   tar -xvzf dlr-py3-armv7l.tar.gz
   ```

   Direktori `examples` dalam paket contoh yang diekstrak berisi kode fungsi dan dependensi.
   + `inference.py` adalah kode inference yang digunakan dalam tutorial ini. Anda dapat menggunakan kode ini sebagai templat untuk membuat fungsi inferensi Anda sendiri.
   + <a name="ml-samples-ggc-sdk"></a>`greengrasssdk` adalah versi 1.5.0 dari AWS IoT Greengrass Core SDK for Python.
**catatan**  <a name="ml-samples-ggc-sdk-upgrade"></a>
Jika versi baru tersedia, Anda dapat mengunduh dan membarui versi SDK dalam paket deployment Anda. Untuk informasi selengkapnya, lihat [AWS IoT Greengrass Core SDK for GitHub Python](https://github.com/aws/aws-greengrass-core-sdk-python/).

1.  Kompres isi `examples` ke dalam sebuah file bernama `optimizedImageClassification.zip`. Ini paket deployment Anda. 

   ```
   cd path-to-downloaded-sample/dlr-py3-armv7l/examples
   zip -r optimizedImageClassification.zip .
   ```

    Paket deployment berisi dependensi dan kode fungsi Lambda Anda. Ini termasuk kode yang memanggil Neo deep learning runtime Python APIs untuk melakukan inferensi dengan model kompiler deep learning Neo. 
**catatan**  <a name="ml-samples-function-zip"></a>
 Pastikan `.py` file dan dependensi berada di root direktori. 

1.  Sekarang, tambahkan fungsi Lambda ke grup Greengrass Anda. 

   Dari halaman konsol Lambda, pilih **Fungsi** dan pilih **Buat** fungsi.

1. Pilih **Tulis dari awal** dan gunakan nilaiinilai berikut untuk membuat fungsi Anda:
   + Untuk **Nama fungsi**, masukkan **optimizedImageClassification**. 
   + Untuk **Waktu pengoperasian**, pilih **Python 3.7**.

   Untuk **Izin**, pertahankan pengaturan default. Hal ini menciptakan peran eksekusi yang memberikan izin Lambda basic. Peran ini tidak digunakan oleh AWS IoT Greengrass  
![\[Bagian informasi dasar dari Buat fungsi halaman.\]](http://docs.aws.amazon.com/id_id/greengrass/v1/developerguide/images/ml-dlc-inference/gg-dlr-lambda-creation.png)

1. Pilih **Buat fungsi**. 

 

Sekarang, unggah paket deployment fungsi Lambda Anda dan daftarkan handler.

1. <a name="lambda-console-upload"></a>Pada tab **Kode** ini, di bawah **Sumber kode**, pilih **Unggah dari**. Dari dropdown, pilih **file .zip**.  
![\[Unggah dari dropdown dengan file .zip disorot.\]](http://docs.aws.amazon.com/id_id/greengrass/v1/developerguide/images/lra-console/upload-deployment-package.png)

1. Pilih paket deployment `optimizedImageClassification.zip` Anda, dan kemudian pilih **Simpan**.

1. <a name="lambda-console-runtime-settings-para"></a>Pada tab **Kode** fungsi, di bawah **Pengaturan waktu aktif**, pilih **Edit**, dan kemudian masukkan nilai-nilai berikut.
   + Untuk **waktu aktif**, pilih **Python 3.7**.
   + Untuk **Handler**, masukkan **inference.handler**.

   Pilih **Simpan**.  
![\[Bagian pengaturan Waktu aktif dengan Unggah disorot.\]](http://docs.aws.amazon.com/id_id/greengrass/v1/developerguide/images/ml-dlc-inference/gg-ml2-lambda-upload.png)

 

Selanjutnya, terbitkan versi pertama fungsi Lambda Anda. Kemudian, buat [alias untuk versi](https://docs.aws.amazon.com/lambda/latest/dg/versioning-aliases.html).

**catatan**  
Grup Greengrass dapat mereferensi fungsi Lambda dengan alias (direkomendasikan) atau dengan versi. Menggunakan alias membuatnya lebih mudah untuk mengelola pembaruan kode karena Anda tidak perlu mengubah tabel langganan atau definisi grup ketika kode fungsi diperbarui. Sebaliknya, Anda hanya mengarahkan alias ke versi fungsi baru.

1. Dari menu **Tindakan** tersebut, pilih **Publikasikan versi baru**.  
![\[Opsi Publikasikan versi baru di menu Tindakan.\]](http://docs.aws.amazon.com/id_id/greengrass/v1/developerguide/images/ml-dlc-inference/gg-ml2-publish-new.png)

1. Untuk **Versi Deskripsi**, masukkan **First version**, lalu pilih **Publikasikan**.

1. Pada halaman konfigurasi **optimizedImageClassification: 1**, dari menu **Tindakan**, pilih **Buat alias**.  
![\[Opsi Buat alias di menu Tindakan.\]](http://docs.aws.amazon.com/id_id/greengrass/v1/developerguide/images/ml-dlc-inference/gg-ml2-create-alias.png)

1. Pada halaman **Buat alias baru** tersebut, gunakan nilai-nilai berikut:
   + Untuk **Nama**, masukkan **mlTestOpt**.
   + Untuk **UID**, masukkan **1**.
**catatan**  
AWS IoT Greengrass **tidak mendukung alias Lambda untuk versi \$1LATEST.**

1. Pilih **Buat**.

   Sekarang, tambahkan fungsi Lambda ke grup Greengrass Anda.

## Langkah 4: Tambahkan fungsi Lambda ke grup Greengrass
<a name="ml-console-dlc-config-lambda"></a>

Pada langkah ini, tambahkan fungsi Lambda ke grup, dan kemudian mengonfigurasi siklus hidupnya.

Pertama, tambahkan fungsi Lambda ke grup Greengrass Anda.

1. **Di panel navigasi AWS IoT konsol, di bawah **Kelola**, perluas perangkat **Greengrass**, lalu pilih Grup (V1).**

1. **Pada halaman konfigurasi grup, pilih tab **fungsi Lambda**, dan pilih Tambah.** 

1.  Pilih **fungsi Lambda** dan pilih. **optimizedImageClassification** 

1. Pada **versi fungsi Lambda**, pilih alias ke versi yang Anda terbitkan.

 

Selanjutnya, konfigurasikan siklus hidup fungsi Lambda.

1. Di bagian **konfigurasi fungsi Lambda**, buat pembaruan berikut.
**catatan**  
 Kami merekomendasikan Anda menjalankan fungsi Lambda Anda tanpa kontainerisasi kecuali kasus bisnis Anda memerlukannya. Hal ini membantu mengaktifkan akses ke perangkat GPU dan kamera Anda tanpa mengonfigurasi sumber daya perangkat. Jika Anda menjalankan tanpa containerization, Anda juga harus memberikan akses root ke fungsi Lambda AWS IoT Greengrass Anda. 

   1. **Untuk berjalan tanpa kontainerisasi:**
      + Untuk **pengguna dan grup Sistem**, pilih**Another user ID/group ID**. Untuk **ID pengguna Sistem**, masukkan**0**. Untuk **ID grup Sistem**, masukkan**0**.

        Hal ini memungkinkan fungsi Lambda Anda untuk berjalan sebagai root. Untuk informasi lebih lanjut untuk menjalankan sebagai root, lihat [Mengatur identitas akses default untuk fungsi Lambda dalam grup](lambda-group-config.md#lambda-access-identity-groupsettings).
**Tip**  
Anda juga harus memperbarui file `config.json` untuk memberikan akses root ke fungsi Lambda Anda. Untuk prosedur ini, lihat [Menjalankan fungsi Lambda sebagai root](lambda-group-config.md#lambda-running-as-root).
      + **Untuk **kontainerisasi fungsi Lambda, pilih No container**.**

        Untuk informasi lebih lanjut untuk berjalan tanpa konainerisasi, lihat [Pertimbangan ketika memilih fungsi Lambda kontainerisasi](lambda-group-config.md#lambda-containerization-considerations).
      + Untuk **Timeout**, masukkan **10 seconds**.
      + Untuk **Pinned**, pilih **True**.

        Untuk informasi selengkapnya, lihat [Konfigurasi siklus hidup untuk fungsi Greengrass Lambda](lambda-functions.md#lambda-lifecycle).
      + **Di bawah **Parameter Tambahan**, untuk **akses Baca ke direktori /sys**, pilih Diaktifkan.**

   1.  **Untuk menjalankan dalam mode kontainer sebagai gantinya:** 
**catatan**  
Kami tidak merekomendasikan untuk dijalankan dalam mode kontainer kecuali jika kasus bisnis Anda memerlukannya.
      + Untuk **pengguna dan grup Sistem**, pilih **Gunakan grup default**.
      + **Untuk **kontainerisasi fungsi Lambda**, pilih Gunakan default grup.**
      + Untuk **Batas memori**, masukkan **1024 MB**.
      + Untuk **Timeout**, masukkan **10 seconds**.
      + Untuk **Pinned**, pilih **True**.

        Untuk informasi selengkapnya, lihat [Konfigurasi siklus hidup untuk fungsi Greengrass Lambda](lambda-functions.md#lambda-lifecycle).
      + **Di bawah **Parameter Tambahan**, untuk **akses Baca ke direktori /sys**, pilih Diaktifkan.**

1.  Pilih **Tambahkan fungsi Lambda**.

## Langkah 5: Tambahkan sumber daya model SageMaker AI NEO yang dioptimalkan ke grup Greengrass
<a name="ml-console-dlc-add-resources"></a>

 Pada langkah ini, buat sumber daya untuk model inferensi ML dioptimalkan dan unggah ke bucket Amazon S3. Kemudian, cari model yang diunggah Amazon S3 di AWS IoT Greengrass konsol dan afiliasi sumber daya yang baru dibuat dengan fungsi Lambda. Hal ini memungkinkan fungsi untuk mengakses sumber dayanya pada perangkat core. 

1.  Pada komputer Anda, navigasikan ke direktori `resnet50` dalam paket contoh yang Anda unzip di [Langkah 3: Buat fungsi Lambda inferensi](#ml-console-dlc-create-lambda). 
**catatan**  
Jika menggunakan contoh NVIDIA Jetson, Anda harus menggunakan `resnet18` dalam paket contoh sebagai gantinya. Untuk informasi selengkapnya, lihat [Mengkonfigurasi NVIDIA Jetson TX2](#jetson-lambda-dlc-config).

   ```
   cd path-to-downloaded-sample/dlr-py3-armv7l/models/resnet50
   ```

    Direktori ini berisi artefak model precompiled untuk model klasifikasi citra dilatih dengan Resnet-50.

1. Kompres file di dalam direktori `resnet50` ke dalam sebuah file bernama `resnet50.zip`. 

   ```
   zip -r resnet50.zip .
   ```

1.  Pada halaman konfigurasi grup untuk AWS IoT Greengrass grup Anda, pilih tab **Sumber Daya**. Navigasikan ke **Machine Learning** bagian dan pilih **Tambah sumber daya machine learning**. Pada halaman **Buat sumber daya machine learning** ini, untuk **Nama sumber daya**, masukkan **resnet50\$1model**.

1. Untuk **sumber Model**, pilih **Gunakan model yang disimpan di S3, seperti model yang dioptimalkan melalui Deep Learning Compiler**.

1.  Di bawah **S3 URI**, pilih **Browse S3**. 
**catatan**  
 Saat ini, model SageMaker AI yang dioptimalkan disimpan secara otomatis di Amazon S3. Anda dapat menemukan model yang dioptimalkan di bucket Amazon S3 Anda menggunakan opsi ini. Untuk informasi lebih lanjut tentang pengoptimalan model di SageMaker AI, lihat [dokumentasi SageMaker AI Neo](https://docs.aws.amazon.com/sagemaker/latest/dg/neo.html). 

1.  Pilih **Uunggah model**. 

1.  Pada tab konsol Amazon S3, unggah file zip Anda ke bucket Amazon S3. Untuk selengkapnya, lihat [Bagaimana cara mengunggah file dan folder ke bucket S3?](https://docs.aws.amazon.com/AmazonS3/latest/user-guide/upload-objects.html) di *Panduan Pengguna Layanan Penyimpanan Sederhana Amazon*. 
**catatan**  
 Nama bucket Anda harus berisi string **greengrass**. Pilih nama yang unik (seperti **greengrass-dlr-bucket-*user-id*-*epoch-time***). Jangan gunakan periode (`.`) dalam nama bucket. 

1.  Di tab AWS IoT Greengrass konsol, cari dan pilih bucket Amazon S3 Anda. Tempatkan file `resnet50.zip` yang Anda unggah, dan pilih **Pilihan**. Anda mungkin perlu me-refresh halaman untuk memperbarui daftar bucket dan file yang tersedia. 

1.  Di **jalur Tujuan**, masukkan**/ml\$1model**.   
![\[Jalur tujuan yang diperbarui.\]](http://docs.aws.amazon.com/id_id/greengrass/v1/developerguide/images/ml-dlc-inference/local-path.png)

    Hal ini adalah tujuan untuk model lokal di Lambda waktu aktif namespace. Saat Anda menyebarkan grup, AWS IoT Greengrass mengambil paket model sumber dan kemudian mengekstrak konten ke direktori yang ditentukan. 
**catatan**  
 Kami sangat merekomendasikan Anda menggunakan jalur yang tepat yang disediakan untuk jalur lokal Anda. Menggunakan jalur tujuan model lokal yang berbeda dalam langkah ini menyebabkan beberapa perintah pemecahan masalah yang disediakan dalam tutorial ini menjadi tidak akurat. Jika Anda menggunakan jalur yang berbeda, Anda harus mengatur `MODEL_PATH` lingkungan yang menggunakan jalur yang tepat yang Anda berikan di sini. Untuk informasi lebih lanjut tentang variabel lingkungan, lihat [AWS Lambda variabel lingkungan](https://docs.aws.amazon.com/lambda/latest/dg/env_variables.html). 

1. **Jika berjalan dalam mode kontainer:**

   1. Di bawah **Pemilik grup sistem dan izin akses file**, pilih **Tentukan grup sistem dan izin**.

   1. Pilih **Akses hanya-baca** dan kemudian pilih **Tambah** sumber daya.

## Langkah 6: Tambahkan sumber daya perangkat kamera Anda ke grup Greengrass
<a name="ml-console-dlc-add-cam-resource"></a>

 Pada langkah ini, buat sumber daya untuk modul kamera dan mengafiliasikannya dengan fungsi Lambda. Hal ini memungkinkan fungsi Lambda untuk mengakses sumber daya pada perangkat core. 

**catatan**  
Jika Anda menjalankan dalam mode non-kontainer, AWS IoT Greengrass dapat mengakses GPU dan kamera perangkat Anda tanpa mengonfigurasi sumber daya perangkat ini. 

1. Pada halaman konfigurasi grup, pilih tab **Sumber Daya**.

1. Pada tab Sumber **daya lokal**, pilih **Tambahkan sumber daya lokal**.

1. Pada halaman **Tambahkan sumber daya lokal**, gunakan nilai berikut:
   + Untuk **Nama sumber daya**, masukkan **videoCoreSharedMemory**.
   + Untuk **Jenis sumber daya**, pilih **Perangkat**.
   + Untuk **jalur perangkat lokal**, masukkan**/dev/vcsm**.

     Jalur perangkat adalah jalur absolut lokal sumber daya perangkat. Path ini hanya dapat merujuk ke perangkat karakter atau perangkat blok di bawah `/dev`.
   + Untuk **pemilik grup sistem dan izin akses file**, pilih **Secara otomatis menambahkan izin sistem file dari grup sistem yang memiliki sumber daya.**

     Opsi **Izin akses file pemilik grup** memungkinkan Anda memberikan izin akses file tambahan untuk proses Lambda. Untuk informasi selengkapnya, lihat [Izin akses file pemilik grup](access-local-resources.md#lra-group-owner).

1. Di bagian bawah halaman, pilih **Tambahkan sumber daya**.

1. Dari tab **Sumber Daya**, buat sumber daya lokal lain dengan memilih **Tambah** dan gunakan nilai berikut:
   + Untuk **Nama sumber daya**, masukkan **videoCoreInterface**.
   + Untuk **Jenis sumber daya**, pilih **Perangkat**.
   + Untuk **jalur perangkat lokal**, masukkan**/dev/vchiq**.
   + Untuk **pemilik grup sistem dan izin akses file**, pilih **Secara otomatis menambahkan izin sistem file dari grup sistem yang memiliki sumber daya.**

1. Pilih **Tambahkan sumber daya**. 

## Langkah 7: Menambahkan langganan ke grup Greengrass
<a name="ml-console-dlc-add-subscription"></a>

Pada langkah ini, tambahkan langganan ke grup. Langganan ini memungkinkan fungsi Lambda untuk mengirim hasil prediksi dengan memublikasikan AWS IoT ke topik MQTT.

1. Pada halaman konfigurasi grup, pilih tab **Langganan**, lalu pilih **Tambahkan langganan**.

1. Pada halaman **Buat langganan**, konfigurasikan sumber dan target, sebagai berikut:

   1. Di **tipe Sumber**, pilih **fungsi Lambda**, lalu pilih. **optimizedImageClassification**

   1. Di **Jenis target**, pilih **Layanan**, lalu pilih **IoT Cloud**.

   1. Di **filter Topik**, masukkan**/resnet-50/predictions**, lalu pilih **Buat langganan**. 

1. Tambahkan langganan kedua. Pilih tab **Langganan**, pilih **Tambahkan langganan**, dan konfigurasikan sumber dan target, sebagai berikut: 

   1. Di **tipe Sumber**, pilih **Layanan**, lalu pilih **IoT Cloud**.

   1. Di **Jenis target**, pilih **fungsi Lambda**, lalu pilih. **optimizedImageClassification**

   1. Di **filter Topik**, masukkan**/resnet-50/test**, lalu pilih **Buat langganan**.

## Langkah 8: Men-deploy grup Greengrass
<a name="ml-console-dlc-deploy-group"></a>

Pada langkah ini, men-deploy versi definisi grup untuk perangkat core Greengrass. Definisi berisi fungsi Lambda, sumber daya, dan konfigurasi langganan yang ditambahkan.

1. Pastikan AWS IoT Greengrass inti sedang berjalan. Jalankan perintah berikut di terminal Raspberry Pi Anda, sesuai kebutuhan.

   1. Untuk memeriksa apakah daemon sedang berjalan:

      ```
      ps aux | grep -E 'greengrass.*daemon'
      ```

      Jika output berisi `root` entri untuk `/greengrass/ggc/packages/latest-core-version/bin/daemon`, maka daemon sedang berjalan.

   1. Mulai daemon:

      ```
      cd /greengrass/ggc/core/
      sudo ./greengrassd start
      ```

1. Pada halaman konfigurasi grup, pilih **Deploy**.

1. **Pada tab **Fungsi Lambda**, pilih **detektor IP** dan pilih Edit.**

1. **Dari kotak dialog **Edit pengaturan detektor IP**, pilih **Secara otomatis mendeteksi dan mengganti titik akhir broker MQTT** dan pilih Simpan.**

   Hal ini mengaktifkan perangkat untuk secara otomatis memperoleh informasi konektivitas untuk core, seperti alamat IP, DNS, dan nomor port. Deteksi otomatis direkomendasikan, tetapi AWS IoT Greengrass juga mendukung titik akhir yang ditentukan secara manual. Anda hanya diminta untuk metode penemuan pertama kalinya bahwa grup di-deploy.
**catatan**  
Jika diminta, berikan izin untuk membuat peran layanan [Greengrass dan kaitkan dengan peran layanan](service-role.md) Anda saat ini. Akun AWS Wilayah AWS Peran ini memungkinkan AWS IoT Greengrass untuk mengakses sumber daya Anda dalam AWS layanan.

    Halaman **Deployment** menampilkan timestamp deployment, ID versi, dan status. Setelah selesai, status yang ditampilkan untuk penerapan harus **Selesai**. 

   Untuk informasi lebih lanjut tentang deployment, lihat [Menyebarkan AWS IoT Greengrass grup ke inti AWS IoT Greengrass](deployments.md). Untuk bantuan pemecahan masalah, lihat [Pemecahan masalah AWS IoT Greengrass](gg-troubleshooting.md).

## Uji contoh inferensi
<a name="ml-console-dlc-test-app"></a>

Sekarang Anda dapat memverifikasi apakah deployment dikonfigurasi dengan benar. Untuk menguji, Anda berlangganan topik `/resnet-50/predictions` dan menerbitkan pesan apa pun ke topik `/resnet-50/test` ini. Ini memicu fungsi Lambda untuk mengambil foto dengan Raspberry Pi Anda dan melakukan inferensi pada gambar yang ditangkap. 

**catatan**  
Jika menggunakan contoh NVIDIA Jetson, pastikan untuk menggunakan `resnet-18/predictions` dan `resnet-18/test` topik sebagai gantinya.

**catatan**  
Jika monitor terpasang ke Raspberry Pi, umpan kamera langsung ditampilkan di jendela pratinjau.

1. Di halaman beranda AWS IoT konsol, di bawah **Uji**, pilih klien pengujian **MQTT**.

1. Untuk **Langganan**, pilih **Berlangganan Topik**. Gunakan nilai-nilai berikut. Tinggalkan opsi yang tersisa pada defaultnya. 
   + Untuk **Topik langganan**, masukkan **/resnet-50/predictions**.
   + **Di bawah **Konfigurasi tambahan**, untuk tampilan **payload MQTT, pilih Display payloads** sebagai string.**

1. Pilih **Langganan**.

1. Pilih **Publikasikan ke topik**, masukkan **/resnet-50/test** sebagai **nama Topik**, dan pilih **Publikasikan**. 

1.  Jika uji berhasil, pesan diterbitkan menyebabkan kamera Raspberry Pi untuk menangkap citra. Sebuah pesan dari fungsi Lambda muncul di bagian bawah halaman. Pesan ini berisi hasil prediksi citra, menggunakan format: diprediksi nama kelas, probabilitas, dan penggunaan memori puncak. 

## Mengkonfigurasi Atom Intel
<a name="atom-lambda-dlc-config"></a>

 Untuk menjalankan tutorial ini pada perangkat Intel Atom, Anda harus memberikan citra sumber, Mengonfigurasi fungsi Lambda, dan menambahkan sumber daya perangkat lokal lain. Untuk menggunakan GPU sebagai inferensi, pastikan perangkat lunak berikut diinstal pada perangkat Anda:
+ OpenCL versi 1.0 atau yang lebih baru
+ Python 3.7 dan pip
+ [NumPy](https://pypi.org/project/numpy/)
+ [OpenCV di atas Roda](https://pypi.org/project/opencv-python/)

1. Unduh citra PNG atau JPG statis untuk fungsi Lambda yang akan digunakan untuk klasifikasi citra. Contoh tersebut bekerja paling baik dengan file citra kecil. 

   Simpan file citra Anda di direktori yang memuat file `inference.py` (atau dalam subdirektori dari direktori ini). Hal ini ada dalam paket deployment fungsi Lambda yang Anda unggah di [Langkah 3: Buat fungsi Lambda inferensi](#ml-console-dlc-create-lambda).
**catatan**  
 Jika Anda menggunakan AWS DeepLens, Anda dapat menggunakan kamera onboard atau memasang kamera Anda sendiri untuk melakukan inferensi pada gambar yang diambil, bukan gambar statis. Namun, kami sangat merekomendasikan Anda mulai dengan citra statis terlebih dahulu.   
Jika Anda menggunakan kamera, pastikan bahwa paket `awscam` APT diinstal dan diperbarui. Untuk informasi lebih lanjut, lihat [Perbarui Perangkat AWS DeepLens Anda](https://docs.aws.amazon.com/deeplens/latest/dg/deeplens-manual-updates.html) dalam *AWS DeepLens Panduan Developer*.

1. Edit konfigurasi fungsi Lambda. Ikuti prosedur di [Langkah 4: Tambahkan fungsi Lambda ke grup Greengrass](#ml-console-dlc-config-lambda). 
**catatan**  
 Kami merekomendasikan Anda menjalankan fungsi Lambda Anda tanpa kontainerisasi kecuali kasus bisnis Anda memerlukannya. Hal ini membantu mengaktifkan akses ke perangkat GPU dan kamera Anda tanpa mengonfigurasi sumber daya perangkat. Jika Anda menjalankan tanpa containerization, Anda juga harus memberikan akses root ke fungsi Lambda AWS IoT Greengrass Anda. 

   1. **Untuk berjalan tanpa kontainerisasi:**
      + Untuk **pengguna dan grup Sistem**, pilih**Another user ID/group ID**. Untuk **ID pengguna Sistem**, masukkan**0**. Untuk **ID grup Sistem**, masukkan**0**.

        Hal ini memungkinkan fungsi Lambda Anda untuk berjalan sebagai root. Untuk informasi lebih lanjut untuk menjalankan sebagai root, lihat [Mengatur identitas akses default untuk fungsi Lambda dalam grup](lambda-group-config.md#lambda-access-identity-groupsettings).
**Tip**  
Anda juga harus memperbarui file `config.json` untuk memberikan akses root ke fungsi Lambda Anda. Untuk prosedur ini, lihat [Menjalankan fungsi Lambda sebagai root](lambda-group-config.md#lambda-running-as-root).
      + **Untuk **kontainerisasi fungsi Lambda, pilih No container**.**

        Untuk informasi lebih lanjut tentang berjalan tanpa kontainerisasi, lihat [Pertimbangan ketika memilih fungsi Lambda kontainerisasi](lambda-group-config.md#lambda-containerization-considerations).
      + Tingkatkan nilai **Timeout** untuk 2 menit. Ini memastikan bahwa permintaan batas waktu tidak terlalu pendek. Dibutuhkan beberapa menit setelah pengaturan untuk menjalankan inferensi.
      +  Untuk **Pinned**, pilih **True**. 
      + **Di bawah **Parameter Tambahan**, untuk **akses Baca ke direktori /sys**, pilih Diaktifkan.** 

   1.  **Untuk menjalankan dalam mode kontainer sebagai gantinya:** 
**catatan**  
Kami tidak merekomendasikan untuk menjalankan dalam mode kontainerisasi kecuali jika kasus bisnis Anda memerlukannya.
      +  Tingkatkan nilai **Batas memori** hingga 3000 MB. 
      + Tingkatkan nilai **Timeout** untuk 2 menit. Ini memastikan bahwa permintaan batas waktu tidak terlalu pendek. Dibutuhkan beberapa menit setelah pengaturan untuk menjalankan inferensi.
      +  Untuk **Pinned**, pilih **True**. 
      + **Di bawah **Parameter Tambahan**, untuk **akses Baca ke direktori /sys**, pilih Diaktifkan.** 

1.  Tambahkan sumber daya model Neo-dioptimalisasi Anda ke grup. Unggah model sumber daya di direktori `resnet50` dari paket sampel yang Anda unzipped di [Langkah 3: Buat fungsi Lambda inferensi](#ml-console-dlc-create-lambda). Direktori ini berisi artefak model precompiled untuk model klasifikasi citra dilatih dengan Resnet-50. Ikuti prosedur di [Langkah 5: Tambahkan sumber daya model SageMaker AI NEO yang dioptimalkan ke grup Greengrass](#ml-console-dlc-add-resources) dengan pembaruan berikut. 
   + Kompres file di dalam direktori `resnet50` ke dalam sebuah file bernama `resnet50.zip`.
   + Pada halaman **Buat sumber daya machine learning** ini, untuk **Nama sumber daya**, masukkan **resnet50\$1model**.
   + Unggah `resnet50.zip` file.

1. **Jika berjalan dalam mode containerized**, tambahkan sumber daya perangkat lokal yang diperlukan untuk memberikan akses ke GPU perangkat Anda.
**catatan**  
 Jika Anda menjalankan dalam mode non-kontainer, AWS IoT Greengrass dapat mengakses GPU perangkat Anda tanpa mengonfigurasi sumber daya perangkat. 

   1. Pada halaman konfigurasi grup, pilih tab **Sumber Daya**.

   1. Di bagian **Sumber daya lokal**, pilih **Tambahkan sumber daya lokal**.

   1. Mendefinisikan sumber daya:
      + Untuk **Nama sumber daya**, masukkan **renderD128**.
      + Untuk **Jenis sumber daya**, pilih **Perangkat**.
      + Untuk **jalur perangkat lokal**, masukkan**/dev/dri/renderD128**.
      + Untuk **pemilik grup sistem dan izin akses file**, pilih **Secara otomatis menambahkan izin sistem file dari grup sistem yang memiliki sumber daya.**

## Mengkonfigurasi NVIDIA Jetson TX2
<a name="jetson-lambda-dlc-config"></a>

 Untuk menjalankan tutorial ini pada NVIDIA Jetson TX2, berikan gambar sumber, konfigurasikan fungsi Lambda, dan tambahkan lebih banyak sumber daya perangkat lokal.

1. Pastikan perangkat Jetson Anda dikonfigurasi sehingga Anda dapat menginstal perangkat lunak AWS IoT Greengrass Core dan menggunakan GPU untuk inferensi. Untuk informasi lebih lanjut tentang konfigurasi perangkat Anda, lihat [Mengatur perangkat lain](setup-filter.other.md). Untuk menggunakan GPU untuk inferensi pada NVIDIA Jetson TX2, Anda harus menginstal CUDA 10.0 dan cuDNN 7.0 pada perangkat Anda ketika Anda gambar papan Anda dengan Jetpack 4.3.

1. Unduh citra PNG atau JPG statis untuk fungsi Lambda yang akan digunakan untuk klasifikasi citra. Contohnya bekerja paling baik dengan file citra kecil. 

   Simpan file citra Anda di direktori yang memuat `inference.py` file. Anda juga dapat menyimpannya dalam subdirektori di direktori ini. Direktori ini adalah dalam paket deployment fungsi Lambda yang Anda unggah di [Langkah 3: Buat fungsi Lambda inferensi](#ml-console-dlc-create-lambda).
**catatan**  
 Anda dapat memilih untuk instrumen kamera di papan Jetson untuk menangkap citra sumber. Namun, kami sangat merekomendasikan Anda mulai dengan citra statis terlebih dahulu. 

1. Edit konfigurasi fungsi Lambda. Ikuti prosedur di [Langkah 4: Tambahkan fungsi Lambda ke grup Greengrass](#ml-console-dlc-config-lambda).
**catatan**  
 Kami merekomendasikan Anda menjalankan fungsi Lambda Anda tanpa kontainerisasi kecuali kasus bisnis Anda memerlukannya. Hal ini membantu mengaktifkan akses ke perangkat GPU dan kamera Anda tanpa mengonfigurasi sumber daya perangkat. Jika Anda menjalankan tanpa containerization, Anda juga harus memberikan akses root ke fungsi Lambda AWS IoT Greengrass Anda. 

   1. **Untuk berjalan tanpa kontainerisasi:**
      + Untuk **Jalankan sebagai**, pilih **Another user ID/group ID**. Untuk **UID**, masukkan **0**. Untuk **GUID**, masukkan **0**.

        Hal ini memungkinkan fungsi Lambda Anda untuk berjalan sebagai root. Untuk informasi lebih lanjut untuk menjalankan sebagai root, lihat [Mengatur identitas akses default untuk fungsi Lambda dalam grup](lambda-group-config.md#lambda-access-identity-groupsettings).
**Tip**  
Anda juga harus memperbarui file `config.json` untuk memberikan akses root ke fungsi Lambda Anda. Untuk prosedur ini, lihat [Menjalankan fungsi Lambda sebagai root](lambda-group-config.md#lambda-running-as-root).
      + **Untuk **kontainerisasi fungsi Lambda, pilih No container**.**

        Untuk informasi lebih lanjut tentang berjalan tanpa kontainerisasi, lihat [Pertimbangan ketika memilih fungsi Lambda kontainerisasi](lambda-group-config.md#lambda-containerization-considerations).
      + Tingkatkan nilai **Timeout** untuk 5 menit. Ini memastikan bahwa permintaan batas waktu tidak terlalu pendek. Dibutuhkan beberapa menit setelah pengaturan untuk menjalankan inferensi.
      +  Untuk **Pinned**, pilih **True**. 
      + **Di bawah **Parameter Tambahan**, untuk **akses Baca ke direktori /sys**, pilih Diaktifkan.** 

   1.  **Untuk menjalankan dalam mode kontainer sebagai gantinya:** 
**catatan**  
Kami tidak merekomendasikan untuk dijalankan dalam mode kontainer kecuali jika kasus bisnis Anda memerlukannya.
      +  Tingkatkan nilai **batas memori** ini. Untuk menggunakan model yang disediakan dalam mode GPU, gunakan setidaknya 2000 MB. 
      + Tingkatkan nilai **Timeout** untuk 5 menit. Ini memastikan bahwa permintaan batas waktu tidak terlalu pendek. Dibutuhkan beberapa menit setelah pengaturan untuk menjalankan inferensi.
      +  Untuk **Pinned**, pilih **True**. 
      + **Di bawah **Parameter Tambahan**, untuk **akses Baca ke direktori /sys**, pilih Diaktifkan.** 

1.  Tambahkan sumber daya model Neo-dioptimalisasi Anda ke grup. Unggah model sumber daya di direktori `resnet18` dari paket sampel yang Anda unzipped di [Langkah 3: Buat fungsi Lambda inferensi](#ml-console-dlc-create-lambda). Direktori ini berisi artefak model precompiled untuk model klasifikasi citra terlatih dengan Resnet-18. Ikuti prosedur di [Langkah 5: Tambahkan sumber daya model SageMaker AI NEO yang dioptimalkan ke grup Greengrass](#ml-console-dlc-add-resources) dengan pembaruan berikut. 
   + Kompres file di dalam direktori `resnet18` ke dalam sebuah file bernama `resnet18.zip`.
   + Pada halaman **Buat sumber daya machine learning** ini, untuk **Nama sumber daya**, masukkan **resnet18\$1model**.
   + Unggah `resnet18.zip` file.

1. **Jika berjalan dalam mode containerized**, tambahkan sumber daya perangkat lokal yang diperlukan untuk memberikan akses ke GPU perangkat Anda. 
**catatan**  
 Jika Anda menjalankan dalam mode non-kontainer, AWS IoT Greengrass dapat mengakses GPU perangkat Anda tanpa mengonfigurasi sumber daya perangkat. 

   1. Pada halaman konfigurasi grup, pilih tab **Sumber Daya**.

   1. Di bagian **Sumber daya lokal**, pilih **Tambahkan sumber daya lokal**.

   1. Tentukan setiap sumber daya:
      + Untuk **Nama sumber daya** dan **Jalur perangkat**, gunakan nilai-nilai dalam tabel berikut. Buat satu sumber daya perangkat untuk setiap baris dalam tabel.
      + Untuk **Jenis sumber daya**, pilih **Perangkat**.
      + Untuk **pemilik grup sistem dan izin akses file**, pilih **Secara otomatis menambahkan izin sistem file dari grup sistem yang memiliki sumber daya.**

             
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/id_id/greengrass/v1/developerguide/ml-dlc-console.html)

1. **Jika berjalan dalam mode kontainerisasi**, tambahkan sumber daya volume lokal berikut untuk memberikan akses ke kamera perangkat Anda. Ikuti prosedur di [Langkah 5: Tambahkan sumber daya model SageMaker AI NEO yang dioptimalkan ke grup Greengrass](#ml-console-dlc-add-resources).
**catatan**  
 Jika Anda menjalankan dalam mode non-kontainer, AWS IoT Greengrass dapat mengakses kamera perangkat Anda tanpa mengonfigurasi sumber daya perangkat. 
   + Untuk **Jenis sumber daya**, pilih **Volume**.
   + Untuk **pemilik grup sistem dan izin akses file**, pilih **Secara otomatis menambahkan izin sistem file dari grup sistem yang memiliki sumber daya.**

          
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/id_id/greengrass/v1/developerguide/ml-dlc-console.html)

1.  Memperbarui langganan grup Anda untuk menggunakan direktori yang benar. Ikuti prosedur di [Langkah 7: Menambahkan langganan ke grup Greengrass](#ml-console-dlc-add-subscription) dengan pembaruan berikut. 
   + Untuk filter topik pertama Anda, masukkan **/resnet-18/predictions**.
   + Untuk filter topik kedua Anda, masukkan **/resnet-18/test**.

1.  Memperbarui langganan pengujian Anda untuk menggunakan direktori yang benar. Ikuti prosedur di [Uji contoh inferensi](#ml-console-dlc-test-app) dengan pembaruan berikut. 
   +  Untuk **Langganan**, pilih **Berlangganan topik**. Untuk **Topik langganan**, masukkan **/resnet-18/predictions**. 
   +  Pada `/resnet-18/predictions` halaman, tentukan `/resnet-18/test` topik untuk diterbitkan ke. 

## Memecahkan masalah inferensi AWS IoT Greengrass ML
<a name="ml-inference-troubleshooting"></a>

Jika tes tidak berhasil, Anda dapat mencoba langkah-langkah penyelesaian masalah berikut. Jalankan perintah di terminal Raspberry Pi Anda.

### Periksa catatan error
<a name="troubleshooting-check-logs"></a>

1. <a name="root-access-logs"></a>Beralih ke pengguna root dan arahkan ke direktori `log` tersebut. Akses ke AWS IoT Greengrass log memerlukan izin root.

   ```
   sudo su
   cd /greengrass/ggc/var/log
   ```

1. Periksa `runtime.log` untuk kesalahan apa pun. 

   ```
   cat system/runtime.log | grep 'ERROR'
   ```

   Anda juga dapat melihat di log fungsi Lambda ditetapkan pengguna Anda untuk setiap kesalahan: 

   ```
   cat user/your-region/your-account-id/lambda-function-name.log | grep 'ERROR'
   ```

   Untuk informasi selengkapnya, lihat [Pemecahan masalah dengan catatan](gg-troubleshooting.md#troubleshooting-logs).

 

### Verifikasi fungsi Lambda berhasil di-deploy
<a name="troubleshooting-check-lambda"></a>

1.  Daftar isi dari Lambda yang di-deploy di `/lambda` direktori. Mengganti nilai placeholder sebelum Anda menjalankan perintah. 

   ```
   cd /greengrass/ggc/deployment/lambda/arn:aws:lambda:region:account:function:function-name:function-version
   ls -la
   ```

1.  Verifikasi bahwa direktori berisi konten yang sama sebagai paket deployment `optimizedImageClassification.zip` yang Anda unggah di [Langkah 3: Buat fungsi Lambda inferensi](#ml-console-dlc-create-lambda). 

    Pastikan bahwa `.py` file dan dependensi berada di root direktori. 

 

### Verifikasi model inferensi berhasil di-deploy
<a name="troubleshooting-check-model"></a>

1. Temukan process identification number (PID) proses waktu aktif Lambda:

   ```
   ps aux | grep lambda-function-name
   ```

   Pada output, PID muncul di kolom kedua baris untuk proses waktu aktif Lambda.

1.  Masukkan namespace waktu aktif Lambda. Pastikan untuk mengganti *pid* nilai placeholder sebelum Anda menjalankan perintah. 
**catatan**  
Direktori ini dan isinya berada di namespace waktu aktif Lambda, sehingga mereka tidak terlihat dalam namespace Linux biasa.

   ```
   sudo nsenter -t pid -m /bin/bash
   ```

1. Daftar isi dari direktori lokal yang Anda tentukan untuk sumber daya ML.
**catatan**  
 Jika jalur sumber daya ML Anda adalah sesuatu selain `ml_model`, Anda harus mengganti yang di sini. 

   ```
   cd /ml_model
   ls -ls
   ```

   Anda harus melihat file berikut:

   ```
       56 -rw-r--r-- 1 ggc_user ggc_group     56703 Oct 29 20:07 model.json
   196152 -rw-r--r-- 1 ggc_user ggc_group 200855043 Oct 29 20:08 model.params
      256 -rw-r--r-- 1 ggc_user ggc_group    261848 Oct 29 20:07 model.so
       32 -rw-r--r-- 1 ggc_user ggc_group     30564 Oct 29 20:08 synset.txt
   ```

 

### Fungsi Lambda `/dev/dri/renderD128`
<a name="troubleshooting-atom-config"></a>

 Hal ini dapat terjadi jika OpenCL tidak dapat terhubung ke perangkat GPU yang dibutuhkannya. Anda harus membuat sumber daya perangkat untuk perangkat yang diperlukan untuk fungsi Lambda Anda. 

## Langkah selanjutnya
<a name="next-dlc-steps"></a>

 Selanjutnya, jelajahi model lain yang dioptimalkan. Untuk informasi, lihat [dokumentasi SageMaker AI Neo](https://docs.aws.amazon.com/sagemaker/latest/dg/neo.html). 