Amazon SageMaker Experiments ve Amazon SageMaker Pipelines PlatoBlockchain Data Intelligence ile makine öğrenimi yolculuğunuzu düzenleyin. Dikey Arama. Ai.

Amazon SageMaker Experiments ve Amazon SageMaker Pipelines ile makine öğrenimi yolculuğunuzu düzenleyin

Bir makine öğrenimi (ML) modeli oluşturma süreci, iyi performans gösteren ve dağıtılmaya hazır olan aday modeli bulana kadar yinelenir. Veri bilimcileri bu süreci yineledikçe, her bir model sürümünün nasıl oluşturulduğunu ve nasıl çalıştığını anlamak için deneyleri kolayca izlemek için güvenilir bir yönteme ihtiyaç duyarlar.

Amazon Adaçayı Yapıcı ekiplerin makine öğrenimi modellerini hızla hazırlamak, oluşturmak, eğitmek, dağıtmak ve izlemek için çok çeşitli özelliklerden yararlanmasına olanak tanır. Amazon SageMaker Ardışık Düzenleri model oluşturma etkinlikleri aracılığıyla yineleme için tekrarlanabilir bir süreç sağlar ve Amazon SageMaker Deneyleri. Varsayılan olarak, her SageMaker işlem hattı bir deneyle ilişkilendirilir ve bu işlem hattının her çalıştırması, o deneyde bir deneme olarak izlenir. Ardından yinelemeleriniz herhangi bir ek adım olmadan otomatik olarak izlenir.

Bu gönderide, Denemeler ve Pipelines'ta yerleşik yerel yeteneklerle yapılan deneyleri izlemek için otomatik bir sürece sahip olmanın ardındaki motivasyona daha yakından bakıyoruz.

Deneylerinizi düzenli tutmak neden önemlidir?

Bir an için bir adım geriye gidelim ve makine öğrenimi için deneyler organize etmenin neden önemli olduğunu anlamaya çalışalım. Veri bilimcileri yeni bir makine öğrenimi sorununa yaklaştıklarında, veri kullanılabilirliğinden model performansını nasıl ölçeceklerine kadar birçok farklı soruyu yanıtlamaları gerekir.

Başlangıçta, süreç belirsizlikle doludur ve oldukça yinelemelidir. Sonuç olarak, bu deneme aşaması, her biri kendi girdilerinden (veri kümeleri, eğitim komut dosyaları ve hiperparametreler) oluşturulan ve kendi çıktılarını üreten (model yapıtları ve değerlendirme metrikleri) birden çok model üretebilir. O zaman zorluk, her yinelemenin tüm bu girdi ve çıktılarını takip etmektir.

Veri bilimcileri, bir modelin en iyi performans gösteren sürümüyle sonuçlanan veri dönüştürme, algoritma ve hiperparametrelerin kombinasyonunu bulana kadar genellikle birçok farklı model sürümünü eğitir. Bu benzersiz kombinasyonların her biri tek bir deneydir. Bu deneme tarafından kullanılan girdilerin, algoritmaların ve hiperparametrelerin izlenebilir bir kaydıyla, veri bilimi ekibi adımlarını yeniden oluşturmayı kolay bulabilir.

Deneyleri izlemek için otomatikleştirilmiş bir sürece sahip olmak, iyi performans gösteren belirli model sürümlerini yeniden oluşturma ve dağıtma yeteneğini geliştirir. Pipelines'ın Experiments ile yerel entegrasyonu, ardışık düzen çalıştırmalarında deneyleri otomatik olarak izlemeyi ve yönetmeyi kolaylaştırır.

SageMaker Deneylerinin Faydaları

SageMaker Experiments, veri bilimcilerinin eğitim yinelemelerini düzenlemesine, izlemesine, karşılaştırmasına ve değerlendirmesine olanak tanır.

