AWS Türkçe Blog
Amazon SageMaker AutoPilot – Tam Kontrol ve Görünürlük ile Yüksek Kaliteli Makine Öğrenimi Modellerini Otomatik Olarak Oluşturun
Orijinal makale: Link (Julien Simon, EMEA için Artificial Intelligence & Machine Learning Evangelist)
Amazon SageMaker Autopilot’u kullanarak tam kontrol ve görünürlük sağlarken en iyi sınıflandırma ve regresyon makine öğrenimi modellerini otomatik olarak oluşturabilirsiniz.
1959’da Arthur Samuel, makine öğrenimini bilgisayarların açıkça programlanmadan öğrenme yeteneği olarak tanımladı. Pratikte bu, mevcut bir veri kümesinden desenleri ayıklayabilecek bir algoritma bulmak ve bu kalıpları yeni veriler için genelleştirecek bir tahmine dayalı model oluşturmak için kullanmak anlamına gelir. O zamandan beri bilim adamlarına ve mühendislere seçim yapabileceğiniz birçok seçenek sunan ve inanılmaz uygulamalar oluşturmalarına yardımcı olan birçok makine öğrenimi algoritması icat edildi.
Bununla birlikte, algoritmaların bu bolluğu da bir zorluk yaratır: Hangisini seçmelisiniz? Belirli bir iş problemi için hangisinin en iyi performans göstereceğini nasıl güvenilir bir şekilde belirleyebilirsiniz? Buna ek olarak, makine öğrenimi algoritmaları genellikle, modellerinizden her bir ekstra doğruluğu sıkıştırmak istiyorsanız “tam doğru” olarak ayarlanması gereken uzun bir eğitim parametreleri listesine (hiperparametreler de denir) sahiptir. Dahası, algoritmalar, verilerin en iyi öğrenme için belli yöntemlerle hazırlanmasını (buna özellik mühendisliği denir) ve dönüştürülmesini gerektirir ve en iyi sunucu türünü seçmeniz gerekir.
Siz de bunun bir sürü yanılma işi olduğunu düşünüyorsanız kesinlikle haklısınız. Makine öğrenimi kesinlikle bilim ve sanatın bir karışımıdır; bu da uzman olmayanların hızlı bir şekilde iyi sonuçlar almasını zorlaştırır.
Bu sorunu sizin için çözmek için yönetilen bir hizmet olsa nasıl olurdu? Bir API (Uygulama Programlama Arayüzü) çağırmak ve sonucu almak kadar kolay bir hizmet olsa? Amazon SageMaker Autopilot tam olarak bunu sağlar.
Amazon SageMaker Autopilot ile tanışın
SageMaker Autopilot, tek bir API çağrısı veya Amazon SageMaker Studio‘da birkaç tıklama kullanarak önce veri kümenizi inceler ve veri ön işleme adımlarının, makine öğrenimi algoritmalarının ve hiperparametrelerin en uygun kombinasyonunu bulmak için birkaç alternatif oluşturur. Daha sonra, gerçek zamanlı bir sunucuya veya toplu tahminleme için kolayca ulaşabileceğiniz bir Tahminleme Altyapısı (Inference Pipeline) kullanır. Amazon SageMaker’da her zamanki gibi, tüm bunlar yönetilen bir hizmet olarak gerçekleşir.
Son olarak, SageMaker Autopilot, verilerin önceden nasıl işlendiğini tam olarak gösteren Python kodu da üretir: SageMaker Autopilot‘ın ne yaptığını anlamakla kalmaz, aynı zamanda bu kodu daha fazla manuel ayar için de yeniden kullanabilirsiniz.
SageMaker Autopilot şunları destekler:
- Tablo biçiminde giriş verileri için otomatik veri temizleme ve ön işleme,
- Doğrusal regresyon (linear regression), ikili sınıflandırma (binary classification) ve çok sınıflı sınıflandırma (multi-class classification) için otomatik algoritma seçimi,
- Otomatik hiperparametre optimizasyonu,
- Dağıtık eğitim,
- Otomatik sunucu ve küme boyutu seçimi.
Size bunun ne kadar basit olduğunu gösterelim.
Amazon SageMaker Autopilot ile AutoML Kullanma
Şu örnek kodu başlangıç noktası olarak kullanalım: Müşterilerin bir pazarlama teklifini kabul edip etmediğini tahmin eden ikili bir sınıflandırma modeli oluşturulması. Lütfen incelemek için birkaç dakikanızı ayırın. Göreceğiniz gibi, iş sorununun kendisi anlaşılması kolaydır ve veri kümesi büyük ya da karmaşık değildir. Ancak birkaç sezgisel olmayan ön işleme adımı gereklidir ve ayrıca bir algoritma ve parametreleri seçmenin hassas bir konusu da vardır. SageMaker Autopilot bizi bu zorluklardan kurtarır (işte güncellenmiş Notebook kodu).
İlk olarak, veri kümesinin bir kopyasını alıyoruz ve ilk birkaç satıra hızlı bir göz atıyoruz.
Python:
Python:
input_data_config=[ {
'DataSource': {
'S3DataSource': {
'S3DataType': 'S3Prefix',
'S3Uri': 's3://{}/{} /input'.format (bucket, prefix)
}
},
'TargetAttributeName': 'y'
}
]
output_data_config={
'S3OutputPath': 's3://{}/{} /output'.format (bucket, prefix)
}
İşte bu kadar! Elbette, SageMaker Autopilot, daha fazla tecrübe edince verileriniz ve modelleriniz hakkında kullanışlı olacak bir dizi seçeneğe sahiptir. Örneğin:
- Üzerinde eğitmek istediğiniz sorunun türünü ayarlayın: Doğrusal regresyon, ikili sınıflandırma veya çok sınıflı sınıflandırma. Emin değilseniz SageMaker Autopilot, hedef özniteliğinin değerlerini analiz ederek bunu otomatik olarak çözecektir.
- Model değerlendirmesi için belirli bir metrik kullanın.
- Tamamlama kriterlerini tanımlayın: Maksimum çalışma süresi, vb.
Yapmak zorunda olmadığınız bir şey, eğitim sunucu kümesini boyutlandırmaktır. Çünkü SageMaker Autopilot, veri boyutuna ve algoritmaya dayalı bir yöntem kullanır. Oldukça havalı!
İşi CreateAutoMl
API’si ile başlatabilirsiniz. SageMaker SDK’sını kullanmak istemiyorsanız tabii ki AWS CLI (Komut Satırı Arabirimi) de mevcuttur.
Python:
auto_ml_job_name = 'automl-dm-' + timestamp_suffix
print ('AutoMLJobName: '+ auto_ml_job_name)
import boto3
sm = boto3.client ('sagemaker')
sm.create_auto_ml_job (AutoMLJobName=auto_ml_job_name,
InputDataConfig=input_data_config,
OutputDataConfig=output_data_config,
RoleArn=rol)
AutoMLJobName: automl-dm-28-10-17-49
Bir iş dört adımda çalışır (bunları görüntülemek için DescribeAutoMlJob API’sini kullanabilirsiniz).
- Veri kümesini eğitim ve doğrulama setlerine ayırmak,
- Veri kümesi üzerinde denenmesi gereken analizleri önermek için verileri analiz etmek,
- Dönüşümlerin veri kümesine ve bireysel özelliklere uygulandığı özellik mühendisliği,
- En iyi performans gösteren analizin eğitim algoritması için en uygun hiperparametrelerle birlikte seçildiği analiz seçimi ve hiperparametre ayarı.
Maksimum aday sayısına (veya durdurma koşullarından birine) ulaşıldığında iş tamamlanır. ListCandidatesForAutoMlJob
API’sini kullanarak tüm adaylar hakkında ayrıntılı bilgi alabilir ve bunları AWS konsolunda görüntüleyebilirsiniz.
Python:
candidates = sm.list_candidates_for_auto_ml_job(AutoMLJobName=auto_ml_job_name, SortBy='FinalObjectiveMetricValue')['Candidates']
index = 1
for candidate in candidates:
print (str(index) + " " + candidate['CandidateName'] + " " + str(candidate['FinalAutoMLJobObjectiveMetric']['Value']))
index += 1
1 automl-dm-28-tuning-job-1-fabb8-001-f3b6dead 0.9186699986457825
2 automl-dm-28-tuning-job-1-fabb8-004-03a1ff8a 0.918304979801178
3 automl-dm-28-tuning-job-1-fabb8-003-c443509a 0.9181839823722839
4 automl-dm-28-tuning-job-1-ed07c-006-96f31fde 0.9158779978752136
5 automl-dm-28-tuning-job-1-ed07c-004-da2d99af 0.9130859971046448
6 automl-dm-28-tuning-job-1-ed07c-005-1e90fd67 0.9130859971046448
7 automl-dm-28-tuning-job-1-ed07c-008-4350b4fa 0.9119930267333984
8 automl-dm-28-tuning-job-1-ed07c-007-dae75982 0.9119930267333984
9 automl-dm-28-tuning-job-1-ed07c-009-c512379e 0.9119930267333984
10 automl-dm-28-tuning-job-1-ed07c-010-d905669f 0.8873512744903564
Şimdilik sadece en iyi sonuç veren deneyle ilgileniyoruz: %91,87 doğruluk. Bunu, tıpkı herhangi bir modeli yükleyeceğimiz gibi bir SageMaker uç noktasına yükleyelim:
- Model oluşturun,
- Uç nokta yapılandırması oluşturun,
- Uç noktası oluşturun.
Python:
model_arn = sm.create_model(Containers=best_candidate['InferenceContainers'],
ModelName=model_name,
ExecutionRoleArn=rol)
ep_config = sm.create_endpoint_config (EndpointConfigName = epc_name,
ProductionVariants= [{'InstanceType': 'ml.m5.2xlarge',
'InitialInstanceCount':1,
'ModelName':model_name,
'VariantName':variant_name}])
create_endpoint_response = sm.create_endpoint (EndpointName=ep_name,
EndpointConfigName = epc_name)
Birkaç dakika sonra bitiş noktası canlı olacak ve bunu tahmin etmek için kullanabilirsiniz.
Eminiz modelin nasıl yapıldığını ve diğer adayların ne olduğunu merak ediyorsunuzdur. Size gösterelim.
Amazon SageMaker Autopilot ile Tam Görünürlük ve Kontrol
SageMaker Autopilot, otomatik oluşturulan iki Python Notebook kodu dahil olmak üzere S3’te eğitim çıktılarını saklar!
Python:
job = sm.describe_auto_ml_job(AutoMLJobName=auto_ml_job_name)
job_data_notebook = job['AutoMLJobArtifacts']['DataExplorationNotebookLocation']
job_candidate_notebook = job['AutoMLJobArtifacts']['CandidateDefinitionNotebookLocation']
print(job_data_notebook)
print(job_candidate_notebook)
s3://<PREFIX_REMOVED>/notebooks/SageMakerAutopilotCandidateDefinitionNotebook.ipynb
s3://<PREFIX_REMOVED>/notebooks/SageMakerAutopilotDataExplorationNotebook.ipynb
Birincisi, veri kümesi hakkında bilgi içerir.
İkincisi, SageMaker Autopilot aşamaları hakkında tüm ayrıntıları içerir: Aday modeller, veri ön işleme adımları, vb. Tüm kodlar mevcuttur, dilediğinizi daha farklı denemeler için değiştirebilirsiniz.
Gördüğünüz gibi, modellerin nasıl üretildiğine dair tam kontrol ve görünürlüğe sahipsiniz.
Amazon SageMaker Autopilot
Amazon SageMaker Autopilot hakkında çok heyecanlıyız, çünkü makine öğrenimini her zamankinden daha kolay ve erişilebilir hale getiriyor. İster makine öğrenimiyle yeni başlıyor olun, ister deneyimli bir uygulayıcı olun, SageMaker Autopilot şu yollardan birini kullanarak daha hızlı daha iyi modeller oluşturmanıza yardımcı olacaktır:
- Amazon SageMaker Studio‘da kod yazmayı gerektirmeyen yöntem,
- SageMaker Autopilot SDK ile kolay kod yöntemi,
- Oluşturulan Notebook kodları ile derinlemesine analiz yöntemi.
Şimdi sıra sizde.
Lütfen Amazon SageMaker için AWS forum platformu veya her zamanki AWS destek kanalınız aracılığıyla bize geri bildirimlerinizi iletiniz.