View a markdown version of this page

Menyebarkan model dengan DJL Serving - Amazon SageMaker AI

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

Menyebarkan model dengan DJL Serving

DJL Serving adalah solusi penyajian model mandiri universal berkinerja tinggi. Dibutuhkan model pembelajaran mendalam, beberapa model, atau alur kerja dan membuatnya tersedia melalui titik akhir HTTP.

Anda dapat menggunakan salah satu DJL Serving Deep Learning Containers (DLC) untuk menyajikan model Anda. AWS Untuk mempelajari tentang jenis model dan kerangka kerja yang didukung, lihat GitHub repositori https://github.com/deepjavalibrary/djl-serving DJL Serving.

DJL Serving menawarkan banyak fitur yang membantu Anda menerapkan model Anda dengan kinerja tinggi:

  • Kemudahan penggunaan - DJL Serving dapat melayani sebagian besar model tanpa modifikasi apa pun. Anda membawa artefak model Anda, dan DJL Serving dapat menampungnya.

  • Dukungan beberapa perangkat dan akselerator — DJL Serving mendukung penerapan model pada CPU, GPU, dan Inferentia. AWS

  • Kinerja — DJL Serving menjalankan inferensi multithread dalam satu mesin virtual Java (JVM) untuk meningkatkan throughput.

  • Batching Dinamis — DJL Serving mendukung batching dinamis untuk meningkatkan throughput.

  • Penskalaan otomatis — DJL Serving secara otomatis meningkatkan atau menurunkan skala pekerja berdasarkan beban lalu lintas.

  • Multi-engine dukungan - DJL Serving dapat secara bersamaan meng-host model menggunakan kerangka kerja yang berbeda (misalnya, PyTorch dan TensorFlow).

  • Model ansambel dan alur kerja — DJL Serving mendukung penerapan alur kerja kompleks yang terdiri dari beberapa model dan dapat mengeksekusi bagian alur kerja pada CPU dan bagian lain pada GPU. Model dalam alur kerja dapat memanfaatkan kerangka kerja yang berbeda.

Bagian berikut menjelaskan cara mengatur titik akhir dengan DJL Serving di SageMaker AI.

Memulai

Untuk memulai, pastikan Anda memiliki prasyarat berikut:

  1. Pastikan Anda memiliki akses ke AWS akun. Siapkan lingkungan Anda sehingga AWS CLI dapat mengakses akun Anda melalui pengguna AWS IAM atau peran IAM. Sebaiknya gunakan peran IAM. Untuk tujuan pengujian di akun pribadi Anda, Anda dapat melampirkan kebijakan izin terkelola berikut ke peran IAM:

  2. Pastikan bahwa Anda memiliki klien docker yang disiapkan di sistem Anda.

  3. Masuk ke Amazon Elastic Container Registry dan atur variabel lingkungan berikut:

    export ACCOUNT_ID=<your_account_id> export REGION=<your_region> aws ecr get-login-password --region $REGION | docker login --username AWS --password-stdin $ACCOUNT_ID.dkr.ecr.$REGION.amazonaws.com
  4. Tarik gambar docker.

    docker pull 763104351884.dkr.ecr.us-west-2.amazonaws.com/djl-inference:0.22.1-deepspeed0.9.2-cu118

    Untuk semua gambar wadah DJL Serving yang tersedia, lihat wadah inferensi model besar dan wadah inferensi CPU DJL Serving. Saat memilih gambar dari tabel di tautan sebelumnya, ganti AWS wilayah di kolom URL contoh dengan wilayah tempat Anda berada. DLC tersedia di wilayah yang tercantum dalam tabel di bagian atas halaman Gambar Wadah Pembel ajaran Mendalam yang Tersedia.

Sesuaikan wadah Anda

