

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

# Bangun Container Anda Sendiri untuk Titik SageMaker Akhir Multi-Model AI
<a name="build-multi-model-build-container"></a>

Lihat bagian berikut untuk membawa wadah dan dependensi Anda sendiri ke titik akhir multi-model.

**Topics**
+ [Bawa dependensi Anda sendiri untuk titik akhir multi-model pada instance yang didukung CPU](#build-multi-model-container-cpu)
+ [Bawa dependensi Anda sendiri untuk titik akhir multi-model pada instans yang didukung GPU](#build-multi-model-container-gpu)
+ [Gunakan SageMaker Toolkit Inferensi AI](#multi-model-inference-toolkit)
+ [Kontrak Kontainer Kustom untuk Titik Akhir Multi-Model](mms-container-apis.md)

## Bawa dependensi Anda sendiri untuk titik akhir multi-model pada instance yang didukung CPU
<a name="build-multi-model-container-cpu"></a>

Jika tidak ada gambar kontainer yang dibuat sebelumnya yang memenuhi kebutuhan Anda, Anda dapat membuat wadah Anda sendiri untuk digunakan dengan titik akhir multi-model yang didukung CPU.

Gambar Custom Amazon Elastic Container Registry (Amazon ECR) yang digunakan di SageMaker Amazon AI diharapkan mematuhi kontrak dasar yang dijelaskan [Kode Inferensi Kustom dengan Layanan Hosting](your-algorithms-inference-code.md) dalam yang mengatur SageMaker bagaimana AI berinteraksi dengan wadah Docker yang menjalankan kode inferensi Anda sendiri. Agar wadah dapat memuat dan melayani beberapa model secara bersamaan, ada tambahan APIs dan perilaku yang harus diikuti. Kontrak tambahan ini mencakup model baru APIs untuk memuat, mencantumkan, mendapatkan, dan membongkar, dan API yang berbeda untuk memanggil model. Ada juga perilaku berbeda untuk skenario kesalahan yang APIs perlu dipatuhi. Untuk menunjukkan bahwa kontainer memenuhi persyaratan tambahan, Anda dapat menambahkan perintah berikut ke file Docker Anda:

```
LABEL com.amazonaws.sagemaker.capabilities.multi-models=true
```

SageMaker AI juga menyuntikkan variabel lingkungan ke dalam wadah

```
SAGEMAKER_MULTI_MODEL=true
```

Jika Anda membuat titik akhir multi-model untuk pipline inferensi serial, file Docker Anda harus memiliki label yang diperlukan untuk pipeline inferensi multi-model dan serial. Untuk informasi selengkapnya tentang jalur informasi serial, lihat[Jalankan Prediksi Real-time dengan Pipeline Inferensi](inference-pipeline-real-time.md).

Untuk membantu Anda menerapkan persyaratan ini untuk wadah kustom, tersedia dua pustaka:
+ [Multi Model Server](https://github.com/awslabs/multi-model-server) adalah kerangka kerja open source untuk melayani model pembelajaran mesin yang dapat diinstal dalam wadah untuk menyediakan ujung depan yang memenuhi persyaratan untuk wadah endpoint multi-model baru. APIs Ini menyediakan ujung depan HTTP dan kemampuan manajemen model yang diperlukan oleh titik akhir multi-model untuk meng-host beberapa model dalam satu wadah, memuat model ke dalam dan membongkar model keluar dari wadah secara dinamis, dan melakukan inferensi pada model dimuat yang ditentukan. Ini juga menyediakan backend pluggable yang mendukung handler backend kustom pluggable di mana Anda dapat mengimplementasikan algoritme Anda sendiri.
+ [SageMaker AI Inference Toolkit](https://github.com/aws/sagemaker-inference-toolkit) adalah perpustakaan yang mem-bootstrap Multi Model Server dengan konfigurasi dan pengaturan yang membuatnya kompatibel dengan SageMaker titik akhir multi-model AI. Ini juga memungkinkan Anda untuk mengubah parameter kinerja penting, seperti jumlah pekerja per model, tergantung pada kebutuhan skenario Anda. 

## Bawa dependensi Anda sendiri untuk titik akhir multi-model pada instans yang didukung GPU
<a name="build-multi-model-container-gpu"></a>

Kemampuan bring your own container (BYOC) pada titik akhir multi-model dengan instans yang didukung GPU saat ini tidak didukung oleh pustaka Multi Model Server dan AI Inference Toolkit. SageMaker 

[Untuk membuat titik akhir multi-model dengan instans yang didukung GPU, Anda dapat menggunakan NVIDIA Triton [Inference Server yang didukung SageMaker AI. dengan NVIDIA Triton Inference Containers](https://docs.aws.amazon.com/sagemaker/latest/dg/triton.html).](https://github.com/aws/deep-learning-containers/blob/master/available_images.md#nvidia-triton-inference-containers-sm-support-only) Untuk membawa dependensi Anda sendiri, Anda dapat membangun wadah Anda sendiri dengan [NVIDIA Triton Inference Server](https://docs.aws.amazon.com/sagemaker/latest/dg/triton.html) yang didukung SageMaker AI sebagai gambar dasar ke file Docker Anda:

```
FROM 301217895009.dkr.ecr.us-west-2.amazonaws.com/sagemaker-tritonserver:22.07-py3
```

**penting**  
Container dengan Triton Inference Server adalah satu-satunya kontainer yang didukung yang dapat Anda gunakan untuk titik akhir multi-model yang didukung GPU.

## Gunakan SageMaker Toolkit Inferensi AI
<a name="multi-model-inference-toolkit"></a>

**catatan**  
 SageMaker AI Inference Toolkit hanya didukung untuk titik akhir multi-model yang didukung CPU. SageMaker AI Inference Toolkit saat ini tidak didukung untuk titik akhir multi-model yang didukung GPU.

Kontainer pra-bangun yang mendukung titik akhir multi-model tercantum dalam. [Algoritma, kerangka kerja, dan instance yang didukung untuk titik akhir multi-model](multi-model-support.md) Jika Anda ingin menggunakan kerangka kerja atau algoritme lain, Anda perlu membangun wadah. Cara termudah untuk melakukannya adalah dengan menggunakan [SageMaker AI Inference Toolkit](https://github.com/aws/sagemaker-inference-toolkit) untuk memperluas wadah pra-bangun yang ada. Toolkit inferensi SageMaker AI adalah implementasi untuk server multi-model (MMS) yang menciptakan titik akhir yang dapat digunakan di AI. SageMaker Untuk contoh notebook yang menunjukkan cara menyiapkan dan menerapkan container khusus yang mendukung titik akhir multi-model di SageMaker AI, lihat Notebook Sampel BYOC [Multi-Model Endpoint](https://github.com/awslabs/amazon-sagemaker-examples/tree/master/advanced_functionality/multi_model_bring_your_own).

**catatan**  
Toolkit inferensi SageMaker AI hanya mendukung penangan model Python. Jika Anda ingin mengimplementasikan handler Anda dalam bahasa lain, Anda harus membangun container Anda sendiri yang mengimplementasikan endpoint multi-model tambahan. APIs Untuk informasi, lihat [Kontrak Kontainer Kustom untuk Titik Akhir Multi-Model](mms-container-apis.md).

**Untuk memperluas wadah dengan menggunakan toolkit inferensi SageMaker AI**

1. Buat handler model. MMS mengharapkan handler model, yang merupakan file Python yang mengimplementasikan fungsi untuk pra-proses, mendapatkan predisi dari model, dan memproses output dalam handler model. Untuk contoh handler model, lihat [model\$1handler.py](https://github.com/awslabs/amazon-sagemaker-examples/blob/master/advanced_functionality/multi_model_bring_your_own/container/model_handler.py) dari notebook contoh.

1. Impor toolkit inferensi dan gunakan `model_server.start_model_server` fungsinya untuk memulai MMS. Contoh berikut adalah dari `dockerd-entrypoint.py` file dari notebook sampel. Perhatikan bahwa panggilan untuk `model_server.start_model_server` melewati handler model yang dijelaskan pada langkah sebelumnya:

   ```
   import subprocess
   import sys
   import shlex
   import os
   from retrying import retry
   from subprocess import CalledProcessError
   from sagemaker_inference import model_server
   
   def _retry_if_error(exception):
       return isinstance(exception, CalledProcessError or OSError)
   
   @retry(stop_max_delay=1000 * 50,
          retry_on_exception=_retry_if_error)
   def _start_mms():
       # by default the number of workers per model is 1, but we can configure it through the
       # environment variable below if desired.
       # os.environ['SAGEMAKER_MODEL_SERVER_WORKERS'] = '2'
       model_server.start_model_server(handler_service='/home/model-server/model_handler.py:handle')
   
   def main():
       if sys.argv[1] == 'serve':
           _start_mms()
       else:
           subprocess.check_call(shlex.split(' '.join(sys.argv[1:])))
   
       # prevent docker exit
       subprocess.call(['tail', '-f', '/dev/null'])
       
   main()
   ```

1. Dalam Anda`Dockerfile`, salin handler model dari langkah pertama dan tentukan file Python dari langkah sebelumnya sebagai titik masuk dalam file Anda. `Dockerfile` Baris berikut berasal dari [Dockerfile](https://github.com/awslabs/amazon-sagemaker-examples/blob/master/advanced_functionality/multi_model_bring_your_own/container/Dockerfile) yang digunakan dalam contoh notebook:

   ```
   # Copy the default custom service file to handle incoming data and inference requests
   COPY model_handler.py /home/model-server/model_handler.py
   
   # Define an entrypoint script for the docker image
   ENTRYPOINT ["python", "/usr/local/bin/dockerd-entrypoint.py"]
   ```

1. Bangun dan daftarkan wadah Anda. Skrip shell berikut dari notebook contoh membangun wadah dan mengunggahnya ke repositori Amazon Elastic Container Registry di akun Anda: AWS 

   ```
   %%sh
   
   # The name of our algorithm
   algorithm_name=demo-sagemaker-multimodel
   
   cd container
   
   account=$(aws sts get-caller-identity --query Account --output text)
   
   # Get the region defined in the current configuration (default to us-west-2 if none defined)
   region=$(aws configure get region)
   region=${region:-us-west-2}
   
   fullname="${account}.dkr.ecr.${region}.amazonaws.com/${algorithm_name}:latest"
   
   # If the repository doesn't exist in ECR, create it.
   aws ecr describe-repositories --repository-names "${algorithm_name}" > /dev/null 2>&1
   
   if [ $? -ne 0 ]
   then
       aws ecr create-repository --repository-name "${algorithm_name}" > /dev/null
   fi
   
   # Get the login command from ECR and execute it directly
   $(aws ecr get-login --region ${region} --no-include-email)
   
   # Build the docker image locally with the image name and then push it to ECR
   # with the full name.
   
   docker build -q -t ${algorithm_name} .
   docker tag ${algorithm_name} ${fullname}
   
   docker push ${fullname}
   ```

Anda sekarang dapat menggunakan wadah ini untuk menerapkan titik akhir multi-model di AI. SageMaker 

**Topics**
+ [Bawa dependensi Anda sendiri untuk titik akhir multi-model pada instance yang didukung CPU](#build-multi-model-container-cpu)
+ [Bawa dependensi Anda sendiri untuk titik akhir multi-model pada instans yang didukung GPU](#build-multi-model-container-gpu)
+ [Gunakan SageMaker Toolkit Inferensi AI](#multi-model-inference-toolkit)
+ [Kontrak Kontainer Kustom untuk Titik Akhir Multi-Model](mms-container-apis.md)