Veri Sürümü Kontrolü ve Amazon SageMaker Deneyleri PlatoBlockchain Veri Zekası ile makine öğrenimi deneylerinizi uçtan uca takip edin. Dikey Arama. Ai.

Veri Sürümü Kontrolü ve Amazon SageMaker Experiments ile makine öğrenimi deneylerinizi uçtan uca takip edin

Veri bilimcileri genellikle çeşitli veri ön işleme ve özellik mühendisliği stratejilerinin farklı model mimarileri ve hiper parametrelerle birlikte etkilerini anlamaya çalışırlar. Bunu yapmak, geniş parametre alanlarını yinelemeli olarak kapsamanızı gerektirir ve deneyleri tekrarlanabilir halde tutarken daha önce çalıştırılan konfigürasyonları ve sonuçları takip etmek çok zor olabilir.

Bu gönderi, deneylerinizi kod, veriler, yapılar ve ölçümler genelinde nasıl izleyeceğiniz konusunda size yol gösterir. Amazon SageMaker Deneyleri ile birlikte Veri Sürümü Kontrolü (DVC). DVC'yi nasıl yan yana kullanabileceğinizi gösteriyoruz Amazon Adaçayı Yapıcı işleme ve eğitim işleri. Kaliforniya konut veri seti üzerinde farklı CatBoost modellerini eğitiyoruz. StatLib deposuve DVC ile veri sürümünü takip ederken uzatma stratejilerini değiştirin. Her bir deneyde, SageMaker Experiments'ı kullanarak girdi ve çıktı yapıtlarını, kodları ve ölçümleri izliyoruz.

SageMaker Deneyleri

SageMaker Experiments, makine öğrenimi (ML) deneylerini izlemeye yönelik bir AWS hizmetidir. SageMaker Deneyleri Python SDK'sı Python kullanarak deney bilgilerini izlemenize yardımcı olan bu hizmete yönelik üst düzey bir arayüzdür.

SageMaker Experiments'ın amacı, deneyler oluşturmayı, bunları denemelerle doldurmayı, izleme ve köken bilgilerini eklemeyi ve denemeler ve deneyler arasında analitik çalıştırmayı mümkün olduğunca basit hale getirmektir.

SageMaker Deneylerini tartışırken aşağıdaki kavramlardan bahsediyoruz:

  • Deney – İlgili denemelerden oluşan bir koleksiyon. Birlikte karşılaştırmak istediğiniz bir denemeye denemeler eklersiniz.
  • Deneme – Çok adımlı makine öğrenimi iş akışının açıklaması. İş akışındaki her adım bir deneme bileşeniyle tanımlanır.
  • Deneme bileşeni – Veri temizleme, özellik çıkarma, model eğitimi veya model değerlendirme gibi makine öğrenimi iş akışındaki tek bir adımın açıklaması.
  • takipçi – Tek bir deneme bileşeni hakkındaki bilgileri (örneğin parametreler, ölçümler veya yapılar) günlüğe kaydetmeye yönelik bir Python bağlam yöneticisi.

Veri Sürümü Kontrolü

Veri Sürümü Kontrolü (DVC), yeni bir veri sürümü oluşturma, iş akışı ve deneme yönetimi yazılımı türüdür. Git (her ne kadar bağımsız çalışabilse de). DVC, yerleşik mühendislik araç setleri ile veri bilimi ihtiyaçları arasındaki boşluğu azaltarak yeni avantajlardan yararlanmanıza olanak tanır. Özellikler Mevcut becerileri ve sezgileri yeniden kullanırken.

Veri bilimi deney paylaşımı ve işbirliği, yazılım mühendislerinde olduğu gibi normal bir Git akışı (taahhütler, dallara ayırma, etiketleme, çekme istekleri) aracılığıyla yapılabilir. Git ve DVC ile veri bilimi ve makine öğrenimi ekipleri denemeleri sürümlendirebilir, büyük veri kümelerini yönetebilir ve projeleri tekrarlanabilir hale getirebilir.

