AWS IoT Greengrass Version 1 memasuki fase umur panjang pada 30 Juni 2023. Untuk informasi selengkapnya, lihat kebijakan AWS IoT Greengrass V1 pemeliharaan. Setelah tanggal ini, tidak AWS IoT Greengrass V1 akan merilis pembaruan yang menyediakan fitur, penyempurnaan, perbaikan bug, atau patch keamanan. Perangkat yang berjalan AWS IoT Greengrass V1 tidak akan terganggu dan akan terus beroperasi dan terhubung ke cloud. Kami sangat menyarankan Anda bermigrasi ke AWS IoT Greengrass Version 2, yang menambahkan fitur baru yang signifikan dan dukungan untuk platform tambahan.
Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.
Cara mengonfigurasi inferensi machine learning menggunakan AWS Management Console
Untuk mengikuti langkah-langkah di tutorial ini, Anda perlu 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.
Tutorial ini menjelaskan cara menggunakan AWS Management Console untuk mengonfigurasi grup Greengrass agar menjalankan aplikasi inferensi Lambda yang mengenali citra dari kamera secara lokal, tanpa mengirim data ke cloud. Aplikasi inferensi mengakses modul kamera pada Raspberry Pi dan menjalankan inferensi menggunakan sumber terbukaSqueezeNet
Tutorial ini berisi langkah-langkah tingkat tinggi berikut:
Prasyarat
Untuk menyelesaikan tutorial ini, Anda memerlukan:
-
Raspberry Pi 4 Model B, atau Raspberry Pi 3 Model B/B+, diatur dan dikonfigurasi untuk digunakan dengan AWS IoT Greengrass. Untuk mengatur Raspberry Pi Anda dengan AWS IoT Greengrass, jalankan Pengaturan Perangkat Greengrass tersebut, atau pastikan bahwa Anda telah menyelesaikan Modul 1 dan Modul 2 dari Memulai dengan AWS IoT Greengrass.
catatan
Raspberry Pi mungkin memerlukan Catu daya
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
. Untuk informasi tentang cara mengatur kamera, lihat Menghubungkan kamera dalam dokumentasi Raspberry Pi. -
Sebuah grup Greengrass dan core Greengrass. Untuk informasi tentang cara membuat grup Greengrass atau core, lihat Memulai dengan AWS IoT Greengrass.
catatan
Tutorial ini menggunakan Raspberry Pi, AWS IoT Greengrass support platform lain, seperti Intel Atom dan NVIDIA Jetson TX2. Dalam contoh untuk Jetson TX2, Anda dapat menggunakan citra statis, bukan citra yang dialirkan dari kamera. Jika menggunakan contoh Jetson TX2, Anda mungkin perlu menginstal Python 3.6 bukan Python 3.7. Untuk informasi tentang mengonfigurasi perangkat Anda, bahwa Anda dapat menginstal perangkat lunak AWS IoT Greengrass core, lihat Mengatur perangkat lain.
Untuk platform pihak ketiga di mana AWS IoT Greengrass tidak mendukung, Anda harus menjalankan fungsi Lambda Anda dalam mode nonkontainerisasi. Untuk menjalankan dalam mode nonkontainerisasi, Anda harus menjalankan fungsi Lambda Anda sebagai root. Untuk informasi lebih lanjut, lihat Pertimbangan ketika memilih fungsi Lambda kontainerisasi dan Mengatur identitas akses default untuk fungsi Lambda dalam grup.
Langkah 1: Mengonfigurasi Raspberry Pi
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.
-
Menginstal pembaruan untuk Raspbian.
sudo apt-get update sudo apt-get dist-upgrade
-
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
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
, gunakanpython3.7
daripadapython3
untuk perintah di tutorial ini. Pastikan bahwa instalasi pip Anda memetakan versipython3.7
ataupython3
yang tepat untuk menghindari kesalahan dependensi. -
-
Reboot Raspberry Pi.
sudo reboot
-
Buka alat konfigurasi Raspberry Pi.
sudo raspi-config
-
Gunakan tombol panah untuk membuka Opsi Antarmuka dan mengaktifkan antarmuka kamera. Jika diminta, izinkan perangkat melakukan reboot.
-
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 kerangka kerja MXNet
Dalam langkah ini, menginstal perpustakaan MXNet pada Raspberry Pi Anda.
-
Masuk ke Raspberry Pi Anda dari jarak jauh.
ssh pi@
your-device-ip-address
-
Buka dokumentasi MXNet, buka Menginstal MXNet
, lalu ikuti petunjuk untuk menginstal MXNet di perangkat. catatan
Kami menyarankan untuk menginstal versi 1.5.0 dan membangun MXNet dari sumber untuk tutorial ini agar menghindari konflik perangkat.
-
Setelah Anda menginstal MXNet, validasi konfigurasi berikut:
-
Pastikan akun sistem
ggc_user
dapat menggunakan kerangka kerja MXNet.sudo -u ggc_user bash -c 'python3 -c "import mxnet"'
-
Pastikan NumPy diinstal.
sudo -u ggc_user bash -c 'python3 -c "import numpy"'
-
Langkah 3: Membuat paket model MXNet
Pada langkah ini, buat paket model yang memuat contoh model MXNet yang terlatih untuk mengunggah 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.
-
Pada komputer anda, unduh sampel MXNet untuk Raspberry Pi dari Sampel machine learning.
-
Unzip file
mxnet-py3-armv7l.tar.gz
yang diunduh. -
Buka direktori
squeezenet
tersebut.cd
path-to-downloaded-sample
/mxnet-py3-armv7l/models/squeezenetFile
squeezenet.zip
dalam direktori ini adalah paket model Anda. Ini berisi SqueezeNet artefak model sumber terbuka untuk model klasifikasi gambar. Kemudian, Anda mengunggah paket model ini ke Amazon S3.
Langkah 4: Buat dan publikasikan fungsi Lambda
Pada langkah ini, buat paket deployment fungsi Lambda dan fungsi Lambda. Kemudian, publikasikan versi fungsi dan buat alias.
Pertama, buat paket deployment fungsi Lambda.
-
Di komputer Anda, navigasikan ke direktori
examples
dalam paket contoh yang Anda unzip di Langkah 3: Membuat paket model MXNet.cd
path-to-downloaded-sample
/mxnet-py3-armv7l/examplesDirektori
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. -
greengrasssdk
adalah versi 1.5.0 dari AWS IoT Greengrass Core SDK for Python.catatan
Jika versi baru tersedia, Anda dapat mengunduh dan membarui versi SDK dalam paket deployment Anda. Untuk informasi selengkapnya, lihatAWS IoT GreengrassCore SDK for Python
di atas GitHub.
-
-
Kompres isi
examples
ke dalam sebuah file bernamagreengrassObjectClassification.zip
. Ini paket deployment Anda.zip -r greengrassObjectClassification.zip .
catatan
Pastikan
.py
dan dependensi berada di root direktori.Selanjutnya, Buat fungsi Lambda.
-
DariAWS IoTkonsol, pilihFungsidanBuat fungsi.
-
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.
-
-
Pilih Buat fungsi.
Sekarang, unggah paket deployment fungsi Lambda Anda dan daftarkan handler.
-
Pilih fungsi Lambda Anda dan unggah paket deployment fungsi Lambda Anda.
-
Pada tab Kode ini, di bawah Sumber kode, pilih Unggah dari. Dari dropdown, pilih file .zip.
-
Pilih Unggah, lalu pilih paket deployment
greengrassObjectClassification.zip
Anda. Lalu, pilih Simpan. -
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_handler
.
Pilih Save (Simpan).
-
Berikutnya, mempublikasikan versi pertama fungsi Lambda Anda. Kemudian, buat alias untuk versi.
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.
-
-
Dari menu Tindakan tersebut, pilih Publikasikan versi baru.
-
Untuk Versi Deskripsi, masukkan
First version
, lalu pilih Publikasikan. -
PadagreengrassObjectClassification: 1halaman konfigurasi, dariTindakanmenu, pilihMembuat alias.
-
Pada halaman Buat alias baru tersebut, gunakan nilai-nilai berikut:
-
Untuk Nama, masukkan
mlTest
. -
Untuk UID, masukkan
1
.
catatan
AWS IoT Greengrass tidak support alias Lambda untuk versi $TERBARU ini.
-
-
Pilih Save (Simpan).
Sekarang, tambahkan fungsi Lambda ke grup Greengrass Anda.
Langkah 5: Tambahkan fungsi Lambda ke grup Greengrass
Pada langkah ini, menambahkan fungsi Lambda ke grup dan kemudian mengonfigurasi siklus hidup dan lingkungan variabel.
Pertama, tambahkan fungsi Lambda ke grup Greengrass Anda.
-
DiAWS IoTpanel navigasi konsol, di bawahKelola, perluasPerangkat Greengrass, dan kemudian pilihGrup (V1).
-
Dari halaman konfigurasi grup, pilihFungsi LambdaTab.
-
Di bawahFungsi Lambda sayabagian, pilihTambahkan.
-
UntukFungsi Lambda, PilihgreengrassObjectClassification.
-
UntukVersi fungsi Lambda, PilihAlias: MLTest.
Selanjutnya, konfigurasikan variabel siklus hidup dan lingkungan dari fungsi Lambda.
-
PadaKonfigurasi fungsi Lambdabagian, 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 kontainerisasi, Anda juga harus memberikan akses root ke Fungsi Lambda AWS IoT Greengrass Anda.
-
Untuk berjalan tanpa kontainerisasi:
-
UntukPengguna dan grup sistem, Pilih
Another user ID/group ID
. UntukID pengguna SistemENTER0
. UntukID Grup SistemENTER0
.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.
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. -
UntukFungsi Lambda kontainerisasi, PilihTanpa kontainer.
Untuk informasi lebih lanjut untuk berjalan tanpa konainerisasi, lihat Pertimbangan ketika memilih fungsi Lambda kontainerisasi.
-
Untuk Timeout, masukkan
10 seconds
. -
UntukDipinilih, PilihBenar.
Untuk informasi selengkapnya, lihat Konfigurasi siklus hidup untuk fungsi Greengrass Lambda.
-
-
Untuk menjalankan dalam mode kontainer sebagai gantinya:
catatan
Kami tidak merekomendasikan untuk dijalankan dalam mode kontainer kecuali jika kasus bisnis Anda memerlukannya.
-
UntukPengguna dan grup sistem, PilihGunakan default grup.
-
UntukFungsi Lambda kontainerisasi, PilihGunakan default grup.
-
Untuk Batas memori, masukkan
96 MB
. -
Untuk Timeout, masukkan
10 seconds
. -
UntukDipinilih, PilihBenar.
Untuk informasi selengkapnya, lihat Konfigurasi siklus hidup untuk fungsi Greengrass Lambda.
-
-
-
Di bawah Lingkungan variabel, buat pasangan kunci-nilai. Pasangan kunci-nilai diperlukan oleh fungsi yang berinteraksi dengan model MXNet pada Raspberry Pi.
Untuk kuncinya, gunakan MXNET_ENGINE_TYPE. Untuk nilai, gunakanNaiveEngine.
catatan
Dalam fungsi Lambda yang ditetapkan pengguna milik Anda, Anda secara opsional dapat mengatur variabel lingkungan dalam kode fungsi Anda.
-
Menjaga nilai default untuk semua properti lain dan memilihMenambahkan fungsi Lambda.
Langkah 6: Menambahkan sumber daya ke grup Greengrass
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 berjalan dalam mode nonkontainerisasi, AWS IoT Greengrass dapat mengakses GPU dan kamera dari 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.
-
Pada halaman konfigurasi grup, pilihSumber dayaTab.
-
DiSumber daya lokalbagian, pilihMenambahkan sumber daya lokal.
-
PadaMenambahkan sumber daya lokalhalaman, gunakan nilai-nilai berikut:
-
Untuk Nama sumber daya, masukkan
videoCoreSharedMemory
. -
Untuk Jenis sumber daya, pilih Perangkat.
-
UntukJalur perangkat lokalENTER
/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
. -
UntukPemilik grup sistem dan izin akses file, PilihSecara otomatis menambahkan izin sistem file dari grup sistem yang memiliki sumber daya.
YangPemilik grup sistem dan izin akses fileOpsi memungkinkan Anda memberikan izin akses file tambahan untuk proses Lambda. Untuk informasi selengkapnya, lihat Izin akses file pemilik grup.
-
-
Selanjutnya, Anda menambahkan sumber daya perangkat lokal untuk antarmuka kamera.
-
PilihMenambahkan sumber daya lokal.
-
PadaMenambahkan sumber daya lokalhalaman, gunakan nilai-nilai berikut:
-
Untuk Nama sumber daya, masukkan
videoCoreInterface
. -
Untuk Jenis sumber daya, pilih Perangkat.
-
UntukJalur perangkat lokalENTER
/dev/vchiq
. -
UntukPemilik grup sistem dan izin akses file, PilihSecara otomatis menambahkan izin sistem file dari grup sistem yang memiliki sumber daya.
-
-
Di bagian bawah halaman, pilihTambahkan sumber daya.
Sekarang, tambahkan model inferensi sebagai sumber daya machine learning. Langkah ini mencakup mengunggah paket model squeezenet.zip
ke Amazon S3.
-
PadaSumber dayatab untuk grup Anda, di bawahMachine Learningbagian, pilihMenambahkan sumber daya machine learning.
-
PadaMenambahkan sumber daya pembelajaran mesinhalamanNama sumber dayaENTER
squeezenet_model
. -
UntukSumber model, PilihGunakan model yang disimpan di S3, seperti model yang dioptimalkan melalui Deep Learning Compiler.
-
UntukJENIS S3, masukkan jalur tempat bucket S3 disimpan.
-
Pilih Jelajahi S3. Ini membuka tab baru ke konsol Amazon S3.
-
Pada konsol Amazon S3, unggah file
squeezenet.zip
ke bucket S3. Untuk informasi, lihatBagaimana cara mengunggah file dan folder ke S3 Bucket?di dalamPanduan Pengguna Amazon Simple Storage Service.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 (sepertigreengrass-bucket-
). Jangan gunakan periode (user-id
-epoch-time
.
) dalam nama bucket. -
Pada tab konsol AWS IoT Greengrass tersebut, 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. -
Untuk Jalur tujuan, masukkan
/greengrass-machine-learning/mxnet/squeezenet
.Hal ini adalah tujuan untuk model lokal di Lambda waktu aktif namespace. Saat Anda men-deploy grup, AWS IoT Greengrass mengambil paket model sumber dan kemudian ekstrak isinya ke direktori tertentu. Contoh fungsi Lambda untuk tutorial ini sudah dikonfigurasi untuk menggunakan jalur ini (dalam variabel
model_path
tersebut). -
Di bawahPemilik grup sistem dan izin akses file, PilihTidak ada kelompok sistem.
-
PilihTambahkan sumber daya.
Menggunakan SageMaker model terlatih
Tutorial ini menggunakan model yang disimpan di Amazon S3, tetapi Anda dapat dengan mudah menggunakannya SageMaker model juga. YangAWS IoT Greengrasskonsol telah built-in SageMaker integrasi, sehingga Anda tidak perlu secara manual mengunggah model ini ke Amazon S3. Untuk persyaratan dan batasan untuk menggunakan SageMaker model, lihatSumber model yang didukung.
Untuk menggunakan SageMaker Model:
-
UntukSumber model, PilihGunakan model yang dilatihAWS SageMaker, lalu pilih nama tugas pelatihan model.
-
UntukJalur tujuan, masukkan jalur ke direktori dimana fungsi Lambda anda mencari modelnya.
Langkah 7: Menambahkan langganan ke grup Greengrass
Pada langkah ini, tambahkan langganan ke grup. Langganan ini memungkinkan fungsi Lambda untuk mengirim hasil prediksi ke AWS IoT dengan menerbitkan topik MQTT.
-
Pada halaman konfigurasi grup, pilihLangganantab, dan kemudian pilihMenambahkan langganan.
-
PadaDetail langgananhalaman, mengkonfigurasi sumber dan target, sebagai berikut:
-
MasukJenis Sumber, PilihFungsi Lambda, dan kemudian pilihgreengrassObjectClassification.
-
MasukJenis target, PilihLayanan, dan kemudian pilihIoT Cloud.
-
-
MasukFilter topikENTER
hello/world
, dan kemudian pilihBuat langganan.
Langkah 8: Men-deploy grup Greengrass
Pada langkah ini, men-deploy versi definisi grup untuk perangkat core Greengrass. Definisi berisi fungsi Lambda, sumber daya, dan konfigurasi langganan yang ditambahkan.
-
Pastikan bahwa core AWS IoT Greengrass sedang berjalan. Jalankan perintah berikut di terminal Raspberry Pi Anda, sesuai kebutuhan.
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 core Anda.
Untuk memulai daemon:
cd /greengrass/ggc/core/ sudo ./greengrassd start
-
Pada halaman konfigurasi grup, pilihDeploy.
-
DiFungsi Lambdatab, di bawahFungsi Lambda sistembagian, pilihDetektor IPdan pilihlahedit.
-
DiEdit pengaturan detektor IPkotak dialog, pilihSecara otomatis mendeteksi dan mengganti titik akhir broker MQTT.
-
Pilih Save (Simpan).
Hal ini mengaktifkan perangkat untuk secara otomatis memperoleh informasi konektivitas untuk core, seperti alamat IP, DNS, dan nomor port. Deteksi otomatis direkomendasikan, namun AWS IoT Greengrass juga support 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 Akun AWS Anda pada Wilayah AWS. Peran ini memungkinkan AWS IoT Greengrass untuk mengakses sumber daya Anda di layanan AWS ini.
Halaman Deployment menampilkan timestamp deployment, ID versi, dan status. Setelah selesai, status yang ditampilkan untuk deployment seharusnyaCompleted (Lengkap).
Untuk informasi lebih lanjut tentang deployment, lihat Men-deploy AWS IoT Greengrass grup ke AWS IoT Greengrass core. Untuk bantuan penyelesaian masalah, lihat Pemecahan Masalah AWS IoT Greengrass.
Langkah 9: Tes aplikasi inferensi
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.
-
DiAWS IoTkonsol, di bawahTEST, PilihKlien uji MQTT.
-
Untuk Berlangganan, gunakan nilai-nilai berikut:
-
Untuk topik berlangganan, gunakan hello/world.
-
Di bawahKonfigurasi tambahan, untukTampilan muatan MQTT, PilihTampilkan muatan sebagai string.
-
-
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.
Penyelesaian Masalah AWS IoT Greengrass inferensi ML
Jika tes tidak berhasil, Anda dapat mencoba langkah-langkah penyelesaian masalah berikut. Jalankan perintah di terminal Raspberry Pi Anda.
Periksa catatan error
-
Beralih ke pengguna root dan arahkan ke direktori
log
tersebut. Akses ke catatan AWS IoT Greengrass memerlukan izin root.sudo su cd /greengrass/ggc/var/log
-
Di direktori
system
tersebut, periksaruntime.log
ataupython_runtime.log
.Di direktori
user/
tersebut, periksaregion
/account-id
greengrassObjectClassification.log
.Untuk informasi selengkapnya, lihat Pemecahan masalah dengan catatan.
Membongkarkesalahanruntime.log
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
Misalnya:
─$
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
-
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 -
Verifikasi bahwa direktori berisi konten yang sama sebagai paket deployment
greengrassObjectClassification.zip
yang Anda unggah di Langkah 4: Buat dan publikasikan fungsi Lambda.Pastikan bahwa file
.py
dan dependensi berada di root direktori.
Verifikasi bahwa model inferensi berhasil di-deploy
-
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.
-
Masukkan namespace waktu aktif Lambda. Pastikan untuk mengganti nilai placeholder
pid
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 -
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
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 kerangka kerja MXNet.
Mengonfigurasi Intel Atom
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 Tahap 2.
-
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.catatan
Jika Anda menggunakan AWS DeepLens, Anda dapat menggunakan kamera onboard atau memasang kamera Anda sendiri untuk melakukan inferensi pada citra yang ditangkap, bukan citra 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 pada AWS DeepLens Panduan Developer. -
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.xpath-to-python-3.7/
python3.7Reboot perangkat.
-
Edit konfigurasi fungsi Lambda. Ikuti prosedur di Langkah 5: Tambahkan fungsi Lambda ke grup Greengrass.
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 kontainerisasi, Anda juga harus memberikan akses root ke Fungsi Lambda AWS IoT Greengrass Anda.
-
Untuk berjalan tanpa kontainerisasi:
-
UntukPengguna dan grup sistem, Pilih
Another user ID/group ID
. UntukID pengguna SistemENTER0
. UntukID Grup SistemENTER0
.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.
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. -
UntukFungsi Lambda kontainerisasi, PilihTanpa kontainer.
Untuk informasi lebih lanjut untuk berjalan tanpa konainerisasi, lihat Pertimbangan ketika memilih fungsi Lambda kontainerisasi.
-
Perbarui nilai Timeout menjadi 5 detik. Hal ini memastikan bahwa permintaan tidak timeout terlalu cepat. Dibutuhkan beberapa menit setelah pengaturan untuk menjalankan inferensi.
-
Di bawahDipinilih, PilihBenar.
-
Di bawahParameter tambahan, untukBaca akses ke direktori /sys, PilihDiaktifkan.
-
Untuk Siklus hidup Lambda, pilih Jadikan fungsi ini berumur panjang dan biarkan berjalan tanpa batas.
-
-
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.
-
UntukDipinilih, PilihBenar.
-
Di bawahParameter tambahan, untukBaca akses ke direktori /sys, PilihDiaktifkan.
-
-
-
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 nonkontainerisasi, AWS IoT Greengrass dapat mengakses GPU perangkat Anda tanpa mengonfigurasi sumber daya perangkat.
-
Pada halaman konfigurasi grup, pilihSumber dayaTab.
-
PilihMenambahkan sumber daya lokal.
-
Mendefinisikan sumber daya:
-
Untuk Nama sumber daya, masukkan
renderD128
. -
UntukJenis sumber daya, PilihPerangkat lokal.
-
Untuk Jalur perangkat, masukkan
/dev/dri/renderD128
. -
UntukPemilik grup sistem dan izin akses file, PilihSecara 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.
-
-
Mengonfigurasi NVIDIA Jetson TX2
Untuk menjalankan tutorial ini pada NVIDIA Jetson TX2, berikan citra sumber dan konfigurasi fungsi Lambda. Jika menggunakan GPU, Anda juga harus menambahkan sumber daya perangkat lokal.
-
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.
-
Buka dokumentasi MXNet, pergi ke Menginstal MXNet pada Jetson
, lalu ikuti petunjuk untuk menginstal MXNet pada perangkat Jetson. catatan
Jika Anda ingin membangun MXNet dari sumber, ikuti petunjuk untuk membuat perpustakaan berbagi. Edit pengaturan berikut dalam file
config.mk
Anda agar bekerja dengan perangkat Jetson TX2:-
Tambahkan
-gencode arch=compute-62, code=sm_62
ke pengaturanCUDA_ARCH
tersebut. -
Hidupkan CUDA.
USE_CUDA = 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. -
Buat symlink dari Python 3.7 ke Python 3.6 agar 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.6path-to-python-3.7/
python3.7Reboot perangkat.
-
Pastikan akun sistem
ggc_user
dapat menggunakan kerangka kerja MXNet:“sudo -u ggc_user bash -c 'python3 -c "import mxnet"'
-
Edit konfigurasi fungsi Lambda. Ikuti prosedur di Langkah 5: Tambahkan fungsi Lambda ke grup Greengrass.
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 kontainerisasi, Anda juga harus memberikan akses root ke Fungsi Lambda AWS IoT Greengrass Anda.
-
Untuk berjalan tanpa kontainerisasi:
-
UntukPengguna dan grup sistem, Pilih
Another user ID/group ID
. UntukID pengguna SistemENTER0
. UntukID Grup SistemENTER0
.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.
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. -
UntukFungsi Lambda kontainerisasi, PilihTanpa kontainer.
Untuk informasi lebih lanjut untuk berjalan tanpa konainerisasi, lihat Pertimbangan ketika memilih fungsi Lambda kontainerisasi.
-
Di bawahParameter tambahan, untukBaca akses ke direktori /sys, PilihDiaktifkan.
-
Di bawah Variabel lingkungan, tambahkan pasangan nilai kunci berikut untuk fungsi Lambda Anda. Ini mengonfigurasi AWS IoT Greengrass untuk menggunakan kerangka kerja MXNet.
Kunci
Nilai
PATH
/usr/local/cuda/bin: $PATH
MXNET_HOME
$ rumah/mxnet/
PYTHONPATH
$mxnet_HOME/Python: $PYTHONPATH
CUDA_HOME
/usr/local/cuda
LD_LIBRARY_PATH
$ LD_LIBRARY_PATH: $ {CUDA_HOME} /lib64
-
-
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 bawahParameter tambahan, untukBaca akses ke direktori /sys, PilihDiaktifkan.
-
Di bawah Variabel lingkungan, tambahkan pasangan nilai kunci berikut untuk fungsi Lambda Anda. Ini mengonfigurasi AWS IoT Greengrass untuk menggunakan kerangka kerja MXNet.
Kunci
Nilai
PATH
/usr/local/cuda/bin: $PATH
MXNET_HOME
$ rumah/mxnet/
PYTHONPATH
$mxnet_HOME/Python: $PYTHONPATH
CUDA_HOME
/usr/local/cuda
LD_LIBRARY_PATH
$ LD_LIBRARY_PATH: $ {CUDA_HOME} /lib64
-
-
-
Jika berjalan dalam mode kontainerisasi, tambahkan sumber daya perangkat lokal berikut untuk memberikan akses ke GPU perangkat Anda. Ikuti prosedur di Langkah 6: Menambahkan sumber daya ke grup Greengrass.
catatan
Jika Anda menjalankan dalam mode nonkontainerisasi, AWS IoT Greengrass dapat mengakses GPU perangkat Anda tanpa mengonfigurasi sumber daya perangkat.
Untuk setiap sumber daya:
-
Untuk Jenis sumber daya, pilih Perangkat.
-
UntukPemilik grup sistem dan izin akses file, PilihSecara otomatis menambahkan izin sistem file dari grup sistem yang memiliki sumber daya.
Nama
Jalur perangkat
nvhost-ctrl
/dev/nvhost-ctrl
nvhost-gpu
/dev/nvhost-gpu
nvhost-ctrl-gpu
/dev/dev/dev/nvhost-ctrl-gpu
nvhost-dbg-gpu
/dev/dev/dev/nvhost-dbg-gpu
nvhost-prof-gpu
/dev/dev/dev/nvhost-prof-gpu
nvmap
/dev/nvmap
nvhost-vic
/dev/nvhost-vic
tegra_dc_ctrl
/dev/tegra_dc_ctrl
-
-
Jika berjalan dalam mode kontainerisasi, tambahkan sumber daya volume lokal berikut untuk memberikan akses ke kamera perangkat Anda. Ikuti prosedur di Langkah 6: Menambahkan sumber daya ke grup Greengrass.
catatan
Jika Anda menjalankan dalam mode nonkontainerisasi, AWS IoT Greengrass dapat mengakses kamera perangkat Anda tanpa mengonfigurasi sumber daya volume.
-
Untuk Jenis sumber daya, pilih Volume.
-
UntukPemilik grup sistem dan izin akses file, PilihSecara otomatis menambahkan izin sistem file dari grup sistem yang memiliki sumber daya.
Nama
Jalur sumber
Jalur tujuan
shm
/dev/shm
/dev/shm
tmp
/tmp
/tmp
-