

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

# Sampel kode untuk impor model khusus
<a name="custom-model-import-code-samples"></a>

Contoh kode berikut menunjukkan cara mengatur izin, membuat pekerjaan impor model kustom, melihat detail pekerjaan impor dan model impor, dan menghapus model yang diimpor. Contoh kode ini berlaku untukMistral AI,Llama,Qwen,Flan,GPTBigCode, dan Mixtral arsitektur.

## Penting: Dukungan Arsitektur Model
<a name="model-architecture-support"></a>

**GPT-OSSKeterbatasan Model:**
+ **Converse API Tidak Didukung:** model impor model kustom GPT-OSS berbasis TIDAK mendukung Converse API atau ConverseStream API.
+ **Gunakan InvokeModel API Sebagai gantinya:** Pelanggan harus menggunakan [InvokeModel](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_runtime_InvokeModel.html)API saat bekerja dengan model kustom GPT-OSS berbasis.
+ **Persyaratan Skema API:** GPT-OSS model memerlukan skema API yang kompatibel dengan OpenAI:
  + Format penyelesaian untuk permintaan penyelesaian
  + ChatCompletion format untuk permintaan obrolan
  + Format respons mengikuti spesifikasi OpenAI API
+ **Model yang Didukung untuk Converse API:** Converse API hanya didukung untukMistral AI,,Llama,Qwen,Flan,GPTBigCode, dan Mixtral arsitektur.

Untuk contoh penggunaan GPT-OSS model dengan [InvokeModel](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_runtime_InvokeModel.html)API, lihat dokumentasi OpenAI API untuk request/response skema.

