Pola Model Hosting di SageMaker: Praktik terbaik dalam menguji dan memperbarui model pada SageMaker PlatoBlockchain Data Intelligence. Pencarian Vertikal. Ai.

Pola Hosting Model di SageMaker: Praktik terbaik dalam menguji dan memperbarui model di SageMaker

Amazon SageMaker adalah layanan terkelola penuh yang memberikan kemampuan kepada developer dan data scientist untuk membangun, melatih, dan menerapkan model machine learning (ML) dengan cepat. Dengan SageMaker, Anda dapat menerapkan model ML pada titik akhir yang dihosting dan mendapatkan hasil inferensi secara real time. Anda dapat dengan mudah melihat metrik kinerja untuk titik akhir Anda amazoncloudwatch, skala titik akhir secara otomatis berdasarkan lalu lintas, dan perbarui model Anda dalam produksi tanpa kehilangan ketersediaan apa pun. SageMaker menawarkan berbagai opsi untuk menerapkan model ML untuk inferensi dengan salah satu cara berikut, bergantung pada kasus penggunaan Anda:

  • Untuk prediksi sinkron yang perlu ditayangkan dalam urutan milidetik, gunakan SageMaker inferensi waktu-nyata
  • Untuk beban kerja yang memiliki periode tidak aktif di antara lonjakan lalu lintas dan dapat menoleransi start dingin, gunakan Inferensi Tanpa Server
  • Untuk permintaan dengan ukuran payload besar hingga 1 GB, waktu pemrosesan yang lama (hingga 15 menit) dan persyaratan latensi hampir real-time (detik hingga menit), gunakan SageMaker Inferensi Asinkron
  • Untuk mendapatkan prediksi seluruh kumpulan data, gunakan SageMaker transformasi batch

Inferensi waktu nyata ideal untuk beban kerja inferensi di mana Anda memiliki persyaratan waktu nyata, interaktif, dan latensi rendah. Anda menerapkan model Anda ke layanan hosting SageMaker dan mendapatkan titik akhir yang dapat digunakan untuk inferensi. Titik akhir ini didukung oleh infrastruktur dan dukungan yang dikelola sepenuhnya penskalaan otomatis. Anda dapat meningkatkan efisiensi dan biaya dengan menggabungkan beberapa model menjadi satu titik akhir menggunakan titik akhir multi-model or titik akhir multi-kontainer.

Ada kasus penggunaan tertentu saat Anda ingin menerapkan beberapa varian dari model yang sama ke dalam produksi untuk mengukur kinerjanya, mengukur peningkatan, atau menjalankan pengujian A/B. Dalam kasus seperti itu, titik akhir multi-varian SageMaker berguna karena memungkinkan Anda menerapkan beberapa varian produksi model ke titik akhir SageMaker yang sama.

Dalam postingan ini, kami membahas titik akhir multivarian SageMaker dan praktik terbaik untuk pengoptimalan.

Membandingkan opsi inferensi real-time SageMaker

Diagram berikut memberikan ikhtisar singkat opsi inferensi real-time dengan SageMaker.

Titik akhir model tunggal memungkinkan Anda menerapkan satu model pada wadah yang dihosting pada instans khusus atau tanpa server untuk latensi rendah dan throughput tinggi. Anda dapat membuat model dan Ambil kembali a Gambar yang didukung SageMaker untuk kerangka kerja populer seperti TensorFlow, PyTorch, Scikit-learn, dan lainnya. Jika Anda bekerja dengan kerangka kerja khusus untuk model Anda, Anda juga bisa bawa wadah sendiri yang menginstal dependensi Anda.