İlk önce, Denemeler ile neler yapabileceğinize ilişkin bir genel bakışla başlayalım:

  • Deneyler düzenleyin – Deneyler, deneyi, bir üst düzey varlık olarak adlandırılan bir üst düzey varlıkla yapılandırır. deneme bir dizi içeren denemeler. Her deneme adı verilen bir dizi adım içerir. deneme bileşenleri. Her deneme bileşeni, veri kümeleri, algoritmalar ve parametrelerin bir birleşimidir. Deneyleri, hipotezlerinizi düzenlemek için en üst düzey klasör olarak, denemelerinizi her grup test çalıştırması için alt klasörler olarak ve bir test çalıştırmasının her örneği için deneme bileşenlerinizi dosyalarınız olarak resmedebilirsiniz.
  • Deneyleri izle – Deneyler, veri bilimcilerinin deneyleri izlemesine olanak tanır. Basit yapılandırmalar ve izleme SDK'ları aracılığıyla SageMaker işlerini bir denemeye otomatik olarak atama imkanı sunar.
  • Deneyleri karşılaştırın ve değerlendirin – Deneylerin entegrasyonu Amazon SageMaker Stüdyosu veri görselleştirmeleri üretmeyi ve farklı denemeleri karşılaştırmayı kolaylaştırır. Tercih ettiğiniz çizim kitaplıklarını kullanarak kendi görselleştirmenizi oluşturmak için Python SDK aracılığıyla deneme verilerine de erişebilirsiniz.

Experiments API'leri ve SDK'ları hakkında daha fazla bilgi edinmek için aşağıdaki belgeleri öneririz: Deney Oluştur ve Amazon SageMaker Deneyleri Python SDK'sı.

Daha derine dalmak istiyorsanız, aşağıdakilere bakmanızı öneririz. amazon-sagemaker-örnekler/sagemaker-deneyleri GitHub deposu daha fazla örnek için.

İşlem Hatları ve Deneyler Arasındaki Entegrasyon

Pipelines'ın parçası olan model oluşturma işlem hatları, makine öğrenimi için amaca yönelik olarak oluşturulmuştur ve diğer SageMaker özellikleriyle yerel entegrasyonlar içeren bir işlem hattı aracı kullanarak model oluşturma görevlerinizi düzenlemenize ve işlem hattınızı SageMaker dışında çalıştırılan adımlarla genişletme esnekliğine olanak tanır. . Her adım, ardışık düzenin gerçekleştireceği bir eylemi tanımlar. Adımlar arasındaki bağımlılıklar, Pipelines Python SDK kullanılarak oluşturulan doğrudan bir döngüsel olmayan grafik (DAG) ile tanımlanır. Aynı SDK aracılığıyla programlı olarak bir SageMaker işlem hattı oluşturabilirsiniz. Bir işlem hattı dağıtıldıktan sonra, isteğe bağlı olarak iş akışını Studio içinde görselleştirebilirsiniz.

İşlem hatları, her çalıştırma için otomatik olarak bir deneme ve deneme oluşturarak Denemeler ile otomatik olarak entegre olur. İşlem hatları, bu girdilerden biri veya her ikisi belirtilmedikçe, adımları çalıştırmadan önce işlem hattının her çalıştırması için otomatik olarak bir deneme ve deneme oluşturur. İşlem hattının SageMaker işini çalıştırırken, işlem hattı denemeyi denemeyle ilişkilendirir ve iş tarafından oluşturulan her deneme bileşenini denemeyle ilişkilendirir. Kendi denemenizi veya denemenizi programlı olarak belirtmek, deneylerinizi nasıl düzenleyeceğiniz konusunda ince ayar yapmanıza olanak tanır.

Bu örnekte sunduğumuz iş akışı bir dizi adımdan oluşur: girdi veri kümemizi tren, test ve doğrulama veri kümelerine bölmek için bir ön işleme adımı; kullanarak bir modeli eğitmek için hiperparametrelerimizi ayarlamak ve eğitim işlerini başlatmak için bir ayarlama adımı XGBoost yerleşik algoritması; ve son olarak, en iyi eğitilmiş model artefaktından bir SageMaker modeli oluşturmak için bir model adımı. Pipelines ayrıca yerel olarak desteklenen birkaç adım türleri Bu yazıda tartışılanların dışında. Ayrıca, işlem hattı iş akışınızı nasıl takip edebileceğinizi ve ölçümler ve karşılaştırma çizelgeleri oluşturabileceğinizi de gösteriyoruz. Ayrıca, oluşturulan yeni denemenin, ardışık düzen tanımlanmadan önce oluşturulmuş olabilecek mevcut bir denemeyle nasıl ilişkilendirileceğini gösteriyoruz.