DVC aşağıdaki özelliklere sahiptir:

  • DVC bir ücretsiz, açık kaynak komut satırı aracı.
  • DVC, Git depolarının üzerinde çalışır ve Git ile benzer bir komut satırı arayüzüne ve akışına sahiptir. DVC tek başına da çalışabilir ancak çeşitleme yetenekleri.
  • Büyük dosyalar, veri kümesi dizinleri, ML modelleri vb. küçük dosyalar ile değiştirilerek veri sürümü oluşturma etkinleştirilir meta dosyalar (Git ile kullanımı kolaydır). Bu yer tutucular, kaynak kodu yönetiminden ayrılan orijinal verilere işaret eder.
  • Projenin verilerini kod tabanından ayrı olarak depolamak için şirket içi veya bulut depolamayı kullanabilirsiniz. Veri bilimcileri bu şekilde büyük veri kümelerini aktarabilir veya GPU tarafından eğitilmiş bir modeli başkalarıyla paylaşabilir.
  • DVC, hafif projeler oluşturarak veri bilimi projelerini tekrarlanabilir hale getirir boru hatları örtülü bağımlılık grafikleri kullanarak ve ilgili verileri ve yapıtları kodlayarak.
  • DVC platformdan bağımsızdır. Tüm önemli işletim sistemlerinde (Linux, macOS ve Windows) çalışır ve programlama dillerinden (Python, R, Julia, kabuk komut dosyaları vb.) veya ML kitaplıklarından (Keras, TensorFlow, PyTorch, Scipy ve benzeri) bağımsız olarak çalışır. daha fazlası) projede kullanıldı.
  • DVC hızlıdır kurmak özel bir altyapı gerektirmez ve API'lere veya harici hizmetlere bağlı değildir. Bağımsız bir CLI aracıdır.

SageMaker Deneyleri ve DVC örneği

Aşağıdaki GitHub örneği SageMaker ortamında DVC'nin nasıl kullanılacağını gösterir. Özellikle, veri bilimcilerinize tutarlı bir geliştirme ortamı sağlamak için varsayılan olarak yüklenen DVC kitaplıklarıyla özel bir görüntünün nasıl oluşturulacağına bakıyoruz. Amazon SageMaker Stüdyosuve işleme ve eğitim için SageMaker tarafından yönetilen altyapının yanı sıra DVC'nin nasıl çalıştırılacağı. Ayrıca SageMaker izleme bilgilerinin DVC'den alınan veri sürümü bilgileriyle nasıl zenginleştirileceğini ve bunların Studio konsolunda nasıl görselleştirileceğini gösteriyoruz.

Aşağıdaki şema, çözüm mimarisini ve iş akışını göstermektedir.

Zaten yüklü olan DVC ile özel bir Studio görüntüsü oluşturun

Bu GitHub deposu, DVC'nin önceden yüklü olduğu Studio için nasıl özel bir görüntü oluşturulacağını açıklıyoruz. Bir görüntü oluşturmanın ve bunu tüm Studio kullanıcılarının kullanımına sunmanın avantajı, bunun Studio kullanıcıları için yerel olarak da çalıştırabilecekleri tutarlı bir ortam oluşturmasıdır. Her ne kadar örnek temel alınsa da AWS Bulut9, Docker'ın kurulu ve çalışır durumda olması koşuluyla konteyneri yerel makinenizde de oluşturabilirsiniz. Bu örnek aşağıdakilere dayanmaktadır Dockerfile ve çevre.yml. Ortaya çıkan Docker görüntüsü şurada saklanır: Amazon Elastik Konteyner Kayıt Defteri (Amazon EMR) AWS hesabınızda. Aşağıdaki koda bakın:

# 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}

Artık yapabilirsiniz yeni bir Studio alanı oluştur or mevcut bir Studio alanını güncelleme yeni oluşturulan Docker görüntüsüne erişimi olan.

Biz kullanmak AWS Bulut Geliştirme Kiti (AWS CDK) aracılığıyla aşağıdaki kaynakları oluşturmak için AWS CloudFormation:

  • Yeni veya mevcut Studio alanınız için doğru izinlere sahip bir SageMaker yürütme rolü
  • Docker görüntüsünden bir SageMaker görüntüsü ve SageMaker görüntüsü sürümü conda-env-dvc-kernel daha önce yarattığımız
  • An AppImageConfig çekirdek ağ geçidinin nasıl yapılandırılması gerektiğini belirtir
  • Bir Studio kullanıcısı (data-scientist-dvc) doğru SageMaker yürütme rolüne ve kullanabileceği özel Studio görüntüsüne sahip

Ayrıntılı talimatlar için bkz. Özel bir görüntüyü SageMaker Studio ile ilişkilendirin.

Laboratuvarı çalıştırın

