View a markdown version of this page

Bangun Wadah Anda Sendiri untuk Titik SageMaker Ak Multi-Model hir AI - Amazon SageMaker AI

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

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

Bawa dependensi Anda sendiri untuk titik akhir multi-model pada instans yang didukung CPU

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 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, lihatJalankan Real-time Prediksi dengan Pipeline Inferensi.

Untuk membantu Anda menerapkan persyaratan ini untuk wadah khusus, tersedia dua pustaka:

  • 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 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

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. dengan Kontainer Inferensi NVIDIA Triton. Untuk membawa dependensi Anda sendiri, Anda dapat membuat wadah Anda sendiri dengan NVIDIA Triton Inference Server 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

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

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 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 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.

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.

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 dari notebook sampel.

  2. 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()
  3. Di AndaDockerfile, 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 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"]
  4. 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.