

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

# Agen Manajer Edge
<a name="edge-device-fleet-about"></a>

Agen Edge Manager adalah mesin inferensi untuk perangkat edge Anda. Gunakan agen untuk membuat prediksi dengan model yang dimuat ke perangkat tepi Anda. Agen juga mengumpulkan metrik model dan menangkap data pada interval tertentu. Data sampel disimpan di bucket Amazon S3 Anda.

Ada dua metode untuk menginstal dan menyebarkan agen Edge Manager ke perangkat edge Anda:

1. Unduh agen sebagai biner dari ember rilis Amazon S3. Untuk informasi selengkapnya, lihat [Unduh dan Atur Agen Edge Manager Secara Manual](edge-device-fleet-manual.md).

1. Gunakan konsol AWS IoT Greengrass V2 atau AWS CLI untuk menyebarkan`aws.greengrass.SageMakerEdgeManager`. Lihat [Buat Komponen AWS IoT Greengrass V2](edge-greengrass-custom-component.md).

# Unduh dan Atur Agen Edge Manager Secara Manual
<a name="edge-device-fleet-manual"></a>

Unduh agen Edge Manager berdasarkan sistem operasi, arsitektur, dan AWS Wilayah Anda. Agen diperbarui secara berkala, sehingga Anda memiliki opsi untuk memilih agen Anda berdasarkan tanggal dan versi rilis. Setelah Anda memiliki agen, buat file konfigurasi JSON. Tentukan nama benda IoT perangkat, nama armada, kredenal perangkat, dan pasangan nilai kunci lainnya. Lihat [Menjalankan agen Edge Manager](#edge-device-fleet-running-agent) untuk lengkap daftar kunci yang harus Anda tentukan dalam file konfigurasi. Anda dapat menjalankan agen sebagai biner yang dapat dieksekusi atau menautkannya sebagai objek bersama dinamis (DSO).

## Bagaimana agen bekerja
<a name="edge-device-fleet-how-agent-works"></a>

Agen berjalan pada CPU perangkat Anda. Agen menjalankan inferensi pada kerangka kerja dan perangkat keras perangkat target yang Anda tentukan selama pekerjaan kompilasi. Misalnya, jika Anda mengkompilasi model untuk Jetson Nano, agen mendukung GPU dalam [Deep Learning Runtime (DLR) yang](https://github.com/neo-ai/neo-ai-dlr) disediakan.

Agen dirilis dalam format biner untuk sistem operasi yang didukung. Periksa apakah sistem operasi Anda didukung dan memenuhi persyaratan OS minimum dalam tabel berikut:

------
#### [ Linux ]

**Versi:** Ubuntu 18.04

**Format Biner yang Didukung:** x86-64 bit (biner ELF) dan ARMv8 64 bit (biner ELF)

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

**Versi:** Windows 10 versi 1909

**Format Biner yang Didukung:** x86-32 bit (DLL) dan x86-64 bit (DLL)

------

## Menginstal agen Edge Manager
<a name="edge-device-fleet-installation"></a>

Untuk menggunakan agen Edge Manager, Anda harus terlebih dahulu mendapatkan artefak rilis dan sertifikat root. Artefak rilis disimpan dalam ember Amazon S3 di `us-west-2` Wilayah. Untuk mengunduh artefak, tentukan sistem operasi Anda (`<OS>`) dan file. `<VERSION>`

Berdasarkan sistem operasi Anda, ganti `<OS>` dengan salah satu dari berikut ini:


| Windows 32-bit | Windows 64-bit | Linux x86-64 | Linux ARMv8 | 
| --- | --- | --- | --- | 
| jendela-x86 | jendela-x64 | linux-x64 | linux-armv8 | 

`VERSION`Ini dipecah menjadi tiga komponen:`<MAJOR_VERSION>.<YYYY-MM-DD>-<SHA-7>`, di mana:
+ `<MAJOR_VERSION>`: Versi rilis. Versi rilis saat ini diatur ke`1`.
+ `<YYYY-MM-DD>`: Cap waktu pelepasan artefak.
+ `<SHA-7>`: ID komit repositori tempat rilis dibuat.

Anda harus memberikan `<MAJOR_VERSION>` dan cap waktu dalam `YYYY-MM-DD` format. Kami menyarankan Anda menggunakan stempel waktu rilis artefak terbaru.

Jalankan yang berikut ini di baris perintah Anda untuk mendapatkan cap waktu terbaru. Ganti `<OS>` dengan sistem operasi Anda:

```
aws s3 ls s3://sagemaker-edge-release-store-us-west-2-<OS>/Releases/ | sort -r
```

Misalnya, jika Anda memiliki OS Windows 32-bit, jalankan:

```
aws s3 ls s3://sagemaker-edge-release-store-us-west-2-windows-x86/Releases/ | sort -r
```

Ini mengembalikan:

```
2020-12-01 23:33:36 0 

                    PRE 1.20201218.81f481f/
                    PRE 1.20201207.02d0e97/
```

Output kembali dalam contoh ini menunjukkan dua artefak rilis. File artefak rilis pertama mencatat bahwa versi rilis memiliki versi rilis utama`1`, cap waktu `20201218` (dalam YYYY-MM-DD format), dan ID komit `81f481f` SHA-7.

**catatan**  
Perintah sebelumnya mengasumsikan Anda telah mengonfigurasi file. AWS Command Line Interface Untuk informasi selengkapnya, tentang cara mengonfigurasi pengaturan yang AWS CLI digunakan untuk berinteraksi AWS, lihat [Mengonfigurasi AWS CLI](https://docs.aws.amazon.com//cli/latest/userguide/cli-chap-configure.html).

Berdasarkan sistem operasi Anda, gunakan perintah berikut untuk menginstal artefak:

------
#### [ Windows 32-bit ]

```
aws s3 cp s3://sagemaker-edge-release-store-us-west-2-windows-x86/Releases/<VERSION>/<VERSION>.zip .
aws s3 cp s3://sagemaker-edge-release-store-us-west-2-windows-x86/Releases/<VERSION>/sha256_hex.shasum .
```

------
#### [ Windows 64-bit ]

```
aws s3 cp s3://sagemaker-edge-release-store-us-west-2-windows-x64/Releases/<VERSION>/<VERSION>.zip .
aws s3 cp s3://sagemaker-edge-release-store-us-west-2-windows-x64/Releases/<VERSION>/sha256_hex.shasum .
```

------
#### [ Linux x86-64 ]

```
aws s3 cp s3://sagemaker-edge-release-store-us-west-2-linux-x64/Releases/<VERSION>/<VERSION>.tgz .
aws s3 cp s3://sagemaker-edge-release-store-us-west-2-linux-x64/Releases/<VERSION>/sha256_hex.shasum .
```

------
#### [ Linux ARMv8 ]

```
aws s3 cp s3://sagemaker-edge-release-store-us-west-2-linux-armv8/Releases/<VERSION>/<VERSION>.tgz .
aws s3 cp s3://sagemaker-edge-release-store-us-west-2-linux-armv8/Releases/<VERSION>/sha256_hex.shasum .
```

------

Anda juga harus mengunduh sertifikat root. Sertifikat ini memvalidasi artefak model yang ditandatangani AWS sebelum memuatnya ke perangkat edge Anda.

Ganti `<OS>` yang sesuai dengan platform Anda dari daftar sistem operasi yang didukung dan ganti `<REGION>` dengan AWS Wilayah Anda.

```
aws s3 cp s3://sagemaker-edge-release-store-us-west-2-<OS>/Certificates/<REGION>/<REGION>.pem .
```

## Menjalankan agen Edge Manager
<a name="edge-device-fleet-running-agent"></a>

Anda dapat menjalankan agen SageMaker AI Edge Manager sebagai proses mandiri dalam bentuk biner executable Executable and Linkable Format (ELF) yang dapat dieksekusi atau Anda dapat menautkannya sebagai objek bersama dinamis (.dll). Linux mendukung menjalankannya sebagai biner yang dapat dieksekusi mandiri dan merupakan mode yang disukai. Windows mendukung menjalankannya sebagai objek bersama (.dll).

Di Linux, kami menyarankan Anda menjalankan biner melalui layanan yang merupakan bagian dari sistem inisialisasi (`init`) Anda. Jika Anda ingin menjalankan biner secara langsung, Anda dapat melakukannya di terminal seperti yang ditunjukkan pada contoh berikut. Jika Anda memiliki OS modern, tidak ada instalasi lain yang diperlukan sebelum menjalankan agen, karena semua persyaratan dibangun secara statis ke dalam executable. Ini memberi Anda fleksibilitas untuk menjalankan agen di terminal, sebagai layanan, atau di dalam wadah.

Untuk menjalankan agen, pertama buat file konfigurasi JSON. Tentukan pasangan kunci-nilai berikut:
+ `sagemaker_edge_core_device_name`: Nama perangkat. Nama perangkat ini harus didaftarkan bersama dengan armada perangkat di konsol SageMaker Edge Manager.
+ `sagemaker_edge_core_device_fleet_name`: Nama armada tempat perangkat tersebut berada.
+ `sagemaker_edge_core_region`: AWS Wilayah yang terkait dengan perangkat, armada, dan ember Amazon S3. Ini sesuai dengan Wilayah tempat perangkat terdaftar dan tempat bucket Amazon S3 dibuat (diharapkan sama). Model itu sendiri dapat dikompilasi dengan SageMaker Neo di Wilayah yang berbeda, konfigurasi ini tidak terkait dengan kompilasi model Wilayah.
+ `sagemaker_edge_core_root_certs_path`: Jalur folder absolut ke root certificate. Ini digunakan untuk memvalidasi perangkat dengan AWS akun yang relevan.
+ `sagemaker_edge_provider_aws_ca_cert_file`: Jalur absolut ke sertifikat Amazon Root CA (AmazonRootCA1.pem). Ini digunakan untuk memvalidasi perangkat dengan AWS akun yang relevan. `AmazonCA`adalah sertifikat yang dimiliki oleh AWS.
+ `sagemaker_edge_provider_aws_cert_file`: Jalur absolut untuk AWS IoT menandatangani root certificate (`*.pem.crt`).
+ `sagemaker_edge_provider_aws_cert_pk_file`: Jalur absolut ke kunci AWS IoT pribadi. (`*.pem.key`).
+ `sagemaker_edge_provider_aws_iot_cred_endpoint`: Titik akhir AWS IoT kredensial (.iot. *identifier* *region*.amazonaws.com). Endpoint ini digunakan untuk validasi kredensi. Lihat [Menghubungkan perangkat AWS IoT untuk](https://docs.aws.amazon.com/iot/latest/developerguide/iot-connect-devices.html) informasi selengkapnya.
+ `sagemaker_edge_provider_provider`: Ini menunjukkan implementasi antarmuka penyedia yang digunakan. Antarmuka penyedia berkomunikasi dengan layanan jaringan akhir untuk unggahan, detak jantung, dan validasi pendaftaran. Secara default ini diatur ke`"Aws"`. Kami mengizinkan implementasi khusus dari antarmuka penyedia. Ini dapat diatur ke `None` tanpa penyedia atau `Custom` untuk implementasi khusus dengan jalur objek bersama yang relevan yang disediakan.
+ `sagemaker_edge_provider_provider_path`: Menyediakan jalur absolut ke objek bersama implementasi penyedia. (.so atau berkas .dll). File .dll atau .so `"Aws"` penyedia disediakan dengan rilis agen. Bidang ini wajib.
+ `sagemaker_edge_provider_s3_bucket_name`: Nama bucket Amazon S3 Anda (bukan URI bucket Amazon S3). Bucket harus memiliki `sagemaker` string dalam namanya.
+ `sagemaker_edge_log_verbose`(Boolean.): Opsional. Ini menetapkan log debug. Pilih salah satu `True` atau`False`.
+ `sagemaker_edge_telemetry_libsystemd_path`: Hanya untuk Linux, `systemd` mengimplementasikan metrik penghitung kerusakan agen. Setel jalur absolut libsystemd untuk mengaktifkan metrik penghitung kerusakan. Anda dapat menemukan jalur libsystemd default dapat ditemukan dengan menjalankan `whereis libsystemd` di terminal perangkat.
+ `sagemaker_edge_core_capture_data_destination`: Tujuan untuk mengunggah data pengambilan. Pilih salah satu `"Cloud"` atau`"Disk"`. Default diatur ke `"Disk"`. Mengaturnya untuk `"Disk"` menulis tensor input dan output dan data tambahan ke sistem file lokal di lokasi pilihan Anda. Saat menulis untuk `"Cloud"` menggunakan nama bucket Amazon S3 yang disediakan dalam konfigurasi. `sagemaker_edge_provider_s3_bucket_name`
+ `sagemaker_edge_core_capture_data_disk_path`: Atur jalur absolut dalam sistem file lokal, di mana file data pengambilan `"Disk"` ditulis kapan tujuannya. Bidang ini tidak digunakan ketika `"Cloud"` ditentukan sebagai tujuan.
+ `sagemaker_edge_core_folder_prefix`: Awalan induk di Amazon S3 tempat data yang diambil disimpan saat Anda `"Cloud"` menentukan sebagai tujuan data pengambilan (. `sagemaker_edge_core_capture_data_disk_path)` Data yang diambil disimpan dalam sub-folder di bawah `sagemaker_edge_core_capture_data_disk_path` if `"Disk"` ditetapkan sebagai tujuan data.
+ `sagemaker_edge_core_capture_data_buffer_size`(Nilai integer): Ukuran buffer melingkar data tangkapan. Ini menunjukkan jumlah maksimum permintaan yang disimpan dalam buffer.
+ `sagemaker_edge_core_capture_data_batch_size`(Nilai integer): Ukuran batch data pengambilan. Ini menunjukkan ukuran batch permintaan yang ditangani dari buffer. Nilai ini harus kurang dari`sagemaker_edge_core_capture_data_buffer_size`. Maksimal setengah ukuran buffer direkomendasikan untuk ukuran batch.
+ `sagemaker_edge_core_capture_data_push_period_seconds`(Nilai integer): Periode push data capture dalam hitungan detik. Sejumlah permintaan dalam buffer ditangani ketika ada permintaan ukuran batch di buffer, atau ketika periode waktu ini telah selesai (mana yang lebih dulu). Konfigurasi ini menetapkan periode waktu tersebut.
+ `sagemaker_edge_core_capture_data_base64_embed_limit`: Batas untuk mengunggah data tangkapan dalam byte. Nilai integer.

File konfigurasi Anda akan terlihat mirip dengan contoh berikut (dengan nilai spesifik Anda ditentukan). Contoh ini menggunakan AWS penyedia default (`"Aws"`) dan tidak menentukan unggahan berkala.

```
{
    "sagemaker_edge_core_device_name": "device-name",
    "sagemaker_edge_core_device_fleet_name": "fleet-name",
    "sagemaker_edge_core_region": "region",
    "sagemaker_edge_core_root_certs_path": "<Absolute path to root certificates>",
    "sagemaker_edge_provider_provider": "Aws",
    "sagemaker_edge_provider_provider_path" : "/path/to/libprovider_aws.so",
    "sagemaker_edge_provider_aws_ca_cert_file": "<Absolute path to Amazon Root CA certificate>/AmazonRootCA1.pem",
    "sagemaker_edge_provider_aws_cert_file": "<Absolute path to AWS IoT signing root certificate>/device.pem.crt",
    "sagemaker_edge_provider_aws_cert_pk_file": "<Absolute path to AWS IoT private key.>/private.pem.key",
    "sagemaker_edge_provider_aws_iot_cred_endpoint": "https://<AWS IoT Endpoint Address>",
    "sagemaker_edge_core_capture_data_destination": "Cloud",
    "sagemaker_edge_provider_s3_bucket_name": "sagemaker-bucket-name",
    "sagemaker_edge_core_folder_prefix": "Amazon S3 folder prefix",
    "sagemaker_edge_core_capture_data_buffer_size": 30,
    "sagemaker_edge_core_capture_data_batch_size": 10,
    "sagemaker_edge_core_capture_data_push_period_seconds": 4000,
    "sagemaker_edge_core_capture_data_base64_embed_limit": 2,
    "sagemaker_edge_log_verbose": false
}
```

Artefak rilis mencakup executable biner yang disebut `sagemaker_edge_agent_binary` dalam direktori. `/bin` Untuk menjalankan biner, gunakan `-a` bendera untuk membuat deskriptor file soket (.sock) di direktori yang Anda pilih dan tentukan jalur file konfigurasi agen JSON yang Anda buat dengan bendera. `-c`

```
./sagemaker_edge_agent_binary -a <ADDRESS_TO_SOCKET> -c <PATH_TO_CONFIG_FILE>
```

Contoh berikut menunjukkan cuplikan kode dengan direktori dan jalur file yang ditentukan:

```
./sagemaker_edge_agent_binary -a /tmp/sagemaker_edge_agent_example.sock -c sagemaker_edge_config.json
```

Dalam contoh ini, deskriptor file soket bernama `sagemaker_edge_agent_example.sock` dibuat di `/tmp` direktori dan menunjuk ke file konfigurasi yang ada di direktori kerja yang sama dengan agen yang dipanggil`sagemaker_edge_config.json`.

# Model Package dan Edge Manager Agent Deployment dengan AWS IoT Greengrass
<a name="edge-greengrass"></a>

SageMaker Edge Manager mengintegrasikan AWS IoT Greengrass versi 2 untuk menyederhanakan akses, pemeliharaan, dan penerapan agen dan model Edge Manager ke perangkat Anda. Tanpa AWS IoT Greengrass V2, menyiapkan perangkat dan armada untuk menggunakan SageMaker Edge Manager mengharuskan Anda menyalin agen Edge Manager secara manual dari bucket rilis Amazon S3. Anda menggunakan agen untuk membuat prediksi dengan model yang dimuat ke perangkat tepi Anda. Dengan integrasi AWS IoT Greengrass V2 dan SageMaker Edge Manager, Anda dapat menggunakan komponen AWS IoT Greengrass V2. Komponen adalah modul perangkat lunak pra-bangun yang dapat menghubungkan perangkat edge Anda ke AWS layanan atau layanan pihak ketiga melalui AWS IoT Greengrass.

Anda harus menginstal perangkat lunak AWS IoT Greengrass Core ke perangkat Anda jika Anda ingin menggunakan AWS IoT Greengrass V2 untuk menyebarkan agen Edge Manager dan model Anda. Untuk informasi selengkapnya tentang persyaratan perangkat dan cara mengatur perangkat, lihat [Menyiapkan perangkat AWS IoT Greengrass inti](https://docs.aws.amazon.com/greengrass/v2/developerguide/setting-up.html) dalam AWS IoT Greengrass dokumentasi.

Anda menggunakan tiga komponen berikut untuk menyebarkan agen Edge Manager:
+ *Komponen publik pra-bangun: SageMaker AI mempertahankan komponen* Edge Manager publik.
+ *Komponen pribadi yang dibuat secara otomatis*: Komponen pribadi dibuat secara otomatis saat Anda mengemas model pembelajaran mesin dengan [https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateEdgePackagingJob.html](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateEdgePackagingJob.html)API dan menentukan bidang `GreengrassV2Component` Edge Manager API. `PresetDeploymentType`
+ *Komponen khusus*: Ini adalah aplikasi inferensi yang bertanggung jawab untuk memproses dan membuat kesimpulan di perangkat Anda. Anda harus membuat komponen ini. Lihat [Buat komponen kustom Hello World](edge-greengrass-custom-component.md#edge-greengrass-create-custom-component-how) di dokumentasi SageMaker Edge Manager atau [Buat AWS IoT Greengrass komponen kustom](https://docs.aws.amazon.com/greengrass/v2/developerguide/create-components.html) dalam AWS IoT Greengrass dokumentasi untuk informasi selengkapnya tentang cara membuat komponen kustom.

# Prasyarat lengkap untuk menyebarkan agen Edge Manager
<a name="edge-greengrass-prerequisites"></a>

SageMaker Edge Manager menggunakan AWS IoT Greengrass V2 untuk menyederhanakan penerapan agen Edge Manager, model pembelajaran mesin Anda, dan aplikasi inferensi Anda ke perangkat Anda dengan menggunakan komponen. Untuk mempermudah mempertahankan peran AWS IAM Anda, Edge Manager memungkinkan Anda untuk menggunakan kembali alias AWS IoT peran yang ada. Jika Anda belum memilikinya, Edge Manager menghasilkan alias peran sebagai bagian dari pekerjaan pengemasan Edge Manager. Anda tidak perlu lagi mengaitkan alias peran yang dihasilkan dari pekerjaan pengemasan SageMaker Edge Manager dengan AWS IoT peran Anda. 

Sebelum Anda mulai, Anda harus menyelesaikan prasyarat berikut:

1. Instal perangkat lunak AWS IoT Greengrass inti. Untuk informasi lebih lanjut, lihat [Menginstal perangkat lunak AWS IoT Greengrass Inti](https://docs.aws.amazon.com/greengrass/v2/developerguide/getting-started.html#install-greengrass-v2).

1. Mengatur AWS IoT Greengrass V2. Untuk informasi selengkapnya, lihat [Menginstal perangkat lunak AWS IoT Greengrass Inti dengan penyediaan sumber daya manual](https://docs.aws.amazon.com/greengrass/v2/developerguide/manual-installation.html).
**catatan**  
Pastikan nama AWS IoT benda semuanya huruf kecil dan tidak mengandung karakter kecuali (opsional) tanda hubung (). `‐`
Peran IAM harus dimulai dengan `SageMaker*`

1. Lampirkan izin dan kebijakan sebaris berikut ke peran IAM yang dibuat selama penyiapan AWS IoT Greengrass V2.
   + Arahkan ke konsol [https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/)IAM.
   + Cari peran yang Anda buat dengan mengetikkan nama peran di kolom **Pencarian**.
   + Pilih peran Anda.
   + Selanjutnya, pilih **Lampirkan kebijakan**.
   + Cari **AmazonSageMakerEdgeDeviceFleetPolicy**.
   + Pilih **AmazonSageMakerFullAccess**(Ini adalah langkah opsional yang memudahkan Anda untuk menggunakan kembali peran IAM ini dalam kompilasi dan pengemasan model).
   + Tambahkan izin yang diperlukan ke kebijakan izin peran, jangan lampirkan kebijakan sebaris ke pengguna IAM.

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

****  

     ```
     {
         "Version":"2012-10-17",		 	 	 
         "Statement":[
           {
             "Sid":"GreengrassComponentAccess",
             "Effect":"Allow",
             "Action":[
                 "greengrass:CreateComponentVersion",
                 "greengrass:DescribeComponent"
             ],
             "Resource":"*"
            }
         ]
     }
     ```

------
   + Pilih **Lampirkan kebijakan**.
   + Pilih **Hubungan kepercayaan**.
   + Pilih **Edit trust relationship** (Edit Hubungan Kepercayaan).
   + Ganti konten dengan yang berikut ini.

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

****  

     ```
     {
       "Version":"2012-10-17",		 	 	 
       "Statement": [
         {
           "Effect": "Allow",
           "Principal": {
             "Service": "credentials.iot.amazonaws.com"
           },
           "Action": "sts:AssumeRole"
         },
         {
           "Effect": "Allow",
           "Principal": {
             "Service": "sagemaker.amazonaws.com"
           },
           "Action": "sts:AssumeRole"
         }
       ]
     }
     ```

------

1. Buat armada perangkat Edge Manager. Untuk informasi tentang cara membuat armada, lihat[Pengaturan untuk Perangkat dan Armada di SageMaker Edge Manager](edge-device-fleet.md).

1. Daftarkan perangkat Anda dengan nama yang sama dengan nama AWS IoT benda Anda yang dibuat selama pengaturan AWS IoT Greengrass V2.

1. Buat setidaknya satu AWS IoT Greengrass komponen pribadi khusus. Komponen ini adalah aplikasi yang menjalankan inferensi pada perangkat. Untuk informasi selengkapnya, lihat [Buat komponen kustom Hello World](edge-greengrass-custom-component.md#edge-greengrass-create-custom-component-how)

**catatan**  
 SageMaker Edge Manager dan AWS IoT Greengrass integrasi hanya berfungsi untuk AWS IoT Greengrass v2.
Baik nama AWS IoT benda Anda dan nama perangkat Edge Manager harus sama.
SageMaker Edge Manager tidak memuat AWS IoT sertifikat lokal dan memanggil titik akhir penyedia AWS IoT kredensi secara langsung. Sebagai gantinya, SageMaker Edge Manager menggunakan AWS IoT Greengrass v2 TokenExchangeService dan mengambil kredensi sementara dari titik akhir TES.

# Buat Komponen AWS IoT Greengrass V2
<a name="edge-greengrass-custom-component"></a>

AWS IoT Greengrass menggunakan *komponen*, modul perangkat lunak yang digunakan dan berjalan pada perangkat AWS IoT Greengrass inti. Anda membutuhkan (minimal) tiga komponen:

1. * AWS IoT Greengrass Komponen Edge Manager Agent publik* yang menyebarkan agentbinary Edge Manager.

1. *Komponen model yang* dibuat secara otomatis saat Anda mengemas model pembelajaran mesin dengan AWS SDK untuk Python (Boto3) API atau dengan konsol SageMaker AI. Untuk informasi, lihat [Buat komponen yang dibuat secara otomatis](#edge-greengrass-autogenerate-component-how).

1. *Komponen pribadi dan kustom* untuk mengimplementasikan aplikasi klien agen Edge Manager, dan melakukan pra-pemrosesan dan pasca-pemrosesan hasil inferensi. Untuk informasi selengkapnya tentang cara membuat komponen kustom, lihat [Buat komponen yang dibuat secara otomatis](#edge-greengrass-autogenerate-component-how) atau [Membuat AWS IoT Greengrass komponen kustom](https://docs.aws.amazon.com/greengrass/v2/developerguide/create-components.html).

## Buat komponen yang dibuat secara otomatis
<a name="edge-greengrass-autogenerate-component-how"></a>

Buat komponen model dengan [https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateEdgePackagingJob.html](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateEdgePackagingJob.html)API dan tentukan `GreengrassV2Component` bidang API pekerjaan pengemasan SageMaker Edge Manager`PresetDeploymentType`. Saat Anda memanggil `CreateEdgePackagingJob` API, Edge Manager mengambil model SageMaker AI Neo yang dikompilasi di Amazon S3 dan membuat komponen model. Komponen model secara otomatis disimpan di akun Anda. Anda dapat melihat salah satu komponen Anda dengan menavigasi ke konsol. AWS IoT [https://console.aws.amazon.com/iot/](https://console.aws.amazon.com/greengrass/) **Pilih **Greengrass** dan kemudian pilih Perangkat inti.** Halaman ini memiliki daftar perangkat AWS IoT Greengrass inti yang terkait dengan akun Anda. Jika nama komponen model tidak ditentukan dalam`PresetDeploymentConfig`, nama default yang dihasilkan terdiri dari `"SagemakerEdgeManager"` dan nama pekerjaan pengemasan agen Edge Manager Anda. Contoh berikut menunjukkan cara menentukan ke Edge Manager untuk membuat komponen AWS IoT Greengrass V2 dengan `CreateEdgePackagingJob` API.

```
import sagemaker
import boto3

# Create a SageMaker client object to make it easier to interact with other AWS services.
sagemaker_client = boto3.client('sagemaker', region=<YOUR_REGION>)

# Replace with your IAM Role ARN
sagemaker_role_arn = "arn:aws:iam::<account>:role/*"

# Replace string with the name of your already created S3 bucket.
bucket = 'amzn-s3-demo-bucket-edge-manager'

# Specify a name for your edge packaging job.
edge_packaging_name = "edge_packag_job_demo" 

# Replace the following string with the name you used for the SageMaker Neo compilation job.
compilation_job_name = "getting-started-demo" 

# The name of the model and the model version.
model_name = "sample-model" 
model_version = "1.1"

# Output directory in S3 where you want to store the packaged model.
packaging_output_dir = 'packaged_models' 
packaging_s3_output = 's3://{}/{}'.format(bucket, packaging_output_dir)

# The name you want your Greengrass component to have.
component_name = "SagemakerEdgeManager" + edge_packaging_name

sagemaker_client.create_edge_packaging_job(
                    EdgePackagingJobName=edge_packaging_name,
                    CompilationJobName=compilation_job_name,
                    RoleArn=sagemaker_role_arn,
                    ModelName=model_name,
                    ModelVersion=model_version,
                    OutputConfig={
                        "S3OutputLocation": packaging_s3_output,
                        "PresetDeploymentType":"GreengrassV2Component",
                        "PresetDeploymentConfig":"{\"ComponentName\":\"sample-component-name\", \"ComponentVersion\":\"1.0.2\"}"
                        }
                    )
```

Anda juga dapat membuat komponen yang dibuat secara otomatis dengan konsol SageMaker AI. Ikuti langkah 1-6 di [Package a Model (Amazon SageMaker AI Console)](edge-packaging-job-console.md)

Masukkan URI bucket Amazon S3 tempat Anda ingin menyimpan output pekerjaan pengemasan dan kunci enkripsi opsional.

Lengkapi yang berikut ini untuk membuat komponen model:

1. Pilih **Penerapan prasetel**.

1. Tentukan nama komponen untuk bidang **Nama komponen**.

1. Secara opsional, berikan deskripsi komponen, versi komponen, OS platform, atau arsitektur platform untuk **deskripsi Komponen**, **versi Komponen**, **OS Platform**, dan **arsitektur Platform**.

1. Pilih **Kirim**.

## Buat komponen kustom Hello World
<a name="edge-greengrass-create-custom-component-how"></a>

Komponen aplikasi khusus digunakan untuk melakukan inferensi pada perangkat tepi. Komponen bertanggung jawab untuk memuat model ke SageMaker Edge Manager, memanggil agen Edge Manager untuk inferensi, dan membongkar model saat komponen dimatikan. Sebelum Anda membuat komponen Anda, pastikan agen dan aplikasi dapat berkomunikasi dengan Edge Manager. Untuk melakukan ini, konfigurasikan [gRPC](https://grpc.io/). Agen Edge Manager menggunakan metode yang didefinisikan dalam Protobuf Buffers dan server gRPC untuk menjalin komunikasi dengan aplikasi klien di perangkat edge dan cloud.

Untuk menggunakan gRPC, Anda harus:

1. Buat rintisan gRPC menggunakan file.proto yang disediakan saat Anda mengunduh agen Edge Manager dari bucket rilis Amazon S3.

1. Tulis kode klien dengan bahasa yang Anda inginkan.

Anda tidak perlu mendefinisikan layanan dalam file.proto. File.proto layanan disertakan dalam file TAR terkompresi saat Anda mengunduh biner rilis agen Edge Manager dari bucket rilis Amazon S3.

Instal gRPC dan alat lain yang diperlukan di mesin host Anda dan buat `agent_pb2_grpc.py` rintisan gRPC dan dengan Python. `agent_pb2.py` Pastikan Anda memiliki `agent.proto` direktori lokal Anda.

```
%%bash
pip install grpcio
pip install grpcio-tools
python3 -m grpc_tools.protoc --proto_path=. --python_out=. --grpc_python_out=. agent.proto
```

Kode sebelumnya menghasilkan klien gRPC dan antarmuka server dari definisi layanan.proto Anda. Dengan kata lain, itu menciptakan model gRPC dengan Python. Direktori API berisi spesifikasi Protobuf untuk berkomunikasi dengan agen.

Selanjutnya, gunakan gRPC API untuk menulis klien dan server untuk layanan Anda (2). Contoh skrip berikut,`edge_manager_python_example.py`, menggunakan Python untuk memuat, daftar, dan membongkar `yolov3` model ke perangkat edge.

```
import grpc
from PIL import Image
import agent_pb2
import agent_pb2_grpc
import os


model_path = '<PATH-TO-SagemakerEdgeManager-COMPONENT>' 
                    
agent_socket = 'unix:///tmp/aws.greengrass.SageMakerEdgeManager.sock'

agent_channel = grpc.insecure_channel(agent_socket, options=(('grpc.enable_http_proxy', 0),))

agent_client = agent_pb2_grpc.AgentStub(agent_channel)


def list_models():
    return agent_client.ListModels(agent_pb2.ListModelsRequest())


def list_model_tensors(models):
    return {
        model.name: {
            'inputs': model.input_tensor_metadatas,
            'outputs': model.output_tensor_metadatas
        }
        for model in list_models().models
    }


def load_model(model_name, model_path):
    load_request = agent_pb2.LoadModelRequest()
    load_request.url = model_path
    load_request.name = model_name
    return agent_client.LoadModel(load_request)


def unload_model(name):
    unload_request = agent_pb2.UnLoadModelRequest()
    unload_request.name = name
    return agent_client.UnLoadModel(unload_request)


def predict_image(model_name, image_path):
    image_tensor = agent_pb2.Tensor()
    image_tensor.byte_data = Image.open(image_path).tobytes()
    image_tensor_metadata = list_model_tensors(list_models())[model_name]['inputs'][0]
    image_tensor.tensor_metadata.name = image_tensor_metadata.name
    image_tensor.tensor_metadata.data_type = image_tensor_metadata.data_type
    for shape in image_tensor_metadata.shape:
        image_tensor.tensor_metadata.shape.append(shape)
    predict_request = agent_pb2.PredictRequest()
    predict_request.name = model_name
    predict_request.tensors.append(image_tensor)
    predict_response = agent_client.Predict(predict_request)
    return predict_response

def main():
    try:
        unload_model('your-model')
    except:
        pass
  
    print('LoadModel...', end='')
    try:
        load_model('your-model', model_path)
        print('done.')
    except Exception as e:
        print()
        print(e)
        print('Model already loaded!')
        
    print('ListModels...', end='')
    try:
        print(list_models())
        print('done.')
        
    except Exception as e:
        print()
        print(e)
        print('List model failed!')
       
    print('Unload model...', end='')
    try:
        unload_model('your-model')
        print('done.')
    except Exception as e:
        print()
        print(e)
        print('unload model failed!')

if __name__ == '__main__':
    main()
```

Pastikan `model_path` menunjuk ke nama AWS IoT Greengrass komponen yang berisi model jika Anda menggunakan contoh kode klien yang sama.

Anda dapat membuat komponen Hello World AWS IoT Greengrass V2 Anda setelah Anda membuat stub gRPC Anda dan Anda memiliki kode Hello World Anda siap. Untuk melakukannya:
+ Unggah bucket Anda `edge_manager_python_example.py``agent_pb2_grpc.py`,, dan `agent_pb2.py` ke Amazon S3 Anda dan catat jalur Amazon S3 mereka.
+ Buat komponen pribadi di konsol AWS IoT Greengrass V2 dan tentukan resep untuk komponen Anda. Tentukan URI Amazon S3 ke aplikasi Hello World dan rintisan gRPC Anda dalam resep berikut.

  ```
  ---
  RecipeFormatVersion: 2020-01-25
  ComponentName: com.sagemaker.edgePythonExample
  ComponentVersion: 1.0.0
  ComponentDescription: Sagemaker Edge Manager Python example
  ComponentPublisher: Amazon Web Services, Inc.
  ComponentDependencies:
    aws.greengrass.SageMakerEdgeManager:
      VersionRequirement: '>=1.0.0'
      DependencyType: HARD
  Manifests:
    - Platform:
        os: linux
        architecture: "/amd64|x86/"
      Lifecycle:
        install: |-
          apt-get install python3-pip
          pip3 install grpcio
          pip3 install grpcio-tools
          pip3 install protobuf
          pip3 install Pillow
        run:
          script: |- 
            python3 {artifacts:path}/edge_manager_python_example.py
      Artifacts:
        - URI: <code-s3-path>
        - URI: <pb2-s3-path>
        - URI: <pb2-grpc-s3-path>
  ```

Untuk informasi rinci tentang membuat resep Hello World, lihat [Membuat komponen pertama Anda](https://docs.aws.amazon.com/greengrass/v2/developerguide/getting-started.html#create-first-component) dalam AWS IoT Greengrass dokumentasi.

# Menerapkan komponen ke perangkat Anda
<a name="edge-greengrass-deploy-components"></a>

Terapkan komponen Anda dengan AWS IoT konsol atau dengan. AWS CLI

## Untuk men-deploy komponen Anda (konsol)
<a name="collapsible-section-gg-deploy-console"></a>

Terapkan AWS IoT Greengrass komponen Anda dengan AWS IoT konsol.

1. Di AWS IoT Greengrass konsol di menu [https://console.aws.amazon.com/iot/](https://console.aws.amazon.com/greengrass/)navigasi, pilih **Deployment**.

1. Pada halaman **Komponen**, pada tab **Komponen publik**, pilih `aws.greengrass.SageMakerEdgeManager`.

1. Pada halaman `aws.greengrass.SageMakerEdgeManager` pilih **Deploy**.

1. Dari`Add to deployment`, pilih salah satu dari berikut ini:

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

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

1. Di halaman **Tentukan target**, lakukan hal berikut:

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

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

1. Pada halaman **Pilih komponen**, di bawah **Komponen saya**, pilih:
   + com. *<CUSTOM-COMPONENT-NAME>*
   + `aws.greengrass.SageMakerEdgeManager`
   + SagemakerEdgeManager.*<YOUR-PACKAGING-JOB>*

1. Pada halaman **Configure components**, pilih **com.greengrass. SageMakerEdgeManager**, dan lakukan hal berikut.

   1. Pilih **Konfigurasi komponen**.

   1. Di bawah **Pembaruan konfigurasi**, di **Konfigurasi untuk menggabungkan**, masukkan konfigurasi berikut.

      ```
      {
          "DeviceFleetName": "device-fleet-name",
          "BucketName": "bucket-name"
      }
      ```

      Ganti *`device-fleet-name`* dengan nama armada perangkat edge yang Anda buat, dan ganti *`bucket-name`* dengan nama bucket Amazon S3 yang terkait dengan armada perangkat Anda.

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

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

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

## Untuk men-deploy komponen Anda (AWS CLI)
<a name="collapsible-section-gg-deploy-cli"></a>

1. Buat ` deployment.json` file untuk menentukan konfigurasi penerapan untuk komponen SageMaker Edge Manager Anda. File ini akan terlihat seperti contoh berikut.

   ```
   {
     "targetArn":"targetArn",
     "components": {
       "aws.greengrass.SageMakerEdgeManager": {
         "componentVersion": 1.0.0,
         "configurationUpdate": {
           "merge": {
             "DeviceFleetName": "device-fleet-name",
             "BucketName": "bucket-name"
           }
         }
       },
       "com.greengrass.SageMakerEdgeManager.ImageClassification": {
         "componentVersion": 1.0.0,
         "configurationUpdate": {
         }
       }, 
       "com.greengrass.SageMakerEdgeManager.ImageClassification.Model": {
         "componentVersion": 1.0.0,
         "configurationUpdate": {
         }
       }, 
     }
   }
   ```
   + Di kolom `targetArn`, ganti *`targetArn`* dengan Amazon Resource Name (ARN) dari grup objek atau objek yang ditargetkan untuk deployment tersebut, dalam format berikut:
     + Objek: `arn:aws:iot:region:account-id:thing/thingName`
     + Grup objek: `arn:aws:iot:region:account-id:thinggroup/thingGroupName`
   + Di `merge` bidang, ganti *`device-fleet-name`* dengan nama armada perangkat edge yang Anda buat, dan ganti *`bucket-name`* dengan nama bucket Amazon S3 yang terkait dengan armada perangkat Anda.
   + Ganti versi komponen untuk setiap komponen dengan versi terbaru yang tersedia.

1. Jalankan perintah berikut untuk men-deploy komponen pada perangkat:

   ```
   aws greengrassv2 create-deployment \
       --cli-input-json file://path/to/deployment.json
   ```

Deployment ini dapat memakan waktu beberapa menit hingga selesai. Pada langkah berikutnya, periksa log komponen untuk memverifikasi bahwa deployment tersebut berhasil diselesaikan dan untuk melihat hasil inferensi.

Untuk informasi selengkapnya tentang penerapan komponen ke perangkat individual atau grup perangkat, lihat [Menerapkan AWS IoT Greengrass komponen ke](https://docs.aws.amazon.com/greengrass/v2/developerguide/manage-deployments.html) perangkat.

# Menerapkan Paket Model Langsung dengan SageMaker Edge Manager Deployment API
<a name="edge-deployment-plan-api"></a>

SageMaker Edge Manager menyediakan API penerapan yang dapat Anda gunakan untuk menerapkan model ke target perangkat tanpa. AWS IoT Greengrass Ini berguna dalam situasi di mana Anda ingin memperbarui model secara independen dari pembaruan firmware atau mekanisme penyebaran aplikasi. Anda dapat menggunakan API untuk mengintegrasikan penerapan edge Anda ke dalam CI/CD alur kerja untuk menerapkan model secara otomatis setelah Anda memvalidasi model untuk akurasi. API juga memiliki opsi rollback dan peluncuran bertahap yang nyaman bagi Anda untuk memastikan model bekerja dengan baik di lingkungan tertentu sebelum peluncuran yang lebih luas.

Untuk menggunakan API penerapan Edge Manager, pertama-tama kompilasi dan paket model Anda. Untuk informasi tentang cara mengkompilasi dan mengemas model Anda, lihat[Siapkan Model Anda untuk Deployment](edge-getting-started-step2.md). Bagian berikut dari panduan ini menunjukkan bagaimana Anda dapat membuat penerapan tepi menggunakan SageMaker API, setelah Anda mengkompilasi dan mengemas model Anda.

**Topics**
+ [

## Buat rencana penyebaran tepi
](#create-edge-deployment-plan)
+ [

## Mulai penyebaran tepi
](#start-edge-deployment-stage)
+ [

## Periksa status penyebaran
](#describe-edge-deployment-status)

## Buat rencana penyebaran tepi
<a name="create-edge-deployment-plan"></a>

Anda dapat membuat rencana penerapan tepi dengan [https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateEdgeDeploymentPlan.html](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateEdgeDeploymentPlan.html)API. Rencana penyebaran dapat memiliki beberapa tahap. Anda dapat mengonfigurasi setiap tahap untuk meluncurkan penerapan ke subset perangkat edge (berdasarkan persentase, atau berdasarkan nama perangkat). Anda juga dapat mengonfigurasi bagaimana kegagalan peluncuran ditangani pada setiap tahap.

Cuplikan kode berikut menunjukkan bagaimana Anda dapat membuat rencana penyebaran tepi dengan 1 tahap untuk menerapkan model yang dikompilasi dan paket ke 2 perangkat tepi tertentu:

```
import boto3

client = boto3.client("sagemaker")

client.create_edge_deployment_plan(
    EdgeDeploymentPlanName="edge-deployment-plan-name",
    DeviceFleetName="device-fleet-name",
    ModelConfigs=[
        {
            "EdgePackagingJobName": "edge-packaging-job-name",
            "ModelHandle": "model-handle"
        }
    ],
    Stages=[
        {
            "StageName": "stage-name",
            "DeviceSelectionConfig": {
                "DeviceSubsetType": "SELECTION",
                "DeviceNames": ["device-name-1", "device-name-2"]
            },
            "DeploymentConfig": {
                "FailureHandlingPolicy": "ROLLBACK_ON_FAILURE"
            }
        }
    ]
)
```

Alih-alih perangkat tertentu, jika Anda ingin menyebarkan ke model ke persentase perangkat di armada Anda, maka tetapkan nilai `DeviceSubsetType` to `"PERCENTAGE"` dan ganti `"DeviceNames": ["device-name-1", "device-name-2"]` dengan contoh `"Percentage": desired-percentage` di atas.

Tahapan dapat ditambahkan setelah rencana penerapan dibuat dengan [CreateEdgeDeploymentStage](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateEdgeDeploymentStage.html)API, jika Anda ingin mulai meluncurkan tahapan baru setelah memvalidasi keberhasilan peluncuran pengujian Anda. [Untuk informasi selengkapnya tentang tahapan penerapan, lihatDeploymentStage.](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_DeploymentStage.html)

## Mulai penyebaran tepi
<a name="start-edge-deployment-stage"></a>

Setelah membuat rencana penerapan dan tahapan penerapan, Anda dapat memulai penerapan dengan API. [https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_StartEdgeDeploymentStage.html](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_StartEdgeDeploymentStage.html)

```
client.start_edge_deployment_stage(
    EdgeDeploymentPlanName="edge-deployment-plan-name",
    StageName="stage-name"
)
```

## Periksa status penyebaran
<a name="describe-edge-deployment-status"></a>

Anda dapat memeriksa status penerapan tepi dengan [DescribeEdgeDeploymentPlan](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_DescribeEdgeDeploymentPlan.html)API.

```
client.describe_edge_deployment_plan(
    EdgeDeploymentPlanName="edge-deployment-plan-name"
)
```