Cara mengonfigurasi kesimpulan machine learning yang dioptimalkan menggunakan AWS Management Console - AWS IoT Greengrass

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 kesimpulan machine learning yang dioptimalkan menggunakan AWS Management Console

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

Anda dapat menggunakan SageMaker Kompilator deep learning Neo untuk mengoptimalkan efisiensi prediksi model inferensi machine learning asli di Tensorflow, Apache MXNet, PyTorchFramework, ONNX, dan XGBoost untuk footprint yang lebih kecil dan kinerja yang lebih cepat. Anda kemudian dapat mengunduh model yang dioptimalkan dan menginstal SageMaker Neo deep learning deep learning dan terapkan keAWS IoT Greengrassperangkat untuk inferensi lebih cepat.

Tutorial ini menjelaskan cara menggunakan AWS Management Console untuk mengonfigurasi grup Greengrass untuk menjalankan contoh inferensi Lambda yang mengenali citra 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 citra lokal pada perangkat AWS IoT Greengrass Anda.

Tutorial ini berisi langkah-langkah tingkat tinggi berikut:

Prasyarat

Untuk menyelesaikan tutorial ini, Anda memerlukan:

catatan

Tutorial ini menggunakan Raspberry Pi, AWS IoT Greengrass mendukung platform lain, seperti Intel Atom dan NVIDIA Jetson TX2. Jika menggunakan contoh Intel Atom, Anda mungkin butuh menginstal Python 3.6 bukannya Python 3.7. Untuk informasi tentang cara mengonfigurasi perangkat sehingga Anda dapat menginstal AWS IoT Greengrass perangkat lunak 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.

  1. Menginstal pembaruan untuk Raspbian.

    sudo apt-get update sudo apt-get dist-upgrade
  2. 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, 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.

  3. Reboot Raspberry Pi.

    sudo reboot
  4. Buka alat konfigurasi Raspberry Pi.

    sudo raspi-config
  5. Gunakan tombol panah untuk membuka Opsi Antarmuka dan mengaktifkan antarmuka kamera. Jika diminta, izinkan perangkat melakukan reboot.

  6. 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 Amazon SageMaker Waktu aktif deep learning

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. Masuk ke Raspberry Pi Anda secara jarak jauh.

    ssh pi@your-device-ip-address
  2. Buka dokumentasi DLR, buka Menginstal DLR, 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
  3. 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 dipasang.

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

Langkah 3: Buat fungsi inferensi Lambda

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.

  2. 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.

    • 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 Pythondi atas GitHub.

  3. 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 API untuk melakukan inferensi dengan model kompilator Neo deep learning.

    catatan

    Pastikan .py file dan dependensi berada di root direktori.

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

    Dari halaman konsol Lambda, pilihFungsidan pilihlahBuat fungsi.

  5. 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.
  6. Pilih Buat fungsi.

 

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

  1. Pada tab Kode ini, di bawah Sumber kode, pilih Unggah dari. Dari dropdown, pilih file .zip.

    Unggah dari dropdown dengan file .zip disorot.
  2. Pilih paket deployment optimizedImageClassification.zip Anda, dan kemudian pilih Simpan.

  3. 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 Save (Simpan).

    Bagian pengaturan Waktu aktif dengan Unggah disorot.

 

Selanjutnya, terbitkan 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.

  1. Dari menu Tindakan tersebut, pilih Publikasikan versi baru.

    Opsi Publikasikan versi baru di menu Tindakan.
  2. Untuk Versi Deskripsi, masukkan First version, lalu pilih Publikasikan.

  3. PadaoptimizedImageClassification: 1halaman konfigurasi, dariTindakanmenu, pilihMembuat alias.

    Opsi Buat alias di menu Tindakan.
  4. Pada halaman Buat alias baru tersebut, gunakan nilai-nilai berikut:

    • Untuk Nama, masukkan mlTestOpt.

    • Untuk UID, masukkan 1.

    catatan

    AWS IoT Greengrass tidak support alias Lambda untuk versi $TERBARU ini.

  5. Pilih Create (Buat).

    Sekarang, tambahkan fungsi Lambda ke grup Greengrass Anda.

Langkah 4: Tambahkan fungsi Lambda ke grup Greengrass

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

Pertama, tambahkan fungsi Lambda ke grup Greengrass Anda.

  1. DiAWS IoTpanel navigasi konsol, di bawahKelola, PerluasPerangkat Greengrass, dan kemudian pilihGrup (V1).

  2. Pada halaman konfigurasi grup, pilihFungsi Lambdatab, dan pilihTambahkan.

  3. PilihFungsi Lambdadan pilihlahoptimizedImageClassification.

  4. PadaVersi fungsi Lambda, pilih alias ke versi yang Anda terbitkan.

 

