Kode Inferensi Kustom dengan Transformasi Batch - Amazon SageMaker

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.

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 serve

    Masukan ke transformasi batch harus dari format yang dapat dibagi menjadi file yang lebih kecil untuk diproses secara paralel. Format ini termasukCSV,, JSONLines JSON, TFRecorddan RecorDio.

    SageMaker mengganti CMD pernyataan default dalam wadah dengan menentukan serve argumen setelah nama gambar. serveArgumen mengesampingkan argumen yang Anda berikan dengan CMD perintah di Dockerfile.

     

  • Kami menyarankan Anda menggunakan exec bentuk ENTRYPOINT instruksi:

    ENTRYPOINT ["executable", "param1", "param2"]

    Sebagai contoh:

    ENTRYPOINT ["python", "k_means_inference.py"]

     

  • SageMaker menetapkan variabel lingkungan yang ditentukan dalam CreateModeldan CreateTransformJobpada wadah Anda. Selain itu, variabel lingkungan berikut diisi:

    • SAGEMAKER_BATCHdisetel ke true saat kontainer menjalankan transformasi batch.

    • SAGEMAKER_MAX_PAYLOAD_IN_MBdiatur ke payload ukuran terbesar yang dikirim ke kontainer melaluiHTTP.

    • SAGEMAKER_BATCH_STRATEGYdisetel ke SINGLE_RECORD saat wadah dikirim satu catatan per panggilan ke pemanggilan dan MULTI_RECORD ketika penampung mendapatkan catatan sebanyak yang sesuai dengan muatan.

    • SAGEMAKER_MAX_CONCURRENT_TRANSFORMSdiatur 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 CreateModelpermintaan, 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.

ModelDataUrlParameter 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 HTTP 200 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, dan MaxPayloadInMB 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:

  1. Nilai parameter yang Anda berikan saat Anda membuat CreateTransformJob permintaan.

  2. Nilai yang dikembalikan wadah model saat SageMaker memanggil titik akhir parameter eksekusi>

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