SageMaker Boru Hatları kodu

Not defterini adresinden inceleyebilir ve indirebilirsiniz. GitHub deposu bu yazıyla ilişkili. Daha iyi anlamak için Pipelines'a özgü koda bakıyoruz.

Pipelines, çalışma zamanında parametreleri iletmenizi sağlar. Burada, önceden ayarlanmış varsayılanlarla çalışma zamanında işleme ve eğitim örneği türlerini ve sayılarını tanımlarız:

base_job_prefix = "pipeline-experiment-sample"
model_package_group_name = "pipeline-experiment-model-package"

processing_instance_count = ParameterInteger(
  name="ProcessingInstanceCount", default_value=1
)

training_instance_count = ParameterInteger(
  name="TrainingInstanceCount", default_value=1
)

processing_instance_type = ParameterString(
  name="ProcessingInstanceType", default_value="ml.m5.xlarge"
)
training_instance_type = ParameterString(
  name="TrainingInstanceType", default_value="ml.m5.xlarge"
)

Daha sonra, girdi veri setini indirip tren, test ve doğrulama bölümlerine bölen bir işleme komut dosyası oluşturduk. Kullanırız SKLearnProcessor Bu ön işleme adımını çalıştırmak için. Bunu yapmak için, işleme işini çalıştırmak için gereken örnek türü ve sayısı ile bir işlemci nesnesi tanımlarız.

Pipelines, aşağıdaki gibi uygulamaya özel değişkenler kullanarak programlı bir şekilde veri sürümü oluşturmamızı sağlar. ExecutionVariables.PIPELINE_EXECUTION_ID, bir işlem hattı çalışmasının benzersiz kimliğidir. Örneğin, çıktı veri kümelerini depolamak için benzersiz bir anahtar oluşturabiliriz. Amazon Basit Depolama Hizmeti (Amazon S3) onları belirli bir işlem hattı çalışmasına bağlar. Değişkenlerin tam listesi için bkz. Yürütme Değişkenleri.

framework_version = "0.23-1"

sklearn_processor = SKLearnProcessor(
    framework_version=framework_version,
    instance_type=processing_instance_type,
    instance_count=processing_instance_count,
    base_job_name="sklearn-ca-housing",
    role=role,
)

process_step = ProcessingStep(
    name="ca-housing-preprocessing",
    processor=sklearn_processor,
    outputs=[
        ProcessingOutput(
            output_name="train",
            source="/opt/ml/processing/train",
            destination=Join(
                on="/",
                values=[
                    "s3://{}".format(bucket),
                    prefix,
                    ExecutionVariables.PIPELINE_EXECUTION_ID,
                    "train",
                ],
            ),
        ),
        ProcessingOutput(
            output_name="validation",
            source="/opt/ml/processing/validation",
            destination=Join(
                on="/",
                values=[
                    "s3://{}".format(bucket),
                    prefix,
                    ExecutionVariables.PIPELINE_EXECUTION_ID,
                    "validation",
                ],
            )
        ),
        ProcessingOutput(
            output_name="test",
            source="/opt/ml/processing/test",
            destination=Join(
                on="/",
                values=[
                    "s3://{}".format(bucket),
                    prefix,
                    ExecutionVariables.PIPELINE_EXECUTION_ID,
                    "test",
                ],
            )
        ),
    ],
    code="california-housing-preprocessing.py",
)

Ardından, bir XGBoost modelini eğitmek için bir tahmin nesnesi oluşturmaya geçiyoruz. XGBoost ile yaygın olarak kullanılan bazı statik hiperparametreler belirledik:

model_path = f"s3://{default_bucket}/{base_job_prefix}/ca-housing-experiment-pipeline"

image_uri = sagemaker.image_uris.retrieve(
    framework="xgboost",
    region=region,
    version="1.2-2",
    py_version="py3",
    instance_type=training_instance_type,
)