SageMaker juga mendukung opsi yang lebih canggih seperti multi-model endpoints (MMEs) dan multi-container endpoints (MCEs). MME berguna saat Anda berurusan dengan ratusan hingga puluhan ribu model dan saat Anda tidak perlu menerapkan setiap model sebagai titik akhir individual. MME memungkinkan Anda menghosting beberapa model dengan cara yang hemat biaya dan dapat diskalakan dalam titik akhir yang sama dengan menggunakan wadah layanan bersama yang dihosting di instans. Infrastruktur dasar (kontainer dan instans) tetap sama, tetapi model dimuat dan dibongkar secara dinamis dari lokasi S3 umum, sesuai dengan penggunaan dan jumlah memori yang tersedia di titik akhir. Aplikasi Anda hanya perlu menyertakan panggilan API dengan model target ke titik akhir ini untuk mencapai inferensi latensi rendah dan throughput tinggi. Alih-alih membayar titik akhir terpisah untuk setiap model, Anda dapat menghosting banyak model dengan harga satu titik akhir.

MCE memungkinkan Anda menjalankan hingga 15 penampung ML yang berbeda pada satu titik akhir dan memanggilnya secara terpisah. Anda dapat mem-build container ML ini di stack layanan yang berbeda (seperti framework ML, server model, dan algoritme), untuk dijalankan di titik akhir yang sama untuk penghematan biaya. Anda dapat menjahit wadah menjadi satu pipa inferensi serial atau aktifkan wadah secara mandiri. Ini ideal jika Anda memiliki beberapa model ML berbeda yang memiliki pola lalu lintas berbeda dan kebutuhan sumber daya serupa. Contoh kapan menggunakan MCE termasuk, namun tidak terbatas pada, berikut ini:

  • Menghosting model di berbagai kerangka kerja (seperti TensorFlow, PyTorch, dan Scikit-learn) yang tidak memiliki lalu lintas yang cukup untuk memenuhi kapasitas penuh sebuah instans
  • Menghosting model dari kerangka kerja yang sama dengan algoritme ML yang berbeda (seperti rekomendasi, perkiraan, atau klasifikasi) dan fungsi pengendali
  • Perbandingan arsitektur serupa yang berjalan pada versi kerangka kerja yang berbeda (seperti TensorFlow 1.x vs. TensorFlow 2.x) untuk skenario seperti pengujian A/B

Titik akhir multivarian (MVE) SageMaker memungkinkan Anda menguji beberapa model atau versi model di belakang titik akhir yang sama menggunakan varian produksi. Setiap varian produksi mengidentifikasi model ML dan resource yang diterapkan untuk menghosting model tersebut, seperti wadah penyajian dan instance.

Gambaran umum titik akhir multivarian SageMaker

Dalam alur kerja ML produksi, data scientist dan engineer ML menyempurnakan model melalui berbagai metode, seperti pelatihan ulang berdasarkan penyimpangan data/model/konsep, penyetelan hyperparameter, pemilihan fitur, pemilihan framework, dan lainnya. Melakukan pengujian A/B antara model baru dan model lama dengan lalu lintas produksi dapat menjadi langkah akhir yang efektif dalam proses validasi model baru. Dalam pengujian A/B, Anda menguji varian model yang berbeda dan membandingkan performa masing-masing varian secara relatif satu sama lain. Anda kemudian memilih model berperforma terbaik untuk menggantikan model sebelumnya dengan versi baru yang memberikan performa lebih baik daripada versi sebelumnya. Dengan menggunakan varian produksi, Anda dapat menguji model ML ini dan versi model yang berbeda di belakang titik akhir yang sama. Anda dapat melatih model ML ini menggunakan set data yang berbeda, algoritme yang berbeda, dan kerangka kerja ML; menerapkannya ke berbagai jenis instans; atau kombinasi dari opsi ini. Penyeimbang muatan yang terhubung ke titik akhir SageMaker memberikan kemampuan untuk mendistribusikan permintaan pemanggilan ke beberapa varian produksi. Misalnya, Anda dapat mendistribusikan traffic antar varian produksi dengan menentukan distribusi traffic untuk setiap varian, atau Anda dapat memanggil varian tertentu secara langsung untuk setiap permintaan.

Anda juga dapat mengonfigurasi kebijakan penskalaan otomatis untuk secara otomatis menskalakan varian Anda masuk atau keluar berdasarkan metrik seperti permintaan per detik.

Diagram berikut mengilustrasikan cara kerja MVE secara lebih detail.

Titik akhir multivarian SageMaker

