Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.
Setelah Anda memenuhi Prasyarat, Anda dapat mengkompilasi model Anda dengan Amazon AI Neo. SageMaker Anda dapat mengompilasi model menggunakan konsol AWS CLI, atau Amazon Web Services SDK for Python (Boto3), lihat Menggunakan Neo untuk
Untuk mengkompilasi model, SageMaker Neo memerlukan informasi berikut:
-
URI bucket Amazon S3 tempat Anda menyimpan model terlatih.
Jika Anda mengikuti prasyarat, nama bucket Anda disimpan dalam variabel bernama.
bucket
Cuplikan kode berikut menunjukkan cara membuat daftar semua bucket Anda menggunakan: AWS CLIaws s3 ls
Sebagai contoh:
$ aws s3 ls 2020-11-02 17:08:50 bucket
-
URI bucket Amazon S3 tempat Anda ingin menyimpan model yang dikompilasi.
Cuplikan kode di bawah ini menggabungkan URI bucket Amazon S3 Anda dengan nama direktori keluaran yang disebut:
output
s3_output_location = f's3://{bucket}/output'
-
Kerangka pembelajaran mesin yang Anda gunakan untuk melatih model Anda.
Tentukan kerangka kerja yang Anda gunakan untuk melatih model Anda.
framework = 'framework-name'
Misalnya, jika Anda ingin mengkompilasi model yang dilatih menggunakan TensorFlow, Anda dapat menggunakan
tflite
atautensorflow
. Gunakantflite
jika Anda ingin menggunakan versi yang lebih ringan TensorFlow yang menggunakan lebih sedikit memori penyimpanan.framework = 'tflite'
Untuk daftar lengkap kerangka kerja yang didukung NEO, lihat Kerangka Kerja, Perangkat, Sistem, dan Arsitektur yang Didukung.
-
Bentuk input model Anda.
Neo membutuhkan nama dan bentuk tensor input Anda. Nama dan bentuk diteruskan sebagai pasangan kunci-nilai.
value
adalah daftar dimensi integer dari tensor input dankey
merupakan nama yang tepat dari tensor input dalam model.data_shape = '{"name": [tensor-shape]}'
Sebagai contoh:
data_shape = '{"normalized_input_image_tensor":[1, 300, 300, 3]}'
catatan
Pastikan model diformat dengan benar tergantung pada kerangka kerja yang Anda gunakan. Lihat Bentuk data input apa yang diharapkan SageMaker Neo? Kunci dalam kamus ini harus diubah menjadi nama tensor input baru.
-
Baik nama perangkat target untuk dikompilasi atau rincian umum platform perangkat keras
target_device =
'target-device-name'
Misalnya, jika Anda ingin menyebarkan ke Raspberry Pi 3, gunakan:
target_device = 'rasp3b'
Anda dapat menemukan seluruh daftar perangkat edge yang didukung di Kerangka Kerja, Perangkat, Sistem, dan Arsitektur yang Didukung.
Sekarang setelah Anda menyelesaikan langkah-langkah sebelumnya, Anda dapat mengirimkan pekerjaan kompilasi ke Neo.
# Create a SageMaker client so you can submit a compilation job
sagemaker_client = boto3.client('sagemaker', region_name=AWS_REGION)
# Give your compilation job a name
compilation_job_name = 'getting-started-demo'
print(f'Compilation job for {compilation_job_name} started')
response = sagemaker_client.create_compilation_job(
CompilationJobName=compilation_job_name,
RoleArn=role_arn,
InputConfig={
'S3Uri': s3_input_location,
'DataInputConfig': data_shape,
'Framework': framework.upper()
},
OutputConfig={
'S3OutputLocation': s3_output_location,
'TargetDevice': target_device
},
StoppingCondition={
'MaxRuntimeInSeconds': 900
}
)
# Optional - Poll every 30 sec to check completion status
import time
while True:
response = sagemaker_client.describe_compilation_job(CompilationJobName=compilation_job_name)
if response['CompilationJobStatus'] == 'COMPLETED':
break
elif response['CompilationJobStatus'] == 'FAILED':
raise RuntimeError('Compilation failed')
print('Compiling ...')
time.sleep(30)
print('Done!')
Jika Anda menginginkan informasi tambahan untuk debugging, sertakan pernyataan cetak berikut:
print(response)
Jika pekerjaan kompilasi berhasil, model yang dikompilasi akan disimpan di bucket Amazon S3 keluaran yang Anda tentukan sebelumnya s3_output_location
(). Unduh model kompilasi Anda secara lokal:
object_path = f'output/{model}-{target_device}.tar.gz'
neo_compiled_model = f'compiled-{model}.tar.gz'
s3_client.download_file(bucket, object_path, neo_compiled_model)