Ilmuwan data sering bekerja untuk memahami efek dari berbagai pra-pemrosesan data dan strategi rekayasa fitur dalam kombinasi dengan arsitektur model dan hyperparameter yang berbeda. Melakukannya mengharuskan Anda untuk menutupi ruang parameter yang besar secara iteratif, dan melacak konfigurasi dan hasil yang dijalankan sebelumnya bisa sangat melelahkan sambil menjaga eksperimen tetap dapat direproduksi.
Posting ini memandu Anda melalui contoh cara melacak eksperimen Anda di seluruh kode, data, artefak, dan metrik dengan menggunakan Eksperimen Amazon SageMaker setara dengan Kontrol Versi Data (DVC). Kami menunjukkan bagaimana Anda dapat menggunakan DVC berdampingan dengan Amazon SageMaker pekerjaan pemrosesan dan pelatihan. Kami melatih model CatBoost yang berbeda pada dataset perumahan California dari Repositori StatLib, dan ubah strategi holdout sambil melacak versi data dengan DVC. Dalam setiap eksperimen individual, kami melacak artefak, kode, dan metrik input dan output menggunakan Eksperimen SageMaker.
Eksperimen SageMaker
SageMaker Experiments adalah layanan AWS untuk melacak eksperimen pembelajaran mesin (ML). Itu SageMaker Eksperimen Python SDK adalah antarmuka tingkat tinggi untuk layanan ini yang membantu Anda melacak informasi eksperimen menggunakan Python.
Tujuan Eksperimen SageMaker adalah membuatnya sesederhana mungkin untuk membuat eksperimen, mengisinya dengan uji coba, menambahkan informasi pelacakan dan garis keturunan, dan menjalankan analitik di seluruh uji coba dan eksperimen.
Saat mendiskusikan Eksperimen SageMaker, kami mengacu pada konsep berikut:
- Percobaan - Kumpulan percobaan terkait. Anda menambahkan uji coba ke eksperimen yang ingin Anda bandingkan bersama.
- Percobaan โ Deskripsi alur kerja ML multi-langkah. Setiap langkah dalam alur kerja dijelaskan oleh komponen percobaan.
- Komponen percobaan โ Deskripsi satu langkah dalam alur kerja ML, seperti pembersihan data, ekstraksi fitur, pelatihan model, atau evaluasi model.
- Pelacak โ Manajer konteks Python untuk mencatat informasi tentang satu komponen percobaan (misalnya, parameter, metrik, atau artefak).
Kontrol Versi Data
Data Version Control (DVC) adalah tipe baru dari versi data, alur kerja, dan perangkat lunak manajemen eksperimen yang dibangun di atas pergi (walaupun bisa bekerja sendiri). DVC mengurangi kesenjangan antara perangkat teknik yang sudah mapan dan kebutuhan ilmu data, memungkinkan Anda memanfaatkan yang baru fitur sambil menggunakan kembali keterampilan dan intuisi yang ada.
Berbagi dan kolaborasi eksperimen ilmu data dapat dilakukan melalui aliran Git reguler (komit, percabangan, penandaan, permintaan tarik) seperti cara kerjanya untuk insinyur perangkat lunak. Dengan Git dan DVC, tim ilmu data dan ML dapat membuat versi eksperimen, mengelola kumpulan data besar, dan membuat proyek dapat direproduksi.
DVC memiliki fitur-fitur berikut:
- DVC adalah gratis, sumber terbuka command line tool.
- DVC bekerja di atas repositori Git dan memiliki antarmuka dan aliran baris perintah yang serupa dengan Git. DVC juga dapat bekerja secara mandiri, tetapi tanpa versioning kemampuan.
- Pembuatan versi data diaktifkan dengan mengganti file besar, direktori kumpulan data, model ML, dan sebagainya dengan yang kecil metafile (mudah ditangani dengan Git). Placeholder ini menunjuk ke data asli, yang dipisahkan dari manajemen kode sumber.
- Anda dapat menggunakan penyimpanan lokal atau cloud untuk menyimpan data proyek secara terpisah dari basis kodenya. Beginilah cara ilmuwan data dapat mentransfer kumpulan data besar atau berbagi model yang dilatih GPU dengan orang lain.
- DVC membuat proyek ilmu data dapat direproduksi dengan membuat yang ringan pipa menggunakan grafik ketergantungan implisit, dan dengan mengkodifikasi data dan artefak yang terlibat.
- DVC adalah platform agnostik. Ini berjalan pada semua sistem operasi utama (Linux, macOS, dan Windows), dan bekerja secara independen dari bahasa pemrograman (Python, R, Julia, skrip shell, dan sebagainya) atau perpustakaan ML (Keras, TensorFlow, PyTorch, Scipy, dan lebih) digunakan dalam proyek.
- DVC cepat untuk install dan tidak memerlukan infrastruktur khusus, juga tidak bergantung pada API atau layanan eksternal. Ini adalah alat CLI mandiri.
Eksperimen SageMaker dan sampel DVC
Berikut ini sampel GitHub menunjukkan cara menggunakan DVC dalam lingkungan SageMaker. Secara khusus, kami melihat cara membuat gambar kustom dengan pustaka DVC yang diinstal secara default untuk menyediakan lingkungan pengembangan yang konsisten bagi ilmuwan data Anda di Studio Amazon SageMaker, dan cara menjalankan DVC bersama infrastruktur yang dikelola SageMaker untuk pemrosesan dan pelatihan. Selanjutnya, kami menunjukkan cara memperkaya informasi pelacakan SageMaker dengan informasi versi data dari DVC, dan memvisualisasikannya dalam konsol Studio.
Diagram berikut mengilustrasikan arsitektur solusi dan alur kerja.
Buat gambar Studio khusus dengan DVC yang sudah diinstal
Dalam Repositori GitHub, kami menjelaskan cara membuat gambar khusus untuk Studio yang sudah menginstal DVC. Keuntungan membuat gambar dan membuatnya tersedia untuk semua pengguna Studio adalah menciptakan lingkungan yang konsisten untuk pengguna Studio, yang juga dapat mereka jalankan secara lokal. Meskipun sampel didasarkan pada AWS Cloud9, Anda juga dapat membangun wadah di mesin lokal Anda selama Anda menginstal dan menjalankan Docker. Sampel ini didasarkan pada hal berikut: Dockerfile dan lingkungan.yml. Gambar Docker yang dihasilkan disimpan di Registry Kontainer Elastis Amazon (Amazon EMR) di akun AWS Anda. Lihat kode berikut:
Anda sekarang dapat buat domain Studio baru or perbarui domain Studio yang ada yang memiliki akses ke image Docker yang baru dibuat.
Kami menggunakan Kit Pengembangan AWS Cloud (AWS CDK) untuk membuat sumber daya berikut melalui Formasi AWS Cloud:
- Peran eksekusi SageMaker dengan izin yang tepat untuk domain Studio baru atau yang sudah ada
- Gambar SageMaker dan versi gambar SageMaker dari gambar Docker
conda-env-dvc-kernel
yang kita buat sebelumnya - An
AppImageConfig
yang menentukan bagaimana gateway kernel harus dikonfigurasi - Pengguna Studio (
data-scientist-dvc
) dengan peran eksekusi SageMaker yang benar dan gambar Studio kustom yang tersedia untuknya
Untuk petunjuk rinci, lihat Kaitkan gambar khusus ke SageMaker Studio.
Jalankan lab
Untuk menjalankan lab, lakukan langkah-langkah berikut:
- Di domain Studio, luncurkan Studio untuk
data-scientist-dvc
pengguna. - Pilih ikon Git, lalu pilih Mengkloning Repositori.
- Masukkan URL repositori (
https://github.com/aws-samples/amazon-sagemaker-experiments-dvc-demo
) dan pilih Klon. - Di browser file, pilih
amazon-sagemaker-experiments-dvc-demo
gudang. - Buka
dvc_sagemaker_script_mode.ipynb
buku catatan. - Untuk Gambar Kustom, pilih gambar conda-env-dvc-kernel.
- Pilih Pilih.
Konfigurasikan DVC untuk versi data
Kami membuat subdirektori tempat kami menyiapkan data: sagemaker-dvc-sample. Di dalam subdirektori ini, kami menginisialisasi repositori Git baru dan mengatur remote ke repositori yang kami buat di Komitmen Kode AWS. Tujuannya adalah agar konfigurasi DVC dan file untuk pelacakan data diversi dalam repositori ini. Namun, Git menawarkan kemampuan asli untuk mengelola subproyek melalui, misalnya, submodul git dan subpohon git, dan Anda dapat memperluas sampel ini untuk menggunakan salah satu alat yang disebutkan di atas yang paling sesuai dengan alur kerja Anda.
Keuntungan utama menggunakan CodeCommit dengan SageMaker dalam kasus kami adalah integrasinya dengan Identitas AWS dan Manajemen Akses (IAM) untuk otentikasi dan otorisasi, artinya kita dapat menggunakan peran IAM untuk mendorong dan menarik data tanpa perlu mengambil kredensial (atau kunci SSH). Menyetel izin yang sesuai pada peran eksekusi SageMaker juga memungkinkan notebook Studio serta tugas pelatihan dan pemrosesan SageMaker berinteraksi secara aman dengan CodeCommit.
Meskipun Anda dapat mengganti CodeCommit dengan layanan kontrol sumber lainnya, seperti GitHub, Gitlab, atau Bitbucket, Anda perlu mempertimbangkan cara menangani kredensial untuk sistem Anda. Salah satu kemungkinannya adalah menyimpan kredensial ini di Manajer Rahasia AWS dan mengambilnya pada waktu berjalan dari notebook Studio serta dari pekerjaan pemrosesan dan pelatihan SageMaker.
Proses dan latih dengan DVC dan SageMaker
Di bagian ini, kami mengeksplorasi dua pendekatan berbeda untuk mengatasi masalah kami dan bagaimana kami dapat melacak dua pengujian menggunakan Eksperimen SageMaker sesuai dengan arsitektur konseptual tingkat tinggi yang kami tunjukkan sebelumnya.
Siapkan eksperimen SageMaker
Untuk melacak pengujian ini di SageMaker, kita perlu membuat eksperimen. Kita juga perlu mendefinisikan percobaan dalam percobaan. Demi kesederhanaan, kami hanya mempertimbangkan satu percobaan untuk percobaan, tetapi Anda dapat memiliki sejumlah percobaan dalam percobaan, misalnya, jika Anda ingin menguji algoritme yang berbeda.
Kami membuat eksperimen bernama DEMO-sagemaker-experiments-dvc
dengan dua percobaan, dvc-trial-single-file
dan dvc-trial-multi-files
, masing-masing mewakili versi set data yang berbeda.
Ayo buat DEMO-sagemaker-experiments-dvc
percobaan:
Tes 1: Hasilkan file tunggal untuk pelatihan dan validasi
Di bagian ini, kami membuat skrip pemrosesan yang mengambil data mentah langsung dari Layanan Penyimpanan Sederhana Amazon (Amazon S3) sebagai masukan; memprosesnya untuk membuat rangkaian data pelatihan, validasi, dan pengujian; dan menyimpan hasilnya kembali ke Amazon S3 menggunakan DVC. Selanjutnya, kami menunjukkan bagaimana Anda dapat melacak artefak keluaran yang dihasilkan oleh DVC dengan SageMaker saat menjalankan tugas pemrosesan dan pelatihan dan melalui Eksperimen SageMaker.
Pertama, kita buat dvc-trial-single-file
percobaan dan menambahkannya ke DEMO-sagemaker-experiments-dvc
percobaan. Dengan demikian, kami menjaga semua komponen uji coba yang terkait dengan tes ini terorganisir dengan cara yang berarti.
Gunakan DVC dalam pekerjaan pemrosesan SageMaker untuk membuat versi file tunggal
Di bagian ini, kami membuat skrip pemrosesan yang mendapatkan data mentah langsung dari Amazon S3 sebagai input menggunakan kemampuan pemuatan data terkelola dari SageMaker; memprosesnya untuk membuat rangkaian data pelatihan, validasi, dan pengujian; dan menyimpan hasilnya kembali ke Amazon S3 menggunakan DVC. Sangat penting untuk dipahami bahwa saat menggunakan DVC untuk menyimpan data ke Amazon S3 (atau menarik data dari Amazon S3), kami kehilangan kemampuan pemuatan data terkelola SageMaker, yang berpotensi berdampak pada kinerja dan biaya pekerjaan pemrosesan dan pelatihan kami. , terutama saat bekerja dengan kumpulan data yang sangat besar. Untuk informasi selengkapnya tentang berbagai kemampuan mode input asli SageMaker, lihat Akses Data Pelatihan.
Terakhir, kami menyatukan kemampuan pelacakan DVC dengan kemampuan pelacakan SageMaker saat menjalankan tugas pemrosesan melalui Eksperimen SageMaker.
Skrip pemrosesan mengharapkan alamat repositori Git dan cabang yang ingin kita buat untuk menyimpan metadata DVC yang diteruskan melalui variabel lingkungan. Kumpulan data itu sendiri disimpan di Amazon S3 oleh DVC. Meskipun variabel lingkungan dilacak secara otomatis dalam Eksperimen SageMaker dan terlihat dalam parameter komponen uji coba, kami mungkin ingin memperkaya komponen uji coba dengan informasi lebih lanjut, yang kemudian tersedia untuk visualisasi di UI Studio menggunakan objek pelacak. Dalam kasus kami, parameter komponen percobaan meliputi:
DVC_REPO_URL
DVC_BRANCH
USER
data_commit_hash
train_test_split_ratio
Skrip prapemrosesan mengkloning repositori Git; menghasilkan rangkaian data kereta, validasi, dan pengujian; dan menyinkronkannya menggunakan DVC. Seperti yang disebutkan sebelumnya, saat menggunakan DVC, kami tidak dapat memanfaatkan kemampuan pemuatan data asli SageMaker. Selain penalti kinerja yang mungkin kami alami pada kumpulan data besar, kami juga kehilangan kemampuan pelacakan otomatis untuk artefak keluaran. Namun, berkat pelacak dan DVC Python API, kami dapat mengkompensasi kekurangan ini, mengambil informasi tersebut pada saat dijalankan, dan menyimpannya dalam komponen uji coba dengan sedikit usaha. Nilai tambah dengan melakukannya adalah memiliki satu tampilan artefak input dan output yang termasuk dalam pekerjaan pemrosesan khusus ini.
Skrip Python prapemrosesan lengkap tersedia di GitHub repo.
SageMaker memberi kami kemungkinan untuk menjalankan skrip pemrosesan kami pada gambar kontainer yang dikelola oleh AWS yang dioptimalkan untuk berjalan di infrastruktur AWS. Jika skrip kami membutuhkan dependensi tambahan, kami dapat menyediakan requirements.txt
mengajukan. Saat kami memulai pekerjaan pemrosesan, SageMaker menggunakan pip-install
untuk menginstal semua perpustakaan yang kita butuhkan (misalnya, perpustakaan terkait DVC). Jika Anda perlu memiliki kontrol yang lebih ketat terhadap semua pustaka yang diinstal pada wadah, Anda dapat membawa wadah Anda sendiri di SageMaker, misalnya untuk pengolahan dan pelatihan.
Kami sekarang memiliki semua bahan untuk menjalankan pekerjaan pemrosesan SageMaker kami:
- Sebuah skrip pemrosesan yang dapat memproses beberapa argumen (
--train-test-split-ratio
) dan dua variabel lingkungan (DVC_REPO_URL
danDVC_BRANCH
) - A
requiremets.txt
fillet - Repositori Git (dalam CodeCommit)
- Eksperimen dan percobaan SageMaker
Kami kemudian menjalankan pekerjaan pemrosesan dengan preprocessing-experiment.py
naskah, experiment_config
, dvc_repo_url
, dan dvc_branch
kita definisikan sebelumnya.
Pekerjaan pemrosesan membutuhkan waktu sekitar 5 menit untuk diselesaikan. Sekarang Anda dapat melihat detail uji coba untuk kumpulan data file tunggal.
Tangkapan layar berikut menunjukkan di mana Anda dapat menemukan informasi yang tersimpan di dalam Studio. Perhatikan nilai untuk dvc-trial-single-file
in DVC_BRANCH
, DVC_REPO_URL
, dan data_commit_hash
pada parameter Tab.
Perhatikan juga detail input dan output pada Artefak Tab.
Buat estimator dan sesuaikan model dengan versi data file tunggal
Untuk menggunakan integrasi DVC di dalam tugas pelatihan SageMaker, kami lulus a dvc_repo_url
dan dvc_branch
sebagai variabel lingkungan saat Anda membuat objek Estimator.
Kami berlatih di dvc-trial-single-file
cabang dulu.
Saat menarik data dengan DVC, kami menggunakan struktur kumpulan data berikut:
Sekarang kita membuat Penaksir Scikit-belajar menggunakan SDK Python SageMaker. Ini memungkinkan kita untuk menentukan hal-hal berikut:
- Jalur ke file sumber Python, yang harus dijalankan sebagai titik masuk ke pelatihan.
- Peran IAM yang mengontrol izin untuk mengakses data Amazon S3 dan CodeCommit serta menjalankan fungsi SageMaker.
- Daftar kamus yang menentukan metrik yang digunakan untuk mengevaluasi pekerjaan pelatihan.
- Jumlah dan jenis instance pelatihan. Kami menggunakan satu instance ml.m5.large.
- Hyperparameter yang digunakan untuk pelatihan.
- Variabel lingkungan untuk digunakan selama pekerjaan pelatihan. Kita gunakan
DVC_REPO_URL
,DVC_BRANCH
, danUSER
.
Kami memanggil metode fit dari Estimator dengan eksperimen_config yang kami definisikan sebelumnya untuk memulai pelatihan.
Pekerjaan pelatihan membutuhkan waktu sekitar 5 menit untuk diselesaikan. Log menunjukkan baris-baris itu, yang menunjukkan file yang ditarik oleh DVC:
Tes 2: Hasilkan banyak file untuk pelatihan dan validasi
Kami membuat yang baru dvc-trial-multi-files
percobaan dan tambahkan ke arus DEMO-sagemaker-experiments-dvc
percobaan.
Berbeda dari skrip pemrosesan pertama, kami sekarang membuat beberapa file dari kumpulan data asli untuk pelatihan dan validasi dan menyimpan metadata DVC di cabang yang berbeda.
Anda dapat menjelajahi skrip Python prapemrosesan kedua di GitHub.
Pekerjaan pemrosesan membutuhkan waktu sekitar 5 menit untuk diselesaikan. Sekarang Anda dapat melihat detail uji coba untuk kumpulan data multi-file.
Tangkapan layar berikut menunjukkan di mana Anda dapat menemukan informasi yang disimpan dalam Eksperimen SageMaker di Komponen percobaan bagian dalam UI Studio. Perhatikan nilai untuk dvc-trial-multi-files
in DVC_BRANCH
, DVC_REPO_URL
, dan data_commit_hash
pada parameter Tab.
Anda juga dapat meninjau detail input dan output di Artefak Tab.
Kami sekarang berlatih di dvc-trial-multi-files
cabang. Saat menarik data dengan DVC, kami menggunakan struktur kumpulan data berikut:
Mirip seperti yang kami lakukan sebelumnya, kami membuat Penaksir Scikit-belajar baru dengan nama percobaan dvc-trial-multi-files
dan memulai pekerjaan pelatihan.
Pekerjaan pelatihan membutuhkan waktu sekitar 5 menit untuk diselesaikan. Pada output log pekerjaan pelatihan ke notebook, Anda dapat melihat baris tersebut, yang menunjukkan file yang ditarik oleh DVC:
Host model Anda di SageMaker
Setelah melatih model ML, Anda dapat menerapkannya menggunakan SageMaker. Untuk menerapkan titik akhir real-time persisten yang membuat satu prediksi pada satu waktu, kami menggunakan Layanan hosting waktu nyata SageMaker.
Pertama, kami mendapatkan dataset pengujian terbaru secara lokal di notebook pengembangan di Studio. Untuk tujuan ini, kita dapat menggunakan dvc.api.read()
untuk memuat data mentah yang disimpan di Amazon S3 oleh tugas pemrosesan SageMaker.
Kemudian kami menyiapkan data menggunakan Pandas, memuat file CSV uji, dan memanggil predictor.predict
untuk memanggil titik akhir SageMaker yang dibuat sebelumnya, dengan data, dan mendapatkan prediksi.
Hapus titik akhir
Anda harus menghapus titik akhir saat tidak lagi digunakan, karena ditagih pada saat diterapkan (untuk informasi selengkapnya, lihat Harga Amazon SageMaker). Pastikan untuk menghapus titik akhir untuk menghindari biaya tak terduga.
Membersihkan
Sebelum Anda menghapus semua sumber daya yang Anda buat, pastikan semua aplikasi dihapus dari data-scientist-dvc
pengguna, termasuk semua aplikasi KernelGateway, serta aplikasi JupiterServer default.
Kemudian Anda dapat menghancurkan tumpukan AWS CDK dengan menjalankan perintah berikut:
Jika Anda menggunakan domain yang sudah ada, jalankan juga perintah berikut:
Kesimpulan
Dalam postingan ini, Anda telah mempelajari contoh cara melacak eksperimen Anda di seluruh kode, data, artefak, dan metrik dengan menggunakan Eksperimen SageMaker serta tugas pemrosesan dan pelatihan SageMaker bersama dengan DVC. Kami membuat gambar Docker yang berisi DVC, yang diperlukan untuk Studio sebagai notebook pengembangan, dan menunjukkan bagaimana Anda dapat menggunakan pekerjaan pemrosesan dan pelatihan dengan DVC. Kami menyiapkan dua versi data dan menggunakan DVC untuk mengelolanya dengan Git. Kemudian Anda menggunakan Eksperimen SageMaker untuk melacak pemrosesan dan pelatihan dengan dua versi data agar memiliki tampilan parameter, artefak, dan metrik yang terpadu dalam satu panel kaca. Terakhir, Anda menerapkan model ke titik akhir SageMaker dan menggunakan kumpulan data pengujian dari versi kumpulan data kedua untuk memanggil titik akhir SageMaker dan mendapatkan prediksi.
Sebagai langkah selanjutnya, Anda dapat memperluas notebook yang ada dan memperkenalkan strategi rekayasa fitur Anda sendiri dan menggunakan DVC dan SageMaker untuk menjalankan eksperimen Anda. Ayo membangun!
Untuk bacaan lebih lanjut, lihat sumber berikut:
Tentang Penulis
Paolo Di Francesco adalah arsitek solusi di AWS. Dia memiliki pengalaman di bidang telekomunikasi dan rekayasa perangkat lunak. Dia bersemangat tentang pembelajaran mesin dan saat ini berfokus pada penggunaan pengalamannya untuk membantu pelanggan mencapai tujuan mereka di AWS, khususnya dalam diskusi seputar MLOps. Di luar pekerjaan, ia menikmati bermain sepak bola dan membaca.
Eitan Sela adalah Arsitek Solusi Spesialis Pembelajaran Mesin dengan Amazon Web Services. Dia bekerja dengan pelanggan AWS untuk memberikan panduan dan bantuan teknis, membantu mereka membangun dan mengoperasikan solusi pembelajaran mesin di AWS. Di waktu luangnya, Eitan menikmati jogging dan membaca artikel pembelajaran mesin terbaru.
- AI
- ai seni
- generator seni ai
- punya robot
- Amazon SageMaker
- kecerdasan buatan
- sertifikasi kecerdasan buatan
- kecerdasan buatan dalam perbankan
- robot kecerdasan buatan
- robot kecerdasan buatan
- perangkat lunak kecerdasan buatan
- Pembelajaran Mesin AWS
- blockchain
- konferensi blockchain
- kecerdasan
- kecerdasan buatan percakapan
- konferensi kripto
- dall's
- Kontrol Versi Data
- belajar mendalam
- DVC
- google itu
- Mesin belajar
- plato
- plato ai
- Kecerdasan Data Plato
- Permainan Plato
- Data Plato
- permainan plato
- skala ai
- sintaksis
- Petunjuk Teknis
- zephyrnet.dll