Anda dapat menambahkan paket ke gambar DLC dasar untuk menyesuaikan wadah Anda. Misalkan Anda ingin menambahkan paket ke gambar 763104351884.dkr.ecr.us-west-2.amazonaws.com/djl-inference:0.22.1-deepspeed0.9.2-cu118 docker. Anda harus membuat dockerfile dengan gambar yang Anda inginkan sebagai gambar dasar, menambahkan paket yang diperlukan, dan mendorong gambar ke Amazon ECR.

Untuk menambahkan paket, selesaikan langkah-langkah berikut:

  1. Tentukan instruksi untuk menjalankan pustaka atau paket yang Anda inginkan di dockerfile gambar dasar.

    FROM 763104351884.dkr.ecr.us-west-2.amazonaws.com/djl-inference:0.22.1-deepspeed0.9.2-cu118 ## add custom packages/libraries RUN git clone https://github.com/awslabs/amazon-sagemaker-examples
  2. Bangun image Docker dari dockerfile. Tentukan repositori Amazon ECR Anda, nama gambar dasar, dan tag untuk gambar. Jika Anda tidak memiliki repositori Amazon ECR, lihat Menggunakan Amazon ECR dengan AWS CLI di Panduan Pengguna Amazon ECR untuk petunjuk tentang cara membuatnya.

    docker build -f Dockerfile -t <registry>/<image_name>:<image_tag>
  3. Dorong gambar Docker ke repositori Amazon ECR Anda.

    docker push $ACCOUNT_ID.dkr.ecr.$REGION.amazonaws.com/<image_name>:<image_tag>

Anda sekarang harus memiliki gambar wadah khusus yang dapat Anda gunakan untuk penyajian model. Untuk contoh lebih lanjut tentang menyesuaikan wadah Anda, lihat Membangun Gambar Kustom W ad AWS ah Pembelajaran Mendalam.

Siapkan artefak model Anda

Sebelum menerapkan model Anda di SageMaker AI, Anda harus mengemas artefak model Anda dalam .tar.gz file. DJL Serving menerima artefak berikut dalam arsip Anda:

  • Pos pemeriksaan model: File yang menyimpan bobot model Anda.

  • serving.properties: File konfigurasi yang dapat Anda tambahkan untuk setiap model. Tem serving.properties patkan di direktori yang sama dengan file model Anda.

  • model.py: Kode pengendali inferensi. Ini hanya berlaku saat menggunakan mode Python. Jika Anda tidak menentukanmodel.py, djl-serve menggunakan salah satu penangan default.

Berikut ini adalah contoh model.tar.gz struktur:

- model_root_dir # root directory - serving.properties - model.py # your custom handler file for Python, if you choose not to use the default handlers provided by DJL Serving - model binary files # used for Java mode, or if you don't want to use option.model_id and option.s3_url for Python mode

DJL Serving mendukung mesin Java yang didukung oleh mesin DJL atau Python. Tidak semua artefak sebelumnya diperlukan; artefak yang diperlukan bervariasi berdasarkan mode yang Anda pilih. Misalnya, dalam mode Python, Anda hanya perlu menentukan option.model_id dalam serving.properties file; Anda tidak perlu menentukan pos pemeriksaan model di dalam wadah LMI. Dalam mode Java, Anda diminta untuk mengemas pos pemeriksaan model. Untuk detail selengkapnya tentang cara mengkonfigurasi serving.properties dan mengoperasikan dengan mesin yang berbeda, lihat Mode Operasi Penyajian DJL.

Gunakan titik akhir model tunggal untuk diterapkan dengan DJL Serving

Setelah menyiapkan artefak model Anda, Anda dapat menerapkan model Anda ke titik akhir SageMaker AI. Bagian ini menjelaskan cara menerapkan model tunggal ke titik akhir dengan DJL Serving. Jika Anda menerapkan beberapa model, lewati bagian ini dan buka. Gunakan titik akhir multi-model untuk menerapkan dengan DJL Serving