Laboratuvarı çalıştırmak için aşağıdaki adımları tamamlayın:

  1. Studio alanında, Studio'yu başlatın. data-scientist-dvc kullanıcı.
  2. Git simgesini seçin, ardından Bir Depoyu Klonla.
    Bir Depoyu Klonla
  3. Deponun URL'sini girin (https://github.com/aws-samples/amazon-sagemaker-experiments-dvc-demo) ve Seç klon.Bir repo düğmesini klonlama
  4. Dosya tarayıcısında şunu seçin: amazon-sagemaker-experiments-dvc-demo deposu.
  5. Açın dvc_sagemaker_script_mode.ipynb not defteri.
  6. İçin Özel Görüntü, conda-env-dvc-kernel görüntüsünü seçin.
  7. Klinik seç.
    conda-env-dvc-çekirdeği

Veri sürümü oluşturma için DVC'yi yapılandırma

Verileri hazırladığımız bir alt dizin oluşturuyoruz: sagemaker-dvc-sample. Bu alt dizinde yeni bir Git deposu başlatıyoruz ve uzaktan kumandayı içinde oluşturduğumuz bir depoya ayarlıyoruz. AWS CodeCommit. Amaç, veri izleme için DVC yapılandırmalarının ve dosyalarının bu depoda sürümlendirilmesini sağlamaktır. Ancak Git, örneğin git alt modülleri ve git alt ağaçları aracılığıyla alt projeleri yönetmek için yerel yetenekler sunar ve bu örneği, iş akışınıza en uygun, yukarıda belirtilen araçlardan herhangi birini kullanacak şekilde genişletebilirsiniz.

Bizim durumumuzda CodeCommit'i SageMaker ile kullanmanın temel avantajı, AWS Kimlik ve Erişim Yönetimi (IAM) kimlik doğrulama ve yetkilendirme için; yani kimlik bilgilerini (veya SSH anahtarlarını) almaya gerek kalmadan verileri göndermek ve çekmek için IAM rollerini kullanabiliriz. SageMaker yürütme rolünde uygun izinlerin ayarlanması, Studio not defterinin ve SageMaker eğitim ve işleme işinin CodeCommit ile güvenli bir şekilde etkileşime girmesine de olanak tanır.

CodeCommit'i GitHub, Gitlab veya Bitbucket gibi başka herhangi bir kaynak kontrol hizmetiyle değiştirebilseniz de sisteminizin kimlik bilgilerini nasıl kullanacağınızı düşünmeniz gerekir. Bir olasılık bu kimlik bilgilerini depolamaktır. AWS Sırları Yöneticisi ve bunları çalışma zamanında Studio not defterinin yanı sıra SageMaker işleme ve eğitim işlerinden alın.

DVC'yi başlat

DVC ve SageMaker ile işleyin ve eğitin

Bu bölümde sorunumuzu çözmek için iki farklı yaklaşımı ve size daha önce gösterdiğimiz üst düzey kavramsal mimariye göre SageMaker Deneylerini kullanarak iki testi nasıl takip edebileceğimizi araştırıyoruz.

SageMaker denemesi oluşturma

Bu testi SageMaker'da takip etmek için bir deneme oluşturmamız gerekiyor. Deney içinde denemeyi de tanımlamamız gerekiyor. Basitlik adına, deney için yalnızca bir denemeyi düşünüyoruz, ancak örneğin farklı algoritmaları test etmek istiyorsanız, bir deneme içinde istediğiniz sayıda deneme yapabilirsiniz.

Adlı bir deney oluşturuyoruz DEMO-sagemaker-experiments-dvc iki denemeyle, dvc-trial-single-file ve dvc-trial-multi-filesher biri veri kümesinin farklı bir sürümünü temsil eder.

Hadi oluşturalım DEMO-sagemaker-experiments-dvc deney:

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

Test 1: Eğitim ve doğrulama için tek dosyalar oluşturun

Bu bölümde ham verileri doğrudan oradan getiren bir işleme komut dosyası oluşturuyoruz. Amazon Basit Depolama Hizmeti (Amazon S3) girdi olarak; eğitim, doğrulama ve test veri kümelerini oluşturmak için bunu işler; ve sonuçları DVC kullanarak Amazon S3'te saklar. Ayrıca, işleme ve eğitim işlerini çalıştırırken ve SageMaker Deneyleri aracılığıyla SageMaker ile DVC tarafından oluşturulan çıktı yapıtlarını nasıl takip edebileceğinizi gösteriyoruz.

Öncelikle şunu oluşturuyoruz: dvc-trial-single-file denemeye alın ve ekleyin DEMO-sagemaker-experiments-dvc deney. Bunu yaparak, bu testle ilgili tüm deneme bileşenlerini anlamlı bir şekilde organize etmiş oluyoruz.

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