Selanjutnya, konfigurasikan siklus hidup fungsi Lambda.

  1. DiKonfigurasi 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.

    1. Untuk berjalan tanpa kontainerisasi:

    2. 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, chooseGunakan default grup.

      • UntukFungsi Lambda kontainerisasi, chooseGunakan default grup.

      • Untuk Batas memori, masukkan 1024 MB.

      • Untuk Timeout, masukkan 10 seconds.

      • UntukDipinned, chooseBenar.

        Untuk informasi selengkapnya, lihat Konfigurasi siklus hidup untuk fungsi Greengrass Lambda.

      • Di bawahParameter tambahan, untukBaca akses ke direktori /sys, chooseDiaktifkan.

  2. PilihTambahkan fungsi Lambda.

Langkah 5: Tambahkan SageMaker Sumber daya model Neo-dioptimalkan untuk grup Greengrass

Pada langkah ini, buat sumber daya untuk model inferensi ML dioptimalkan dan unggah ke bucket Amazon S3. Kemudian, tempatkan Amazon S3 yang diunggah 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 inferensi Lambda.

    catatan

    Jika menggunakan contoh NVIDIA Jetson, Anda harus menggunakan resnet18 dalam paket contoh sebagai gantinya. Untuk informasi selengkapnya, lihat Mengkonfigurasi NVIDIA Jetson TX2.

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

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

  2. Kompres file di dalam direktori resnet50 ke dalam sebuah file bernama resnet50.zip.

    zip -r resnet50.zip .
  3. Pada halaman konfigurasi grup untukAWS IoT Greengrasskelompok, pilihSumber dayaTab. 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_model.

  4. UntukSumber model, chooseGunakan model yang disimpan di S3, seperti model yang dioptimalkan melalui Deep Learning Compiler.

  5. Di bawahJENIS S3, chooseMenjelajahi S3.

    catatan

    Saat ini, dioptimalkan SageMaker model 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 optimalisasi model di SageMaker, lihatSageMaker Dokumentasi Neo.

  6. Pilih Uunggah model.

  7. Pada tab konsol Amazon S3, unggah file zip Anda ke bucket Amazon S3. Untuk informasi, lihatBagaimana cara mengunggah file dan folder ke S3 bucket?di dalamPanduan Pengguna Amazon Simple Storage Service.

    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.

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

  9. MasukJalur tujuanENTER/ml_model.

    Jalur tujuan yang diperbarui.

    Hal ini adalah tujuan untuk model lokal di Lambda waktu aktif namespace. Ketika Anda men-deploy grup, AWS IoT Greengrass mengambil paket model sumber dan kemudian mengekstraksi isi ke direktori tertentu.

    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.

  10. Jika berjalan dalam mode containerized:

    1. Di bawahPemilik grup sistem dan izin akses file, chooseTentukan grup sistem dan izin.

    2. PilihAkses hanya-bacadan kemudian pilihTambahkan sumber daya.

Langkah 6: Tambahkan sumber daya perangkat kamera ke grup Greengrass

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 berjalan dalam mode nonkontainerisasi, AWS IoT Greengrass dapat mengakses GPU dan kamera perangkat Anda tanpa mengonfigurasi sumber daya perangkat ini.

  1. Pada halaman konfigurasi grup, pilihSumber dayaTab.

  2. PadaSumber daya lokaltab, pilihTambahkan sumber daya lokal.

  3. 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. Path ini hanya dapat merujuk ke perangkat karakter atau perangkat blok di bawah /dev.

    • UntukPemilik grup sistem dan izin akses file, chooseSecara 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.

  4. Di bagian bawah halaman, pilihTambahkan sumber daya.

  5. DariSumber dayatab, buat sumber daya lokal lain dengan memilihTambahkandan 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, chooseSecara otomatis menambahkan izin sistem file dari grup sistem yang memiliki sumber daya.

  6. PilihTambahkan sumber daya.

