Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.
Kode Inferensi Kustom dengan Transformasi Batch
Bagian ini menjelaskan bagaimana Amazon SageMaker berinteraksi dengan wadah Docker yang menjalankan kode inferensi Anda sendiri untuk transformasi batch. Gunakan informasi ini untuk menulis kode inferensi dan membuat gambar Docker.
Topik
Bagaimana SageMaker Menjalankan Gambar Inferensi Anda
Untuk mengonfigurasi wadah agar dijalankan sebagai executable, gunakan ENTRYPOINT
instruksi dalam Dockerfile. Perhatikan hal berikut:
-
Untuk transformasi batch, SageMaker panggil model atas nama Anda. SageMaker menjalankan wadah sebagai:
docker run
image
serveMasukan ke transformasi batch harus dari format yang dapat dibagi menjadi file yang lebih kecil untuk diproses secara paralel. Format ini termasukCSV,, JSONLines JSON
, TFRecord dan RecorDio . SageMaker mengganti
CMD
pernyataan default dalam wadah dengan menentukanserve
argumen setelah nama gambar.serve
Argumen mengesampingkan argumen yang Anda berikan denganCMD
perintah di Dockerfile. -
Kami menyarankan Anda menggunakan
exec
bentukENTRYPOINT
instruksi:ENTRYPOINT ["executable", "param1", "param2"]
Sebagai contoh:
ENTRYPOINT ["python", "k_means_inference.py"]
-
SageMaker menetapkan variabel lingkungan yang ditentukan dalam
CreateModel
danCreateTransformJob
pada wadah Anda. Selain itu, variabel lingkungan berikut diisi:-
SAGEMAKER_BATCH
disetel ketrue
saat kontainer menjalankan transformasi batch. -
SAGEMAKER_MAX_PAYLOAD_IN_MB
diatur ke payload ukuran terbesar yang dikirim ke kontainer melaluiHTTP. -
SAGEMAKER_BATCH_STRATEGY
disetel keSINGLE_RECORD
saat wadah dikirim satu catatan per panggilan ke pemanggilan danMULTI_RECORD
ketika penampung mendapatkan catatan sebanyak yang sesuai dengan muatan. -
SAGEMAKER_MAX_CONCURRENT_TRANSFORMS
diatur ke jumlah maksimum/invocations
permintaan yang dapat dibuka secara bersamaan.
catatan
Tiga variabel lingkungan terakhir berasal dari API panggilan yang dilakukan oleh pengguna. Jika pengguna tidak menetapkan nilai untuk mereka, mereka tidak diteruskan. Dalam hal ini, baik nilai default atau nilai yang diminta oleh algoritme (sebagai tanggapan terhadap
/execution-parameters
) digunakan. -
-
Jika Anda berencana menggunakan GPU perangkat untuk inferensi model (dengan menentukan instance komputasi HTML GPU berbasis dalam
CreateTransformJob
permintaan Anda), pastikan container Anda kompatibel dengan nvidia-docker. Jangan bundel NVIDIA driver dengan gambar. Untuk informasi selengkapnya tentang nvidia-docker, lihat /nvidia-docker. NVIDIA -
Anda tidak dapat menggunakan
init
penginisialisasi sebagai titik masuk Anda dalam SageMaker wadah karena menjadi bingung oleh argumen kereta dan melayani.
Bagaimana SageMaker Memuat Artefak Model Anda
Dalam CreateModel
permintaan, definisi kontainer menyertakan ModelDataUrl
parameter, yang mengidentifikasi lokasi di Amazon S3 tempat artefak model disimpan. Saat Anda menggunakan SageMaker untuk menjalankan inferensi, ia menggunakan informasi ini untuk menentukan dari mana harus menyalin artefak model. Ini menyalin artefak ke /opt/ml/model
direktori di wadah Docker untuk digunakan oleh kode inferensi Anda.
ModelDataUrl
Parameter harus menunjuk ke file tar.gz. Jika tidak, tidak SageMaker dapat mengunduh file. Jika Anda melatih model SageMaker, ini menyimpan artefak sebagai file tar terkompresi tunggal di Amazon S3. Jika Anda melatih model dalam kerangka kerja lain, Anda perlu menyimpan artefak model di Amazon S3 sebagai file tar terkompresi. SageMaker mendekompresi file tar ini dan menyimpannya di /opt/ml/model
direktori dalam wadah sebelum pekerjaan transformasi batch dimulai.
Bagaimana Kontainer Melayani Permintaan
Container harus mengimplementasikan server web yang merespons pemanggilan dan permintaan ping pada port 8080. Untuk transformasi batch, Anda memiliki opsi untuk mengatur algoritme guna mengimplementasikan permintaan parameter eksekusi untuk menyediakan konfigurasi runtime dinamis. SageMaker SageMakermenggunakan titik akhir berikut:
-
ping
—Digunakan untuk memeriksa kesehatan wadah secara berkala. SageMaker menunggu kode HTTP200
status dan badan kosong untuk permintaan ping yang berhasil sebelum mengirim permintaan pemanggilan. Anda dapat menggunakan permintaan ping untuk memuat model ke dalam memori untuk menghasilkan inferensi saat permintaan pemanggilan dikirim. -
(Opsional)
execution-parameters
—Memungkinkan algoritme menyediakan parameter penyetelan optimal untuk suatu pekerjaan selama runtime. Berdasarkan memori dan CPUs tersedia untuk wadah, algoritma memilih yang sesuaiMaxConcurrentTransforms
,BatchStrategy
, danMaxPayloadInMB
nilai untuk pekerjaan itu.
Sebelum memanggil permintaan pemanggilan, SageMaker mencoba untuk memanggil permintaan parameter eksekusi. Saat Anda membuat pekerjaan transformasi batch, Anda dapat memberikan nilai untukMaxConcurrentTransforms
,BatchStrategy
, dan MaxPayloadInMB
parameter. SageMaker menentukan nilai untuk parameter ini menggunakan urutan prioritas ini:
-
Nilai parameter yang Anda berikan saat Anda membuat
CreateTransformJob
permintaan. -
Nilai yang dikembalikan wadah model saat SageMaker memanggil titik akhir parameter eksekusi>
-
Nilai parameter default, tercantum dalam tabel berikut.
Parameter Nilai Default MaxConcurrentTransforms
1
BatchStrategy
MULTI_RECORD
MaxPayloadInMB
6
Respons untuk permintaan GET
eksekusi-parameter adalah JSON objek dengan kunci untukMaxConcurrentTransforms
,BatchStrategy
, dan parameter. MaxPayloadInMB
Ini adalah contoh tanggapan yang valid:
{ “MaxConcurrentTransforms”: 8, “BatchStrategy": "MULTI_RECORD", "MaxPayloadInMB": 6 }
Bagaimana Kontainer Anda Harus Menanggapi Permintaan Inferensi
Untuk mendapatkan kesimpulan, Amazon SageMaker mengirimkan POST permintaan ke wadah inferensi. Badan POST permintaan berisi data dari Amazon S3. Amazon SageMaker meneruskan permintaan ke penampung, dan mengembalikan hasil inferensi dari penampung, menyimpan data dari respons ke Amazon S3.
Untuk menerima permintaan inferensi, penampung harus memiliki server web yang mendengarkan pada port 8080 dan harus menerima POST permintaan ke titik akhir/invocations
. Batas waktu permintaan inferensi dan percobaan ulang maksimal dapat dikonfigurasi melalui. ModelClientConfig
Bagaimana Kontainer Anda Harus Menanggapi Permintaan Pemeriksaan Kesehatan (Ping)
Persyaratan paling sederhana pada wadah adalah merespons dengan kode status HTTP 200 dan badan kosong. Ini menunjukkan SageMaker bahwa penampung siap menerima permintaan inferensi di titik /invocations
akhir.
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.