Lacak eksperimen ML Anda dari ujung ke ujung dengan Kontrol Versi Data dan Amazon SageMaker Experiments PlatoBlockchain Data Intelligence. Pencarian Vertikal. Ai.

Lacak eksperimen ML Anda dari ujung ke ujung dengan Kontrol Versi Data dan Eksperimen Amazon SageMaker

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:

# Login to ECR
aws --region ${REGION} ecr get-login-password | docker login --username AWS --password-stdin ${ACCOUNT_ID}.dkr.ecr.${REGION}.amazonaws.com/smstudio-custom

# Create the ECR repository
aws --region ${REGION} ecr create-repository --repository-name smstudio-custom

# Build the image - it might take a few minutes to complete this step
docker build . -t ${IMAGE_NAME} -t ${ACCOUNT_ID}.dkr.ecr.${REGION}.amazonaws.com/smstudio-custom:${IMAGE_NAME}

# Push the image to ECR
docker push ${ACCOUNT_ID}.dkr.ecr.${REGION}.amazonaws.com/smstudio-custom:${IMAGE_NAME}

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:

  1. Di domain Studio, luncurkan Studio untuk data-scientist-dvc pengguna.
  2. Pilih ikon Git, lalu pilih Mengkloning Repositori.
    Mengkloning Repositori
  3. Masukkan URL repositori (https://github.com/aws-samples/amazon-sagemaker-experiments-dvc-demo) dan pilih Klon.Mengkloning tombol repo
  4. Di browser file, pilih amazon-sagemaker-experiments-dvc-demo gudang.
  5. Buka dvc_sagemaker_script_mode.ipynb buku catatan.
  6. Untuk Gambar Kustom, pilih gambar conda-env-dvc-kernel.
  7. Pilih Pilih.
    conda-env-dvc-kernel

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.

Ini DVC

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:

from smexperiments.experiment import Experiment
from smexperiments.trial import Trial
from smexperiments.trial_component import TrialComponent
from smexperiments.tracker import Tracker

experiment_name = 'DEMO-sagemaker-experiments-dvc'

# create the experiment if it doesn't exist
try:
    my_experiment = Experiment.load(experiment_name=experiment_name)
    print("existing experiment loaded")
except Exception as ex:
    if "ResourceNotFound" in str(ex):
        my_experiment = Experiment.create(
            experiment_name = experiment_name,
            description = "How to integrate DVC"
        )
        print("new experiment created")
    else:
        print(f"Unexpected {ex}=, {type(ex)}")
        print("Dont go forward!")
        raise

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.

first_trial_name = "dvc-trial-single-file"

try:
    my_first_trial = Trial.load(trial_name=first_trial_name)
    print("existing trial loaded")
except Exception as ex:
    if "ResourceNotFound" in str(ex):
        my_first_trial = Trial.create(
            experiment_name=experiment_name,
            trial_name=first_trial_name,
        )
        print("new trial created")
    else:
        print(f"Unexpected {ex}=, {type(ex)}")
        print("Dont go forward!")
        raise

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.

with Tracker.load() as tracker:
    tracker.log_parameters({"data_commit_hash": commit_hash})
    for file_type in file_types:
        path = dvc.api.get_url(
            f"{data_path}/{file_type}/california_{file_type}.csv",
            repo=dvc_repo_url,
            rev=dvc_branch
        )
        tracker.log_output(name=f"california_{file_type}",value=path)

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 dan DVC_BRANCH)
  • A requiremets.txt fillet
  • Repositori Git (dalam CodeCommit)
  • Eksperimen dan percobaan SageMaker
from sagemaker.processing import FrameworkProcessor, ProcessingInput
from sagemaker.sklearn.estimator import SKLearn

dvc_repo_url = "codecommit::{}://sagemaker-dvc-sample".format(region)
dvc_branch = my_first_trial.trial_name

script_processor = FrameworkProcessor(
    estimator_cls=SKLearn,
    framework_version='0.23-1',
    instance_count=1,
    instance_type='ml.m5.xlarge',
    env={
        "DVC_REPO_URL": dvc_repo_url,
        "DVC_BRANCH": dvc_branch,
        "USER": "sagemaker"
    },
    role=role
)

experiment_config={
    "ExperimentName": my_experiment.experiment_name,
    "TrialName": my_first_trial.trial_name
}

Kami kemudian menjalankan pekerjaan pemrosesan dengan preprocessing-experiment.py naskah, experiment_config, dvc_repo_url, dan dvc_branch kita definisikan sebelumnya.

%%time

script_processor.run(
    code='./source_dir/preprocessing-experiment.py',
    dependencies=['./source_dir/requirements.txt'],
    inputs=[ProcessingInput(source=s3_data_path, destination="/opt/ml/processing/input")],
    experiment_config=experiment_config,
    arguments=["--train-test-split-ratio", "0.2"]
)

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.

Tab parameter Eksperimen SageMaker

Perhatikan juga detail input dan output pada Artefak Tab.

Tab artefak Eksperimen SageMaker

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:

dataset
    |-- train
    |   |-- california_train.csv
    |-- test
    |   |-- california_test.csv
    |-- validation
    |   |-- california_validation.csv

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, dan USER.
metric_definitions = [{'Name': 'median-AE', 'Regex': "AE-at-50th-percentile: ([0-9.]+).*$"}]

hyperparameters={ 
        "learning_rate" : 1,
        "depth": 6
    }