Langkah 7: Tambahkan 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.

  1. Pada halaman konfigurasi grup, pilihLangganantab, dan kemudian pilihTambahkan langganan.

  2. PadaBuat langgananhalaman, mengkonfigurasi sumber dan target, sebagai berikut:

    1. MasukJenis sumber, chooseFungsi Lambda, dan kemudian pilihoptimizedImageClassification.

    2. MasukJenis target, chooseLayanan, dan kemudian pilihIoT Cloud.

    3. DiFilter topikENTER/resnet-50/predictions, dan kemudian pilihBuat langganan.

  3. Tambahkan langganan kedua. PilihLangganantab, pilihTambahkan langganan, dan mengonfigurasi sumber dan target, sebagai berikut:

    1. MasukJenis sumber, chooseLayanan, dan kemudian pilihIoT Cloud.

    2. MasukJenis target, chooseFungsi Lambda, dan kemudian pilihoptimizedImageClassification.

    3. DiFilter topikENTER/resnet-50/test, 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.

  1. Pastikan bahwa core AWS IoT Greengrass 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.

    2. Mulai daemon:

      cd /greengrass/ggc/core/ sudo ./greengrassd start
  2. Pada halaman konfigurasi grup, pilihDeploy.

  3. PadaFungsi Lambdatab, pilihDetektor IPdan pilihlahedit.

  4. DariUbah pengaturan detektor IPkotak dialog, pilihSecara otomatis mendeteksi dan mengganti titik akhir broker MQTTdan pilihlahSimpan.

    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 pemecahan masalah, lihat Pemecahan Masalah AWS IoT Greengrass.

Uji contoh inferensi

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. PadaAWS IoThalaman beranda konsol, di bawahTEST, chooseKlien uji MQTT.

  2. Untuk Langganan, pilih Berlangganan Topik. Gunakan nilai-nilai berikut. Tinggalkan opsi yang tersisa pada defaultnya.

    • Untuk Topik langganan, masukkan /resnet-50/predictions.

    • Di bawahKonfigurasi tambahan, untukTampilan muatan MQTT, chooseTampilkan muatan sebagai string.

  3. Pilih Langganan.

  4. PilihMenerbitkan ke topikENTER/resnet-50/testsebagaiNama topik, dan pilihlahPublikasikan.

  5. 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

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:

  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 inferensi 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 dalam AWS DeepLens Panduan Developer.

  2. Edit konfigurasi fungsi Lambda. Ikuti prosedur di Langkah 4: 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.

    1. Untuk berjalan tanpa kontainerisasi:

      • UntukPengguna dan grup sistem, chooseAnother 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, chooseTanpa kontainer.

        Untuk informasi lebih lanjut tentang berjalan tanpa kontainerisasi, lihat Pertimbangan ketika memilih fungsi Lambda kontainerisasi.

      • Tingkatkan nilai Timeout untuk 2 menit. Ini memastikan bahwa permintaan batas waktu tidak terlalu pendek. Dibutuhkan beberapa menit setelah pengaturan untuk menjalankan inferensi.

      • UntukDipinned, chooseBenar.

      • Di bawahParameter tambahan, untukBaca akses ke direktori /sys, chooseDiaktifkan.

    2. 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.

      • UntukDipinned, chooseBenar.

      • Di bawahParameter tambahan, untukBaca akses ke direktori /sys, chooseDiaktifkan.

  3. 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 inferensi Lambda. Direktori ini berisi artefak model precompiled untuk model klasifikasi citra dilatih dengan Resnet-50. Ikuti prosedur di Langkah 5: Tambahkan SageMaker Sumber daya model Neo-dioptimalkan untuk grup Greengrass 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_model.

    • Unggah resnet50.zip file.

  4. 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 nonkontainerisasi, AWS IoT Greengrass dapat mengakses GPU perangkat Anda tanpa mengonfigurasi sumber daya perangkat.

    1. Pada halaman konfigurasi grup, pilihSumber dayaTab.

    2. DiSumber daya lokalbagian, pilihTambahkan sumber daya lokal.

    3. Mendefinisikan sumber daya:

      • Untuk Nama sumber daya, masukkan renderD128.

      • Untuk Jenis sumber daya, pilih Perangkat.

      • UntukJalur perangkat lokalENTER/dev/dri/renderD128.

      • UntukPemilik grup sistem dan izin akses file, chooseSecara otomatis menambahkan izin sistem file dari grup sistem yang memiliki sumber daya.

