

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

# Buat pekerjaan pengoptimalan inferensi
<a name="model-optimize-create-job"></a>

Anda dapat membuat pekerjaan pengoptimalan inferensi dengan menggunakan Studio atau SageMaker AI Python SDK. Pekerjaan mengoptimalkan model Anda dengan menerapkan teknik yang Anda pilih. Untuk informasi selengkapnya, lihat [Teknik pengoptimalan](model-optimize.md#optimization-techniques).

**Penetapan harga instans untuk pekerjaan pengoptimalan inferensi**  
Saat Anda membuat pekerjaan pengoptimalan inferensi yang menerapkan kuantisasi atau kompilasi, SageMaker AI memilih jenis instans mana yang akan digunakan untuk menjalankan pekerjaan. Anda dikenakan biaya berdasarkan instance yang digunakan.  
Untuk jenis instans yang mungkin dan detail harganya, lihat informasi harga pengoptimalan inferensi di halaman [ SageMaker harga Amazon](https://aws.amazon.com/sagemaker/pricing/).  
Anda tidak dikenakan biaya tambahan untuk pekerjaan yang menerapkan decoding spekulatif.

Untuk model yang didukung yang dapat Anda optimalkan, lihat[Referensi model yang didukung](optimization-supported-models.md).

## SageMaker Studio Amazon
<a name="optimize-create-studio"></a>

Selesaikan langkah-langkah berikut untuk membuat pekerjaan pengoptimalan inferensi di Studio.

**Untuk mulai membuat pekerjaan optimasi**

1. Di SageMaker AI Studio, buat pekerjaan pengoptimalan melalui salah satu jalur berikut:
   + Untuk membuat pekerjaan untuk JumpStart model, lakukan hal berikut:

     1. Di menu navigasi, pilih **JumpStart**.

     1. Pada halaman **Semua model publik**, pilih penyedia model, lalu pilih salah satu model yang mendukung pengoptimalan.

     1. Pada halaman detail model, pilih **Optimalkan**. Tombol ini diaktifkan hanya untuk model yang mendukung optimasi.

     1. Pada halaman **pekerjaan Buat pengoptimalan inferensi**, beberapa JumpStart model mengharuskan Anda menandatangani perjanjian lisensi pengguna akhir (EULA) sebelum Anda dapat melanjutkan. Jika diminta, tinjau persyaratan lisensi di bagian **Perjanjian Lisensi**. Jika persyaratan dapat diterima untuk kasus penggunaan Anda, pilih kotak centang untuk **Saya menerima EULA, dan baca syarat dan ketentuan**.
   + Untuk membuat pekerjaan untuk JumpStart model yang disetel dengan baik, lakukan hal berikut:

     1. Di menu navigasi, di bawah **Pekerjaan**, pilih **Pelatihan**.

     1. Pada halaman **Training Jobs**, pilih nama pekerjaan yang Anda gunakan untuk menyempurnakan JumpStart model. Pekerjaan ini memiliki jenis **JumpStartpelatihan** di kolom **Jenis Job**.

     1. Pada halaman detail untuk pekerjaan pelatihan, pilih **Optimalkan**.
   + Untuk membuat pekerjaan untuk model kustom, lakukan hal berikut:

     1. Di menu navigasi, di bawah **Jobs**, pilih **Optimasi inferensi**.

     1. Pilih **Buat pekerjaan baru**.

     1. Pada halaman **pekerjaan Buat optimasi inferensi**, pilih **Tambah model**.

     1. Di jendela **Tambah model**, pilih **Model Kustom**.

     1. Pilih salah satu opsi berikut:

        **Gunakan model yang ada** - Pilih opsi ini untuk mengoptimalkan model yang telah Anda buat di SageMaker AI.

        **Nama model yang ada** - masukkan nama model SageMaker AI Anda.

        **Dari S3** - Pilih opsi ini untuk menyediakan artefak model dari Amazon S3. Untuk **URI S3**, masukkan URI untuk lokasi di Amazon S3 tempat Anda menyimpan artefak model.

     1. (Opsional) Untuk ****nama model Output****, Anda dapat memasukkan nama khusus untuk model yang dioptimalkan yang dibuat oleh pekerjaan. Jika Anda tidak memberikan nama, Studio secara otomatis membuatnya berdasarkan pilihan Anda.

1. Pada halaman **pekerjaan Buat optimasi inferensi**, untuk **nama Job**, Anda dapat menerima nama default yang diberikan SageMaker AI. Atau, untuk memasukkan nama pekerjaan khusus, pilih bidang **Nama pekerjaan**, dan pilih **Masukkan nama pekerjaan**.

**Untuk mengatur konfigurasi optimasi**

1. Untuk **jenis instance Deployment**, pilih jenis instance yang ingin Anda optimalkan modelnya.

   Jenis instans memengaruhi teknik pengoptimalan apa yang dapat Anda pilih. **Untuk sebagian besar jenis yang menggunakan perangkat keras GPU, teknik yang didukung adalah **Quantization** dan Speculative decoding.** Jika Anda memilih instance yang menggunakan silikon khusus, seperti instance AWS Inferentia ml.inf2.8xlarge, teknik yang didukung adalah **Kompilasi, yang dapat Anda gunakan untuk mengkompilasi** model untuk jenis perangkat keras tertentu.

1. Pilih satu atau beberapa teknik pengoptimalan yang disediakan Studio:
   + Jika Anda memilih **Kuantisasi**, pilih tipe data untuk tipe **data presisi**. 
   + Jika Anda memilih **decoding spekulatif**, pilih salah satu opsi berikut:
     + **Gunakan model draf SageMaker AI** — Pilih untuk menggunakan model draf yang disediakan SageMaker AI.
**catatan**  
Jika Anda memilih untuk menggunakan model draf SageMaker AI, Anda juga harus mengaktifkan isolasi jaringan. Studio menyediakan opsi ini di bawah **Keamanan**.
     + **Pilih model JumpStart draf** — Pilih untuk memilih model dari JumpStart katalog yang akan digunakan sebagai model draf Anda.
     + **Pilih model draf Anda sendiri** — Pilih untuk menggunakan model draf Anda sendiri, dan berikan URI S3 yang menempatkannya.
   + Jika Anda memilih **Pemuatan model cepat**, Studio menunjukkan variabel `OPTION_TENSOR_PARALLEL_DEGREE` lingkungan. Gunakan bidang **Nilai** untuk mengatur derajat paralelisme tensor. Nilai harus membagi secara merata jumlah GPUs dalam instance yang Anda pilih untuk **jenis instance Deployment**. Misalnya, untuk membelah model Anda saat menggunakan instance dengan 8 GPUs, gunakan nilai 2, 4, atau 8.
   + Jika Anda menyetel **jenis instance Deployment** ke instance AWS Inferentia atau AWS Trainium, Studio mungkin menunjukkan bahwa **Kompilasi** adalah salah satu opsi yang didukung. Dalam hal ini, Studio memilih opsi ini untuk Anda.

1. Untuk **Output**, masukkan URI lokasi di Amazon S3. Di sana, SageMaker AI menyimpan artefak dari model yang dioptimalkan yang dibuat oleh pekerjaan Anda.

1. (Opsional) Perluas **opsi lanjutan** untuk kontrol yang lebih halus atas pengaturan seperti peran IAM, VPC, dan variabel lingkungan. Untuk informasi selengkapnya, lihat *Opsi lanjutan* di bawah ini.

1. Setelah selesai mengonfigurasi pekerjaan, pilih **Buat pekerjaan**.

   Studio menampilkan halaman detail pekerjaan, yang menunjukkan status pekerjaan dan semua pengaturannya.

### Opsi lanjutan
<a name="set-advanced-optimization-options"></a>

Anda dapat mengatur opsi lanjutan berikut saat membuat pekerjaan pengoptimalan inferensi.

Di bawah **Konfigurasi**, Anda dapat mengatur opsi berikut:

**Derajat paralel tensor **  
Nilai untuk tingkat *paralelisme tensor*. Paralelisme tensor adalah jenis paralelisme model di mana bobot model tertentu, gradien, dan status pengoptimal dibagi di seluruh perangkat. Nilai harus merata membagi jumlah GPUs di cluster Anda.

**Panjang token maksimum**  
Batas jumlah token yang akan dihasilkan oleh model. Perhatikan bahwa model mungkin tidak selalu menghasilkan jumlah token maksimum.

**Bersamaan**  
Kemampuan untuk menjalankan beberapa contoh model pada perangkat keras dasar yang sama. Gunakan konkurensi untuk menyajikan prediksi kepada banyak pengguna dan untuk memaksimalkan pemanfaatan perangkat keras.

**Ukuran batch**  
Jika model Anda melakukan *inferensi batch*, gunakan opsi ini untuk mengontrol ukuran batch yang diproses model Anda.  
Inferensing Batch menghasilkan prediksi model pada batch pengamatan. Ini adalah pilihan yang baik untuk kumpulan data besar atau jika Anda tidak memerlukan respons langsung terhadap permintaan inferensi. 

Di bawah **Keamanan**, Anda dapat mengatur opsi berikut:

**IAM Role**  
Peran IAM yang memungkinkan SageMaker AI melakukan tugas atas nama Anda. Selama pengoptimalan model, SageMaker AI memerlukan izin Anda untuk:  
+ Baca data masukan dari bucket S3
+ Tulis artefak model ke ember S3
+ Menulis log ke Amazon CloudWatch Logs
+ Publikasikan metrik ke Amazon CloudWatch
Anda memberikan izin untuk semua tugas ini ke peran IAM.  
Untuk informasi selengkapnya, lihat [Cara menggunakan peran eksekusi SageMaker AI](sagemaker-roles.md).

**Kunci KMS enkripsi**  
Sebuah kunci dalam AWS Key Management Service (AWS KMS). SageMaker AI menggunakan kunci mereka untuk mengenkripsi artefak model yang dioptimalkan saat SageMaker AI mengunggah model ke Amazon S3.

**VPC**  
SageMaker AI menggunakan informasi ini untuk membuat antarmuka jaringan dan melampirkannya ke wadah model Anda. Antarmuka jaringan menyediakan wadah model Anda dengan koneksi jaringan dalam VPC Anda yang tidak terhubung ke internet. Mereka juga memungkinkan model Anda terhubung ke sumber daya di VPC pribadi Anda.  
Untuk informasi selengkapnya, lihat [Berikan Akses Titik Akhir yang Dihosting SageMaker AI ke Sumber Daya di VPC Amazon Anda](host-vpc.md).

**Aktifkan isolasi jaringan**  
Aktifkan opsi ini jika Anda ingin membatasi akses internet kontainer Anda. Kontainer yang berjalan dengan isolasi jaringan tidak dapat melakukan panggilan jaringan keluar.  
Anda harus mengaktifkan opsi ini ketika Anda mengoptimalkan dengan decoding spekulatif dan Anda menggunakan model draf AI. SageMaker   
Untuk informasi selengkapnya tentang isolasi jaringan, lihat[Isolasi Jaringan](mkt-algo-model-internet-free.md#mkt-algo-model-internet-free-isolation).

Di bawah **Definisi kontainer lanjutan**, Anda dapat mengatur opsi berikut:

**Kondisi berhenti**  
Menentukan batas untuk berapa lama pekerjaan dapat berjalan. Ketika pekerjaan mencapai batas waktu, SageMaker AI mengakhiri pekerjaan. Gunakan opsi ini untuk membatasi biaya.

**Tag**  
Pasangan nilai kunci yang terkait dengan pekerjaan pengoptimalan.  
Untuk informasi selengkapnya tentang tag, lihat [Menandai AWS sumber daya Anda](https://docs.aws.amazon.com/tag-editor/latest/userguide/tagging.html) di. *Referensi Umum AWS*

**Variabel-variabel lingkungan**  
Pasangan kunci-nilai yang menentukan variabel lingkungan untuk diatur dalam wadah model.

## SageMaker SDK Python AI
<a name="optimize-create-pysdk"></a>

Anda dapat membuat pekerjaan pengoptimalan inferensi dengan menggunakan SageMaker AI Python SDK dalam proyek Anda. Pertama, Anda mendefinisikan sebuah `Model` instance dengan menggunakan `ModelBuilder` kelas. Kemudian, Anda menggunakan `optimize()` metode ini untuk menjalankan pekerjaan yang mengoptimalkan model Anda dengan kuantisasi, decoding spekulatif, atau kompilasi. Ketika pekerjaan selesai, Anda menerapkan model ke titik akhir inferensi dengan menggunakan metode. `deploy()`

Untuk informasi selengkapnya tentang kelas dan metode yang digunakan dalam contoh berikut, lihat [APIs](https://sagemaker.readthedocs.io/en/stable/api/index.html)di dokumentasi SageMaker AI Python SDK.

**Untuk menyiapkan proyek Anda**

1. Dalam kode aplikasi Anda, impor pustaka yang diperlukan. Contoh berikut mengimpor SDK untuk Python (Boto3). Ini juga mengimpor kelas dari SageMaker AI Python SDK yang Anda gunakan untuk mendefinisikan dan bekerja dengan model:

   ```
   import boto3
   from sagemaker.serve.builder.model_builder import ModelBuilder
   from sagemaker.serve.builder.schema_builder import SchemaBuilder
   from sagemaker.session import Session
   from pathlib import Path
   ```

1. Inisialisasi sesi SageMaker AI. Contoh berikut menggunakan `Session()` kelas:

   ```
   sagemaker_session = Session()
   ```

**Untuk menentukan model Anda**

1. Buat `SchemaBuilder` instance, dan berikan sampel input dan output. Anda menyediakan instance ini ke `ModelBuilder` kelas ketika Anda mendefinisikan model. Dengan itu, SageMaker AI secara otomatis menghasilkan fungsi marshalling untuk membuat serial dan deserialisasi input dan output.

   Untuk informasi selengkapnya tentang penggunaan `SchemaBuilder` dan `ModelBuilder` kelas, lihat[Buat model di Amazon SageMaker AI dengan ModelBuilder](how-it-works-modelbuilder-creation.md).

   Contoh berikut memberikan sampel input dan output string ke `SchemaBuilder` kelas:

   ```
   response = "Jupiter is the largest planet in the solar system. It is the fifth planet from the sun."
   sample_input = {
       "inputs": "What is the largest planet in the solar system?",
       "parameters": {"max_new_tokens": 128, "top_p": 0.9, "temperature": 0.6},
   }
   sample_output = [{"generated_text": response}]
   schema_builder = SchemaBuilder(sample_input, sample_output)
   ```

1. Tentukan model Anda ke SageMaker AI. Contoh berikut menetapkan parameter untuk menginisialisasi `ModelBuilder` instance:

   ```
   model_builder = ModelBuilder(
       model="jumpstart-model-id",
       schema_builder=schema_builder,
       sagemaker_session=sagemaker_session,
       role_arn=sagemaker_session.get_caller_identity_arn(),
   )
   ```

   Contoh ini menggunakan JumpStart model. Ganti `jumpstart-model-id` dengan ID JumpStart model, seperti`meta-textgeneration-llama-3-70b`.
**catatan**  
Jika Anda ingin mengoptimalkan dengan decoding spekulatif, dan Anda ingin menggunakan draf SageMaker AI, Anda harus mengaktifkan isolasi jaringan. Untuk mengaktifkannya, sertakan argumen berikut saat Anda menginisialisasi `ModelBuilder` instance:  

   ```
   enable_network_isolation=True,
   ```
Untuk informasi selengkapnya tentang isolasi jaringan, lihat[Isolasi Jaringan](mkt-algo-model-internet-free.md#mkt-algo-model-internet-free-isolation).

**Untuk mengoptimalkan dengan kuantisasi**

1. Untuk menjalankan pekerjaan kuantisasi, gunakan `optimize()` metode, dan atur argumen. `quantization_config` Contoh berikut ditetapkan `OPTION_QUANTIZE` sebagai variabel lingkungan dalam wadah optimasi:

   ```
   optimized_model = model_builder.optimize(
       instance_type="instance-type",
       accept_eula=True,
       quantization_config={
           "OverrideEnvironment": {
               "OPTION_QUANTIZE": "awq",
           },
       },
       output_path="s3://output-path",
   )
   ```

   Dalam contoh ini, ganti *`instance-type`* dengan instance ML, seperti`ml.p4d.24xlarge`. Ganti *`s3://output-path`* dengan jalur ke lokasi S3 tempat Anda menyimpan model yang dioptimalkan yang dibuat oleh pekerjaan.

   `optimize()`Metode mengembalikan `Model` objek, yang dapat Anda gunakan untuk menyebarkan model Anda ke titik akhir.

1. Saat pekerjaan selesai, gunakan model. Contoh berikut menggunakan `deploy()` metode ini:

   ```
   predictor = optimized_model.deploy(
       instance_type="instance-type", 
       accept_eula=True,
   )
   ```

   Dalam contoh ini, ganti *`instance-type`* dengan instance ML, seperti`ml.p4d.24xlarge`. 

   `deploy()`Metode mengembalikan objek prediktor, yang dapat Anda gunakan untuk mengirim permintaan inferensi ke titik akhir yang menghosting model.

**Untuk mengoptimalkan dengan decoding spekulatif menggunakan model draft AI SageMaker**

Saat Anda mengoptimalkan model Anda dengan decoding spekulatif, Anda dapat memilih untuk menggunakan model draf yang disediakan SageMaker AI, atau Anda dapat menggunakannya sendiri. Contoh berikut menggunakan model draf SageMaker AI.
**Prasyarat**  
Untuk mengoptimalkan dengan decoding spekulatif dan model draf SageMaker AI, Anda harus mengaktifkan isolasi jaringan saat menentukan model Anda.

1. Untuk menjalankan pekerjaan decoding spekulatif, gunakan `optimize()` metode, dan atur argumennya. `speculative_decoding_config` Contoh berikut menetapkan `ModelProvider` kunci `SAGEMAKER` untuk menggunakan model draf yang disediakan SageMaker AI.

   ```
   optimized_model = model_builder.optimize(
       instance_type="instance-type",
       accept_eula=True,
       speculative_decoding_config={
           "ModelProvider": "SAGEMAKER",
       },
   )
   ```

   Dalam contoh ini, ganti *`instance-type`* dengan instance ML, seperti`ml.p4d.24xlarge`.

   `optimize()`Metode mengembalikan `Model` objek, yang dapat Anda gunakan untuk menyebarkan model Anda ke titik akhir.

1. Saat pekerjaan selesai, gunakan model. Contoh berikut menggunakan `deploy()` metode ini:

   ```
   predictor = optimized_model.deploy(accept_eula=True)
   ```

   `deploy()`Metode mengembalikan objek prediktor, yang dapat Anda gunakan untuk mengirim permintaan inferensi ke titik akhir yang menghosting model.

**Untuk mengoptimalkan dengan decoding spekulatif menggunakan model draf khusus**

Sebelum Anda dapat memberikan model draf khusus Anda ke SageMaker AI, Anda harus terlebih dahulu mengunggah artefak model ke Amazon S3.

Contoh berikut menunjukkan satu cara yang mungkin untuk menyediakan model draf khusus. Contoh mengunduh model draf dari Hugging Face Hub, mengunggahnya ke Amazon S3, dan memberikan URI S3 ke argumen. `speculative_decoding_config`

1. Jika Anda ingin mengunduh model dari Hugging Face Hub, tambahkan pustaka `huggingface_hub` ke proyek Anda, dan unduh model dengan metode `snapshot_download()` tersebut. Contoh berikut mengunduh model ke direktori lokal:

   ```
   import huggingface_hub
   
   huggingface_hub.snapshot_download(
       repo_id="model-id",
       revision="main",
       local_dir=download-dir,
       token=hf-access-token,
   )
   ```

   Dalam contoh ini, ganti *`model-id`* dengan ID model Hugging Face Hub, seperti`meta-llama/Meta-Llama-3-8B`. Ganti *`download-dir`* dengan direktori lokal. Ganti *`hf-access-token`* dengan token akses pengguna Anda. Untuk mempelajari cara mendapatkan token akses, lihat [Token akses pengguna](https://huggingface.co/docs/hub/en/security-tokens) di dokumentasi Hugging Face.

   Untuk informasi selengkapnya tentang `huggingface_hub` pustaka, lihat [Pustaka klien Hub](https://huggingface.co/docs/huggingface_hub/en/index) di dokumentasi Hugging Face.

1. Untuk membuat model yang Anda unduh tersedia untuk SageMaker AI, unggah ke Amazon S3. Contoh berikut mengunggah model dengan `sagemaker_session` objek:

   ```
   custom_draft_model_uri = sagemaker_session.upload_data(
       path=hf_local_download_dir.as_posix(),
       bucket=sagemaker_session.default_bucket(),
       key_prefix="prefix",
   )
   ```

   Dalam contoh ini, ganti *`prefix`* dengan qualifier yang membantu Anda membedakan model draf di S3, seperti. `spec-dec-custom-draft-model`

   `upload_data()`Metode mengembalikan URI S3 untuk artefak model.

1. Untuk menjalankan pekerjaan decoding spekulatif, gunakan `optimize()` metode, dan atur argumennya. `speculative_decoding_config` Contoh berikut menetapkan `ModelSource` kunci ke URI S3 dari model draf kustom:

   ```
   optimized_model = model_builder.optimize(
       instance_type="instance-type",
       accept_eula=True,
       speculative_decoding_config={
           "ModelSource": custom_draft_model_uri + "/",
       },
   )
   ```

   Dalam contoh ini, ganti *`instance-type`* dengan instance ML, seperti`ml.p4d.24xlarge`.

   `optimize()`Metode mengembalikan `Model` objek, yang dapat Anda gunakan untuk menyebarkan model Anda ke titik akhir.

1. Saat pekerjaan selesai, gunakan model. Contoh berikut menggunakan `deploy()` metode ini:

   ```
   predictor = optimized_model.deploy(accept_eula=True)
   ```

   `deploy()`Metode mengembalikan objek prediktor, yang dapat Anda gunakan untuk mengirim permintaan inferensi ke titik akhir yang menghosting model.

**Untuk mengoptimalkan dengan kompilasi**

1. Untuk menjalankan pekerjaan kompilasi, gunakan `optimize()` metode, dan atur `compilation_config` argumen. Contoh berikut menggunakan `OverrideEnvironment` kunci untuk mengatur variabel lingkungan yang diperlukan dalam wadah optimasi:

   ```
   optimized_model = model_builder.optimize(
       instance_type="instance-type",
       accept_eula=True,
       compilation_config={
           "OverrideEnvironment": {
               "OPTION_TENSOR_PARALLEL_DEGREE": "24",
               "OPTION_N_POSITIONS": "8192",
               "OPTION_DTYPE": "fp16",
               "OPTION_ROLLING_BATCH": "auto",
               "OPTION_MAX_ROLLING_BATCH_SIZE": "4",
               "OPTION_NEURON_OPTIMIZE_LEVEL": "2",
           }
       },
       output_path="s3://output-path",
   )
   ```

   Dalam contoh ini, atur *`instance-type`* ke tipe instans ML dengan perangkat keras yang dipercepat. Misalnya, untuk inferensi yang dipercepat dengan AWS Inferentia, Anda dapat mengatur tipe ke instance Inf2, seperti. `ml.inf2.48xlarge` Ganti *`s3://output-path`* dengan jalur ke lokasi S3 tempat Anda menyimpan model yang dioptimalkan yang dibuat oleh pekerjaan.

1. Saat pekerjaan selesai, gunakan model. Contoh berikut menggunakan `deploy()` metode ini:

   ```
   predictor = optimized_model.deploy(accept_eula=True)
   ```

   `deploy()`Metode mengembalikan objek prediktor, yang dapat Anda gunakan untuk mengirim permintaan inferensi ke titik akhir yang menghosting model.

**Untuk menguji model Anda dengan permintaan inferensi**
+ Untuk mengirim permintaan inferensi pengujian ke model yang Anda gunakan, gunakan `predict()` metode objek prediktor. Contoh berikut meneruskan `sample_input` variabel yang juga diteruskan ke `SchemaBuilder` kelas dalam contoh untuk menentukan model Anda:

  ```
  predictor.predict(sample_input)
  ```

  Masukan sampel memiliki prompt,`"What is the largest planet in the solar system?"`. `predict()`Metode mengembalikan respon bahwa model dihasilkan, seperti yang ditunjukkan oleh contoh berikut:

  ```
  {'generated_text': ' Jupiter is the largest planet in the solar system. It is the fifth planet from the sun. It is a gas giant with . . .'}
  ```

## AWS SDK untuk Python (Boto3)
<a name="optimize-create-pysdk-boto"></a>

Anda dapat menggunakan AWS SDK for Python (Boto3) untuk membuat dan mengelola pekerjaan pengoptimalan inferensi secara terprogram. Bagian ini memberikan contoh untuk teknik optimasi yang berbeda.

**Prasyarat**

Sebelum membuat pekerjaan pengoptimalan dengan Boto3, pastikan Anda memiliki:
+  AWS Kredensi yang dikonfigurasi - Siapkan AWS kredensil Anda dengan izin yang sesuai
+ Membuat model SageMaker AI (jika menggunakan model yang ada)
+ Data pelatihan yang disiapkan di S3 (untuk optimasi decoding spekulatif, mendukung panjang konteks hingga 4096)
+ Peran IAM dengan izin yang diperlukan - Peran eksekusi Anda harus memiliki izin untuk mengakses S3 dan membuat sumber daya SageMaker 

**Contoh: Buat Job Optimasi dengan EAGLE Speculative Decoding (Llama 3.3 70B)**

Contoh ini menunjukkan pembuatan pekerjaan pengoptimalan untuk model bahasa besar menggunakan teknik decoding spekulatif EAGLE:

```
import boto3

# Initialize SageMaker client
sagemaker_client = boto3.client('sagemaker', region_name='us-west-2')

# Step 1: Create a SageMaker model (if not already created)
model_response = sagemaker_client.create_model(
    ModelName='meta-llama-3-3-70b-instruct',
    ExecutionRoleArn='arn:aws:iam::123456789012:role/SageMakerExecutionRole',
    PrimaryContainer={
        'Image': '763104351884.dkr.ecr.us-west-2.amazonaws.com/djl-inference:<tag>',
        'ModelDataSource': {
            'S3DataSource': {
                'S3Uri': 's3://my-bucket/models/Llama-3.3-70B-Instruct/',
                'S3DataType': 'S3Prefix',
                'CompressionType': 'None'
            }
        },
        'Environment': {
            'SAGEMAKER_ENV': '1',
            'SAGEMAKER_MODEL_SERVER_TIMEOUT': '3600'
        }
    }
)

# Step 2: Create optimization job with speculative decoding
optimization_response = sagemaker_client.create_optimization_job(
    OptimizationJobName='llama-optim-job-eagle-speculative-decoding',
    RoleArn='arn:aws:iam::123456789012:role/SageMakerExecutionRole',
    ModelSource={
        'SageMakerModel': {
            'ModelName': 'meta-llama-3-3-70b-instruct'
        }
    },
    DeploymentInstanceType='ml.p4d.24xlarge',
    # MaxInstanceCount specifies the maximum number of instances for distributed training
    MaxInstanceCount=4,
    OptimizationConfigs=[
        {
            'ModelSpeculativeDecodingConfig': {
                'Technique': 'EAGLE',
                'TrainingDataSource': {
                    'S3Uri': 's3://my-bucket/training_data/ultrachat_8k/',
                    'S3DataType': 'S3Prefix'
                }
            }
        }
    ],
    OutputConfig={
        'S3OutputLocation': 's3://my-bucket/optimized-models/llama-optim-output/',
    },
    StoppingCondition={
        'MaxRuntimeInSeconds': 432000  # 5 days
    }
)

print(f"Optimization job ARN: {optimization_response['OptimizationJobArn']}")
```

**Contoh: Buat Job Optimasi dari Artefak Model S3 (Qwen3 32B)**

Contoh ini menunjukkan cara membuat pekerjaan pengoptimalan menggunakan artefak model langsung dari S3:

```
import boto3

sagemaker_client = boto3.client('sagemaker', region_name='us-west-2')

# Create model from S3 artifacts
model_response = sagemaker_client.create_model(
    ModelName='qwen3-32b',
    ExecutionRoleArn='arn:aws:iam::123456789012:role/SageMakerExecutionRole',
    PrimaryContainer={
        'Image': '763104351884.dkr.ecr.us-west-2.amazonaws.com/djl-inference:<tag>',
        'Mode': 'SingleModel',
        'ModelDataSource': {
            'S3DataSource': {
                'S3Uri': 's3://my-bucket/models/qwen3-32b/',
                'S3DataType': 'S3Prefix',
                'CompressionType': 'None'
            }
        },
        'Environment': {
            'AWS_REGION': 'us-west-2'
        }
    }
)

# Create optimization job with smaller training dataset
optimization_response = sagemaker_client.create_optimization_job(
    OptimizationJobName='qwen3-optim-job-eagle',
    RoleArn='arn:aws:iam::123456789012:role/SageMakerExecutionRole',
    ModelSource={
        'SageMakerModel': {
            'ModelName': 'qwen3-32b'
        }
    },
    DeploymentInstanceType='ml.g6.48xlarge',
    MaxInstanceCount=4,
    OptimizationConfigs=[
        {
            'ModelSpeculativeDecodingConfig': {
                'Technique': 'EAGLE',
                'TrainingDataSource': {
                    'S3Uri': 's3://my-bucket/training_data/ultrachat_1k/',
                    'S3DataType': 'S3Prefix'
                }
            }
        }
    ],
    OutputConfig={
        'S3OutputLocation': 's3://my-bucket/optimized-models/qwen3-optim-output/',
    },
    StoppingCondition={
        'MaxRuntimeInSeconds': 432000  # 5 days
    }
)

print(f"Optimization job ARN: {optimization_response['OptimizationJobArn']}")
```

**Contoh: Memantau dan Mengelola Pekerjaan Optimasi**

Setelah membuat pekerjaan pengoptimalan, Anda dapat memantau kemajuannya dan mengelolanya menggunakan perintah ini:

```
import boto3

sagemaker_client = boto3.client('sagemaker', region_name='us-west-2')

# Describe optimization job to check status
describe_response = sagemaker_client.describe_optimization_job(
    OptimizationJobName='llama-optim-job-eagle-speculative-decoding'
)

print(f"Job Status: {describe_response['OptimizationJobStatus']}")

# List all optimization jobs (with pagination)
list_response = sagemaker_client.list_optimization_jobs(
    MaxResults=10,
    SortBy='CreationTime',
    SortOrder='Descending'
)

print("\nRecent optimization jobs:")
for job in list_response['OptimizationJobSummaries']:
    print(f"- {job['OptimizationJobName']}: {job['OptimizationJobStatus']}")

# Stop a running optimization job if needed
# sagemaker_client.stop_optimization_job(
#     OptimizationJobName='llama-optim-job-eagle-speculative-decoding'
# )

# Delete a completed or failed optimization job
# sagemaker_client.delete_optimization_job(
#     OptimizationJobName='llama-optim-job-eagle-speculative-decoding'
# )
```

Decoding spekulatif dengan Eagle Heads menjalankan empat pekerjaan pelatihan berurutan. Setiap pekerjaan menghasilkan output yang menjadi input ke pekerjaan berikutnya. Hanya output dari pekerjaan akhir yang dikirim ke bucket S3 Anda. Output perantara dienkripsi dan disimpan dalam bucket layanan SageMaker AI internal hingga 20 hari. SageMaker AI tidak memiliki izin untuk men-de-crypt mereka. Jika Anda ingin data perantara dihapus sebelum periode waktu tersebut, pastikan pekerjaan Anda telah selesai atau telah dihentikan, lalu buka kasus dukungan [[https://docs.aws.amazon.com/awssupport/latest/user/case-management.html\$1 creating-a-support-case](https://docs.aws.amazon.com/awssupport/latest/user/case-management.html#creating-a-support-case)] agar data ini dihapus. Sertakan dalam permintaan ID AWS akun Anda dan pekerjaan pengoptimalan ARN.

## Keterbatasan model draf SageMaker AI
<a name="sm-draft-model-limitations"></a>

Untuk model apa pun yang Anda optimalkan dengan model draf SageMaker AI, perhatikan persyaratan, batasan, dan variabel lingkungan yang didukung.

**Persyaratan**

Anda harus melakukan tindakan berikut:
+ Gunakan model yang disediakan oleh SageMaker JumpStart.
+ Aktifkan isolasi jaringan untuk penerapan model.
+ Jika Anda menerapkan model ke wadah Large Model Inference (LMI), gunakan DJLServing wadah pada versi 0.28.0 atau lebih tinggi.

  Untuk kontainer yang tersedia, lihat Wadah [Inferensi Model Besar di GitHub repositori](https://github.com/aws/deep-learning-containers/blob/master/available_images.md#large-model-inference-containers) Deep Learning Containers.
+ Jika Anda menyempurnakan JumpStart model, gunakan format safetensors untuk bobot model.

  Untuk informasi selengkapnya tentang format ini, lihat [Safetensors](https://huggingface.co/docs/safetensors/en/index) di dokumentasi Hugging Face.

**Pembatasan**

Anda tidak dapat melakukan hal berikut:
+ Gunakan model di lingkungan pengujian lokal yang Anda buat dengan mode lokal. 

  Untuk informasi selengkapnya tentang mode lokal, lihat [Mode Lokal](https://sagemaker.readthedocs.io/en/stable/overview.html#local-mode) dalam dokumentasi SageMaker AI Python SDK.
+ Akses wadah model melalui AWS Systems Manager Agen (Agen SSM). Agen SSM menyediakan akses tingkat shell ke wadah model Anda sehingga Anda dapat men-debug proses dan perintah log dengan Amazon. CloudWatch 

  Untuk informasi selengkapnya tentang fitur ini, lihat [Akses kontainer melalui SSM](ssm-access.md).
+ Konfigurasikan wadah model untuk dump inti yang terjadi jika proses macet. 

  Untuk informasi selengkapnya tentang pembuangan inti dari wadah model, lihat [ProductionVariantCoreDumpConfig](sagemaker/latest/APIReference/API_ProductionVariantCoreDumpConfig.html).
+ Terapkan model ke titik akhir multi-model, titik akhir multi-kontainer, atau titik akhir yang menampung komponen inferensi. 

  Untuk informasi selengkapnya tentang jenis titik akhir ini, lihat[Titik akhir multi-model](multi-model-endpoints.md),[Titik akhir multi-kontainer](multi-container-endpoints.md), dan[Komponen inferensi](realtime-endpoints-deploy-models.md#inference-components).
+ Buat paket model untuk model. Anda menggunakan paket model untuk membuat model deployable yang Anda publikasikan. AWS Marketplace

  Untuk informasi selengkapnya tentang fitur ini, lihat [Membuat Model Package Resource](sagemaker-mkt-create-model-package.md).
+ Gunakan kode inferensi Anda sendiri dalam wadah model.
+ Gunakan `requirements.txt` file dalam wadah model. Jenis file ini mencantumkan dependensi paket.
+ Aktifkan parameter Hugging Face`trust_remote_code`.

**Variabel lingkungan yang didukung**

Anda dapat mengkonfigurasi kontainer hanya dengan variabel lingkungan berikut:
+ Variabel lingkungan umum untuk wadah inferensi model besar (LMI). 

  Untuk informasi selengkapnya tentang variabel-variabel ini, lihat [Konfigurasi Variabel Lingkungan](https://docs.djl.ai/master/docs/serving/serving/docs/lmi/deployment_guide/configurations.html#environment-variable-configurations) dalam dokumentasi kontainer LMI.
+ Variabel lingkungan umum untuk paket yang disediakan Hugging Face Hub di repositori Gitnya. 

  Untuk repositori, lihat [Hugging Face](https://github.com/huggingface) on. GitHub
+ Variabel lingkungan umum PyTorch & CUDA. 

  Untuk informasi selengkapnya tentang variabel-variabel ini, lihat [Variabel Lingkungan Obor](https://pytorch.org/docs/stable/torch_environment_variables.html) dalam PyTorch dokumentasi.