xgb_train = Estimator(
    image_uri=image_uri,
    instance_type=training_instance_type,
    instance_count=training_instance_count,
    output_path=model_path,
    base_job_name=f"{base_job_prefix}/ca-housing-train",
    sagemaker_session=sagemaker_session,
    role=role,
)

xgb_train.set_hyperparameters(
    eval_metric="rmse",
    objective="reg:squarederror",  # Define the object metric for the training job
    num_round=50,
    max_depth=5,
    eta=0.2,
    gamma=4,
    min_child_weight=6,
    subsample=0.7
)

Oluşturduğumuz modellerin hiperparametre ayarını bir ContinuousParameter aralığı lambda. Bir metriği objektif metrik olarak seçmek, ayarlayıcıya (hiperparametre ayarlama işlerini çalıştıran örneğe) eğitim işini bu özel metriğe göre değerlendireceğinizi söyler. Ayarlayıcı, bu objektif ölçüm için en iyi değeri temel alarak en iyi kombinasyonu döndürür, yani en iyi ortalama karekök hatasını (RMSE) en aza indiren en iyi kombinasyon.

objective_metric_name = "validation:rmse"

hyperparameter_ranges = {
    "lambda": ContinuousParameter(0.01, 10, scaling_type="Logarithmic")
}

tuner = HyperparameterTuner(estimator,
                            objective_metric_name,
                            hyperparameter_ranges,
                            objective_type=objective_type,
                            strategy="Bayesian",
                            max_jobs=10,
                            max_parallel_jobs=3)

tune_step = TuningStep(
    name="HPTuning",
    tuner=tuner_log,
    inputs={
        "train": TrainingInput(
            s3_data=process_step.properties.ProcessingOutputConfig.Outputs[
                "train"
            ].S3Output.S3Uri,
            content_type="text/csv",
        ),
        "validation": TrainingInput(
            s3_data=process_step.properties.ProcessingOutputConfig.Outputs[
                "validation"
            ].S3Output.S3Uri,
            content_type="text/csv",
        ),
    } 
)

Ayar adımı, test edilen parametre aralıkları arasında en iyi modeli belirlemek amacıyla birden fazla deneme gerçekleştirir. Yöntem ile get_top_model_s3_uri, model yapıtı S50 URI'sinin en iyi performans gösteren 3 sürümünü sıralarız ve yalnızca en iyi performans gösteren sürümü çıkarırız (belirttiğimiz k=0 en iyisi için) bir SageMaker modeli oluşturmak için.

model_bucket_key = f"{default_bucket}/{base_job_prefix}/ca-housing-experiment-pipeline"
model_candidate = Model(
    image_uri=image_uri,
    model_data=tune_step.get_top_model_s3_uri(top_k=0, s3_bucket=model_bucket_key),
    sagemaker_session=sagemaker_session,
    role=role,
    predictor_cls=XGBoostPredictor,
)

create_model_step = CreateModelStep(
    name="CreateTopModel",
    model=model_candidate,
    inputs=sagemaker.inputs.CreateModelInput(instance_type="ml.m4.large"),
)

İşlem hattı çalıştığında, her bir hiperparametre ayarlama işi ve işlem hattı adımları tarafından oluşturulan her SageMaker işi için deneme bileşenleri oluşturur.

İşlem hatlarının Experiments ile entegrasyonunu, bir PipelineExperimentConfig nesne ve onu boru hattı nesnesine iletin. İki parametre, oluşturulacak denemenin adını ve işlem hattının tüm çalışmasına atıfta bulunacak denemeyi tanımlar.

Bir işlem hattı çalıştırmasını mevcut bir denemeyle ilişkilendirmek istiyorsanız, adını iletebilirsiniz; İşlem Hatları yeni denemeyi onunla ilişkilendirir. Ayarlayarak bir işlem hattı çalıştırması için deneme ve deneme oluşturulmasını engelleyebilirsiniz. pipeline_experiment_config için None.

#Pipeline experiment config
ca_housing_experiment_config = PipelineExperimentConfig(
    experiment_name,
    Join(
        on="-",
        values=[
            "pipeline-execution",
            ExecutionVariables.PIPELINE_EXECUTION_ID
        ],
    )
)