Mengkonfigurasi NVIDIA Jetson TX2

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

  1. Pastikan perangkat Jetson Anda dikonfigurasi sehingga Anda dapat menginstal AWS IoT Greengrass Perangkat lunak Core dan gunakan GPU untuk inferensi. Untuk informasi lebih lanjut tentang mengonfigurasi Spot Instance Anda, lihat Mengatur perangkat lain. Untuk menggunakan GPU untuk inferensi pada NVIDIA Jetson TX2, Anda harus menginstal CUDA 10.0 dan cuDNN 7.0 pada perangkat Anda ketika Anda menggambar papan Anda dengan Jetpack 4.3.

  2. 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 inferensi 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.

  3. Edit konfigurasi fungsi Lambda. Ikuti prosedur di Langkah 4: 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.

    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.

        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, chooseTanpa kontainer.

        Untuk informasi lebih lanjut tentang berjalan tanpa kontainerisasi, lihat Pertimbangan ketika memilih fungsi Lambda kontainerisasi.

      • Tingkatkan nilai Timeout untuk 5 menit. Ini memastikan bahwa permintaan batas waktu tidak terlalu pendek. Dibutuhkan beberapa menit setelah pengaturan untuk menjalankan inferensi.

      • UntukDipinned, chooseBenar.

      • Di bawahParameter tambahan, untukBaca akses ke direktori /sys, chooseDiaktifkan.

    2. 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.

      • UntukDipinned, chooseBenar.

      • Di bawahParameter tambahan, untukBaca akses ke direktori /sys, chooseDiaktifkan.

  4. 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 inferensi Lambda. Direktori ini berisi artefak model precompiled untuk model klasifikasi citra terlatih dengan Resnet-18. Ikuti prosedur di Langkah 5: Tambahkan SageMaker Sumber daya model Neo-dioptimalkan untuk grup Greengrass 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_model.

    • Unggah resnet18.zip file.

  5. Jika berjalan dalam mode containerized, tambahkan sumber daya perangkat lokal yang diperlukan untuk memberikan akses ke GPU perangkat Anda.

    catatan

    Jika Anda berjalan dalam mode nonkontainerisasi, AWS IoT Greengrass dapat mengakses GPU perangkat Anda tanpa mengonfigurasi sumber daya perangkat.

    1. Pada halaman konfigurasi grup, pilihSumber dayaTab.

    2. DiSumber daya lokalbagian, pilihTambahkan sumber daya lokal.

    3. 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.

      • UntukPemilik grup sistem dan izin akses file, chooseSecara 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/nvhost-ctrl-gpu

        nvhost-dbg-gpu

        /dev/dev/nvhost-dbg-gpu

        nvhost-prof-gpu

        /dev/dev/nvhost-prof-gpu

        nvmap

        /dev/nvmap

        nvhost-vic

        /dev/nvhost-vic

        tegra_dc_ctrl

        /dev/tegra_dc_ctrl

  6. Jika berjalan dalam mode kontainerisasi, tambahkan sumber daya volume lokal berikut untuk memberikan akses ke kamera perangkat Anda. Ikuti prosedur di Langkah 5: Tambahkan SageMaker Sumber daya model Neo-dioptimalkan untuk grup Greengrass.

    catatan

    Jika Anda berjalan dalam mode nonkontainerisasi, AWS IoT Greengrass dapat mengakses kamera perangkat Anda tanpa mengonfigurasi sumber daya perangkat.

    • Untuk Jenis sumber daya, pilih Volume.

    • UntukPemilik grup sistem dan izin akses file, chooseSecara 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

  7. Memperbarui langganan grup Anda untuk menggunakan direktori yang benar. Ikuti prosedur di Langkah 7: Tambahkan langganan ke grup Greengrass dengan pembaruan berikut.

    • Untuk filter topik pertama Anda, masukkan /resnet-18/predictions.

    • Untuk filter topik kedua Anda, masukkan /resnet-18/test.

  8. Memperbarui langganan pengujian Anda untuk menggunakan direktori yang benar. Ikuti prosedur di Uji contoh inferensi dengan pembaruan berikut.

    • UntukLangganan, chooseBerlangganan topik. Untuk Topik langganan, masukkan /resnet-18/predictions.

    • Pada /resnet-18/predictions halaman, tentukan /resnet-18/test topik untuk diterbitkan ke.

Pemecahan 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

  1. 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
  2. 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.

 

Verifikasi fungsi Lambda berhasil di-deploy

  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
  2. Verifikasi bahwa direktori berisi konten yang sama sebagai paket deployment optimizedImageClassification.zip yang Anda unggah di Langkah 3: Buat fungsi inferensi Lambda.

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

 

Verifikasi model inferensi berhasil di-deploy

  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.

  2. 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
  3. 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

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

Selanjutnya, jelajahi model lain yang dioptimalkan. Untuk informasi, lihatSageMaker Dokumentasi Neo.