Tek dosya sürümünü oluşturmak için SageMaker işleme işinde DVC'yi kullanın

Bu bölümde, SageMaker'ın yönetilen veri yükleme özelliğini kullanarak ham verileri doğrudan Amazon S3'ten girdi olarak alan bir işleme komut dosyası oluşturuyoruz; eğitim, doğrulama ve test veri kümelerini oluşturmak için bunu işler; ve sonuçları DVC kullanarak Amazon S3'te saklar. Verileri Amazon S3'e depolamak (veya Amazon S3'ten veri çekmek) için DVC'yi kullanırken, SageMaker'ın yönetilen veri yükleme yeteneklerini kaybettiğimizi anlamak çok önemlidir; bu durum, işleme ve eğitim işlerimizin performansını ve maliyetlerini potansiyel olarak etkileyebilir. özellikle çok büyük veri kümeleriyle çalışırken. Farklı SageMaker yerel giriş modu yetenekleri hakkında daha fazla bilgi için bkz. Eğitim Verilerine Erişim.

Son olarak, işleme işlerini SageMaker Experiments aracılığıyla çalıştırırken DVC izleme yeteneklerini SageMaker izleme yetenekleriyle birleştiriyoruz.

İşleme betiği, Git deposunun adresini ve çevresel değişkenler yoluyla iletilen DVC meta verilerini depolamak için oluşturmak istediğimiz şubeyi bekler. Veri kümelerinin kendisi Amazon S3'te DVC tarafından depolanır. Her ne kadar çevresel değişkenler SageMaker Deneylerinde otomatik olarak izlense ve deneme bileşeni parametrelerinde görünse de, deneme bileşenlerini daha fazla bilgiyle zenginleştirmek isteyebiliriz; bu bilgiler daha sonra bir izleyici nesnesi kullanılarak Studio kullanıcı arayüzünde görselleştirme için kullanılabilir hale gelir. Bizim durumumuzda deneme bileşenlerinin parametreleri aşağıdakileri içerir:

  • DVC_REPO_URL
  • DVC_BRANCH
  • USER
  • data_commit_hash
  • train_test_split_ratio

Ön işleme betiği Git deposunu klonlar; eğitim, doğrulama ve test veri kümelerini oluşturur; ve DVC kullanarak senkronize eder. Daha önce de belirtildiği gibi, DVC kullanırken yerel SageMaker veri yükleme özelliklerinden yararlanamıyoruz. Büyük veri kümelerinde yaşayabileceğimiz performans cezalarının yanı sıra, çıktı eserleri için otomatik izleme yeteneklerini de kaybediyoruz. Ancak tracker ve DVC Python API sayesinde bu eksiklikleri telafi edebiliyor, bu tür bilgileri çalışma zamanında alabiliyor ve çok az çabayla deneme bileşeninde saklayabiliyoruz. Bunu yaparak katma değer, bu özel işleme işine ait giriş ve çıkış yapıtlarının tek bir görünümüne sahip olmaktır.

Ön işleme Python betiğinin tamamı şu adreste mevcuttur: 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 bize, AWS altyapısında çalışacak şekilde optimize edilmiş, AWS tarafından yönetilen konteyner görüntüleri üzerinde işleme komut dosyamızı çalıştırma olanağı veriyor. Komut dosyamız ek bağımlılıklar gerektiriyorsa, requirements.txt dosya. İşleme işine başladığımızda SageMaker şunları kullanır: pip-install ihtiyacımız olan tüm kitaplıkları (örneğin, DVC ile ilgili kitaplıklar) yüklemek için. Konteynerlerde kurulu tüm kütüphaneler üzerinde daha sıkı bir kontrole sahip olmanız gerekiyorsa SageMaker'a kendi konteynerinizi getirebilirsiniz; örneğin işleme ve eğitim.

Artık SageMaker işleme işimizi yürütmek için tüm bileşenlere sahibiz:

  • Birkaç bağımsız değişkeni işleyebilen bir işleme komut dosyası (--train-test-split-ratio) ve iki çevresel değişken (DVC_REPO_URL ve DVC_BRANCH)
  • A requiremets.txt dosya
  • Git deposu (CodeCommit'te)
  • Bir SageMaker deneyi ve denemesi
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
}

Daha sonra işleme işini şu komutla çalıştırıyoruz: preprocessing-experiment.py senaryo, experiment_config, dvc_repo_url, ve dvc_branch daha önce tanımlamıştık.

%%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"]
)

