Gunakan Kode Inferensi Anda Sendiri 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.

Gunakan Kode Inferensi Anda Sendiri 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 termasuk CSV, JSON, JSONLines, TFRecord dan 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 wadah melalui HTTP.

    • 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 panggilan API yang dibuat oleh pengguna. Jika pengguna tidak menetapkan nilai untuk mereka, mereka tidak diteruskan. Dalam hal ini, baik nilai default atau nilai yang diminta oleh algoritma (sebagai tanggapan terhadap/execution-parameters) digunakan.

  • Jika Anda berencana menggunakan perangkat GPU untuk inferensi model (dengan menentukan instance komputasi HTML berbasis GPU dalam CreateTransformJob permintaan Anda), pastikan container Anda kompatibel dengan nvidia-docker. Jangan bundel driver NVIDIA dengan gambar. Untuk informasi selengkapnya tentang nvidia-docker, lihat nvidia/nvidia-docker.

     

  • 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 200 status HTTP 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 CPU yang tersedia untuk wadah, algoritme 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 GET permintaan parameter eksekusi adalah objek JSON 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 permintaan POST ke wadah inferensi. Badan permintaan POST 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 permintaan POST 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 wadah 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.