Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.
Kode Inferensi Kustom dengan Layanan Hosting
Bagian ini menjelaskan bagaimana Amazon SageMaker AI berinteraksi dengan wadah Docker yang menjalankan kode inferensi Anda sendiri untuk layanan hosting. Gunakan informasi ini untuk menulis kode inferensi dan membuat gambar Docker.
Topik
- Bagaimana SageMaker AI Menjalankan Gambar Inferensi Anda
- Bagaimana SageMaker AI Memuat Artefak Model Anda
- Bagaimana Kontainer Anda Harus Menanggapi Permintaan Inferensi
- Bagaimana Kontainer Anda Harus Menanggapi Permintaan Pemeriksaan Kesehatan (Ping)
- Gunakan Private Docker Registry untuk Wadah Inferensi Real-Time
Bagaimana SageMaker AI Menjalankan Gambar Inferensi Anda
Untuk mengonfigurasi wadah agar dijalankan sebagai executable, gunakan ENTRYPOINT
instruksi dalam Dockerfile. Perhatikan hal berikut:
-
Untuk inferensi model, SageMaker AI menjalankan wadah sebagai:
docker run
image
serveSageMaker AI mengganti
CMD
pernyataan default dalam wadah dengan menentukanserve
argumen setelah nama gambar.serve
Argumen mengesampingkan argumen yang Anda berikan denganCMD
perintah di Dockerfile. -
SageMaker AI mengharapkan semua kontainer berjalan dengan pengguna root. Buat wadah Anda sehingga hanya menggunakan pengguna root. Saat SageMaker AI menjalankan penampung Anda, pengguna yang tidak memiliki akses tingkat root dapat menyebabkan masalah izin.
-
Kami menyarankan Anda menggunakan
exec
bentukENTRYPOINT
instruksi:ENTRYPOINT ["executable", "param1", "param2"]
Sebagai contoh:
ENTRYPOINT ["python", "k_means_inference.py"]
exec
BentukENTRYPOINT
instruksi memulai eksekusi secara langsung, bukan sebagai anak dari./bin/sh
Ini memungkinkannya untuk menerima sinyal sepertiSIGTERM
danSIGKILL
dari SageMaker API operasi, yang merupakan persyaratan.Misalnya, saat Anda menggunakan
CreateEndpoint
APIuntuk membuat titik akhir, SageMaker AI menyediakan jumlah instans komputasi ML yang diperlukan oleh konfigurasi titik akhir, yang Anda tentukan dalam permintaan. SageMaker AI menjalankan wadah Docker pada instance tersebut.Jika Anda mengurangi jumlah instance yang mendukung titik akhir (dengan memanggil
UpdateEndpointWeightsAndCapacities
API), SageMaker AI menjalankan perintah untuk menghentikan wadah Docker pada instance yang sedang dihentikan. Perintah mengirimkanSIGTERM
sinyal, kemudian mengirimkanSIGKILL
sinyal tiga puluh detik kemudian.Jika Anda memperbarui titik akhir (dengan memanggil
UpdateEndpoint
API), SageMaker AI meluncurkan set instance komputasi HTML lainnya dan menjalankan container Docker yang berisi kode inferensi Anda di dalamnya. Kemudian menjalankan perintah untuk menghentikan kontainer Docker sebelumnya. Untuk menghentikan kontainer Docker, perintah mengirimkanSIGTERM
sinyal, lalu mengirimkanSIGKILL
sinyal 30 detik kemudian. -
SageMaker AI menggunakan definisi container yang Anda berikan dalam
CreateModel
permintaan untuk menyetel variabel lingkungan dan DNS nama host untuk container sebagai berikut:-
Ini menetapkan variabel lingkungan menggunakan
ContainerDefinition.Environment
string-to-string peta. -
Ini menetapkan DNS nama host menggunakan file.
ContainerDefinition.ContainerHostname
-
-
Jika Anda berencana menggunakan GPU perangkat untuk inferensi model (dengan menentukan instance komputasi HTML GPU berbasis dalam
CreateEndpointConfig
permintaan Anda), pastikan container Anda kompatibel.nvidia-docker
Jangan bundel NVIDIA driver dengan gambar. Untuk informasi selengkapnyanvidia-docker
, lihat NVIDIA/nvidia-docker. -
Anda tidak dapat menggunakan
tini
penginisialisasi sebagai titik masuk Anda dalam wadah SageMaker AI karena bingung dengan argumentrain
danserve
.
Bagaimana SageMaker AI Memuat Artefak Model Anda
Dalam CreateModel
APIpermintaan Anda, Anda dapat menggunakan S3DataSource
parameter ModelDataUrl
atau untuk mengidentifikasi lokasi S3 tempat artefak model disimpan. SageMaker AI menyalin artefak model Anda dari lokasi S3 ke /opt/ml/model
direktori untuk digunakan oleh kode inferensi Anda. Kontainer Anda memiliki akses hanya-baca ke. /opt/ml/model
Jangan menulis ke direktori ini.
ModelDataUrl
Harus menunjuk ke file tar.gz. Jika tidak, SageMaker AI tidak akan mengunduh file.
Jika Anda melatih model Anda dalam SageMaker AI, artefak model disimpan sebagai file tar terkompresi tunggal di Amazon S3. Jika Anda melatih model Anda di luar SageMaker AI, Anda perlu membuat file tar terkompresi tunggal ini dan menyimpannya di lokasi S3. SageMaker AI mendekompresi into /opt/ml/model direktori file tar ini sebelum penampung Anda dimulai.
Untuk menerapkan model besar, kami sarankan Anda mengikutiMenerapkan model yang tidak terkompresi.
Bagaimana Kontainer Anda Harus Menanggapi Permintaan Inferensi
Untuk mendapatkan kesimpulan, aplikasi klien mengirimkan POST permintaan ke titik akhir SageMaker AI. SageMaker AI meneruskan permintaan ke wadah, dan mengembalikan hasil inferensi dari wadah ke klien.
Untuk informasi selengkapnya tentang permintaan inferensi yang akan diterima container Anda, lihat tindakan berikut di APIReferensi Amazon SageMaker AI:
Persyaratan untuk wadah inferensi
Untuk menanggapi permintaan inferensi, kontainer Anda harus memenuhi persyaratan berikut:
-
SageMaker AI menghapus semua
POST
header kecuali yang didukung olehInvokeEndpoint
. SageMaker AI mungkin menambahkan header tambahan. Wadah inferensi harus dapat dengan aman mengabaikan header tambahan ini. -
Untuk menerima permintaan inferensi, penampung harus memiliki server web yang mendengarkan pada port 8080 dan harus menerima
POST
permintaan ke/invocations
dan/ping
titik akhir. -
Kontainer model pelanggan harus menerima permintaan koneksi soket dalam 250 ms.
-
Kontainer model pelanggan harus menanggapi permintaan dalam waktu 60 detik. Model itu sendiri dapat memiliki waktu pemrosesan maksimum 60 detik sebelum merespons.
/invocations
Jika model Anda akan memakan waktu 50-60 detik waktu pemrosesan, batas waktu SDK soket harus diatur menjadi 70 detik.
contoh fungsi pemanggilan
Contoh berikut menunjukkan bagaimana kode dalam wadah Anda dapat memproses permintaan inferensi. Contoh-contoh ini menangani permintaan yang dikirim aplikasi klien dengan menggunakan InvokeEndpoint tindakan.
contoh fungsi pemanggilan untuk permintaan streaming
Contoh berikut menunjukkan bagaimana kode dalam wadah inferensi Anda dapat memproses permintaan inferensi streaming. Contoh-contoh ini menangani permintaan yang dikirim aplikasi klien dengan menggunakan InvokeEndpointWithResponseStream tindakan.
Ketika sebuah wadah menangani permintaan inferensi streaming, ia mengembalikan inferensi model sebagai serangkaian bagian secara bertahap saat model menghasilkannya. Aplikasi klien mulai menerima tanggapan segera ketika tersedia. Mereka tidak perlu menunggu model untuk menghasilkan seluruh respons. Anda dapat menerapkan streaming untuk mendukung pengalaman interaktif yang cepat, seperti chatbots, asisten virtual, dan generator musik.
Bagaimana Kontainer Anda Harus Menanggapi Permintaan Pemeriksaan Kesehatan (Ping)
SageMaker AI meluncurkan wadah inferensi baru dalam situasi berikut:
-
Menanggapi
CreateEndpoint
,UpdateEndpoint
, dan panggilanUpdateEndpointWeightsAndCapacities
API -
Membuat patch keamanan
-
Mengganti instance yang tidak sehat
Segera setelah startup kontainer, SageMaker AI mulai mengirim GET permintaan berkala ke /ping
titik akhir.
Persyaratan paling sederhana pada wadah adalah merespons dengan kode status HTTP 200 dan badan kosong. Ini menunjukkan kepada SageMaker AI bahwa wadah siap menerima permintaan inferensi di titik /invocations
akhir.
Jika wadah tidak mulai lulus pemeriksaan kesehatan dengan merespons secara konsisten dengan 200s selama 8 menit setelah startup, peluncuran instance baru gagal. Hal ini CreateEndpoint
menyebabkan kegagalan, meninggalkan titik akhir dalam keadaan gagal. Pembaruan yang diminta oleh UpdateEndpoint
tidak selesai, patch keamanan tidak diterapkan, dan instance yang tidak sehat tidak diganti.
Sementara bilah minimum adalah wadah mengembalikan 200 statis, pengembang kontainer dapat menggunakan fungsi ini untuk melakukan pemeriksaan lebih dalam. Batas waktu permintaan pada /ping
upaya adalah 2 detik.