1. Siapkan file model untuk impor

   1. Jika Anda mengimpor dari bucket Amazon S3, Anda perlu menyediakan file model dalam Hugging Face format bobot. Untuk informasi selengkapnya, lihat [Impor sumber model dari Amazon S3](model-customization-import-model.md#model-customization-import-model-source). 

   1. Buat bucket Amazon S3 untuk file model Anda (namanya harus unik).

   1. Unggah file model ke dalam ember.

1. Buat kebijakan untuk mengakses file model Anda dan melampirkannya ke peran IAM dengan hubungan kepercayaan Amazon Bedrock. Pilih tab untuk metode pilihan Anda, lalu ikuti langkah-langkahnya:

------
#### [ Console ]

   1. Buat kebijakan Amazon S3 untuk mengakses bucket Amazon S3 yang berisi file model Anda

      1. Arahkan ke konsol IAM di [https://console.aws.amazon.com/iam](https://console.aws.amazon.com/iam) dan pilih **Kebijakan dari panel** navigasi kiri.

      1. Pilih **Buat kebijakan** dan kemudian pilih **JSON** untuk membuka **editor Kebijakan**.

      1. Rekatkan kebijakan berikut, ganti {{${model-file-bucket}}} dengan nama bucket, lalu pilih **Berikutnya**.

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

****  

         ```
         {
             "Version":"2012-10-17",		 	 	 
             "Statement": [
                 {
                     "Effect": "Allow",
                     "Action": [
                         "s3:GetObject",
                         "s3:ListBucket"
                     ],
                     "Resource": [
                         "arn:aws:s3:::{{${model-file-bucket}}}",
                         "arn:aws:s3:::{{${model-file-bucket}}}/*"
                     ]
                   }
                 ]
               }
         ```

------

      1. Beri nama kebijakan {{S3BucketPolicy}} dan pilih **Buat kebijakan**.

   1. Buat peran IAM dan lampirkan kebijakan.

      1. Dari panel navigasi kiri, pilih **Peran**, lalu pilih **Buat peran**.

      1. Pilih **Kebijakan kepercayaan khusus**, tempel kebijakan berikut, dan pilih **Berikutnya**.

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

****  

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

------

      1. Cari {{S3BucketPolicy}} kebijakan yang Anda buat, pilih kotak centang, dan pilih **Berikutnya**.

      1. Beri nama peran {{MyImportModelRole}} dan pilih{{Create role}}.

------
#### [ CLI ]

   1. Buat file bernama {{BedrockTrust.json}} dan tempel kebijakan berikut ke dalamnya.

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

****  

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

------

   1. Buat file lain yang dipanggil {{S3BucketPolicy.json}} dan tempelkan kebijakan berikut ke dalamnya, ganti {{${model-file-bucket}}} dengan nama bucket Anda.

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

****  

      ```
      {
          "Version":"2012-10-17",		 	 	 
          "Statement": [
              {
                  "Effect": "Allow",
                  "Action": [
                      "s3:GetObject",
                      "s3:ListBucket"
                  ],
                  "Resource": [
                      "arn:aws:s3:::{{${model-file-bucket}}}",
                      "arn:aws:s3:::{{${model-file-bucket}}}/*"
                  ]
              }
           ]
      }
      ```

------

   1. Di terminal, arahkan ke folder yang berisi kebijakan yang Anda buat.

   1. Buat [CreateRole](https://docs.aws.amazon.com/IAM/latest/APIReference/API_CreateRole.html)permintaan untuk membuat peran IAM yang disebut {{MyImportModelRole}} dan lampirkan kebijakan {{BedrockTrust.json}} kepercayaan yang Anda buat.

      ```
      aws iam create-role \
          --role-name MyImportModelRole \
          --assume-role-policy-document file://BedrockTrust.json
      ```

   1. Buat [CreatePolicy](https://docs.aws.amazon.com/IAM/latest/APIReference/API_CreatePolicy.html)permintaan untuk membuat kebijakan akses data S3 dengan {{S3BucketPolicy.json}} file yang Anda buat. Respons mengembalikan `Arn` untuk kebijakan.

      ```
      aws iam create-policy \
          --policy-name S3BucketPolicy \
          --policy-document file://S3BucketPolicy.json
      ```

   1. Buat [AttachRolePolicy](https://docs.aws.amazon.com/IAM/latest/APIReference/API_AttachRolePolicy.html)permintaan untuk melampirkan kebijakan akses data S3 ke peran Anda, ganti `policy-arn` dengan ARN dalam respons dari langkah sebelumnya:

      ```
      aws iam attach-role-policy \
          --role-name MyImportModelRole \
          --policy-arn {{${policy-arn}}}
      ```

------
#### [ Python ]

   1. Jalankan kode berikut untuk membuat [CreateRole](https://docs.aws.amazon.com/IAM/latest/APIReference/API_CreateRole.html)permintaan untuk membuat peran IAM dipanggil {{MyImportModel}} dan untuk membuat [CreatePolicy](https://docs.aws.amazon.com/IAM/latest/APIReference/API_CreatePolicy.html)permintaan untuk membuat kebijakan akses data S3 dipanggil. {{S3BucketPolicy}} Untuk kebijakan akses data S3, ganti {{${model-file-bucket}}} dengan nama bucket S3 Anda.

      ```
      import boto3
      import json
      
      iam = boto3.client("iam")
      
      iam.create_role(
          RoleName="MyImportModelRole",
          AssumeRolePolicyDocument=json.dumps({
              "Version": "2012-10-17",		 	 	 
              "Statement": [
                  {
                      "Effect": "Allow",
                      "Principal": {
                          "Service": "bedrock.amazonaws.com"
                      },
                      "Action": "sts:AssumeRole"
                  }
              ] 
          })
      )
      
      iam.create_policy(
          PolicyName="S3BucketPolicy",
          PolicyDocument=json.dumps({
              "Version": "2012-10-17",		 	 	 
              "Statement": [
                  {
                      "Effect": "Allow",
                      "Action": [
                          "s3:GetObject",
                          "s3:ListBucket"
                      ],
                      "Resource": [
                          "arn:aws:s3:::{{${training-bucket}}}",
                          "arn:aws:s3:::{{${training-bucket}}}/*"
                      ]
                  }
                ]
             })
           )
      ```

   1. An `Arn` dikembalikan sebagai tanggapan. Jalankan cuplikan kode berikut untuk membuat [AttachRolePolicy](https://docs.aws.amazon.com/IAM/latest/APIReference/API_AttachRolePolicy.html)permintaan, ganti {{${policy-arn}}} dengan yang dikembalikan. `Arn`

      ```
      iam.attach_role_policy(
          RoleName="MyImportModelRole",
          PolicyArn="{{${policy-arn}}}"
      )
      ```

------

1. Pilih bahasa untuk melihat contoh kode untuk memanggil operasi API impor model kustom.

------
#### [ CLI ]

Untuk mengirimkan pekerjaan impor model kustom, di terminal jalankan perintah berikut di baris perintah, ganti {{${my-import-model-role-arn}}} dengan peran model yang Anda atur dan {{s3-bucket-path}} dengan jalur bucket S3 dari file model Anda.

```
aws bedrock create-model-import-job 
    --job-name {{MyImportedModelJobName}}
    --imported-model-name {{MyImportedModelName}}
    --role-arn {{${my-import-model-role-arn}}}  
    --model-data-source '{"s3DataSource": {"s3Uri": {{s3-bucket-path}} }}
```

Respons mengembalikan a{{jobArn}}. Pekerjaan impor khusus akan memakan waktu untuk diselesaikan. Anda dapat menggunakan perintah berikut untuk memeriksa status pekerjaan impor. `jobArn`

Bidang berikut adalah opsional:
+ Untuk menambahkan konfigurasi VPC, tambahkan argumen berikut ke perintah di atas untuk menentukan grup keamanan dan subnet:

  ```
     -\\-vpc-config '{securityGroupIds": ["sg-xx"], "subnetIds": ["subnet-yy", "subnet-zz"]}'
  ```
+ Untuk mengenkripsi model Anda dengan kunci KMS, tambahkan argumen berikut ke perintah di atas, ganti nilai untuk menentukan kunci yang ingin Anda enkripsi model Anda.

  ```
     -\\-customModelKmsKeyId 'arn:aws:kms:{{region}}:{{account-id}}:key/{{key-id}}'
  ```
+ Untuk menambahkan tag, tambahkan argumen berikut ke perintah di atas, ganti kunci dan nilai dengan tag yang ingin Anda lampirkan ke model and/or keluaran pekerjaan dan pastikan untuk memisahkan key/value pasangan dengan spasi:

  ```
     -\\-tags key={{key1}},value={{value1}} key={{key2}},value={{value2}}
  ```

Respons mengembalikan a{{jobArn}}. Pekerjaan impor khusus akan memakan waktu untuk diselesaikan. Anda dapat menggunakan perintah berikut untuk memeriksa status pekerjaan impor. `jobArn`

```
aws bedrock get-model-import-job \
    --job-identifier "{{jobArn}}"
```

Responsnya terlihat mirip dengan ini:

```
{
    "jobArn": {{${job-arn}}} ,
    "jobName": {{MyImportedModelJobName}},
    "importedModelName": {{MyImportedModelName}},
    "roleArn": {{${my-role-arn}}},
    "modelDataSource": {
        "s3DataSource": {
            "s3Uri": "${S3Uri}"
        }
    },
    "status": "Complete",
    "creationTime": "2024-08-13T23:38:42.457Z",
    "lastModifiedTime": "2024-08-13T23:39:25.158Z"
```

Ketika `status` `Complete` ada. pekerjaan impor selesai.

Untuk menjalankan inferensi pada model Anda yang baru diimpor, Anda harus memberikan ARN dari model yang diimpor sebagai. `model-id` Dapatkan ARN dari model yang diimpor.

```
aws bedrock list-imported-models              
```

Respons berisi nama model dan model ARN. Gunakan model ARN untuk memanggil model yang diimpor. Untuk informasi selengkapnya, lihat [Kirim satu prompt dengan InvokeModel](inference-invoke.md).

```
{
    "modelSummaries": [
        {
            "modelArn": {{model-arn}},
            "modelName": "MyImportedModelName",
            "modelArchitecture":{{model-architecture}},
            "instructSupported":{{Y}},
            "creationTime": "2024-08-13T19:20:14.058Z"
            
        }
    ]
}
```

Untuk menghapus model impor Anda, di terminal jalankan perintah berikut di baris perintah, menggunakan nama model atau model ARN dari model impor yang ingin Anda hapus.

```
aws bedrock delete-imported-model 
                --model-identifier {{MyImportedModelName}}
```

------
#### [ Python ]

Jalankan cuplikan kode berikut untuk mengirimkan pekerjaan impor model kustom. Ganti {{my-region}} dengan Wilayah tempat Anda mengimpor model, {{${my-import-model-role-arn}}} dengan ARN {{MyImportModelRole}} yang Anda atur dan ganti {{${model-file-bucket}}} dengan nama bucket S3 Anda.

```
import boto3
import json

REGION_NAME = {{my-region}}
bedrock = boto3.client(service_name='bedrock',
                       region_name=REGION_NAME)

JOB_NAME = {{MyImportedModelJobName}} 
ROLE_ARN = {{${my-import-model-role-arn}}}
IMPORTED_MODEL_NAME = {{ImportedModelName}}
S3_URI = {{${S3Uri}}}

# createModelImportJob API
create_job_response = bedrock.create_model_import_job(
    jobName=JOB_NAME,
    importedModelName=IMPORTED_MODEL_NAME,
    roleArn=ROLE_ARN,
    modelDataSource={
        "s3DataSource": {
            "s3Uri": S3_URI
        }
    },
)
job_arn = create_job_response.get("jobArn")
```

Bidang berikut adalah opsional.
+ Untuk menambahkan konfigurasi VPC, tambahkan argumen berikut ke perintah di atas untuk menentukan grup keamanan dan subnet:

  ```
     vpc-config = {'securityGroupIds: ["sg-xx".], 'subnetIds': [subnet-yy, 'subnet-zz']}'
  ```
+ Untuk mengenkripsi model Anda dengan kunci KMS, tambahkan argumen berikut ke perintah di atas, ganti nilai untuk menentukan kunci yang ingin Anda enkripsi model Anda.

  ```
     importedModelKmsKeyId = 'arn:aws:kms:{{region}}:{{account-id}}:key/{{key-id}}'
  ```
+ Untuk menambahkan tag, tambahkan argumen berikut ke perintah di atas, ganti kunci dan nilai dengan tag yang ingin Anda lampirkan ke model and/or keluaran pekerjaan dan pastikan untuk memisahkan key/value pasangan dengan spasi:

  ```
     jobTags key={{key1}},value={{value1}} key={{key2}},value={{value2}}
  ```

Respons mengembalikan JoBarn

```
               job_arn = create_job_response.get("{{jobArn}}")
```

Pekerjaan impor khusus akan memakan waktu untuk diselesaikan. Anda dapat menggunakan perintah berikut untuk memeriksa status pekerjaan impor. `jobArn`

```
bedrock.get_model_import_job(jobIdentifier={{jobArn}})
```

Ketika `status` ada`Completed`, pekerjaan impor selesai.

Untuk menjalankan inferensi pada model Anda yang baru diimpor, Anda harus memberikan ARN dari model yang diimpor sebagai. `model-id` Dapatkan ARN dari model yang diimpor.

```
response_pt = bedrock.list_imported_models(
    creationTimeBefore=datetime ({{2015,1,1}},
    creationTimeAfter= datetime ({{2015,1,1}},
    nameContains = '{{MyImportedModelName}},
    maxresults = {{123}}
    nextToken = '{{none}}',
    sortBy = '{{creationTime}}',
    sortOrder = '{{Ascending}}'
```

Respons mengembalikan `modelArn` bersama dengan rincian lain dari model yang diimpor. 

```
{
    'nextToken': '',
    'modelSummaries': [
        {
            'modelArn': '{{your-model-arn}}',
            'modelName': '{{MyImportedModelName}}',
            'modelArchitecture':{{model-architecture}},
            'instructSupported':{{Y}},
            'creationTime': datetime(2015, 1, 1)
        },
    ]
```

Gunakan model ARN untuk memanggil model yang diimpor. Untuk informasi selengkapnya, lihat [Kirim satu prompt dengan InvokeModel](inference-invoke.md).

Untuk menghapus model impor Anda, gunakan perintah berikut menggunakan nama model atau model ARN dari model impor yang ingin Anda hapus.

```
response = client.delete_imported_model(
    modelIdentifier='{{MyImportedModelName}}'
            )
```

------