

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.

# 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)