Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.
Buat Komponen AWS IoT Greengrass V2
AWS IoT Greengrass menggunakan komponen, modul perangkat lunak yang digunakan dan berjalan pada perangkat AWS IoT Greengrass inti. Anda membutuhkan (minimal) tiga komponen:
-
AWS IoT Greengrass Komponen Edge Manager Agent publik yang menyebarkan agentbinary Edge Manager.
-
Komponen model yang dibuat secara otomatis saat Anda mengemas model pembelajaran mesin dengan AWS SDK for Python (Boto3) API atau dengan konsol SageMaker AI. Untuk informasi, lihat Buat komponen yang dibuat secara otomatis.
-
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 atau Membuat AWS IoT Greengrass komponen kustom.
Buat komponen yang dibuat secara otomatis
Buat komponen model dengan CreateEdgePackagingJob
API dan tentukan GreengrassV2Component
bidang API pekerjaan pengemasan SageMaker Edge ManagerPresetDeploymentType
. 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/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)
Masukkan URI bucket Amazon S3 tempat Anda ingin menyimpan output pekerjaan pengemasan dan kunci enkripsi opsional.
Lengkapi yang berikut ini untuk membuat komponen model:
-
Pilih Penerapan prasetel.
-
Tentukan nama komponen untuk bidang Nama komponen.
-
Secara opsional, berikan deskripsi komponen, versi komponen, OS platform, atau arsitektur platform untuk deskripsi Komponen, versi Komponen, OS Platform, dan arsitektur Platform.
-
Pilih Kirim.
Buat komponen kustom Hello World
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
Untuk menggunakan gRPC, Anda harus:
-
Buat rintisan gRPC menggunakan file.proto yang disediakan saat Anda mengunduh agen Edge Manager dari bucket rilis Amazon S3.
-
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 =
'
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()<PATH-TO-SagemakerEdgeManager-COMPONENT>
'
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
,, danagent_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 dalam AWS IoT Greengrass dokumentasi.