Amazon SageMaker not defteri işlerini planlayın ve API'leri kullanarak çok adımlı not defteri iş akışlarını yönetin | Amazon Web Hizmetleri

Amazon SageMaker not defteri işlerini planlayın ve API'leri kullanarak çok adımlı not defteri iş akışlarını yönetin | Amazon Web Hizmetleri

Kaynak Düğüm: 2985648

Amazon SageMaker Stüdyosu Veri bilimcilerin makine öğrenimi (ML) modellerini etkileşimli olarak oluşturması, eğitmesi ve dağıtması için tam olarak yönetilen bir çözüm sağlar. Amazon SageMaker not defteri işleri Veri bilimcilerinin, SageMaker Studio'da birkaç tıklamayla not defterlerini isteğe bağlı olarak veya bir programa göre çalıştırmalarına olanak tanır. Bu lansmanla birlikte, tarafından sağlanan API'leri kullanarak not defterlerini programlı bir şekilde iş olarak çalıştırabilirsiniz. Amazon SageMaker Ardışık DüzenleriML iş akışı düzenleme özelliği Amazon Adaçayı Yapıcı. Ayrıca, bu API'leri kullanarak birden çok bağımlı not defteriyle çok adımlı bir makine öğrenimi iş akışı oluşturabilirsiniz.

