

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

# Kompilasi Model
<a name="neo-getting-started-edge-step1"></a>

Setelah Anda memenuhi [Prasyarat](https://docs.aws.amazon.com/sagemaker/latest/dg/neo-getting-started-edge.html#neo-getting-started-edge-step0), 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](https://boto3.amazonaws.com/v1/documentation/api/latest/index.html) Mengompilasi Model.](https://docs.aws.amazon.com/sagemaker/latest/dg/neo-job-compilation.html) Dalam contoh ini, Anda akan mengkompilasi model Anda dengan Boto3.

Untuk mengkompilasi model, SageMaker Neo memerlukan informasi berikut:

1.  **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 CLI

   ```
   aws s3 ls
   ```

   Contoh: 

   ```
   $ aws s3 ls
   2020-11-02 17:08:50 bucket
   ```

1.  **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'
   ```

1.  **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` atau`tensorflow`. Gunakan `tflite` 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](https://docs.aws.amazon.com/sagemaker/latest/dg/neo-supported-devices-edge.html). 

1.  **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 dan `key` merupakan nama yang tepat dari tensor input dalam model. 

   ```
   data_shape = '{"name": [tensor-shape]}'
   ```

   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?](https://docs.aws.amazon.com/sagemaker/latest/dg/neo-job-compilation.html#neo-job-compilation-expected-inputs) Kunci dalam kamus ini harus diubah menjadi nama tensor input baru.

1.  **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](https://docs.aws.amazon.com/sagemaker/latest/dg/neo-supported-devices-edge.html) 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)
```