Contoh berikut menunjukkan metode untuk membuat objek model menggunakan Amazon SageMaker Python SDK. Anda harus menentukan bidang berikut:

  • image_uri: Anda dapat mengambil salah satu gambar dasar DJL Serving seperti yang ditunjukkan dalam contoh ini, atau Anda dapat menentukan gambar Docker khusus dari repositori Amazon ECR Anda, jika Anda mengikuti instruksi di. Sesuaikan wadah Anda

  • model_s3_url: Ini harus URI Amazon S3 yang menunjuk ke .tar.gz file Anda.

  • model_name: Tentukan nama untuk objek model.

import boto3 import sagemaker from sagemaker.model import Model from sagemaker import image_uris, get_execution_role aws_region = "aws-region" sagemaker_session = sagemaker.Session(boto_session=boto3.Session(region_name=aws_region)) role = get_execution_role() def create_model(model_name, model_s3_url): # Get the DJL DeepSpeed image uri image_uri = image_uris.retrieve( framework="djl-deepspeed", region=sagemaker_session.boto_session.region_name, version="0.20.0" ) model = Model( image_uri=image_uri, model_data=model_s3_url, role=role, name=model_name, sagemaker_session=sagemaker_session, ) return model

Gunakan titik akhir multi-model untuk menerapkan dengan DJL Serving

Jika Anda ingin menerapkan beberapa model ke titik akhir, SageMaker AI menawarkan titik akhir multi-model, yang merupakan solusi yang dapat diskalakan dan hemat biaya untuk menerapkan sejumlah besar model. DJL Serving juga mendukung pemuatan beberapa model secara bersamaan dan menjalankan inferensi pada masing-masing model secara bersamaan. Kontainer DJL Serving mematuhi kontrak titik SageMaker akhir multi-model AI dan dapat digunakan untuk menerapkan titik akhir multi-model.

Setiap artefak model individu perlu dikemas dengan cara yang sama seperti yang dijelaskan di bagian Siapkan artefak model Anda sebelumnya. Anda dapat mengatur konfigurasi khusus model dalam serving.properties file dan kode pengendali inferensi khusus model di. model.py Untuk titik akhir multi-model, model perlu diatur dengan cara berikut:

root_dir |-- model_1.tar.gz |-- model_2.tar.gz |-- model_3.tar.gz . . .

Amazon SageMaker Python SDK menggunakan MultiDataModel objek untuk membuat instance titik akhir multi-model. URI Amazon S3 untuk direktori root harus diteruskan sebagai model_data_prefix argumen ke MultiDataModel konstruktor.

DJL Serving juga menyediakan beberapa parameter konfigurasi untuk mengelola persyaratan memori model, seperti required_memory_mb danreserved_memory_mb, yang dapat dikonfigurasi untuk setiap model dalam file serving.properties. Parameter ini berguna untuk menangani kesalahan kehabisan memori dengan lebih anggun. Untuk semua parameter yang dapat dikonfigurasi, lihat OutofMemory penanganan di dj l-serve.

Fitur penskalaan otomatis DJL Serving memudahkan untuk memastikan bahwa model diskalakan dengan tepat untuk lalu lintas masuk. Secara default, DJL Serving menentukan jumlah maksimum pekerja untuk model yang dapat didukung berdasarkan perangkat keras yang tersedia (seperti inti CPU atau perangkat GPU). Anda dapat mengatur batas bawah dan atas untuk setiap model untuk memastikan bahwa tingkat lalu lintas minimum selalu dapat dilayani, dan bahwa model tunggal tidak menggunakan semua sumber daya yang tersedia. Anda dapat mengatur properti berikut dalam file serving.properties:

  • gpu.minWorkers: Jumlah minimum pekerja untuk GPU.

  • gpu.maxWorkers: Jumlah maksimum pekerja untuk GPU.

  • cpu.minWorkers: Jumlah minimum pekerja untuk CPU.

  • cpu.maxWorkers: Jumlah maksimum pekerja untuk CPU.

Untuk contoh ujung ke ujung tentang cara menerapkan titik akhir multi-model pada SageMaker AI menggunakan wadah DJL Serving, lihat contoh notebook. Multi-Model-Inference-Demo.ipynb