İşleme işinin tamamlanması yaklaşık 5 dakika sürer. Artık tek dosya veri kümesinin deneme ayrıntılarını görüntüleyebilirsiniz.

Aşağıdaki ekran görüntüsü, Studio'da saklanan bilgileri nerede bulabileceğinizi gösterir. Şunun için değerleri not edin: dvc-trial-single-file in DVC_BRANCH, DVC_REPO_URL, ve data_commit_hash üzerinde parametreler sekmesi.

SageMaker Deneyleri parametreleri sekmesi

Ayrıca giriş ve çıkış ayrıntılarına da dikkat edin. Eserleri sekmesi.

SageMaker Deneyleri yapıları sekmesi

Bir tahmin aracı oluşturun ve modeli tek dosya veri sürümüne sığdırın

Bir SageMaker eğitim işi içinde DVC entegrasyonunu kullanmak için bir dvc_repo_url ve dvc_branch Estimator nesnesini oluşturduğunuzda çevresel değişkenler olarak.

Bu konuda eğitim veriyoruz dvc-trial-single-file önce şube.

DVC ile veri çekerken aşağıdaki veri seti yapısını kullanırız:

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

Şimdi aşağıdakileri kullanarak bir Scikit-learn Tahmincisi oluşturuyoruz: SageMaker Python SDK'sı. Bu, aşağıdakileri belirtmemize olanak tanır:

  • Eğitime giriş noktası olarak çalıştırılması gereken Python kaynak dosyasının yolu.
  • Amazon S3 ve CodeCommit verilerine erişme ve SageMaker işlevlerini çalıştırma izinlerini kontrol eden IAM rolü.
  • Eğitim işlerini değerlendirmek için kullanılan ölçümleri tanımlayan sözlüklerin listesi.
  • Eğitim örneklerinin sayısı ve türü. Bir ml.m5.large örneğini kullanıyoruz.
  • Eğitim için kullanılan hiperparametreler.
  • Eğitim işi sırasında kullanılacak ortam değişkenleri. Kullanırız DVC_REPO_URL, DVC_BRANCH, ve 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
}

Eğitime başlamak için daha önce tanımladığımız Experiment_config ile Estimator’ın fit metodunu çağırıyoruz.

%%time
estimator.fit(experiment_config=experiment_config)

Eğitim işinin tamamlanması yaklaşık 5 dakika sürer. Günlükler, DVC tarafından çekilen dosyaları gösteren şu satırları gösterir:

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']

Test 2: Eğitim ve doğrulama için birden fazla dosya oluşturun

Yeni bir tane oluşturuyoruz dvc-trial-multi-files deneme ve mevcut olana ekle DEMO-sagemaker-experiments-dvc Deney.

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

İlk işleme komut dosyasından farklı olarak, artık eğitim ve doğrulama için orijinal veri kümesinden birden fazla dosya oluşturuyoruz ve DVC meta verilerini farklı bir dalda saklıyoruz.

İkinci ön işleme Python betiğini şu adreste inceleyebilirsiniz: 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"]
)

İşleme işinin tamamlanması yaklaşık 5 dakika sürer. Artık çoklu dosya veri kümesinin deneme ayrıntılarını görüntüleyebilirsiniz.

Aşağıdaki ekran görüntüleri SageMaker Experiments'ta saklanan bilgileri nerede bulabileceğinizi göstermektedir. deneme bileşenleri Studio kullanıcı arayüzündeki bölüm. Şunun için değerleri not edin: dvc-trial-multi-files in DVC_BRANCH, DVC_REPO_URL, ve data_commit_hash üzerinde parametreler sekmesi.

SageMaker çoklu dosya deneyleri parametreleri sekmesi

Ayrıca giriş ve çıkış ayrıntılarını da inceleyebilirsiniz. Eserleri sekmesi.

SageMaker çoklu dosya denemeleri yapıları sekmesi

Şimdi bu konuda antrenman yapıyoruz dvc-trial-multi-files dal. DVC ile veri çekerken aşağıdaki veri seti yapısını kullanırız:

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

Daha önce yaptığımız gibi, deneme adıyla yeni bir Scikit-learn Tahmincisi oluşturuyoruz dvc-trial-multi-files ve eğitim işine başlayın.

%%time

estimator.fit(experiment_config=experiment_config)

Eğitim işinin tamamlanması yaklaşık 5 dakika sürer. Dizüstü bilgisayara gönderilen eğitim işi günlüklerinin çıktısında, DVC tarafından çekilen dosyaları gösteren şu satırları görebilirsiniz:

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']

