Langkah 2. Buat skrip runtime - AWS Bimbingan Preskriptif

Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.

Langkah 2. Buat skrip runtime

Membuat skrip runtime.

Pada langkah ini, Anda mengintegrasikan model yang Anda kembangkan pada langkah 1 dan kode penolong yang terkait ke dalam platform ML-siap pelatihan dan inferensi. Secara khusus, ini melibatkan pengembangan skrip runtime sehingga model dapat dimasukkan ke dalam SageMaker. Skrip Python mandiri ini mencakup fungsi callback SageMaker dan variabel lingkungan yang telah ditetapkan. Mereka dijalankan di dalam wadah SageMaker yang di-host di instans Amazon Elastic Compute Cloud (Amazon EC2). ParameterDokumentasi SDK Amazon SageMaker Pythonmemberikan informasi rinci tentang bagaimana callback dan pengaturan tambahan ini bekerja sama untuk pelatihan dan kesimpulan. (Misalnya, lihatSiapkan skrip pelatihan scikit-learndanMenyebarkan model scikit-learndalam dokumentasi SageMaker.) Bagian berikut memberikan rekomendasi tambahan untuk mengembangkan skrip runtime XML, berdasarkan pengalaman kami bekerja denganAWSpelanggan.

Menggunakan pekerjaan pemrosesan

SageMaker menyediakan dua opsi untuk melakukan inferensi model batch-mode. Anda dapat menggunakan SageMakerTugas pengolahanatauTugas transformasi batch. Setiap opsi memiliki kelebihan dan kekurangan.

Pekerjaan pemrosesan terdiri dari file Python yang berjalan di dalam wadah SageMaker. Pekerjaan pemrosesan terdiri dari logika apa pun yang Anda masukkan ke dalam file Python Anda. Ini memiliki kelebihan ini:

  • Ketika Anda memahami logika dasar dari pekerjaan pelatihan, pengolahan pekerjaan mudah untuk mengatur dan mudah dimengerti. Mereka berbagi abstraksi yang sama dengan pekerjaan pelatihan (misalnya, menyetel hitungan instance dan distribusi data).

  • Ilmuwan data dan insinyur L memiliki kontrol penuh atas opsi manipulasi data.

  • Ilmuwan data tidak harus mengelola logika komponen I/O kecuali untuk fungsi baca/tulis yang familiar.

  • Ini agak lebih mudah untuk menjalankan file di lingkungan non-SageMaker, yang membantu pengembangan cepat dan pengujian lokal.

  • Jika ada kesalahan, pekerjaan pemrosesan gagal segera setelah naskah gagal, dan tidak ada menunggu tak terduga untuk coba lagi.

Di sisi lain, batch transform jobs merupakan perpanjangan dari konsep endpoint SageMaker. Pada saat runtime, pekerjaan ini mengimpor fungsi callback, yang kemudian menangani I/O untuk membaca data, memuat model, dan membuat prediksi. Batch transform pekerjaan memiliki keunggulan ini:

  • Mereka menggunakan abstraksi distribusi data yang berbeda dari abstraksi yang digunakan oleh pekerjaan pelatihan.

  • Mereka menggunakan file inti dan struktur fungsi yang sama untuk inferensi batch dan inferensi realtime, yang nyaman.

  • Mereka memiliki mekanisme toleransi kesalahan berbasis retry-built-in. Misalnya, jika terjadi kesalahan pada batch catatan, itu akan mencoba lagi beberapa kali sebelum pekerjaan dihentikan sebagai kegagalan.

Karena transparansi, kemudahan penggunaannya di berbagai lingkungan, dan abstraksi bersama dengan pekerjaan pelatihan, kami memutuskan untuk menggunakan pekerjaan pemrosesan alih-alih pekerjaan transformasi batch dalam arsitektur referensi yang disajikan dalam panduan ini.

Anda harus menjalankan skrip runtime Python secara lokal sebelum Anda menyebarkannya di cloud. Secara khusus, kami menyarankan Anda menggunakan klausa penjaga utama ketika Anda menyusun skrip Python Anda, dan melakukan pengujian unit.

Menggunakan klausa penjaga utama

Gunakan klausa penjaga utama untuk mendukung impor modul dan menjalankan skrip Python Anda. Menjalankan skrip Python secara individual bermanfaat untuk debugging dan mengisolasi masalah dalam pipa ML-nya. Kami merekomendasikan langkah-langkah berikut:

  • Gunakan parser argumen dalam file pemrosesan Python untuk menentukan file input/output dan lokasinya.

  • Menyediakan panduan utama dan fungsi uji untuk setiap file Python.

  • Setelah Anda menguji file Python, masukkan ke dalam tahapan yang berbeda dari pipa ML-nya, apakah Anda menggunakanAWS Step Functionsmodel atau pekerjaan pengolahan SageMaker.

  • GunakanMenegaskanpernyataan di bagian penting dari script untuk memfasilitasi pengujian dan debugging. Misalnya, Anda dapat menggunakanMenegaskanpernyataan untuk memastikan bahwa jumlah fitur dataset konsisten setelah loading.

Unit pengujian

Unit pengujian skrip runtime yang ditulis untuk pipa adalah tugas penting yang sering diabaikan dalam pengembangan pipa ML-nya. Hal ini karena pembelajaran mesin dan ilmu data adalah bidang yang relatif baru dan telah lambat untuk mengadopsi praktik rekayasa perangkat lunak mapan seperti unit testing. Karena pipa LL akan digunakan di lingkungan produksi, penting untuk menguji kode pipa sebelum menerapkan model ML-aplikasi dunia nyata.

Unit pengujian script runtime juga memberikan manfaat unik berikut untuk model ML-nya:

  • Ini mencegah transformasi data yang tak terduga. Sebagian besar jaringan pipa ML-melibatkan banyak transformasi data, sehingga sangat penting bagi transformasi ini untuk melakukan seperti yang diharapkan.

  • Ini memvalidasi reproduktifitas kode. Setiap keacakan dalam kode dapat dideteksi dengan unit testing dengan kasus penggunaan yang berbeda.

  • Ini memberlakukan modularitas kode. Unit tes biasanya terkait dengan ukuran cakupan tes, yang merupakan tingkat yang tertentu test suite (koleksi kasus uji) menjalankan kode sumber dari program. Untuk mencapai cakupan uji tinggi, pengembang memodulasi kode, karena sulit untuk menulis unit test untuk sejumlah besar kode tanpa memecahnya menjadi fungsi atau kelas.

  • Ini mencegah kode berkualitas rendah atau kesalahan dari yang diperkenalkan ke dalam produksi.

Sebaiknya gunakan kerangka pengujian unit yang matang sepertipytestuntuk menulis kasus uji unit, karena lebih mudah untuk mengelola tes unit ekstensif dalam kerangka kerja.

penting

Unit pengujian tidak dapat menjamin bahwa semua kasus sudut diuji, tetapi dapat membantu Anda secara proaktif menghindari kesalahan sebelum Anda menyebarkan model. Kami menyarankan Anda juga memantau model setelah penyebaran, untuk memastikan keunggulan operasional.