Kami sangat bersemangat untuk mengumumkan dua kemampuan baru Studio Amazon SageMaker yang akan mempercepat pengembangan berulang bagi praktisi pembelajaran mesin (ML): Mode Lokal dan dukungan Docker. Pengembangan model ML sering kali melibatkan siklus iterasi yang lambat saat pengembang beralih antara pengkodean, pelatihan, dan penerapan. Setiap langkah memerlukan waktu menunggu sumber daya komputasi jarak jauh untuk memulai, sehingga menunda validasi implementasi dan mendapatkan masukan mengenai perubahan.
Dengan Mode Lokal, pengembang kini dapat melatih dan menguji model, melakukan debug kode, dan memvalidasi pipeline end-to-end langsung pada instans notebook SageMaker Studio mereka tanpa perlu menjalankan sumber daya komputasi jarak jauh. Hal ini mengurangi siklus iterasi dari menit ke detik, sehingga meningkatkan produktivitas pengembang. Dukungan Docker di notebook SageMaker Studio memungkinkan pengembang dengan mudah membuat container Docker dan mengakses container yang sudah dibuat sebelumnya, menyediakan lingkungan pengembangan yang konsisten di seluruh tim dan menghindari pengaturan dan manajemen ketergantungan yang memakan waktu.
Mode Lokal dan dukungan Docker menawarkan alur kerja yang disederhanakan untuk memvalidasi perubahan kode dan membuat prototipe model menggunakan kontainer lokal yang berjalan pada notebook SageMaker Studio
contoh. Dalam postingan ini, kami memandu Anda dalam menyiapkan Mode Lokal di SageMaker Studio, menjalankan contoh tugas pelatihan, dan menerapkan model pada Amazon SageMaker titik akhir dari buku catatan SageMaker Studio.
Mode Lokal SageMaker Studio
SageMaker Studio memperkenalkan Mode Lokal, memungkinkan Anda menjalankan pelatihan SageMaker, inferensi, transformasi batch, dan pekerjaan pemrosesan langsung di instans notebook JupyterLab, Editor Kode, atau SageMaker Studio Classic tanpa memerlukan sumber daya komputasi jarak jauh. Keuntungan menggunakan Mode Lokal meliputi:
- Validasi instan dan pengujian alur kerja langsung dalam lingkungan pengembangan terintegrasi (IDE)
- Iterasi yang lebih cepat melalui proses lokal untuk pekerjaan berskala lebih kecil guna memeriksa keluaran dan mengidentifikasi masalah sejak dini
- Peningkatan efisiensi pengembangan dan debugging dengan menghilangkan penantian untuk pekerjaan pelatihan jarak jauh
- Umpan balik langsung tentang perubahan kode sebelum menjalankan pekerjaan penuh di cloud
Gambar berikut mengilustrasikan alur kerja menggunakan Mode Lokal di SageMaker.
Untuk menggunakan Mode Lokal, atur instance_type='local'
saat menjalankan pekerjaan SageMaker Python SDK seperti pelatihan dan inferensi. Ini akan menjalankannya pada instans yang digunakan oleh IDE SageMaker Studio Anda alih-alih menyediakan sumber daya cloud.
Meskipun kemampuan tertentu seperti pelatihan terdistribusi hanya tersedia di cloud, Mode Lokal menghilangkan kebutuhan untuk beralih konteks untuk iterasi yang cepat. Saat Anda siap memanfaatkan kekuatan penuh dan skala SageMaker, Anda dapat menjalankan alur kerja Anda dengan lancar di cloud.
Dukungan Docker di SageMaker Studio
SageMaker Studio sekarang juga memungkinkan pembuatan dan menjalankan kontainer Docker secara lokal di instans notebook SageMaker Studio Anda. Fitur baru ini memungkinkan Anda membuat dan memvalidasi image Docker di SageMaker Studio sebelum menggunakannya untuk pelatihan dan inferensi SageMaker.
Diagram berikut mengilustrasikan arsitektur orkestrasi Docker tingkat tinggi dalam SageMaker Studio.
Dengan dukungan Docker di SageMaker Studio, Anda dapat:
- Bangun kontainer Docker dengan model dan dependensi terintegrasi langsung dalam SageMaker Studio
- Hilangkan kebutuhan akan proses pembangunan Docker eksternal untuk menyederhanakan pembuatan image
- Jalankan kontainer secara lokal untuk memvalidasi fungsionalitas sebelum menerapkan model ke produksi
- Gunakan kembali kontainer lokal saat menerapkan ke SageMaker untuk pelatihan dan hosting
Meskipun beberapa kemampuan Docker tingkat lanjut seperti multi-kontainer dan jaringan khusus tidak didukung pada tulisan ini, fungsionalitas inti build dan run tersedia untuk mempercepat pengembangan kontainer untuk alur kerja bawa kontainer Anda sendiri (BYOC).
Prasyarat
Untuk menggunakan Mode Lokal di aplikasi SageMaker Studio, Anda harus menyelesaikan prasyarat berikut:
- Untuk mengambil gambar dari Registry Kontainer Elastis Amazon (Amazon ECR), akun yang menghosting gambar ECR harus memberikan izin akses kepada pengguna Identitas dan Akses Manajemen (IAM) peran. Peran domain juga harus mengizinkan akses Amazon ECR.
- Untuk mengaktifkan Mode Lokal dan kemampuan Docker, Anda harus mengatur
EnableDockerAccess
parameter ke true untuk domainDockerSettings
menggunakan Antarmuka Baris Perintah AWS (AWS CLI). Hal ini memungkinkan pengguna di domain untuk menggunakan fitur Mode Lokal dan Docker. Secara default, Mode Lokal dan Docker dinonaktifkan di SageMaker Studio. Aplikasi SageMaker Studio apa pun yang ada perlu dimulai ulang agar pembaruan layanan Docker dapat diterapkan. Berikut ini adalah contoh perintah AWS CLI untuk memperbarui domain SageMaker Studio:
- Anda perlu memperbarui peran IAM SageMaker agar dapat melakukannya dorong gambar Docker ke Amazon ECR:
Jalankan file Python di ruang SageMaker Studio menggunakan Mode Lokal
SageMaker Studio JupyterLab dan Editor Kode (berdasarkan Kode-OSS, Kode Visual Studio – Sumber Terbuka), memperluas SageMaker Studio sehingga Anda dapat menulis, menguji, men-debug, dan menjalankan analitik dan kode ML Anda menggunakan IDE ringan yang populer. Untuk detail lebih lanjut tentang cara memulai SageMaker Studio IDE, lihat Tingkatkan produktivitas di Amazon SageMaker Studio: Memperkenalkan JupyterLab Spaces dan alat AI generatif dan Baru – Editor Kode, berdasarkan Kode-OSS VS Kode Sumber Terbuka kini tersedia di Amazon SageMaker Studio. Selesaikan langkah-langkah berikut:
- Buat terminal baru.
- Instal plugin Docker CLI dan Docker Compose dengan mengikuti petunjuk berikut GitHub repo. Jika perintah berantai gagal, jalankan perintah satu per satu.
Anda harus memperbarui SageMaker SDK ke versi terbaru.
- Run
pip install sagemaker -Uq
di terminal.
Hanya untuk Editor Kode, Anda perlu mengatur lingkungan Python agar berjalan di terminal saat ini.
- Di Editor Kode, di menu File¸ pilih preferensi dan Settings.
- Cari dan pilih Terminal: Jalankan di File Dir.
- Di Editor Kode atau JupyterLab, buka
scikit_learn_script_mode_local_training_and_serving
folder dan jalankanscikit_learn_script_mode_local_training_and_serving.py
file.
Anda dapat menjalankan skrip dengan memilih Run di Editor Kode atau menggunakan CLI di terminal JupyterLab. Anda akan dapat melihat bagaimana model tersebut dilatih secara lokal. Kemudian Anda menyebarkan model ke titik akhir SageMaker secara lokal, dan menghitung kesalahan akar rata-rata kuadrat (RMSE
).
Simulasikan pelatihan dan inferensi di SageMaker Studio Classic menggunakan Mode Lokal
Anda juga dapat menggunakan buku catatan di SageMaker Studio Classic untuk menjalankan tugas pelatihan skala kecil CIFAR10
menggunakan Mode Lokal, menerapkan model secara lokal, dan melakukan inferensi.
Siapkan buku catatan Anda
Untuk menyiapkan buku catatan, selesaikan langkah-langkah berikut:
- Buka SageMaker Studio Classic dan kloning yang berikut ini GitHub repo.
- Buka
pytorch_local_mode_cifar10.ipynb notebook in blog/pytorch_cnn_cifar10
.
- Untuk Gambar, pilih
PyTorch 2.1.0 Python 3.10 CPU Optimized
.
Konfirmasikan bahwa buku catatan Anda menampilkan pilihan instans dan kernel yang benar.
- Buka terminal dengan memilih Luncurkan Terminal di gambar SageMaker saat ini.
- Instal plugin Docker CLI dan Docker Compose dengan mengikuti petunjuk berikut GitHub repo.
Karena Anda menggunakan Docker dari SageMaker Studio Classic, hapus sudo saat menjalankan perintah karena terminal sudah berjalan di bawah pengguna super. Untuk SageMaker Studio Classic, perintah instalasi bergantung pada OS image aplikasi SageMaker Studio. Misalnya, gambar kerangka kerja berbasis DLC berbasis Ubuntu, di mana instruksi berikut akan berfungsi. Namun untuk image berbasis Debian seperti DataScience Images, Anda harus mengikuti petunjuk berikut ini GitHub repo. Jika perintah berantai gagal, jalankan perintah satu per satu. Anda akan melihat versi Docker ditampilkan.
- Biarkan jendela terminal terbuka, kembali ke buku catatan, dan mulai menjalankannya sel demi sel.
Pastikan untuk menjalankan sel dengan pip install -U sagemaker
jadi Anda menggunakan SageMaker Python SDK versi terbaru.
Pelatihan lokal
Saat Anda mulai menjalankan pekerjaan pelatihan SageMaker lokal, Anda akan melihat baris log berikut:
Hal ini menunjukkan bahwa pelatihan berjalan secara lokal menggunakan Docker.
Bersabarlah selama pytorch-training:2.1-cpu-py310
Gambar Docker ditarik. Karena ukurannya yang besar (5.2 GB), proses ini dapat memakan waktu beberapa menit.
Gambar Docker akan disimpan di volume root instans aplikasi SageMaker Studio, yang tidak dapat diakses oleh pengguna akhir. Satu-satunya cara untuk mengakses dan berinteraksi dengan image Docker adalah melalui operasi Docker API yang terbuka.
Dari sudut pandang kerahasiaan pengguna, platform SageMaker Studio tidak pernah mengakses atau menyimpan gambar khusus pengguna.
Saat pelatihan selesai, Anda akan dapat melihat baris log keberhasilan berikut:
Inferensi lokal
Selesaikan langkah-langkah berikut:
- Terapkan titik akhir SageMaker menggunakan Mode Lokal SageMaker.
Bersabarlah selama pytorch-inference:2.1-cpu-py310
Gambar Docker ditarik. Karena ukurannya yang besar (4.32 GB), proses ini dapat memakan waktu beberapa menit.
- Panggil titik akhir SageMaker yang disebarkan secara lokal menggunakan gambar uji.
Anda akan dapat melihat prediksi kelas: katak, kapal, mobil, dan pesawat:
- Karena titik akhir Lokal SageMaker masih aktif, navigasikan kembali ke jendela terminal yang terbuka dan daftarkan kontainer yang sedang berjalan:
docker ps
Anda akan dapat melihat jalannya pytorch-inference:2.1-cpu-py310
wadah yang mendukung titik akhir SageMaker.
- Untuk mematikan titik akhir lokal SageMaker dan menghentikan kontainer yang sedang berjalan, karena Anda hanya dapat menjalankan satu titik akhir lokal dalam satu waktu, jalankan kode pembersihan.
- Untuk memastikan container Docker tidak aktif, Anda dapat menavigasi ke jendela terminal yang terbuka, menjalankan docker ps, dan memastikan tidak ada container yang berjalan.
- Jika Anda melihat container sedang berjalan, jalankan
docker stop <CONTAINER_ID>
untuk menghentikannya.
Tip untuk menggunakan Mode Lokal SageMaker
Jika Anda menggunakan SageMaker untuk pertama kalinya, lihat Latih model pembelajaran mesin. Untuk mempelajari selengkapnya tentang penerapan model untuk inferensi dengan SageMaker, lihat Terapkan model untuk inferensi.
Ingatlah rekomendasi berikut:
- Cetak file dan folder input dan output untuk memahami kumpulan data dan pemuatan model
- Gunakan 1–2 epoch dan kumpulan data kecil untuk pengujian cepat
- Dependensi pra-instal di Dockerfile untuk mengoptimalkan pengaturan lingkungan
- Pisahkan kode serialisasi di titik akhir untuk debugging
Konfigurasikan instalasi Docker sebagai Konfigurasi Siklus Hidup
Anda dapat menentukan proses instalasi Docker sebagai skrip Konfigurasi Siklus Hidup (LCC) untuk menyederhanakan pengaturan setiap kali ruang SageMaker Studio baru dimulai. LCC adalah skrip yang dijalankan SageMaker selama acara seperti pembuatan ruang. Mengacu kepada laboratorium jupyter, Editor Kode, atau SageMaker Studio Klasik Pengaturan LCC (menggunakan klik instalasi buruh pelabuhan sebagai referensi) untuk mempelajari lebih lanjut.
Bangun dan uji image Docker kustom di ruang SageMaker Studio
Pada langkah ini, Anda menginstal Docker di dalam ruang aplikasi JupyterLab (atau Editor Kode) dan menggunakan Docker untuk membuat, menguji, dan menerbitkan image Docker kustom dengan ruang SageMaker Studio. Spasi digunakan untuk mengelola kebutuhan penyimpanan dan sumber daya beberapa aplikasi SageMaker Studio. Setiap ruang memiliki hubungan 1:1 dengan sebuah instance aplikasi. Setiap aplikasi pendukung yang dibuat mendapatkan ruangnya sendiri. Untuk mempelajari lebih lanjut tentang ruang SageMaker, lihat Tingkatkan produktivitas di Amazon SageMaker Studio: Memperkenalkan JupyterLab Spaces dan alat AI generatif. Pastikan Anda menyediakan ruang baru dengan penyimpanan minimal 30 GB untuk memungkinkan penyimpanan yang cukup untuk gambar dan artefak Docker.
Instal Docker di dalam spasi
Untuk menginstal plugin Docker CLI dan Docker Compose di dalam ruang JupyterLab, jalankan perintah berikut GitHub repo. Studio Pembuat Sage hanya mendukung Docker versi 20.10.X.
Bangun image Docker
Untuk mengonfirmasi bahwa Docker telah diinstal dan berfungsi di dalam ruang JupyterLab Anda, jalankan kode berikut:
Untuk membuat image Docker kustom di dalam ruang JupyterLab (atau Editor Kode), selesaikan langkah-langkah berikut:
- Buat Dockerfile kosong:
touch Dockerfile
- Edit Dockerfile dengan perintah berikut, yang membuat image server web flask sederhana dari python dasar:3.10.13-bullseye image yang dihosting di Hub Docker:
Kode berikut menunjukkan isi contoh file aplikasi flask app.py
:
Selain itu, Anda dapat memperbarui perintah referensi Dockerfile untuk menyertakan paket dan artefak pilihan Anda.
- Bangun image Docker menggunakan referensi Dockerfile:
docker build --network sagemaker --tag myflaskapp:v1 --file ./Dockerfile .
Memasukkan --network
sagemaker dalam perintah docker build Anda, jika tidak, build akan gagal. Kontainer tidak dapat dijalankan di jembatan default Docker atau jaringan Docker kustom. Kontainer dijalankan di jaringan yang sama dengan kontainer aplikasi SageMaker Studio. Pengguna hanya dapat menggunakan sagemaker untuk nama jaringan.
- Saat build Anda selesai, validasi apakah gambar tersebut ada. Beri tag ulang build sebagai gambar ECR dan dorong. Jika Anda mengalami masalah izin, jalankan perintah aws ecr get-login-password… dan coba jalankan kembali Docker push/pull:
Uji gambar Docker
Menginstal Docker di dalam ruang SageMaker Studio JupyterLab (atau Editor Kode) memungkinkan Anda menguji image Docker yang dibuat sebelumnya atau kustom sebagai container (atau aplikasi dalam container). Di bagian ini, kami menggunakan perintah docker run untuk menyediakan kontainer Docker di dalam ruang SageMaker Studio untuk menguji beban kerja dalam container seperti layanan web REST dan skrip Python. Selesaikan langkah-langkah berikut:
- Jika gambar uji tidak ada, jalankan docker pull untuk menarik gambar tersebut ke mesin lokal Anda:
sagemaker-user@default:~$ docker pull 123456789012.dkr.ecr.us-east-2.amazonaws.com/myflaskapp:v1
- Jika Anda mengalami masalah autentikasi, jalankan perintah berikut:
aws ecr get-login-password --region region | docker login --username AWS --password-stdin aws_account_id.dkr.ecr.region.amazonaws.com
- Buat wadah untuk menguji beban kerja Anda:
docker run --network sagemaker 123456789012.dkr.ecr.us-east-2.amazonaws.com/myflaskapp:v1
Ini memutar instance container baru dan menjalankan aplikasi yang ditentukan menggunakan ENTRYPOINT Docker:
- Untuk menguji apakah titik akhir web Anda aktif, navigasikan ke URL
https://<sagemaker-space-id>.studio.us-east-2.sagemaker.aws/jupyterlab/default/proxy/6006/
.
Anda akan melihat respons JSON yang mirip dengan tangkapan layar berikut.
Membersihkan
Untuk menghindari timbulnya biaya yang tidak perlu, hapus sumber daya yang Anda buat saat menjalankan contoh di postingan ini:
- Di domain SageMaker Studio Anda, pilih Studio Klasik di panel navigasi, lalu pilih berhenti.
- Di domain SageMaker Studio Anda, pilih laboratorium jupyter or Editor Kode di panel navigasi, pilih aplikasi Anda, lalu pilih berhenti.
Kesimpulan
Mode Lokal SageMaker Studio dan dukungan Docker memberdayakan pengembang untuk membangun, menguji, dan melakukan iterasi pada implementasi ML dengan lebih cepat tanpa meninggalkan ruang kerja mereka. Dengan menyediakan akses cepat ke lingkungan pengujian dan keluaran, kemampuan ini mengoptimalkan alur kerja dan meningkatkan produktivitas. Cobalah Model Lokal SageMaker Studio dan dukungan Docker menggunakan fitur onboard cepat, yang memungkinkan Anda membuat domain baru untuk satu pengguna dalam hitungan menit. Bagi pengalaman anda di bagian komentar!
Tentang Penulis
Shweta Singh adalah Manajer Produk Senior di tim platform Amazon SageMaker Machine Learning (ML) di AWS, yang memimpin SageMaker Python SDK. Dia telah bekerja di beberapa peran produk di Amazon selama lebih dari 5 tahun. Beliau memiliki gelar Bachelor of Science di bidang Teknik Komputer dan Master of Science di bidang Teknik Keuangan, keduanya dari New York University
Eitan Sela adalah Arsitek Solusi Spesialis AI dan Pembelajaran Mesin Generatif di AWS. Dia bekerja dengan pelanggan AWS untuk memberikan panduan dan bantuan teknis, membantu mereka membangun dan mengoperasikan solusi AI Generatif dan Pembelajaran Mesin di AWS. Di waktu luangnya, Eitan senang jogging dan membaca artikel pembelajaran mesin terbaru.
Pranav Murthy adalah Arsitek Solusi Spesialis AI/ML di AWS. Dia berfokus membantu pelanggan membangun, melatih, menerapkan, dan memigrasikan beban kerja pembelajaran mesin (ML) ke SageMaker. Dia sebelumnya bekerja di industri semikonduktor yang mengembangkan model computer vision (CV) besar dan pemrosesan bahasa alami (NLP) untuk meningkatkan proses semikonduktor menggunakan teknik ML yang canggih. Di waktu luangnya, ia menikmati bermain catur dan jalan-jalan. Anda dapat menemukan Pranav di LinkedIn.
Mufaddal Rohawala adalah Insinyur Perangkat Lunak di AWS. Dia bekerja di perpustakaan SageMaker Python SDK untuk Amazon SageMaker. Di waktu luangnya, ia menikmati perjalanan, aktivitas luar ruangan, dan merupakan penggemar sepak bola.
- 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/accelerate-ml-workflows-with-amazon-sagemaker-studio-local-mode-and-docker-support/