Menerapkan MVE juga sangat mudah. Yang perlu Anda lakukan hanyalah menentukan objek model dengan gambar dan data model menggunakan create_model konstruksi dari SageMaker Python SDK, dan tentukan konfigurasi titik akhir menggunakan production_variant konstruksi untuk membuat varian produksi, masing-masing dengan model dan persyaratan sumber daya yang berbeda (jenis dan jumlah instans). Hal ini memungkinkan Anda juga menguji model pada berbagai jenis instans. Untuk menyebarkan, gunakan endpoint_from_production_variant membangun untuk membuat titik akhir.

Selama pembuatan titik akhir, SageMaker menyediakan instans hosting yang ditentukan dalam pengaturan titik akhir dan mengunduh model dan wadah inferensi yang ditentukan oleh varian produksi ke instans hosting. Jika respons yang berhasil dikembalikan setelah memulai penampung dan melakukan pemeriksaan kesehatan dengan ping, pesan yang menunjukkan bahwa pembuatan titik akhir telah selesai dikirim ke pengguna. Lihat kode berikut:

sm_session.create_model(
	name=model_name,
	role=role,
	container_defs={'Image':  image_uri, 'ModelDataUrl': model_url}
	)

sm_session.create_model(
	name=model_name2,
	role=role,
	container_defs={'Image':  image_uri, 'ModelDataUrl': model_url2 }
	)

variant1 = production_variant(
	model_name=model_name,
	instance_type="ml.c5.4xlarge",
	initial_instance_count=1,
	variant_name="Variant1",
	initial_weight=1
	)

variant2 = production_variant(
	model_name=model_name2,
	instance_type="ml.m5.4xlarge",
	initial_instance_count=1,
	variant_name="Variant2",
	initial_weight=1
	)

sm_session.endpoint_from_production_variants(
	name=endpoint_name,
	production_variants=[variant1,  variant2]
	)

Dalam contoh sebelumnya, kami membuat dua varian, masing-masing dengan modelnya sendiri yang berbeda (ini juga dapat memiliki jenis dan jumlah instans yang berbeda). Kami menetapkan initial_weight dari 1 untuk kedua varian: ini berarti 50% permintaan kami masuk ke Variant1, dan 50% sisanya menjadi Variant2. Jumlah bobot di kedua varian adalah 2 dan setiap varian memiliki penetapan bobot 1. Artinya, setiap varian menerima 50% dari total lalu lintas.

Memanggil titik akhir mirip dengan konstruksi SageMaker yang umum invoke_endpoint; Anda dapat memanggil titik akhir secara langsung dengan data sebagai muatan:

sm_runtime.invoke_endpoint(
	EndpointName=endpoint_name,
	ContentType="text/csv",
	Body=payload
	)

SageMaker menampilkan metrik seperti Latency dan Invocations untuk setiap varian di CloudWatch. Untuk daftar lengkap metrik yang dikeluarkan SageMaker, lihat Pantau Amazon SageMaker dengan Amazon CloudWatch. Anda dapat mengkueri CloudWatch untuk mendapatkan jumlah pemanggilan per varian, untuk melihat bagaimana pemanggilan dibagi di seluruh varian secara default.

Untuk memanggil versi model tertentu, tentukan varian sebagai TargetVariant dalam panggilan ke invoke_endpoint:

sm_runtime.invoke_endpoint(
	EndpointName=endpoint_name,
	ContentType="text/csv",
	Body=payload,
	TargetVariant="Variant1"
	)

Anda dapat mengevaluasi performa setiap varian produksi dengan meninjau metrik seperti akurasi, presisi, perolehan kembali, skor F1, dan karakteristik/area pengoperasian penerima di bawah kurva untuk setiap varian menggunakan Monitor Model Amazon SageMaker. Anda kemudian dapat memutuskan untuk meningkatkan lalu lintas ke model terbaik dengan memperbarui bobot yang ditetapkan ke setiap varian dengan memanggil PerbaruiEndpointBobotDanKapasitas. Ini mengubah distribusi lalu lintas ke varian produksi Anda tanpa memerlukan pembaruan ke titik akhir Anda. Jadi alih-alih 50% lalu lintas dari penyiapan awal, kami mengalihkan 75% lalu lintas ke Variant2 dengan menetapkan bobot baru untuk setiap varian menggunakan UpdateEndpointWeightsAndCapacities. Lihat kode berikut:

sm.update_endpoint_weights_and_capacities(
	EndpointName=endpoint_name,
	DesiredWeightsAndCapacities=[
	{
		"DesiredWeight": 25,
		"VariantName": variant1["VariantName"]
	},
	{
		"DesiredWeight": 75,
		"VariantName": variant2["VariantName"]
	}
] )

Jika puas dengan performa varian, Anda dapat merutekan 100% lalu lintas ke varian tersebut. Misalnya, Anda dapat mengatur berat untuk Variant1 ke 0 dan bobot untuk Variant2 ke 1. SageMaker kemudian mengirimkan 100% dari semua permintaan inferensi ke Variant2. Anda kemudian dapat memperbarui dan menghapus titik akhir Anda dengan aman Variant1 dari titik akhir Anda. Anda juga dapat terus menguji model baru dalam produksi dengan menambahkan varian baru ke endpoint Anda. Anda juga dapat mengonfigurasi titik akhir ini untuk menskalakan secara otomatis berdasarkan lalu lintas yang diterima titik akhir.

Keuntungan endpoint multivarian

MVE SageMaker memungkinkan Anda melakukan hal berikut:

  • Terapkan dan uji beberapa varian model menggunakan titik akhir SageMaker yang sama. Ini berguna untuk menguji variasi model dalam produksi. Misalnya, Anda telah men-deploy model ke dalam produksi. Anda dapat menguji variasi model dengan mengarahkan sejumlah kecil lalu lintas, misalnya 5%, ke model baru.
  • Evaluasi kinerja model dalam produksi tanpa mengganggu lalu lintas dengan memantau metrik operasional untuk setiap varian di CloudWatch.
  • Perbarui model dalam produksi tanpa kehilangan ketersediaan apa pun. Anda dapat mengubah titik akhir tanpa menghentikan layanan model yang telah diterapkan ke dalam produksi. Misalnya, Anda dapat menambahkan varian model baru, memperbarui konfigurasi instance komputasi ML dari varian model yang ada, atau mengubah distribusi traffic di antara varian model. Untuk informasi lebih lanjut, lihat Perbarui Endpoint dan PerbaruiEndpointBobotDanKapasitas.

Tantangan saat menggunakan titik akhir multivarian

MVE SageMaker hadir dengan tantangan berikut:

  • Upaya pengujian beban โ€“ Anda perlu mengerahkan upaya dan sumber daya yang cukup untuk pengujian dan perbandingan matriks model untuk setiap varian. Agar pengujian A/B dianggap berhasil, Anda perlu melakukan analisis statistik terhadap metrik yang dikumpulkan dari pengujian untuk menentukan apakah ada hasil yang signifikan secara statistik. Mungkin menjadi tantangan untuk meminimalkan penjelajahan varian berperforma buruk. Anda berpotensi menggunakan bandit multi-bersenjata teknik pengoptimalan untuk menghindari pengiriman lalu lintas ke eksperimen yang tidak berfungsi dan mengoptimalkan kinerja saat Anda menguji. Untuk pengujian beban, Anda juga bisa menjelajah Rekomendasi Inferensi Amazon SageMaker untuk melakukan tolok ukur ekstensif berdasarkan persyaratan produksi untuk latensi dan throughput, pola lalu lintas kustom, dan instans (hingga 10) yang Anda pilih.
  • Penggabungan yang erat antara varian model dan titik akhir โ€“ Ini bisa menjadi rumit tergantung pada frekuensi penerapan model, karena titik akhir mungkin berakhir updating status untuk setiap varian produksi diperbarui. SageMaker juga mendukung pagar pembatas penyebaran, yang dapat Anda gunakan untuk beralih dengan mudah dari model saat ini dalam produksi ke model baru dengan cara yang terkontrol. Opsi ini memperkenalkan kenari dan linear mode pengalihan lalu lintas sehingga Anda dapat memiliki kontrol terperinci atas pengalihan lalu lintas dari model Anda saat ini ke model baru selama pembaruan. Dengan perlindungan bawaan seperti rollback otomatis, Anda dapat mengetahui masalah lebih awal dan mengambil tindakan korektif secara otomatis sebelum menimbulkan dampak produksi yang signifikan.