Örnek tiplerini ve sayımlarını parametre olarak aktarıyoruz ve önceki adımları aşağıdaki gibi sırayla zincirliyoruz. İşlem hattı iş akışı, bir adımın çıktılarının başka bir adımın girdileri olmasıyla örtük olarak tanımlanır.

pipeline_name = f"CAHousingExperimentsPipeline"

pipeline = Pipeline(
    name=pipeline_name,
    pipeline_experiment_config=ca_housing_experiment_config,
    parameters=[
        processing_instance_count,
        processing_instance_type,
        training_instance_count,
        training_instance_type
    ],
    steps=[process_step,tune_step,create_model_step],
)

Tam teşekküllü boru hattı şimdi oluşturuldu ve kullanıma hazır. İşlem hattına bir yürütme rolü ekliyoruz ve başlatıyoruz. Buradan SageMaker Studio Pipelines konsoluna gidebilir ve her adımı görsel olarak takip edebiliriz. Bir işlem hattında hata ayıklamak için bağlantılı günlüklere konsoldan da erişebilirsiniz.

pipeline.upsert(role_arn=sagemaker.get_execution_role())
execution = pipeline.start()

Yukarıdaki ekran görüntüsü, başarıyla çalıştırılan bir işlem hattını yeşil renkte gösterir. Aşağıdaki kodla bir ardışık düzen çalışmasından bir denemenin metriklerini elde ederiz:

# SM Pipeline injects the Execution ID into trial component names
execution_id = execution.describe()['PipelineExecutionArn'].split('/')[-1]
source_arn_filter = Filter(
    name="TrialComponentName", operator=Operator.CONTAINS, value=execution_id
)

source_type_filter = Filter(
    name="Source.SourceType", operator=Operator.EQUALS, value="SageMakerTrainingJob"
)

search_expression = SearchExpression(
    filters=[source_arn_filter, source_type_filter]
)

trial_component_analytics = ExperimentAnalytics(
    sagemaker_session=sagemaker_session,
    experiment_name=experiment_name,
    search_expression=search_expression.to_boto()
)

analytic_table = trial_component_analytics.dataframe()
analytic_table.head()

Her deneme bileşeni için metrikleri karşılaştırın

Hiperparametre ayarının sonuçlarını Studio'da veya diğer Python çizim kitaplıkları aracılığıyla çizebilirsiniz. Bunu yapmanın her iki yolunu da gösteriyoruz.

Studio'daki eğitim ve değerlendirme metriklerini keşfedin

Studio, etkileşimli grafikler oluşturabileceğiniz etkileşimli bir kullanıcı arabirimi sağlar. Adımlar aşağıdaki gibidir:

  1. Klinik Deneyler ve Denemeler itibaren SageMaker kaynakları sol kenar çubuğundaki simge.
  2. Açmak için denemenizi seçin.
  3. İlgilenilen denemeyi seçin (sağ tıklayın).
  4. Klinik Deneme bileşeni listesinde aç.
  5. Basın vardiya eğitim işlerini temsil eden deneme bileşenlerini seçmek için.
  6. Klinik Grafik ekle.
  7. Klinik Yeni grafik ve analiz etmek istediğiniz toplanan ölçümleri çizmek için özelleştirin. Kullanım durumumuz için aşağıdakileri seçin:
    1. İçin Veri tipi¸ seç Özet İstatistik.
    2. İçin grafik türü¸ seç Dağılım grafiği.
    3. İçin X ekseni, seçmek lambda.
    4. İçin Y ekseni, seçmek validation:rmse_last.

Yeni grafik, pencerenin altında '8' olarak etiketlenir.

tuşuna basarak daha fazla veya daha az eğitim işi ekleyebilirsiniz. vardiya ve daha etkileşimli bir deneyim için göz simgesini seçin.

Amazon SageMaker Experiments ve Amazon SageMaker Pipelines PlatoBlockchain Data Intelligence ile makine öğrenimi yolculuğunuzu düzenleyin. Dikey Arama. Ai.

SageMaker Deneyleriyle Analiz

