Seiring dengan semakin populernya pembelajaran mesin (ML) dan adopsi yang lebih luas, aplikasi inferensi yang didukung ML menjadi semakin umum untuk memecahkan berbagai masalah bisnis yang kompleks. Solusi terhadap masalah bisnis yang kompleks ini sering kali memerlukan penggunaan beberapa model dan langkah ML. Postingan ini menunjukkan kepada Anda cara membuat dan menghosting aplikasi ML dengan container khusus Amazon SageMaker.
Penawaran Amazon SageMaker algoritme bawaan dan SageMaker yang sudah dibuat sebelumnya gambar buruh pelabuhan untuk penerapan model. Namun, jika ini tidak sesuai dengan kebutuhan Anda, Anda dapat membawa wadah Anda sendiri (BYOC) untuk hosting di Amazon SageMaker.
Ada beberapa kasus penggunaan di mana pengguna mungkin memerlukan BYOC untuk hosting di Amazon SageMaker.
- Kerangka kerja atau pustaka ML khusus: Jika Anda berencana menggunakan kerangka kerja atau pustaka ML yang tidak didukung oleh algoritma bawaan Amazon SageMaker atau kontainer bawaan, maka Anda harus membuat kontainer khusus.
- Model khusus: Untuk domain atau industri tertentu, Anda mungkin memerlukan arsitektur model tertentu atau langkah-langkah prapemrosesan khusus yang tidak tersedia dalam penawaran Amazon SageMaker bawaan.
- Algoritme kepemilikan: Jika Anda telah mengembangkan algoritme kepemilikan Anda sendiri, maka Anda memerlukan wadah khusus untuk menerapkannya di Amazon SageMaker.
- Pipeline inferensi kompleks: Jika alur kerja inferensi ML Anda melibatkan logika bisnis khusus โ serangkaian langkah kompleks yang perlu dijalankan dalam urutan tertentu โ maka BYOC dapat membantu Anda mengelola dan mengatur langkah-langkah ini dengan lebih efisien.
Ikhtisar solusi
Dalam solusi ini, kami menunjukkan cara menghosting aplikasi inferensi serial ML di Amazon SageMaker dengan titik akhir real-time menggunakan dua kontainer inferensi khusus dengan versi terbaru scikit-learn
dan xgboost
paket.
Wadah pertama menggunakan a scikit-learn
model untuk mengubah data mentah menjadi kolom unggulan. Itu berlaku Penskala Standar untuk kolom numerik dan OneHotEncoder ke kategorikal.
Kontainer kedua menampung yang sudah dilatih sebelumnya XGboost
model (yaitu, prediktor). Model prediktor menerima prediksi masukan dan keluaran unggulan.
Terakhir, kami menerapkan fituriser dan prediktor dalam pipa inferensi serial ke titik akhir real-time Amazon SageMaker.
Berikut adalah beberapa pertimbangan berbeda mengapa Anda mungkin ingin memiliki wadah terpisah dalam aplikasi inferensi Anda.
- Decoupling โ Berbagai langkah pipa memiliki tujuan yang jelas dan perlu dijalankan pada wadah terpisah karena dependensi mendasar yang terlibat. Ini juga membantu menjaga saluran tetap terstruktur dengan baik.
- Kerangka โ Berbagai langkah pipeline menggunakan kerangka kerja khusus yang sesuai dengan tujuan (seperti scikit atau Spark ML) dan oleh karena itu perlu dijalankan pada wadah terpisah.
- Isolasi sumber daya โ Berbagai langkah dari pipeline memiliki persyaratan konsumsi sumber daya yang berbeda dan oleh karena itu perlu dijalankan pada container terpisah untuk lebih banyak fleksibilitas dan kontrol.
- Pemeliharaan dan peningkatan โ Dari sudut pandang operasional, hal ini mendorong isolasi fungsional dan Anda dapat terus meningkatkan atau memodifikasi setiap langkah dengan lebih mudah, tanpa memengaruhi model lainnya.
Selain itu, pembangunan lokal dari masing-masing container membantu dalam proses pengembangan dan pengujian berulang dengan alat favorit dan Lingkungan Pengembangan Terpadu (IDE). Setelah kontainer siap, Anda dapat menerapkannya ke AWS cloud untuk inferensi menggunakan titik akhir Amazon SageMaker.
Implementasi penuh, termasuk cuplikan kode, tersedia di repositori Github ini di sini.
Prasyarat
Saat kami menguji kontainer khusus ini secara lokal terlebih dahulu, kami perlu menginstal docker desktop di komputer lokal Anda. Anda harus terbiasa dengan pembuatan container buruh pelabuhan.
Anda juga memerlukan akun AWS dengan akses ke Amazon SageMaker, Amazon ECR, dan Amazon S3 untuk menguji aplikasi ini secara end-to-end.
Pastikan Anda memiliki versi terbaru Boto3
dan paket Amazon SageMaker Python diinstal:
Panduan Solusi
Buat wadah fitur khusus
Untuk membangun container pertama, container featureizer, kami melatih a scikit-learn
model untuk memproses fitur mentah di pauhi Himpunan data. Skrip prapemrosesan menggunakan SederhanaImputer untuk menangani nilai yang hilang, Penskala Standar untuk normalisasi kolom numerik, dan OneHotEncoder untuk mengubah kolom kategorikal. Setelah memasang trafo, kita simpan modelnya pekerjaan format. Kami kemudian mengompres dan mengunggah artefak model tersimpan ini ke Amazon Simple Storage Service (Amazon S3) keranjang.
Berikut cuplikan kode contoh yang menunjukkan hal ini. Mengacu pada fiturizer.ipynb untuk implementasi penuh:
Selanjutnya, untuk membuat wadah inferensi khusus untuk model featurizer, kami membuat image Docker dengan paket nginx, gunicorn, flask, serta dependensi lain yang diperlukan untuk model featurizer.
Nginx, gunicorn, dan aplikasi Flask akan berfungsi sebagai tumpukan penyajian model di titik akhir real-time Amazon SageMaker.
Saat membawa kontainer khusus untuk hosting di Amazon SageMaker, kita perlu memastikan bahwa skrip inferensi melakukan tugas-tugas berikut setelah diluncurkan di dalam kontainer:
- Pemuatan model: Skrip inferensi (
preprocessing.py
) harus mengacu pada/opt/ml/model
direktori untuk memuat model dalam wadah. Artefak model di Amazon S3 akan diunduh dan dipasang ke kontainer di jalur tersebut/opt/ml/model
. - Variabel lingkungan: Untuk meneruskan variabel lingkungan khusus ke kontainer, Anda harus menentukannya selama proses Model langkah pembuatan atau selama Titik akhir penciptaan dari pekerjaan pelatihan.
- Persyaratan API: Skrip Inferensi harus mengimplementasikan keduanya
/ping
dan/invocations
rute sebagai aplikasi Flask. Itu/ping
API digunakan untuk pemeriksaan kesehatan, sedangkan/invocations
API menangani permintaan inferensi. - Pencatatan: Log keluaran dalam skrip inferensi harus ditulis ke keluaran standar (stdout) dan kesalahan standar (stderr) aliran. Log ini kemudian dialirkan ke amazoncloudwatch oleh Amazon SageMaker.
Ini cuplikan dari preprocessing.py
yang menunjukkan implementasi /ping
dan /invocations
.
Lihat prapemrosesan.py di bawah folder featureizer untuk implementasi penuh.
Bangun image Docker dengan featureizer dan tumpukan penyajian model
Sekarang mari kita membangun Dockerfile menggunakan image dasar kustom dan menginstal dependensi yang diperlukan.
Untuk ini, kami menggunakan python:3.9-slim-buster
sebagai gambar dasar. Anda dapat mengubah gambar dasar lainnya yang relevan dengan kasus penggunaan Anda.
Kami kemudian menyalin konfigurasi nginx, file gateway server web gunicorn, dan skrip inferensi ke container. Kami juga membuat skrip python bernama serve yang meluncurkan proses nginx dan gunicorn di latar belakang dan menetapkan skrip inferensi (yaitu, aplikasi preprocessing.py Flask) sebagai titik masuk untuk container.
Berikut cuplikan Dockerfile untuk menghosting model featureizer. Untuk implementasi penuh, lihat Dockerfile bawah fituriser folder.
Uji gambar inferensi khusus dengan featureizer secara lokal
Sekarang, buat dan uji wadah inferensi khusus dengan featureizer secara lokal, menggunakan Amazon Mode lokal SageMaker. Mode lokal sempurna untuk menguji skrip pemrosesan, pelatihan, dan inferensi Anda tanpa meluncurkan tugas apa pun di Amazon SageMaker. Setelah mengonfirmasi hasil pengujian lokal, Anda dapat dengan mudah mengadaptasi skrip pelatihan dan inferensi untuk penerapan di Amazon SageMaker dengan sedikit perubahan.
Untuk menguji gambar kustom featureizer secara lokal, pertama-tama buat gambar menggunakan gambar yang telah ditentukan sebelumnya Dockerfile. Kemudian, luncurkan sebuah container dengan memasang direktori yang berisi model featureizer (preprocess.joblib
) ke /opt/ml/model
direktori di dalam wadah. Selain itu, petakan port 8080 dari kontainer ke host.
Setelah diluncurkan, Anda dapat mengirim permintaan inferensi ke http://localhost:8080/invocations.
Untuk membangun dan meluncurkan kontainer, buka terminal dan jalankan perintah berikut.
Perhatikan bahwa Anda harus mengganti <IMAGE_NAME>
, seperti yang ditunjukkan pada kode berikut, dengan nama gambar container Anda.
Perintah berikut juga mengasumsikan bahwa yang terlatih scikit-learn
model (preprocess.joblib
) ada di bawah direktori bernama models
.
Setelah container aktif dan berjalan, kita dapat menguji keduanya /ping dan / doa rute menggunakan perintah curl.
Jalankan perintah di bawah ini dari terminal
Ketika data mentah (belum diubah) dikirim ke http://localhost:8080/invocations, titik akhir merespons dengan data yang diubah.
Anda akan melihat respons yang mirip dengan berikut ini:
Kami sekarang menghentikan kontainer yang sedang berjalan, lalu memberi tag dan mendorong citra kustom lokal ke Amazon Elastic Container Registry pribadi (ECR Amazon) penyimpanan.
Lihat perintah berikut untuk masuk ke Amazon ECR, yang menandai citra lokal dengan jalur citra Amazon ECR lengkap dan kemudian mendorong citra tersebut ke Amazon ECR. Pastikan Anda menggantinya region
dan account
variabel yang sesuai dengan lingkungan Anda.
Lihat membuat repositori dan mendorong gambar ke Amazon ECR Antarmuka Baris Perintah AWS (AWS CLI) perintah untuk informasi lebih lanjut.
Langkah opsional
Secara opsional, Anda dapat melakukan pengujian langsung dengan menerapkan model featureizer ke titik akhir real-time dengan citra buruh pelabuhan khusus di Amazon ECR. Mengacu pada fiturizer.ipynb notebook untuk implementasi penuh pembuatan, pengujian, dan pengiriman citra kustom ke Amazon ECR.
Amazon SageMaker menginisialisasi titik akhir inferensi dan menyalin artefak model ke /opt/ml/model
direktori di dalam wadah. Melihat Bagaimana SageMaker Memuat artefak Model Anda.
Buat wadah prediktor XGBoost khusus
Untuk membuat wadah inferensi XGBoost, kami mengikuti langkah serupa seperti yang kami lakukan saat membuat gambar untuk wadah featureizer:
- Unduh pra-terlatih
XGBoost
model dari Amazon S3. - Buat
inference.py
skrip yang memuat yang telah dilatih sebelumnyaXGBoost
model, mengonversi data masukan yang diubah yang diterima dari featureizer, dan mengonversinya menjadiXGBoost.DMatrix
format, berjalanpredict
di booster, dan mengembalikan prediksi dalam format json. - Skrip dan file konfigurasi yang membentuk tumpukan penyajian model (yaitu,
nginx.conf
,wsgi.py
, danserve
tetap sama dan tidak memerlukan modifikasi. - Kami menggunakan
Ubuntu:18.04
sebagai gambar dasar untuk Dockerfile. Ini bukanlah prasyarat. Kami menggunakan gambar dasar ubuntu untuk menunjukkan bahwa container dapat dibuat dengan gambar dasar apa pun. - Langkah-langkah untuk membangun citra buruh pelabuhan pelanggan, menguji citra secara lokal, dan mendorong citra yang diuji ke Amazon ECR tetap sama seperti sebelumnya.
Untuk singkatnya, langkah-langkah serupa ditunjukkan sebelumnya; namun, kami hanya menampilkan perubahan kode berikut ini.
Pertama, inference.py
naskah. Berikut cuplikan yang menunjukkan implementasi /ping
dan /invocations
. Mengacu pada inferensi.py bawah prediktor folder untuk implementasi penuh file ini.
Berikut cuplikan Dockerfile untuk menghosting model prediktor. Untuk implementasi penuh, lihat Dockerfile di bawah folder prediktor.
Kami kemudian melanjutkan membangun, menguji, dan mendorong citra prediktor khusus ini ke repositori pribadi di Amazon ECR. Mengacu pada prediktor.ipynb notebook untuk implementasi penuh pembuatan, pengujian, dan pengiriman citra kustom ke Amazon ECR.
Menyebarkan alur inferensi serial
Setelah kami menguji gambar featureizer dan prediktor dan mendorongnya ke Amazon ECR, sekarang kami mengunggah artefak model kami ke bucket Amazon S3.
Lalu, kita membuat dua objek model: satu untuk featurizer
(yaitu, preprocess.joblib
) dan lainnya untuk predictor
(yaitu, xgboost-model
) dengan menentukan uri gambar khusus yang kita buat sebelumnya.
Berikut cuplikan yang menunjukkan hal itu. Mengacu pada serial-inferensi-pipa.ipynb untuk implementasi penuh.
Sekarang, untuk menyebarkan container ini secara serial, pertama-tama kita membuat a Model Pipa objek dan lulus featurizer
model dan predictor
model ke objek daftar python dalam urutan yang sama.
Kemudian, kami memanggil .deploy()
metode di Model Pipa menentukan jenis instans dan jumlah instans.
Pada tahap ini, Amazon SageMaker menyebarkan pipa inferensi serial ke titik akhir waktu nyata. Kami menunggu titik akhir InService
.
Kami sekarang dapat menguji titik akhir dengan mengirimkan beberapa permintaan inferensi ke titik akhir langsung ini.
Lihat serial-inferensi-pipa.ipynb untuk implementasi penuh.
Membersihkan
Setelah Anda selesai menguji, ikuti petunjuk di bagian pembersihan buku catatan untuk menghapus sumber daya yang disediakan dalam postingan ini untuk menghindari biaya yang tidak perlu. Mengacu pada Harga Amazon SageMaker untuk rincian tentang biaya instans inferensi.
Kesimpulan
Dalam postingan ini, saya menunjukkan bagaimana kita dapat membangun dan menerapkan aplikasi inferensi ML serial menggunakan wadah inferensi khusus ke titik akhir waktu nyata di Amazon SageMaker.
Solusi ini menunjukkan bagaimana pelanggan dapat membawa wadah khusus mereka sendiri untuk hosting di Amazon SageMaker dengan cara yang hemat biaya. Dengan opsi BYOC, pelanggan dapat dengan cepat membangun dan mengadaptasi aplikasi ML mereka untuk diterapkan ke Amazon SageMaker.
Kami mendorong Anda untuk mencoba solusi ini dengan kumpulan data yang relevan dengan Indikator Kinerja Utama (KPI) bisnis Anda. Anda dapat merujuk ke seluruh solusi di sini Repositori GitHub.
Referensi
tentang Penulis
Praveen Chamarthi adalah Spesialis AI/ML Senior di Amazon Web Services. Dia sangat menyukai AI/ML dan semua hal tentang AWS. Dia membantu pelanggan di seluruh Amerika untuk menskalakan, berinovasi, dan mengoperasikan beban kerja ML secara efisien di AWS. Di waktu luangnya, Praveen suka membaca dan menikmati film sci-fi.
- Konten Bertenaga SEO & Distribusi PR. Dapatkan Amplifikasi Hari Ini.
- PlatoData.Jaringan Vertikal Generatif Ai. Berdayakan Diri Anda. Akses Di Sini.
- PlatoAiStream. Intelijen Web3. Pengetahuan Diperkuat. Akses Di Sini.
- PlatoESG. Karbon, teknologi bersih, energi, Lingkungan Hidup, Tenaga surya, Penanganan limbah. Akses Di Sini.
- PlatoHealth. Kecerdasan Uji Coba Biotek dan Klinis. Akses Di Sini.
- Sumber: https://aws.amazon.com/blogs/machine-learning/build-and-deploy-ml-inference-applications-from-scratch-using-amazon-sagemaker/
- :memiliki
- :adalah
- :bukan
- :Di mana
- $NAIK
- 08
- 09
- 1
- 10
- 100
- 11
- 13
- 14
- 150
- 16
- 17
- 20
- 200
- 2023
- 25
- 28
- 30
- 500
- 7
- 8
- 87
- 9
- a
- Tentang Kami
- Setuju
- Menerima
- mengakses
- demikian
- Akun
- di seluruh
- menyesuaikan
- Selain itu
- Adopsi
- mempengaruhi
- Setelah
- AI / ML
- algoritma
- Semua
- sepanjang
- juga
- Amazon
- Amazon SageMaker
- Amazon Web Services
- Americas
- an
- dan
- Apa pun
- api
- aplikasi
- Aplikasi
- aplikasi
- berlaku
- April
- ADALAH
- susunan
- AS
- mengasumsikan
- At
- tersedia
- menghindari
- AWS
- latar belakang
- mendasarkan
- berdasarkan
- BE
- menjadi
- sebelum
- makhluk
- di bawah
- tubuh
- pendorong
- kedua
- membawa
- Membawa
- membangun
- Bangunan
- dibangun di
- built-in
- Bundel
- bisnis
- tapi
- by
- panggilan
- bernama
- CAN
- kasus
- kasus
- KUCING
- tertentu
- perubahan
- berubah
- Perubahan
- beban
- memeriksa
- Cek
- Jelas
- awan
- kode
- Pengkodean
- Kolom
- Kolom
- COM
- Umum
- kompleks
- komputer
- konfigurasi
- terhubung
- koneksi
- pertimbangan
- konstan
- membangun
- konsumsi
- Wadah
- Wadah
- Konten
- isi
- terus
- kontrol
- mengubah
- Biaya
- bisa
- membuat
- membuat
- penciptaan
- Surat kepercayaan
- adat
- pelanggan
- pelanggan
- data
- Tanggal
- menetapkan
- didefinisikan
- mendemonstrasikan
- menunjukkan
- ketergantungan
- menyebarkan
- dikerahkan
- penggelaran
- penyebaran
- menyebarkan
- Desktop
- rincian
- ditentukan
- dikembangkan
- Pengembangan
- DICT
- MELAKUKAN
- berbeda
- Buruh pelabuhan
- domain
- dilakukan
- Dont
- dua
- selama
- e
- Terdahulu
- mudah
- efisien
- lain
- mendorong
- ujung ke ujung
- Titik akhir
- memastikan
- Seluruh
- masuk
- Lingkungan Hidup
- lingkungan
- kesalahan
- dll
- contoh
- Kecuali
- pengecualian
- dieksekusi
- akrab
- Fashion
- Favorit
- Fitur
- beberapa
- File
- File
- Pertama
- cocok
- sesuai
- keluwesan
- mengikuti
- berikut
- Untuk
- bentuk
- format
- ditemukan
- Kerangka
- kerangka
- dari
- penuh
- fungsi
- fungsionil
- Keuntungan
- pintu gerbang
- mendapatkan
- GitHub
- GMT
- Pergi
- menangani
- Menangani
- Penanganan
- Memiliki
- he
- Kesehatan
- tinggi
- membantu
- membantu
- -nya
- tuan rumah
- tuan
- host
- Seterpercayaapakah Olymp Trade? Kesimpulan
- How To
- Namun
- HTML
- http
- HTTPS
- i
- if
- gambar
- gambar
- melaksanakan
- implementasi
- mengimpor
- in
- termasuk
- Termasuk
- makin
- indikator
- sendiri-sendiri
- industri
- informasi
- inhouse
- berinovasi
- memasukkan
- dalam
- install
- diinstal
- contoh
- instruksi
- terpadu
- Antarmuka
- ke
- terlibat
- isolasi
- IT
- Pekerjaan
- Jobs
- jpg
- json
- Menjaga
- kunci
- label
- Terbaru
- jalankan
- diluncurkan
- meluncurkan
- peluncuran
- pengetahuan
- meninggalkan
- Panjang
- perpustakaan
- baris
- Daftar
- Daftar
- hidup
- memuat
- pemuatan
- beban
- lokal
- lokal
- logika
- masuk
- mencintai
- mesin
- Mesin belajar
- Arus utama
- MEMBUAT
- Membuat
- mengelola
- cara
- peta
- tanda
- Cocok
- Mungkin..
- metode
- mungkin
- minimal
- hilang
- ML
- mode
- model
- model
- memodifikasi
- lebih
- bioskop
- banyak
- beberapa
- harus
- nama
- nama
- Perlu
- kebutuhan
- tidak
- None
- buku catatan
- sekarang
- jumlah
- mati rasa
- obyek
- objek
- of
- Penawaran
- Penawaran
- sering
- on
- sekali
- ONE
- yang
- hanya
- ke
- Buka
- beroperasi
- operasional
- pilihan
- or
- urutan
- OS
- Lainnya
- kami
- keluaran
- sendiri
- paket
- panda
- parameter
- tertentu
- lulus
- bergairah
- path
- sempurna
- Melakukan
- prestasi
- melakukan
- pipa saluran
- rencana
- plato
- Kecerdasan Data Plato
- Data Plato
- silahkan
- Titik
- Pos
- ramalan
- Prediksi
- Predictor
- menyajikan
- sebelumnya
- swasta
- masalah
- proses
- proses
- pengolahan
- Prosesor
- mempromosikan
- hak milik
- tujuan
- Dorong
- terdorong
- Mendorong
- Ular sanca
- segera
- menaikkan
- jarak
- Mentah
- Baca
- siap
- real-time
- diterima
- lihat
- pendaftaran
- relevan
- tinggal
- menggantikan
- gudang
- permintaan
- permintaan
- membutuhkan
- wajib
- Persyaratan
- membutuhkan
- sumber
- Sumber
- tanggapan
- mengakibatkan
- Hasil
- kembali
- kembali
- Pengembalian
- Cincin
- Rute
- rute
- BARIS
- Run
- berjalan
- berjalan
- pembuat bijak
- sama
- Save
- disimpan
- Skala
- sci-fi
- menggaruk
- naskah
- script
- Kedua
- Bagian
- melihat
- mengirim
- mengirim
- senior
- mengirim
- terpisah
- serial
- Seri
- melayani
- Server
- layanan
- Layanan
- porsi
- Sidang
- set
- set
- beberapa
- Seks
- harus
- Menunjukkan
- menunjukkan
- ditunjukkan
- Pertunjukkan
- mirip
- Sederhana
- potongan
- So
- larutan
- MEMECAHKAN
- beberapa
- sesuatu
- percikan
- spesialis
- tertentu
- tumpukan
- Tahap
- standar
- sudut
- Status
- Langkah
- Tangga
- penyimpanan
- streaming
- stream
- Tali
- tersusun
- berhasil
- seperti itu
- matahari
- Didukung
- pendukung
- Mendukung
- MENANDAI
- disesuaikan
- Dibutuhkan
- tugas
- terminal
- uji
- diuji
- pengujian
- tes
- bahwa
- Grafik
- mereka
- Mereka
- kemudian
- Sana.
- karena itu
- Ini
- hal
- ini
- waktu
- untuk
- alat
- Pelatihan VE
- terlatih
- Pelatihan
- Mengubah
- berubah
- transformator
- transformer
- mengubah
- mencoba
- mencoba
- dua
- mengetik
- Ubuntu
- bawah
- pokok
- tidak perlu
- meningkatkan
- dapat digunakan
- menggunakan
- gunakan case
- bekas
- Pengguna
- kegunaan
- menggunakan
- Nilai - Nilai
- berbagai
- bervariasi
- memverifikasi
- versi
- menunggu
- ingin
- adalah
- we
- jaringan
- web server
- layanan web
- BAIK
- yang
- sementara
- mengapa
- lebih luas
- akan
- dengan
- dalam
- tanpa
- alur kerja
- kerja
- tertulis
- X
- XGBoost
- Kamu
- Anda
- zephyrnet.dll