Modelinizi SageMaker'da barındırın

ML modelinizi eğittikten sonra SageMaker'ı kullanarak dağıtabilirsiniz. Her seferinde bir tahminde bulunan kalıcı, gerçek zamanlı bir uç noktayı dağıtmak için şunu kullanırız: SageMaker gerçek zamanlı barındırma hizmetleri.

from sagemaker.serializers import CSVSerializer

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

İlk olarak, en son test veri kümesini yerel olarak Studio'daki geliştirme not defterine alıyoruz. Bu amaçla kullanabiliriz dvc.api.read() SageMaker işleme işi tarafından Amazon S3'te depolanan ham verileri yüklemek için.

import io
import dvc.api

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

Daha sonra Pandaları kullanarak verileri hazırlıyoruz, bir test CSV dosyası yüklüyoruz ve çağırıyoruz. predictor.predict daha önce oluşturulan SageMaker uç noktasını verilerle çağırmak ve tahminler almak için.

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]}")

Uç noktayı sil

Uç noktaları artık kullanılmadıklarında silmelisiniz çünkü bunlar konuşlandırılma zamanına göre faturalandırılır (daha fazla bilgi için bkz. Amazon SageMaker Fiyatlandırması). Beklenmeyen maliyetlerden kaçınmak için uç noktayı sildiğinizden emin olun.

predictor.delete_endpoint()

Temizlemek

Oluşturduğunuz tüm kaynakları kaldırmadan önce tüm uygulamaların klasörden silindiğinden emin olun. data-scientist-dvc tüm KernelGateway uygulamalarının yanı sıra varsayılan JupiterServer uygulamasını da içeren kullanıcı.

Daha sonra aşağıdaki komutu çalıştırarak AWS CDK yığınını yok edebilirsiniz:

cdk destroy

Mevcut bir etki alanını kullandıysanız aşağıdaki komutları da çalıştırın:

# 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

Sonuç

Bu yazıda, SageMaker Experiments ve SageMaker işleme ve eğitim işlerini DVC ile birlikte kullanarak kod, veriler, yapılar ve ölçümler genelinde deneylerinizi nasıl takip edebileceğinize dair bir örnek üzerinden yürüdünüz. Geliştirme not defteri olarak Studio için gerekli olan DVC'yi içeren bir Docker imajı oluşturduk ve işleme ve eğitim işlerini DVC ile nasıl kullanabileceğinizi gösterdik. Verilerin iki versiyonunu hazırladık ve Git ile yönetmek için DVC'yi kullandık. Daha sonra, parametrelerin, yapıların ve ölçümlerin tek bir cam panelde birleşik bir görünümüne sahip olmak amacıyla verilerin iki versiyonuyla işleme ve eğitimi izlemek için SageMaker Experiments'ı kullandınız. Son olarak, modeli bir SageMaker uç noktasına dağıttınız ve SageMaker uç noktasını çağırmak ve tahminler almak için ikinci veri kümesi sürümünden bir test veri kümesi kullandınız.

Bir sonraki adım olarak, mevcut dizüstü bilgisayarınızı genişletebilir, kendi özellik mühendisliği stratejinizi tanıtabilir ve deneylerinizi yürütmek için DVC ve SageMaker'ı kullanabilirsiniz. Haydi inşaata gidelim!

Daha fazla okuma için aşağıdaki kaynaklara bakın:


Yazarlar Hakkında

Paolo Di FrancescoPaolo Di Francesco AWS'de bir çözüm mimarıdır. Telekomünikasyon ve yazılım mühendisliği alanlarında deneyim sahibidir. Makine öğrenimi konusunda tutkulu ve şu anda, özellikle MLOps ile ilgili tartışmalarda, müşterilerin AWS'deki hedeflerine ulaşmalarına yardımcı olmak için deneyimini kullanmaya odaklanıyor. İş dışında futbol oynamayı ve kitap okumayı sever.

Eitan SelaEitan Sela Amazon Web Services ile Makine Öğrenimi Uzmanı Çözümler Mimarıdır. AWS müşterileriyle birlikte çalışarak rehberlik ve teknik yardım sağlayarak onların AWS'de makine öğrenimi çözümleri oluşturmalarına ve çalıştırmalarına yardımcı olur. Eitan boş zamanlarında koşu yapmaktan ve en yeni makine öğrenimi makalelerini okumaktan hoşlanır.

Zaman Damgası:

Den fazla AWS Makine Öğrenimi