İşlem hattı çalıştırması tamamlandığında, eğitim sırasında toplanan ölçümler açısından modelin farklı varyasyonlarının nasıl karşılaştırıldığını hızlı bir şekilde görselleştirebiliriz. Daha önce, tüm deneme metriklerini bir Pandalar DataFrame kullanma ExperimentAnalytics. Matplotlib kütüphanesini kullanarak Studio'da elde edilen grafiği çoğaltabiliriz.

analytic_table.plot.scatter("lambda", "validation:rmse - Last", grid=True)

Sonuç

SageMaker Pipelines ve SageMaker Experiments arasındaki yerel entegrasyon, veri bilimcilerin model geliştirme etkinlikleri sırasında deneyleri otomatik olarak düzenlemesine, izlemesine ve görselleştirmesine olanak tanır. Tüm model geliştirme çalışmalarınızı düzenlemek için aşağıdakiler gibi deneyler oluşturabilirsiniz:

  • Müşteri kaybını tahmin etmek için bir deneme oluşturmak gibi ele aldığınız bir iş kullanım örneği
  • Örneğin, pazarlama analitiğiyle ilgili olarak veri bilimi ekibine ait bir deney
  • Belirli bir veri bilimi ve makine öğrenimi projesi

Bu gönderide, tam otomatik bir uçtan uca iş akışı düzenlemek için onu Deneylerle birlikte nasıl kullanabileceğinizi göstermek için Pipelines'a daldık.

Bir sonraki adım olarak, bir sonraki ML projeniz için bu üç SageMaker özelliğini (Studio, Experiments ve Pipelines) kullanabilirsiniz.

Önerilen okumalar


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.

Amazon SageMaker Experiments ve Amazon SageMaker Pipelines PlatoBlockchain Data Intelligence ile makine öğrenimi yolculuğunuzu düzenleyin. Dikey Arama. Ai.mario burgoin AWS için Kıdemli İş Ortağı Çözümleri Mimarı, AI/ML uzmanı ve MLOps için küresel teknoloji lideridir. Bulutta yapay zeka çözümleri dağıtan kurumsal müşteriler ve iş ortaklarıyla birlikte çalışır. Büyük veriler için ilk ticari makine öğrenimi sistemlerinden birini oluşturmaya başlayarak, girişimlerde ve kuruluşlarda makine öğrenimi ve yapay zeka konusunda 30 yıldan fazla deneyime sahiptir. Mario boş zamanını üç Belçikalı Tervuren'iyle oynayarak, ailesi için akşam yemeği pişirerek ve matematik ve kozmoloji öğrenerek geçiriyor.

Amazon SageMaker Experiments ve Amazon SageMaker Pipelines PlatoBlockchain Data Intelligence ile makine öğrenimi yolculuğunuzu düzenleyin. Dikey Arama. Ai.Ganapathi Krishnamoorthi AWS'de Kıdemli ML Çözümleri Mimarıdır. Ganapathi, başlangıç ​​ve kurumsal müşterilere, bulut uygulamalarını uygun ölçekte tasarlamalarına ve dağıtmalarına yardımcı olan kuralcı rehberlik sağlar. Makine öğrenimi konusunda uzmanlaşmıştır ve müşterilerin iş sonuçları için AI/ML'den yararlanmasına yardımcı olmaya odaklanmıştır. İşte olmadığı zamanlarda, dışarıda keşfetmekten ve müzik dinlemekten hoşlanır.

Amazon SageMaker Experiments ve Amazon SageMaker Pipelines PlatoBlockchain Data Intelligence ile makine öğrenimi yolculuğunuzu düzenleyin. Dikey Arama. Ai.Valerie Sounthakith AWS için bir Çözüm Mimarıdır, Oyun Endüstrisinde ve Yapay Zeka çözümlerini dağıtan İş Ortaklarıyla birlikte çalışmaktadır. Kariyerini Computer Vision etrafında inşa etmeyi hedefliyor. Valerie boş zamanlarını seyahat etmek, yeni yemek mekanları keşfetmek ve evinin içini değiştirmek için harcıyor.

Zaman Damgası:

Den fazla AWS Makine Öğrenimi