Praktik terbaik untuk endpoint multivarian

Saat menghosting model menggunakan MVE SageMaker, pertimbangkan hal berikut:

  • SageMaker sangat bagus untuk menguji model baru karena Anda dapat dengan mudah menerapkannya ke dalam lingkungan pengujian A/B dan Anda hanya membayar apa yang Anda gunakan. Anda dikenai biaya per jam instans yang digunakan untuk setiap instans saat titik akhir berjalan. Setelah Anda selesai dengan pengujian dan tidak lagi menggunakan titik akhir atau varian secara ekstensif, Anda harus menghapusnya untuk menghemat biaya. Anda selalu dapat membuatnya kembali saat Anda membutuhkannya lagi karena model disimpan di dalamnya Layanan Penyimpanan Sederhana Amazon (Amazon S3).
  • Anda harus menggunakan jenis dan ukuran instans yang paling optimal untuk menerapkan model. SageMaker saat ini menawarkan Instance komputasi ML pada berbagai keluarga contoh. Instance titik akhir berjalan sepanjang waktu (saat instance dalam layanan). Oleh karena itu, pemilihan jenis instans yang tepat dapat berdampak signifikan pada total biaya dan performa model ML. Uji beban adalah praktik terbaik untuk menentukan jenis instans dan ukuran armada yang sesuai, dengan atau tanpa penskalaan otomatis untuk titik akhir langsung Anda guna menghindari penyediaan yang berlebihan dan membayar ekstra untuk kapasitas yang tidak Anda perlukan.
  • Anda dapat memantau kinerja model dan pemanfaatan sumber daya di CloudWatch. Anda dapat mengonfigurasi a ProductionVariant untuk menggunakan Penskalaan Otomatis Aplikasi. Untuk menentukan metrik dan nilai target untuk kebijakan penskalaan, Anda mengonfigurasi kebijakan penskalaan pelacakan target. Anda dapat menggunakan metrik standar atau metrik kustom. Untuk informasi selengkapnya tentang sintaks konfigurasi kebijakan, lihat Konfigurasi Kebijakan Penskalaan Pelacakan Target. Untuk informasi tentang mengonfigurasi penskalaan otomatis, lihat Secara Otomatis Skala Model SageMaker Amazon. Untuk menentukan dengan cepat kebijakan penskalaan pelacakan target untuk varian, Anda dapat memilih metrik CloudWatch tertentu dan menetapkan nilai ambang batas. Misalnya, gunakan metrik SageMakerVariantInvocationsPerInstance untuk memantau frekuensi rata-rata per menit setiap instance untuk varian dipanggil, atau gunakan metrik CPUUtilization untuk memantau jumlah pekerjaan yang ditangani oleh CPU. Contoh berikut menggunakan the SageMakerVariantInvocationsPerInstance metrik yang telah ditentukan sebelumnya untuk menyesuaikan jumlah instance varian sehingga setiap instance memiliki InvocationsPerInstance metrik 70:
{
	"TargetValue": 70.0,
	"PredefinedMetricSpecification":
	{
		"PredefinedMetricType": "SageMakerVariantInvocationsPerInstance"
	}
}

  • Mengubah atau menghapus artefak model atau mengubah kode inferensi setelah menerapkan model menghasilkan hasil yang tidak dapat diprediksi. Sebelum menerapkan model ke produksi, sebaiknya periksa apakah hosting model dalam mode lokal berhasil setelah cukup men-debug cuplikan kode inferensi (seperti model_fn, input_fn, predict_fn, dan output_fn) di lingkungan pengembangan lokal seperti instans notebook SageMaker atau server lokal. Jika Anda perlu mengubah atau menghapus artefak model atau mengubah kode inferensi, ubah titik akhir dengan menyediakan konfigurasi titik akhir baru. Setelah Anda memberikan konfigurasi endpoint baru, Anda dapat mengubah atau menghapus artefak model yang sesuai dengan konfigurasi endpoint lama.
  • Anda dapat menggunakan SageMaker transformasi batch untuk menguji varian produksi. Transformasi batch ideal untuk mendapatkan inferensi dari kumpulan data besar. Anda dapat membuat tugas transformasi terpisah untuk setiap varian model baru dan menggunakan kumpulan data validasi untuk menguji. Untuk setiap tugas transformasi, tentukan nama model dan lokasi unik di Amazon S3 untuk file output. Untuk menganalisis hasilnya, gunakan log dan metrik pipa inferensi.

