

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

# Bangun Wadah Anda Sendiri untuk Titik SageMaker Ak Multi-Model hir 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 instans 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 Perangkat Inferensi SageMaker AI](#multi-model-inference-toolkit)
+ [Kontrak Kontainer Kustom untuk Titik Multi-Model Akhir](mms-container-apis.md)

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

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

Gambar Amazon Elastic Container Registry (Amazon ECR) khusus yang digunakan di Amazon SageMaker AI diharapkan mematuhi kontrak dasar yang dijelaskan di dalam [Kode Inferensi Kustom dengan Layanan Hosting](your-algorithms-inference-code.md) yang mengatur bagaimana SageMaker AI berinteraksi dengan wadah Docker yang menjalankan kode inferensi Anda sendiri. Agar wadah dapat memuat dan melayani beberapa model secara bersamaan, ada API dan perilaku tambahan yang harus diikuti. Kontrak tambahan ini mencakup API baru untuk memuat, membuat daftar, mendapatkan, dan membongkar model, dan API berbeda untuk memanggil model. Ada juga perilaku berbeda untuk skenario kesalahan yang harus dipatuhi oleh API. Untuk menunjukkan bahwa wadah 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 saluran multi-model dan inferensi serial. Untuk informasi selengkapnya tentang saluran informasi serial, lihat[Jalankan Real-time Prediksi dengan Pipeline Inferensi](inference-pipeline-real-time.md).

Untuk membantu Anda menerapkan persyaratan ini untuk wadah khusus, tersedia dua pustaka:
+ [Multi Model Server ](https://github.com/awslabs/multi-model-server) adalah kerangka kerja sumber terbuka untuk melayani model pembelajaran mesin yang dapat diinstal dalam wadah untuk menyediakan ujung depan yang memenuhi persyaratan untuk API kontainer titik akhir multi-model baru. Ini menyediakan kemampuan front-end HTTP dan 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 yang dimuat tertentu. Ini juga menyediakan backend yang dapat dicolokkan yang mendukung penangan backend kustom yang dapat dicolokkan di mana Anda dapat mengimplementasikan algoritma Anda sendiri.
+ [SageMaker AI Inference Toolkit ](https://github.com/aws/sagemaker-inference-toolkit) adalah pustaka yang mem-bootstrap Server Multi Model dengan konfigurasi dan pengaturan yang membuatnya kompatibel dengan titik akhir multi-model SageMaker 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 membawa wadah Anda sendiri (BYOC) pada titik akhir multi-model dengan instans yang didukung GPU saat ini tidak didukung oleh pustaka Multi Model Server dan SageMaker AI Inference Toolkit.

Untuk membuat titik akhir multi-model dengan instans yang didukung GPU, Anda dapat menggunakan [ NVIDIA Triton Inference Server yang didukung SageMaker AI](https://docs.aws.amazon.com/sagemaker/latest/dg/triton.html). dengan Kontainer Inferensi [ NVIDIA Triton. ](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 membuat wadah Anda sendiri dengan [ NVIDIA Triton Inference Server yang didukung SageMaker AI ](https://docs.aws.amazon.com/sagemaker/latest/dg/triton.html) sebagai gambar dasar ke file Docker Anda:

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

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

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

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

Pre-built wadah yang mendukung titik akhir multi-model terdaftar di. [Algoritma, kerangka kerja, dan instance yang didukung untuk titik akhir multi-model](multi-model-support.md) Jika Anda ingin menggunakan kerangka kerja atau algoritma lain, Anda perlu membangun wadah. Cara termudah untuk melakukan ini 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 buku catatan yang menunjukkan cara mengatur dan menerapkan wadah khusus yang mendukung titik akhir multi-model di SageMaker AI, lihat Notebook Sampel [ Multi-Model Endpoint BYOC. ](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 membuat wadah Anda sendiri yang mengimplementasikan API titik akhir multi-model tambahan. Untuk informasi, lihat [Kontrak Kontainer Kustom untuk Titik Multi-Model Akhir](mms-container-apis.md).

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

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

1. Impor toolkit inferensi dan gunakan fung `model_server.start_model_server` sinya untuk memulai MMS. Contoh berikut adalah dari `dockerd-entrypoint.py` file dari notebook sampel. Perhatikan bahwa panggilan untuk `model_server.start_model_server` melewati pengendali 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. Di Anda`Dockerfile`, salin pengendali model dari langkah pertama dan tentukan file Python dari langkah sebelumnya sebagai titik masuk di Anda. `Dockerfile` Baris-baris berikut berasal dari [ Dockerfile yang ](https://github.com/awslabs/amazon-sagemaker-examples/blob/master/advanced_functionality/multi_model_bring_your_own/container/Dockerfile) 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 membuat wadah dan mengunggahnya ke repositori Amazon Elastic Container Registry di AWS akun Anda:

   ```
   %%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 SageMaker AI.

**Topics**
+ [Bawa dependensi Anda sendiri untuk titik akhir multi-model pada instans 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 Perangkat Inferensi SageMaker AI](#multi-model-inference-toolkit)
+ [Kontrak Kontainer Kustom untuk Titik Multi-Model Akhir](mms-container-apis.md)