Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.
DJL Serving adalah solusi penyajian model berdiri sendiri universal berkinerja tinggi. Dibutuhkan model pembelajaran mendalam, beberapa model, atau alur kerja dan membuatnya tersedia melalui titik akhir HTTP.
Anda dapat menggunakan salah satu dari DJL Serving Deep Learning Containers (DLCs) untuk melayani model Anda. AWS Untuk mempelajari tentang jenis model dan kerangka kerja yang didukung, lihat repositori DJL Serving GitHub
DJL Serving menawarkan banyak fitur yang membantu Anda untuk menyebarkan 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 meng-host mereka.
-
Beberapa perangkat dan dukungan akselerator - DJL Serving mendukung penerapan model pada CPUs, GPUs, dan Inferentia. AWS
-
Kinerja - DJL Serving menjalankan inferensi multithreaded 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 menskalakan pekerja naik atau turun berdasarkan beban lalu lintas.
-
Dukungan multi-engine - DJL Serving dapat secara bersamaan meng-host model menggunakan kerangka kerja yang berbeda (misalnya, PyTorch dan). TensorFlow
-
Model ensemble dan alur kerja - DJL Serving mendukung penerapan alur kerja kompleks yang terdiri dari beberapa model dan dapat mengeksekusi bagian dari alur kerja dan bagian lain pada. CPUs GPUs Model dalam alur kerja dapat memanfaatkan kerangka kerja yang berbeda.
Bagian berikut menjelaskan cara menyiapkan endpoint dengan DJL Serving on SageMaker AI.
Memulai
Untuk memulai, pastikan Anda memiliki prasyarat berikut:
-
Pastikan Anda memiliki akses ke AWS akun. Siapkan lingkungan Anda sehingga AWS CLI dapat mengakses akun Anda melalui pengguna AWS IAM atau peran IAM. Kami merekomendasikan menggunakan peran IAM. Untuk tujuan pengujian di akun pribadi Anda, Anda dapat melampirkan kebijakan izin terkelola berikut ke peran IAM:
-
Pastikan Anda telah menyiapkan klien docker
di sistem Anda. -
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 -
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 kontainer DJL Serving yang tersedia, lihat wadah inferensi model besar dan wadah inferensi
CPU Serving DJL . Saat memilih gambar dari tabel di tautan sebelumnya, ganti AWS wilayah di kolom URL contoh dengan wilayah tempat Anda berada. Tersedia di wilayah DLCs yang tercantum dalam tabel di bagian atas halaman Available Deep Learning Containers Images .
Sesuaikan wadah Anda
Anda dapat menambahkan paket ke gambar DLC dasar untuk menyesuaikan wadah Anda. Misalkan Anda ingin menambahkan paket ke image 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:
-
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
-
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 di AWS CLI Panduan Pengguna Amazon ECR untuk petunjuk tentang cara membuatnya.
docker build -f Dockerfile -t <registry>/<image_name>:<image_tag>
-
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 kontainer khusus yang dapat Anda gunakan untuk penyajian model. Untuk lebih banyak contoh menyesuaikan kontainer Anda, lihat Membangun Gambar Kustom AWS Deep Learning Containers
Siapkan artefak model Anda
Sebelum menerapkan model Anda di SageMaker AI, Anda harus mengemas artefak model Anda dalam sebuah .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. Tempatkanserving.properties
di direktori yang sama dengan file model Anda. -
model.py
: Kode penangan inferensi. Ini hanya berlaku saat menggunakan mode Python. Jika Anda tidak menentukanmodel.py
, djl-serving 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 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 menerapkan 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 DJL Serving dasar seperti yang ditunjukkan dalam contoh ini, atau Anda dapat menentukan gambar Docker kustom dari repositori Amazon ECR Anda, jika Anda mengikuti instruksi di. Sesuaikan wadah Anda -
model_s3_url
: Ini harus URI Amazon S3 yang menunjuk ke file Anda.tar.gz
. -
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 terukur 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 Penyajian DJL mematuhi kontrak titik akhir multi-model SageMaker AI dan dapat digunakan untuk menyebarkan titik akhir multi-model.
Setiap artefak model individu perlu dikemas dengan cara yang sama seperti yang dijelaskan di bagian sebelumnya. Siapkan artefak model Anda 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 MultiDataModelmodel_data_prefix
argumen ke konstruktor. MultiDataModel
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.
Fitur penskalaan otomatis dari 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 core 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 satu model tidak mengkonsumsi semua sumber daya yang tersedia. Anda dapat mengatur properti berikut dalam file serving.properties
gpu.minWorkers
: Jumlah minimum pekerja untuk GPUs.gpu.maxWorkers
: Jumlah maksimum pekerja untuk GPUs.cpu.minWorkers
: Jumlah minimum pekerja untuk CPUs.cpu.maxWorkers
: Jumlah maksimum pekerja untuk CPUs.