Kesimpulan

SageMaker memungkinkan Anda dengan mudah menguji model ML A/B dalam produksi dengan menjalankan beberapa varian produksi pada titik akhir. Anda dapat menggunakan kemampuan SageMaker untuk menguji model yang telah dilatih menggunakan kumpulan data pelatihan, hyperparameter, algoritme, atau kerangka kerja ML yang berbeda; bagaimana kinerjanya pada jenis instans yang berbeda; atau kombinasi dari semua hal di atas. Anda dapat memberikan distribusi lalu lintas antar varian pada titik akhir, dan SageMaker membagi lalu lintas inferensi ke varian berdasarkan distribusi yang ditentukan. Sebagai alternatif, jika Anda ingin menguji model untuk segmen pelanggan tertentu, Anda dapat menentukan varian yang harus memproses permintaan inferensi dengan menyediakan TargetVariant header, dan SageMaker akan merutekan permintaan ke varian yang Anda tentukan. Untuk informasi selengkapnya tentang pengujian A/B, lihat Perbarui model dengan aman dalam produksi.

Referensi


Tentang penulis

Pola Model Hosting di SageMaker: Praktik terbaik dalam menguji dan memperbarui model pada SageMaker PlatoBlockchain Data Intelligence. Pencarian Vertikal. Ai.Deepali Rajale adalah Manajer Akun Teknis Spesialis AI/ML di Amazon Web Services. Dia bekerja dengan pelanggan perusahaan memberikan panduan teknis tentang penerapan solusi pembelajaran mesin dengan praktik terbaik. Di waktu luangnya, dia menikmati hiking, film, dan berkumpul dengan keluarga dan teman.

Pola Model Hosting di SageMaker: Praktik terbaik dalam menguji dan memperbarui model pada SageMaker PlatoBlockchain Data Intelligence. Pencarian Vertikal. Ai.Dhawal Patel adalah Arsitek Pembelajaran Mesin Utama di AWS. Dia telah bekerja dengan organisasi mulai dari perusahaan besar hingga perusahaan rintisan menengah pada masalah yang terkait dengan komputasi terdistribusi, dan Kecerdasan Buatan. Dia berfokus pada Deep learning termasuk domain NLP dan Computer Vision. Dia membantu pelanggan mencapai inferensi model kinerja tinggi di SageMaker.

Pola Model Hosting di SageMaker: Praktik terbaik dalam menguji dan memperbarui model pada SageMaker PlatoBlockchain Data Intelligence. Pencarian Vertikal. Ai. Saurabh Trikande adalah Manajer Produk Senior untuk Inferensi Amazon SageMaker. Dia bersemangat bekerja dengan pelanggan dan termotivasi oleh tujuan mendemokratisasi pembelajaran mesin. Dia berfokus pada tantangan inti yang terkait dengan penerapan aplikasi ML yang kompleks, model ML multi-penyewa, pengoptimalan biaya, dan membuat penerapan model pembelajaran mendalam lebih mudah diakses. Di waktu luangnya, Saurabh menikmati hiking, belajar tentang teknologi inovatif, mengikuti TechCrunch, dan menghabiskan waktu bersama keluarganya.

Stempel Waktu:

Lebih dari Pembelajaran Mesin AWS