estimator = SKLearn(
    entry_point='train.py',
    source_dir='source_dir',
    role=role,
    metric_definitions=metric_definitions,
    hyperparameters=hyperparameters,
    instance_count=1,
    instance_type='ml.m5.large',
    framework_version='0.23-1',
    base_job_name='training-with-dvc-data',
    environment={
        "DVC_REPO_URL": dvc_repo_url,
        "DVC_BRANCH": dvc_branch,
        "USER": "sagemaker"
    }
)

experiment_config={
    "ExperimentName": my_experiment.experiment_name,
    "TrialName": my_first_trial.trial_name
}

Kami memanggil metode fit dari Estimator dengan eksperimen_config yang kami definisikan sebelumnya untuk memulai pelatihan.

%%time
estimator.fit(experiment_config=experiment_config)

Pekerjaan pelatihan membutuhkan waktu sekitar 5 menit untuk diselesaikan. Log menunjukkan baris-baris itu, yang menunjukkan file yang ditarik oleh DVC:

Running dvc pull command
A       train/california_train.csv
A       test/california_test.csv
A       validation/california_validation.csv
3 files added and 3 files fetched
Starting the training.
Found train files: ['/opt/ml/input/data/dataset/train/california_train.csv']
Found validation files: ['/opt/ml/input/data/dataset/train/california_train.csv']

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.

second_trial_name = "dvc-trial-multi-files"
try:
    my_second_trial = Trial.load(trial_name=second_trial_name)
    print("existing trial loaded")
except Exception as ex:
    if "ResourceNotFound" in str(ex):
        my_second_trial = Trial.create(
            experiment_name=experiment_name,
            trial_name=second_trial_name,
        )
        print("new trial created")
    else:
        print(f"Unexpected {ex}=, {type(ex)}")
        print("Dont go forward!")
        raise

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.

%%time

script_processor.run(
    code='./source_dir/preprocessing-experiment-multifiles.py',
    dependencies=['./source_dir/requirements.txt'],
    inputs=[ProcessingInput(source=s3_data_path, destination="/opt/ml/processing/input")],
    experiment_config=experiment_config,
    arguments=["--train-test-split-ratio", "0.1"]
)

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.

Tab parameter eksperimen multi file SageMaker

Anda juga dapat meninjau detail input dan output di Artefak Tab.

Tab artefak eksperimen multi file SageMaker

Kami sekarang berlatih di dvc-trial-multi-files cabang. Saat menarik data dengan DVC, kami menggunakan struktur kumpulan data berikut:

dataset
    |-- train
    |   |-- california_train_1.csv
    |   |-- california_train_2.csv
    |   |-- california_train_3.csv
    |   |-- california_train_4.csv
    |   |-- california_train_5.csv
    |-- test
    |   |-- california_test.csv
    |-- validation
    |   |-- california_validation_1.csv
    |   |-- california_validation_2.csv
    |   |-- california_validation_3.csv

Mirip seperti yang kami lakukan sebelumnya, kami membuat Penaksir Scikit-belajar baru dengan nama percobaan dvc-trial-multi-files dan memulai pekerjaan pelatihan.

%%time

estimator.fit(experiment_config=experiment_config)

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:

Running dvc pull command
A       validation/california_validation_2.csv
A       validation/california_validation_1.csv
A       validation/california_validation_3.csv
A       train/california_train_4.csv
A       train/california_train_5.csv
A       train/california_train_2.csv
A       train/california_train_3.csv
A       train/california_train_1.csv
A       test/california_test.csv
9 files added and 9 files fetched
Starting the training.
Found train files: ['/opt/ml/input/data/dataset/train/california_train_2.csv', '/opt/ml/input/data/dataset/train/california_train_5.csv', '/opt/ml/input/data/dataset/train/california_train_4.csv', '/opt/ml/input/data/dataset/train/california_train_1.csv', '/opt/ml/input/data/dataset/train/california_train_3.csv']
Found validation files: ['/opt/ml/input/data/dataset/validation/california_validation_2.csv', '/opt/ml/input/data/dataset/validation/california_validation_1.csv', '/opt/ml/input/data/dataset/validation/california_validation_3.csv']

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.

from sagemaker.serializers import CSVSerializer

predictor = estimator.deploy(1, "ml.t2.medium", serializer=CSVSerializer())

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.

import io
import dvc.api

raw = dvc.api.read(
    "dataset/test/california_test.csv",
    repo=dvc_repo_url,
    rev=dvc_branch
)

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.

test = pd.read_csv(io.StringIO(raw), sep=",", header=None)
X_test = test.iloc[:, 1:].values
y_test = test.iloc[:, 0:1].values

predicted = predictor.predict(X_test)
for i in range(len(predicted)-1):
    print(f"predicted: {predicted[i]}, actual: {y_test[i][0]}")

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.

predictor.delete_endpoint()

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:

cdk destroy

Jika Anda menggunakan domain yang sudah ada, jalankan juga perintah berikut:

# inject your DOMAIN_ID into the configuration file
sed -i 's/<your-sagemaker-studio-domain-id>/'"$DOMAIN_ID"'/' ../update-domain-no-custom-images.json
# update the sagemaker studio domain
aws --region ${REGION} sagemaker update-domain --cli-input-json file://../update-domain-no-custom-images.json

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 FrancescoPaolo 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 SelaEitan 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.

Stempel Waktu:

Lebih dari Pembelajaran Mesin AWS