

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

# Kontrak Kontainer Kustom untuk Titik Multi-Model Akhir
<a name="mms-container-apis"></a>

Untuk menangani beberapa model, kontainer Anda harus mendukung serangkaian API yang memungkinkan Amazon SageMaker AI berkomunikasi dengan wadah untuk memuat, mencantumkan, mendapatkan, dan membongkar model sesuai kebutuhan. `model_name`Ini digunakan dalam kumpulan API baru sebagai parameter input kunci. Kontainer pelanggan diharapkan untuk melacak model yang dimuat menggunakan `model_name` sebagai kunci pemetaan. Juga, `model_name` adalah pengidentifikasi buram dan belum tentu nilai `TargetModel` parameter yang diteruskan ke `InvokeEndpoint` API. `TargetModel`Nilai asli dalam `InvokeEndpoint` permintaan diteruskan ke container di API sebagai `X-Amzn-SageMaker-Target-Model` header yang dapat digunakan untuk tujuan logging.

**catatan**  
Multi-model titik akhir untuk instans yang didukung GPU saat ini hanya didukung dengan wadah SageMaker Server Inference [ NVIDIA Triton AI. ](https://docs.aws.amazon.com/sagemaker/latest/dg/triton.html) Wadah ini sudah mengimplementasikan kontrak yang didefinisikan di bawah ini. Pelanggan dapat langsung menggunakan wadah ini dengan titik akhir GPU multi-model mereka, tanpa pekerjaan tambahan.

Anda dapat mengonfigurasi API berikut pada wadah Anda untuk titik akhir multi-model yang didukung CPU.

**Topics**
+ [Muat Model API](#multi-model-api-load-model)
+ [Daftar Model API](#multi-model-api-list-model)
+ [Dapatkan Model API](#multi-model-api-get-model)
+ [Bongkar Model API](#multi-model-api-unload-model)
+ [Memanggil API Model](#multi-model-api-invoke-model)

## Muat Model API
<a name="multi-model-api-load-model"></a>

Menginstruksikan wadah untuk memuat model tertentu yang ada di `url` bidang tubuh ke dalam memori wadah pelanggan dan untuk melacaknya dengan yang ditugaskan`model_name`. Setelah model dimuat, wadah harus siap untuk melayani permintaan inferensi menggunakan ini`model_name`.

```
POST /models HTTP/1.1
Content-Type: application/json
Accept: application/json

{
     "model_name" : "{model_name}",
     "url" : "/opt/ml/models/{model_name}/model",
}
```

**catatan**  
Jika `model_name` sudah dimuat, API ini akan mengembalikan 409. Setiap kali model tidak dapat dimuat karena kurangnya memori atau sumber daya lain, API ini harus mengembalikan kode status HTTP 507 ke SageMaker AI, yang kemudian memulai pembongkaran model yang tidak digunakan untuk mengklaim kembali.

## Daftar Model API
<a name="multi-model-api-list-model"></a>

Mengembalikan daftar model yang dimuat ke dalam memori wadah pelanggan.

```
GET /models HTTP/1.1
Accept: application/json

Response = 
{
    "models": [
        {
             "modelName" : "{model_name}",
             "modelUrl" : "/opt/ml/models/{model_name}/model",
        },
        {
            "modelName" : "{model_name}",
            "modelUrl" : "/opt/ml/models/{model_name}/model",
        },
        ....
    ]
}
```

API ini juga mendukung pagination.

```
GET /models HTTP/1.1
Accept: application/json

Response = 
{
    "models": [
        {
             "modelName" : "{model_name}",
             "modelUrl" : "/opt/ml/models/{model_name}/model",
        },
        {
            "modelName" : "{model_name}",
            "modelUrl" : "/opt/ml/models/{model_name}/model",
        },
        ....
    ]
}
```

SageMaker AI awalnya dapat memanggil API Model Daftar tanpa memberikan nilai untuk`next_page_token`. Jika `nextPageToken` bidang dikembalikan sebagai bagian dari respons, itu akan diberikan sebagai nilai untuk `next_page_token` dalam panggilan Model Daftar berikutnya. Jika a tidak `nextPageToken` dikembalikan, itu berarti tidak ada lagi model untuk dikembalikan.

## Dapatkan Model API
<a name="multi-model-api-get-model"></a>

Ini adalah API baca sederhana pada `model_name` entitas.

```
GET /models/{model_name} HTTP/1.1
Accept: application/json

{
     "modelName" : "{model_name}",
     "modelUrl" : "/opt/ml/models/{model_name}/model",
}
```

**catatan**  
Jika tidak `model_name` dimuat, API ini akan mengembalikan 404.

## Bongkar Model API
<a name="multi-model-api-unload-model"></a>

Menginstruksikan platform SageMaker AI untuk menginstruksikan wadah pelanggan untuk membongkar model dari memori. Ini memulai penggusuran model kandidat seperti yang ditentukan oleh platform saat memulai proses memuat model baru. Sumber daya yang disediakan `model_name` harus direklamasi oleh container saat API ini mengembalikan respons.

```
DELETE /models/{model_name}
```

**catatan**  
Jika tidak `model_name` dimuat, API ini akan mengembalikan 404.

## Memanggil API Model
<a name="multi-model-api-invoke-model"></a>

Membuat permintaan prediksi dari yang `model_name` disediakan. Per SageMaker mintaan AI Runtime `InvokeEndpoint` mendukung `X-Amzn-SageMaker-Target-Model` sebagai header baru yang mengambil jalur relatif dari model yang ditentukan untuk pemanggilan. Sistem SageMaker AI membangun jalur absolut model dengan menggabungkan awalan yang disediakan sebagai bagian dari panggilan `CreateModel` API dengan jalur relatif model.

```
POST /models/{model_name}/invoke HTTP/1.1
Content-Type: ContentType
Accept: Accept
X-Amzn-SageMaker-Custom-Attributes: CustomAttributes
X-Amzn-SageMaker-Target-Model: [relativePath]/{artifactName}.tar.gz
```

**catatan**  
Jika tidak `model_name` dimuat, API ini akan mengembalikan 404.

Selain itu, pada instans GPU, jika `InvokeEndpoint` gagal karena kurangnya memori atau sumber daya lain, API ini harus mengembalikan kode status HTTP 507 ke SageMaker AI, yang kemudian memulai pembongkaran model yang tidak digunakan untuk mengklaim kembali.