SageMaker Pipelines, doğrudan SageMaker entegrasyonundan yararlanan ML işlem hatları oluşturmaya yönelik yerel bir iş akışı düzenleme aracıdır. Her SageMaker işlem hattı şunlardan oluşur: adımlarkullanarak işleme, eğitim veya veri işleme gibi bireysel görevlere karşılık gelen Amazon EMR'si. SageMaker not defteri işleri artık SageMaker işlem hatlarında yerleşik bir adım türü olarak mevcuttur. Not defterlerini yalnızca birkaç satır kodla iş olarak kolayca çalıştırmak için bu not defteri işi adımını kullanabilirsiniz. Amazon SageMaker Python SDK'sı. Ek olarak, Yönlendirilmiş Döngüsel Olmayan Grafikler (DAG'ler) biçiminde bir iş akışı oluşturmak için birden fazla bağımlı not defterini bir araya getirebilirsiniz. Daha sonra bu not defteri işlerini veya DAG'leri çalıştırabilir ve bunları SageMaker Studio'yu kullanarak yönetebilir ve görselleştirebilirsiniz.

Veri bilimcileri şu anda Jupyter not defterlerini etkileşimli olarak geliştirmek için SageMaker Studio'yu kullanıyor ve ardından bu not defterlerini planlanmış işler olarak çalıştırmak için SageMaker not defteri işlerini kullanıyor. Bu işler, veri çalışanlarının kodu Python modülleri olarak yeniden düzenlemesine gerek kalmadan anında veya yinelenen bir zaman çizelgesinde çalıştırılabilir. Bunu yapmak için bazı yaygın kullanım durumları şunlardır:

  • Arka planda uzun süre çalışan dizüstü bilgisayarları çalıştırma
  • Rapor oluşturmak için düzenli olarak çalışan model çıkarımı
  • Küçük örnek veri kümelerinin hazırlanmasından petabayt ölçekli büyük verilerle çalışmaya geçiş
  • Bazı ritimlerde modelleri yeniden eğitme ve dağıtma
  • Model kalitesi veya veri kaymasının izlenmesi için işleri planlama
  • Daha iyi modeller için parametre uzayını keşfetme

Bu işlevsellik, veri çalışanlarının bağımsız not defterlerini otomatikleştirmesini kolaylaştırsa da, ML iş akışları genellikle her biri karmaşık bağımlılıklara sahip belirli bir görevi yerine getiren birkaç not defterinden oluşur. Örneğin, model veri kaymasını izleyen bir dizüstü bilgisayarın, yeni verilerin çıkarılmasına, dönüştürülmesine ve yüklenmesine (ETL) ve işlenmesine olanak tanıyan bir ön adımı ve önemli bir sapmanın fark edilmesi durumunda model yenileme ve eğitimini içeren bir son adıma sahip olması gerekir. . Ayrıca veri bilimcileri, modeli yeni verilere dayalı olarak güncellemek için tüm bu iş akışını yinelenen bir programa göre tetiklemek isteyebilir. Not defterlerinizi kolayca otomatikleştirmenize ve bu tür karmaşık iş akışları oluşturmanıza olanak sağlamak için SageMaker not defteri işleri artık SageMaker Pipelines'ta bir adım olarak mevcuttur. Bu yazıda, aşağıdaki kullanım örneklerini birkaç satır kodla nasıl çözebileceğinizi gösteriyoruz:

  • Bağımsız bir not defterini programlı olarak hemen veya yinelenen bir zamanlamaya göre çalıştırın
  • Sürekli entegrasyon ve sürekli teslimat (CI/CD) amaçları için SageMaker Studio UI aracılığıyla yönetilebilen DAG'ler olarak dizüstü bilgisayarların çok adımlı iş akışlarını oluşturun

Çözüme genel bakış

Aşağıdaki diyagram çözüm mimarimizi göstermektedir. Tek bir not defteri işini veya iş akışını çalıştırmak için SageMaker Python SDK'yı kullanabilirsiniz. Bu özellik, dizüstü bilgisayarı çalıştırmak için bir SageMaker eğitim işi oluşturur.

Aşağıdaki bölümlerde örnek bir makine öğrenimi kullanım durumunu inceleyeceğiz ve not defteri işlerinin iş akışını oluşturma, farklı not defteri adımları arasında parametreleri aktarma, iş akışınızı planlama ve SageMaker Studio aracılığıyla izleme adımlarını göstereceğiz.

Bu örnekteki ML problemimiz için, bir tür metin sınıflandırma görevi olan bir duygu analizi modeli oluşturuyoruz. Duygu analizinin en yaygın uygulamaları arasında sosyal medya izleme, müşteri destek yönetimi ve müşteri geri bildirimlerinin analiz edilmesi yer alır. Bu örnekte kullanılan veri kümesi, film incelemeleriyle birlikte incelemenin olumlu veya olumsuz duyarlılığını belirten bir tamsayıdan (2 veya 0) oluşan Stanford Duyarlılık Ağacı Bankası (SST1) veri kümesidir.

Aşağıdaki örnek bir data.csv SST2 veri kümesine karşılık gelen dosya ve ilk iki sütunundaki değerleri gösterir. Dosyanın herhangi bir başlığının olmaması gerektiğini unutmayın.

Sütun 1 Sütun 2
0 ebeveyn birimlerinden yeni salgıları gizle
0 zeka içermez, sadece emek verilmiş şakalar içerir
1 karakterlerini seven ve insan doğası hakkında oldukça güzel şeyler ileten
0 boyunca aynı kalmaktan tamamen memnun kalır
0 film yapımcılarının araştırabileceği en kötü ineklerin intikamı klişeleri üzerine
0 bu kadar yüzeysel bir muameleyi hak etmek çok trajik
1 vatansever oyunlar gibi gişe rekorları kıran hollywood filmlerinin yönetmeninin hala duygusal bir taşkınlık içeren küçük, kişisel bir film çekebileceğini gösteriyor.

Bu ML örneğinde birkaç görevi gerçekleştirmemiz gerekiyor:

  1. Bu veri kümesini modelimizin anlayabileceği bir formatta hazırlamak için özellik mühendisliği gerçekleştirin.
  2. Özellik sonrası mühendislik, Transformers'ı kullanan bir eğitim adımı çalıştırın.
  3. Gelen yeni incelemelere ilişkin yaklaşımın tahmin edilmesine yardımcı olmak için ince ayarlı modelle toplu çıkarım ayarlayın.
  4. Yeni verilerimizi, model ağırlıklarını yeniden eğitmemizi gerektirebilecek kalitedeki herhangi bir sapma açısından düzenli olarak izleyebilmemiz için bir veri izleme adımı oluşturun.

SageMaker işlem hatlarında bir adım olarak bir dizüstü bilgisayar işinin başlatılmasıyla, üç farklı adımdan oluşan bu iş akışını düzenleyebiliriz. İş akışının her adımı farklı bir not defterinde geliştirilir ve bunlar daha sonra bağımsız not defteri işleri adımlarına dönüştürülür ve bir boru hattı olarak bağlanır:

  • Ön İşleme – Genel SST2 veri kümesini şuradan indirin: Amazon Basit Depolama Hizmeti (Amazon S3) ve 2. Adımda dizüstü bilgisayarın çalıştırılması için bir CSV dosyası oluşturun. SST2 veri kümesi, iki etiket (0 ve 1) ve kategorilere ayrılacak bir metin sütunu içeren bir metin sınıflandırma veri kümesidir.
  • Eğitim – Şekillendirilmiş CSV dosyasını alın ve Transformers kitaplıklarını kullanarak metin sınıflandırması için BERT ile ince ayar yapın. Bu adımın bir parçası olarak, ince ayar ve toplu çıkarım adımına bağımlılık olan bir test verileri hazırlama not defteri kullanıyoruz. İnce ayar tamamlandığında, bu not defteri çalıştırma büyüsü kullanılarak çalıştırılır ve ince ayarlı modelle örnek çıkarım için bir test veri kümesi hazırlar.
  • Dönüştürün ve izleyin – Temel veri kümesi önerisine sahip olmak için toplu çıkarım gerçekleştirin ve model izlemeyle veri kalitesini ayarlayın.

Not defterlerini çalıştırın

Bu çözümün örnek kodunu şu adreste bulabilirsiniz: GitHub.

Bir SageMaker not defteri işi adımı oluşturmak, diğer SageMaker Pipeline adımlarını oluşturmaya benzer. Bu not defteri örneğinde iş akışını düzenlemek için SageMaker Python SDK'sını kullanıyoruz. SageMaker Pipelines'ta bir not defteri adımı oluşturmak için aşağıdaki parametreleri tanımlayabilirsiniz:

  • Giriş not defteri – Bu not defteri adımının düzenleneceği not defterinin adı. Burada yerel yoldan giriş not defterine geçebilirsiniz. İsteğe bağlı olarak, bu not defterinin çalıştırdığı başka not defterleri varsa bunları da iletebilirsiniz. AdditionalDependencies dizüstü bilgisayar işi adımına ilişkin parametre.
  • Resim URI'sı – Dizüstü bilgisayar iş adımının arkasındaki Docker görüntüsü. Bu, SageMaker'ın halihazırda sağladığı önceden tanımlanmış görüntüler veya tanımlayıp gönderdiğiniz özel bir görüntü olabilir. Amazon Elastik Konteyner Kayıt Defteri (Amazon ECR). Desteklenen görseller için bu yazının sonundaki dikkat edilmesi gerekenler bölümüne bakın.
  • çekirdek adı – SageMaker Studio'da kullandığınız çekirdeğin adı. Bu çekirdek spesifikasyonu sağladığınız görüntüde kayıtlıdır.
  • Örnek türü (isteğe bağlı) - Amazon Elastik Bilgi İşlem Bulutu Tanımladığınız ve çalıştıracağınız not defteri işinin arkasındaki (Amazon EC2) bulut sunucusu türü.
  • Parametreler (isteğe bağlı) – Dizüstü bilgisayarınız için erişilebilir olacak, iletebileceğiniz parametreler. Bunlar anahtar/değer çiftleri halinde tanımlanabilir. Ayrıca bu parametreler, çeşitli not defteri işi çalıştırmaları veya ardışık düzen çalıştırmaları arasında değiştirilebilir.

Örneğimizde toplam beş not defteri var:

  • nb-iş-boru hattı.ipynb – Bu, boru hattımızı ve iş akışımızı tanımladığımız ana defterimizdir.
  • önişlem.ipynb – Bu not defteri, iş akışımızdaki ilk adımdır ve genel AWS veri kümesini çekip bundan bir CSV dosyası oluşturacak kodu içerir.
  • eğitim.ipynb – Bu not defteri, iş akışımızdaki ikinci adımdır ve CSV'yi önceki adımdan alıp yerel eğitim ve ince ayar yapmak için gereken kodu içerir. Bu adım aynı zamanda aşağıdakilere de bağımlıdır: prepare-test-set.ipynb ince ayarlı modelle örnek çıkarım yapmak için bir test veri kümesini aşağı çekmek için dizüstü bilgisayar.
  • hazırlık-test-set.ipynb – Bu not defteri, eğitim not defterimizin ikinci işlem hattı adımında kullanacağı ve ince ayarlı modelle örnek çıkarım için kullanacağı bir test veri kümesi oluşturur.
  • transform-monitor.ipynb – Bu dizüstü bilgisayar iş akışımızdaki üçüncü adımdır ve temel BERT modelini alır ve bir SageMaker toplu dönüştürme işini çalıştırırken aynı zamanda model izleme ile veri kalitesini ayarlar.

Daha sonra ana not defterini inceliyoruz nb-job-pipeline.ipynb, tüm alt not defterlerini bir ardışık düzende birleştiren ve uçtan uca iş akışını çalıştıran. Aşağıdaki örneğin dizüstü bilgisayarı yalnızca bir kez çalıştırmasına rağmen, işlem hattını dizüstü bilgisayarı tekrar tekrar çalıştıracak şekilde de zamanlayabileceğinizi unutmayın. Bakınız SageMaker belgeleri detaylı talimatlar için.

İlk dizüstü bilgisayar işi adımımız için, varsayılan S3 klasörüne sahip bir parametreyi geçiyoruz. Bu kovayı, diğer boru hattı adımlarımız için mevcut olmasını istediğimiz tüm eserleri boşaltmak için kullanabiliriz. İlk not defteri için (preprocess.ipynb), AWS genel SST2 tren veri kümesini aşağı çekiyoruz ve bundan bir eğitim CSV dosyası oluşturuyoruz ve bu dosyayı bu S3 klasörüne aktarıyoruz. Aşağıdaki koda bakın:

# Parameters
print(default_s3_bucket)

!aws s3 cp s3://sagemaker-sample-files/datasets/text/SST2/sst2.train sst2.train

# will read just the first 500 lines for quicker execution
with open('sst2.train', 'r') as f:
    lines = f.readlines()[:500] 

data = []
for line in lines:
    label, text = line.strip().split(' ', 1)
    data.append((int(label), text))

df = pd.DataFrame(data, columns=['label', 'text'])
df.to_csv("train.csv", index=False) #create csv file with smaller dataset
!aws s3 cp "train.csv" {default_s3_bucket}

Daha sonra bu not defterini bir dosyaya dönüştürebiliriz. NotebookJobStep ana not defterimizde aşağıdaki kodla:

# provide S3 Bucket to dump artifacts in
nb_job_params = {"default_s3_bucket": notebook_artifacts}

preprocess_nb_step = NotebookJobStep(
name=preprocess_step_name,
description=preprocess_description,
notebook_job_name=preprocess_job_name,
image_uri=image_uri,
kernel_name=kernel_name,
display_name=display_name,
role=role,
input_notebook=preprocess_notebook,
instance_type="ml.m5.4xlarge",
parameters=nb_job_params,
)

Artık örnek bir CSV dosyamız olduğuna göre eğitim defterimizde modelimizi eğitmeye başlayabiliriz. Eğitim not defterimiz S3 klasörüyle aynı parametreyi alır ve eğitim veri kümesini o konumdan aşağı çeker. Daha sonra Transformers trainer nesnesini aşağıdaki kod parçacığıyla kullanarak ince ayar yapıyoruz:

from transformers import TrainingArguments, Trainer
training_args = TrainingArguments(output_dir="test_trainer", evaluation_strategy="epoch")

trainer = Trainer(
    model=model,
    args=training_args,
    train_dataset=small_train_dataset,
    eval_dataset=small_eval_dataset,
    compute_metrics=compute_metrics,
)

trainer.train()

İnce ayardan sonra modelin nasıl performans gösterdiğini görmek için bazı toplu çıkarımlar yapmak istiyoruz. Bu, ayrı bir not defteri kullanılarak yapılır (prepare-test-set.ipynb) eğitilmiş modelimizi kullanarak çıkarım yapmak için bir test veri kümesi oluşturan aynı yerel yolda. Eğitim defterimizdeki ek not defterini aşağıdaki sihirli hücreyle çalıştırabiliriz:

%run 'prepare-test-set.ipynb'

Bu ekstra not defteri bağımlılığını şu şekilde tanımlıyoruz: AdditionalDependencies ikinci not defteri iş adımımızdaki parametre:

train_nb_step = NotebookJobStep(
name=training_step_name,
description=training_description,
notebook_job_name=training_job_name,
input_notebook=training_notebook,
additional_dependencies=[test_data_prep_notebook],
image_uri=image_uri,
kernel_name=kernel_name,
display_name=display_name,
instance_type="ml.m5.12xlarge",
role=role,
parameters=nb_job_params,
)

Ayrıca, eğitim not defteri işi adımının (Adım 2), Önişleme not defteri işi adımına (Adım 1) bağlı olduğunu da belirtmeliyiz. add_depends_on API çağrısı şu şekilde:

train_nb_step.add_depends_on([preprocess_nb_step])

Son adımımız, BERT modelinin bir SageMaker Toplu Dönüşüm çalıştırmasını ve aynı zamanda SageMaker Model Monitor aracılığıyla Veri Yakalama ve Kaliteyi kurmasını sağlayacak. Bunun yerleşik kullanımı kullanmaktan farklı olduğunu unutmayın. Dönüştürmek or Ele geçirmek Pipelines aracılığıyla adımlar. Bu adıma ilişkin not defterimiz aynı API'leri yürütecek ancak Not Defteri İş Adımı olarak izlenecektir. Bu adım, daha önce tanımladığımız Eğitim İşi Adımına bağlıdır, dolayısıyla bunu da Depend_on bayrağıyla yakalarız.

batch_monitor_step = NotebookJobStep(
name=batch_monitor_step_name,
description=batch_monitor_description,
notebook_job_name=batch_monitor_job_name,
input_notebook=batch_monitor_notebook,
image_uri=image_uri,
kernel_name=kernel_name,
display_name=display_name,
instance_type="ml.m5.12xlarge",
role=role,
parameters=nb_job_params,
)
batch_monitor_step.add_depends_on([train_nb_step])

İş akışımızın çeşitli adımları tanımlandıktan sonra uçtan uca işlem hattını oluşturup çalıştırabiliriz:

# create pipeline
pipeline = Pipeline(
name=pipeline_name,
steps=[preprocess_nb_step, train_nb_step, batch_monitor_step],
)

# execute pipeline
pipeline.create(session.get_execution_role())
execution = pipeline.start(parameters={})
execution.wait(delay=30, max_attempts=60)
execution_steps = execution.list_steps()
print(execution_steps)

Boru hattı çalıştırmalarını izleyin

Aşağıdaki ekran görüntüsünde görüldüğü gibi, SageMaker Pipelines DAG aracılığıyla dizüstü bilgisayar adımı çalıştırmalarını takip edebilir ve izleyebilirsiniz.

Ayrıca isteğe bağlı olarak dizüstü bilgisayar işi kontrol panelinde bireysel dizüstü bilgisayar çalışmalarını izleyebilir ve SageMaker Studio Kullanıcı Arayüzü aracılığıyla oluşturulan çıktı dosyaları arasında geçiş yapabilirsiniz. Bu işlevselliği SageMaker Studio dışında kullanırken, etiketleri kullanarak not defteri iş panosunda çalıştırma durumunu takip edebilecek kullanıcıları tanımlayabilirsiniz. Eklenecek etiketler hakkında daha fazla ayrıntı için bkz. Studio kullanıcı arayüzü kontrol panelinde not defteri işlerinizi görüntüleyin ve çıktıları indirin.

Bu örnekte, ortaya çıkan not defteri işlerinin çıktısını şu adlı bir dizine veriyoruz: outputs boru hattı çalıştırma kodunuzla yerel yolunuzda. Aşağıdaki ekran görüntüsünde gösterildiği gibi burada giriş not defterinizin çıktısını ve ayrıca o adım için tanımladığınız parametreleri görebilirsiniz.

Temizlemek

Örneğimizi takip ettiyseniz oluşturulan işlem hattını, not defteri işlerini ve örnek not defterleri tarafından indirilen s3 verilerini sildiğinizden emin olun.

Hususlar

Bu özelliğe ilişkin bazı önemli hususlar şunlardır:

  • SDK kısıtlamaları – Dizüstü bilgisayar işi adımı yalnızca SageMaker Python SDK aracılığıyla oluşturulabilir.
  • Görüntü kısıtlamaları –Dizüstü bilgisayar işi adımı aşağıdaki görüntüleri destekler:

Sonuç

Bu lansmanla birlikte, veri çalışanları artık dizüstü bilgisayarlarını programlı olarak birkaç satır kodla çalıştırabilecek. SageMaker Python SDK'sı. Ek olarak, dizüstü bilgisayarlarınızı kullanarak karmaşık, çok adımlı iş akışları oluşturabilir, böylece dizüstü bilgisayardan CI/CD hattına geçiş için gereken süreyi önemli ölçüde azaltabilirsiniz. İşlem hattını oluşturduktan sonra, işlem hatlarınız için DAG'leri görüntülemek ve çalıştırmak ve çalıştırmaları yönetmek ve karşılaştırmak için SageMaker Studio'yu kullanabilirsiniz. İster uçtan uca makine öğrenimi iş akışlarını ister bir kısmını planlıyor olun, denemenizi öneririz dizüstü bilgisayar tabanlı iş akışları.


yazarlar hakkında

Anchit Gupta Amazon SageMaker Studio'nun Kıdemli Ürün Yöneticisidir. SageMaker Studio IDE içinden etkileşimli veri bilimi ve veri mühendisliği iş akışlarını etkinleştirmeye odaklanıyor. Boş zamanlarında yemek yapmaktan, masa/kart oyunları oynamaktan ve kitap okumaktan hoşlanıyor.

Ram Vegiraju SageMaker Servis ekibine sahip bir ML Mimarıdır. Müşterilerin AI/ML çözümlerini Amazon SageMaker'da oluşturmasına ve optimize etmesine yardımcı olmaya odaklanıyor. Boş zamanlarında seyahat etmeyi ve yazmayı sever.

edward güneş Amazon Web Services'ta SageMaker Studio için çalışan bir Kıdemli SDE'dir. SageMaker Studio'yu veri mühendisliği ve makine öğrenimi ekosistemindeki popüler teknolojilerle entegre etmek için etkileşimli makine öğrenimi çözümü oluşturmaya ve müşteri deneyimini basitleştirmeye odaklanmıştır. Boş zamanlarında, Edward kamp yapmanın, yürüyüş yapmanın ve balık tutmanın büyük bir hayranıdır ve ailesiyle vakit geçirmekten keyif alır.

Zaman Damgası:

Den fazla AWS Makine Öğrenimi