Eğitim işlerini yapılandırma ve gönderme
ŞUNUN IÇIN GEÇERLIDIR: Python SDK azureml v1
Bu makalede, modellerinizi eğitmek için Azure Machine Learning işlerini yapılandırmayı ve göndermeyi öğreneceksiniz. Kod parçacıkları, yapılandırmanın önemli bölümlerini ve bir eğitim betiğinin gönderilmesini açıklar. Ardından, tam uçtan uca çalışma örneklerini bulmak için örnek not defterlerinden birini kullanın.
Eğitim sırasında, yerel bilgisayarınızda başlayıp daha sonra ölçeği bulut tabanlı bir kümeye genişletmek yaygın bir durumdur. Azure Machine Learning ile, eğitim betiğinizi değiştirmek zorunda kalmadan betiğinizi çeşitli işlem hedeflerinde çalıştırabilirsiniz.
Tek yapmanız gereken, bir betik işi yapılandırması içindeki her işlem hedefi için ortamı tanımlamaktır. Ardından, eğitim denemenizi farklı bir işlem hedefinde çalıştırmak istediğinizde, bu işlem için iş yapılandırmasını belirtin.
Önkoşullar
- Azure aboneliğiniz yoksa başlamadan önce ücretsiz bir hesap oluşturun. Azure Machine Learning'in ücretsiz veya ücretli sürümünü bugün deneyin
- Python için Azure Machine Learning SDK'sı (v1) (>= 1.13.0)
- Bir Azure Machine Learning çalışma alanı,
ws
- İşlem hedefi,
my_compute_target
. İşlem hedefi oluşturma
Betik çalıştırma yapılandırması nedir?
ScriptRunConfig, denemenin bir parçası olarak eğitim işi göndermek için gereken bilgileri yapılandırmak için kullanılır.
Eğitim denemenizi bir ScriptRunConfig nesnesiyle gönderirsiniz. Bu nesne şunları içerir:
- source_directory: Eğitim betiğinizi içeren kaynak dizin
- betik: Çalıştırılacak eğitim betiği
- compute_target: Üzerinde çalıştırılacak işlem hedefi
- ortam: Betiği çalıştırırken kullanılacak ortam
- ve bazı ek yapılandırılabilir seçenekler (daha fazla bilgi için başvuru belgelerine bakın)
Modelinizi eğitme
Eğitim işi göndermeye yönelik kod düzeni, tüm işlem hedefi türleri için aynıdır:
- Çalıştırmak için deneme oluşturma
- Betiğin çalıştığı bir ortam oluşturma
- İşlem hedefini ve ortamını belirten bir ScriptRunConfig oluşturma
- İşi gönderme
- İşin tamamlanmasını bekleyin
İsterseniz:
- Hiper parametre ayarlaması için bir HyperDrive çalıştırması gönderin.
- VS Code uzantısı aracılığıyla bir deneme gönderin.
Deneme oluşturma
Çalışma alanınızda bir deneme oluşturun. Deneme, iş gönderimlerini düzenlemeye ve kodu izlemeye yardımcı olan hafif bir kapsayıcıdır.
ŞUNUN IÇIN GEÇERLIDIR: Python SDK azureml v1
from azureml.core import Experiment
experiment_name = 'my_experiment'
experiment = Experiment(workspace=ws, name=experiment_name)
İşlem hedefi seçme
Eğitim betiğinizin çalıştırılacağı işlem hedefini seçin. ScriptRunConfig içinde herhangi bir işlem hedefi belirtilmezse veya belirtildiyse compute_target='local'
Azure Machine Learning betiğinizi yerel olarak yürütür.
Bu makaledeki örnek kod, "Önkoşullar" bölümünden zaten bir işlem hedefi my_compute_target
oluşturduğunuzu varsayar.
Not
- Azure Databricks, model eğitimi için işlem hedefi olarak desteklenmez. Veri hazırlama ve dağıtım görevleri için Azure Databricks'i kullanabilirsiniz.
- Azure Arc özellikli Kubernetes kümesinde eğitim için bir işlem hedefi oluşturmak ve eklemek için bkz . Azure Arc özellikli Machine Learning'i yapılandırma
Ortam oluşturun
Azure Machine Learning ortamları , makine öğrenmesi eğitiminizin gerçekleştiği ortamın bir kapsüllemesidir. Eğitim ve puanlama betiklerinizin etrafında Python paketlerini, Docker görüntüsünü, ortam değişkenlerini ve yazılım ayarlarını belirtir. Ayrıca çalışma zamanlarını (Python, Spark veya Docker) belirtir.
Kendi ortamınızı tanımlayabilir veya Azure Machine Learning tarafından seçilmiş bir ortam kullanabilirsiniz. Seçilen ortamlar , çalışma alanınızda varsayılan olarak kullanılabilen önceden tanımlanmış ortamlardır. Bu ortamlar önbelleğe alınmış Docker görüntüleriyle desteklenir ve bu da iş hazırlama maliyetini azaltır. Seçki olarak sunulan ortamların tam listesi için bkz . Azure Machine Learning Seçilmiş Ortamları .
Uzak işlem hedefi için şu popüler seçilmiş ortamlardan birini kullanarak şunlardan başlayabilirsiniz:
ŞUNUN IÇIN GEÇERLIDIR: Python SDK azureml v1
from azureml.core import Workspace, Environment
ws = Workspace.from_config()
myenv = Environment.get(workspace=ws, name="AzureML-Minimal")
Ortamlar hakkında daha fazla bilgi ve ayrıntı için bkz . Azure Machine Learning'de yazılım ortamları oluşturma ve kullanma.
Yerel işlem hedefi
İşlem hedefiniz yerel makinenizse, betiğin çalıştığı Python ortamında tüm gerekli paketlerin kullanılabilir olduğundan emin olmanız gerekir. Geçerli Python ortamınızı (veya belirttiğiniz yolda Python'ı) kullanmak için kullanın python.user_managed_dependencies
.
ŞUNUN IÇIN GEÇERLIDIR: Python SDK azureml v1
from azureml.core import Environment
myenv = Environment("user-managed-env")
myenv.python.user_managed_dependencies = True
# You can choose a specific Python environment by pointing to a Python path
# myenv.python.interpreter_path = '/home/johndoe/miniconda3/envs/myenv/bin/python'
Betik işi yapılandırmasını oluşturma
Artık bir işlem hedefiniz olduğuna göre (my_compute_target
bkz. Önkoşullar ve ortam (myenv
bkz. Ortam oluşturma), dizininizde project_folder
bulunan eğitim betiğinizi (train.py
) çalıştıran bir betik işi yapılandırması oluşturun:
ŞUNUN IÇIN GEÇERLIDIR: Python SDK azureml v1
from azureml.core import ScriptRunConfig
src = ScriptRunConfig(source_directory=project_folder,
script='train.py',
compute_target=my_compute_target,
environment=myenv)
Bir ortam belirtmezseniz, sizin için varsayılan bir ortam oluşturulur.
Eğitim betiğinize geçirmek istediğiniz komut satırı bağımsız değişkenleriniz varsa, bunları ScriptRunConfig oluşturucusunun parametresi aracılığıyla arguments
belirtebilirsiniz; örneğin, arguments=['--arg1', arg1_val, '--arg2', arg2_val]
.
İş için izin verilen varsayılan en uzun süreyi geçersiz kılmak istiyorsanız, bunu parametresi aracılığıyla max_run_duration_seconds
yapabilirsiniz. Sistem, bu değerden uzun sürerse işi otomatik olarak iptal etmeye çalışır.
Dağıtılmış iş yapılandırmasını belirtme
Dağıtılmış bir eğitim işi çalıştırmak istiyorsanız, parametresine dağıtılmış işe özgü yapılandırmayı distributed_job_config
sağlayın. Desteklenen yapılandırma türleri MpiConfiguration, TensorflowConfiguration ve PyTorchConfiguration'dır.
Dağıtılmış Horovod, TensorFlow ve PyTorch işlerini çalıştırma hakkında daha fazla bilgi ve örnek için bkz:
Denemeyi gönderme
ŞUNUN IÇIN GEÇERLIDIR: Python SDK azureml v1
run = experiment.submit(config=src)
run.wait_for_completion(show_output=True)
Önemli
Eğitim işini gönderdiğinizde, eğitim betiklerinizi içeren dizinin anlık görüntüsü oluşturulur ve işlem hedefine gönderilir. Ayrıca çalışma alanınızdaki denemenin bir parçası olarak depolanır. Dosyaları değiştirir ve işi yeniden gönderirseniz, yalnızca değiştirilen dosyalar karşıya yüklenir.
Gereksiz dosyaların anlık görüntüye eklenmesini önlemek için dizinde bir yoksayma dosyası (.gitignore
veya .amlignore
) oluşturun. Dışlanacak dosyaları ve dizinleri bu dosyaya ekleyin. Bu dosyanın içinde kullanılacak söz dizimi hakkında daha fazla bilgi için bkz. söz dizimi ve desenleri..gitignore
Dosya .amlignore
aynı söz dizimini kullanır. Her iki dosya da varsa, .amlignore
dosya kullanılır ve .gitignore
dosya kullanılmaz.
Anlık görüntüler hakkında daha fazla bilgi için bkz . Anlık görüntüler.
Önemli
Özel Klasörler İki klasör, çıkışlar ve günlükler, Azure Machine Learning tarafından özel işlem alır. Eğitim sırasında, kök dizine (./outputs
ve sırasıyla) göre çıkışlar ve günlükler adlı klasörlere dosya yazdığınızda, işiniz tamamlandıktan sonra bunlara erişebilmeniz için dosyalar otomatik olarak iş geçmişinize ./logs
yüklenir.
Eğitim sırasında yapıtlar (model dosyaları, denetim noktaları, veri dosyaları veya çizilmiş resimler gibi) oluşturmak için bunları klasöre ./outputs
yazın.
Benzer şekilde, eğitim işinizden klasöre ./logs
herhangi bir günlük yazabilirsiniz. Azure Machine Learning'in TensorBoard tümleştirmesini kullanmak için TensorBoard günlüklerinizi bu klasöre yazdığınızdan emin olun. İşiniz devam ederken TensorBoard'u başlatabilecek ve bu günlükleri akışla aktarabileceksiniz. Daha sonra, günlükleri önceki işlerinizin herhangi birinden de geri yükleyebilirsiniz.
Örneğin, uzak eğitim işinizden sonra outputs klasörüne yazılan bir dosyayı yerel makinenize indirmek için: run.download_file(name='outputs/my_output_file', output_file_path='my_destination_path')
Git izleme ve tümleştirme
Kaynak dizinin yerel git deposu olduğu bir eğitim işi başlattığınızda, depo hakkındaki bilgiler iş geçmişinde depolanır. Daha fazla bilgi için bkz . Azure Machine Learning için Git tümleştirmesi.
Not defteri örnekleri
Çeşitli eğitim senaryoları için işleri yapılandırma örnekleri için şu not defterlerine bakın:
- Çeşitli işlem hedefleri hakkında eğitim
- ML çerçeveleri ile eğitim
- tutorials/img-classification-part1-training.ipynb
Not defterlerini çalıştırmayı öğrenmek için bkz. Hizmeti keşfetmek için Jupyter not defterlerini kullanma.
Sorun giderme
AttributeError: 'RoundTripLoader' nesnesinin 'comment_handling' özniteliği yok: Bu hata, üzerinde hataya neden olan bir değişiklik
azureml-core
getiren birazureml-core
bağımlılık olan yeni sürümündenruamel-yaml
(v0.17.5) gelir. Bu hatayı düzeltmek için farklı bir sürümünüruamel-yaml
çalıştırıppip uninstall ruamel-yaml
yükleyerek kaldırınruamel-yaml
; desteklenen sürümler v0.15.35 ile v0.17.4 (dahil) arasındadır. bunu komutunu çalıştırarakpip install "ruamel-yaml>=0.15.35,<0.17.5"
yapabilirsiniz.İş şu hata iletisiyle
jwt.exceptions.DecodeError
başarısız oluyor:jwt.exceptions.DecodeError: It is required that you pass in a value for the "algorithms" argument when calling decode()
.azureml-core'un en son sürümüne yükseltmeyi göz önünde bulundurun:
pip install -U azureml-core
.Eğer. yerel işler için bu sorunla karşılaşıyorsunuz, ortamınızda yüklü olan PyJWT sürümünü denetleyin. Burada . iş başlatıyorsunuz. PyJWT'nin desteklenen sürümleri 2.0.0'dır < . Sürüm = 2.0.0 ise >PyJWT'yi ortamdan kaldırın. PyJWT sürümünü denetleyebilir, aşağıdaki gibi doğru sürümü kaldırabilir ve yükleyebilirsiniz:
- Bir komut kabuğu başlatın, azureml-core'un yüklü olduğu conda ortamını etkinleştirin.
- değerini girin
pip freeze
ve bulunup bulunmadığına bakınPyJWT
, listelenen sürüm 2.0.0 olmalıdır < - Listelenen sürüm desteklenen bir sürüm değilse,
pip uninstall PyJWT
komut kabuğuna onay için y girin. pip install 'PyJWT<2.0.0'
kullanarak yükleme
Eğer. işinizle birlikte kullanıcı tarafından oluşturulan bir ortam gönderebilirsiniz. Bu ortamda azureml-core'un en son sürümünü kullanmayı göz önünde bulundurun. Sürümler >= azureml-core'un 1.18.0 sürümü PyJWT < 2.0.0'a zaten sabitlenmiştir. Gönderdiğiniz ortamda azureml-core < 1.18.0 sürümünü kullanmanız gerekiyorsa pip bağımlılıklarınızda PyJWT < 2.0.0'ı belirttiğinizden emin olun.
ModuleErrors (Adlı modül yok): If . Azure Machine Learning'de deneme gönderirken ModuleErrors ile karşılaşıyorsunuz, eğitim betiği bir paketin yüklenmesini bekliyor ancak eklenmedi. Paket adını sağladıktan sonra Azure Machine Learning, paketi eğitim işiniz için kullanılan ortama yükler.
Eğer. Denemeleri göndermek için Estimators kullanıyorsanız, paketi yüklemek istediğiniz kaynağı temel alarak tahmin aracısında veya
conda_packages
parametresiylepip_packages
bir paket adı belirtebilirsiniz. Ayrıca parametresini kullanarakpip_requirements_file
tüm pip gereksinimlerinizi kullanarakconda_dependencies_file
tüm bağımlılıklarınızın bulunduğu bir yml dosyası belirtebilir veya bir txt dosyasında listeleyebilirsiniz. Tahmin aracı tarafından kullanılan varsayılan görüntüyü geçersiz kılmak istediğiniz kendi Azure Machine Learning Ortamı nesneniz varsa, tahmin aracı oluşturucusunun parametresi aracılığıylaenvironment
bu ortamı belirtebilirsiniz.Azure Machine Learning tarafından korunan docker görüntüleri ve bunların içerikleri Azure Machine Learning Kapsayıcıları'nda görülebilir. Çerçeveye özgü bağımlılıklar ilgili çerçeve belgelerinde listelenmiştir:
NameError (Ad tanımlanmadı), AttributeError (Nesnenin özniteliği yok): Bu özel durum eğitim betiklerinizden gelmelidir. Belirli bir ad tanımlanmamış veya öznitelik hatası hakkında daha fazla bilgi edinmek için Azure portalındaki günlük dosyalarına bakabilirsiniz. SDK'dan hata iletisine bakmak için kullanabilirsiniz
run.get_details()
. Bu, işiniz için oluşturulan tüm günlük dosyalarını da listeler. Lütfen işinizi yeniden göndermeden önce eğitim betiğinize göz atıp hatayı düzelttiğinizden emin olun.İş veya deneme silme: Denemeler, Experiment.archive yöntemi kullanılarak veya "Denemeyi arşivle" düğmesi aracılığıyla Azure Machine Learning stüdyosu istemcisindeki Deneme sekmesi görünümünden arşivlenebilir. Bu eylem, denemeyi liste sorgularından ve görünümlerinden gizler, ancak silmez.
Tek tek denemelerin veya işlerin kalıcı olarak silinmesi şu anda desteklenmiyor. Çalışma alanı varlıklarını silme hakkında daha fazla bilgi için bkz . Machine Learning hizmeti çalışma alanı verilerinizi dışarı aktarma veya silme.
Ölçüm Belgesi çok büyük: Azure Machine Learning'in bir eğitim işinden aynı anda günlüğe kaydedilebilecek ölçüm nesnelerinin boyutuyla ilgili iç sınırları vardır. Liste değerli bir ölçümü günlüğe kaydederken "ölçüm belgesi fazla büyük" hatasıyla karşılaşıyorsanız listeyi daha küçük parçalara ayırmayı deneyin, örneğin:
run.log_list("my metric name", my_metric[:N]) run.log_list("my metric name", my_metric[N:])
Azure Machine Learning dahili olarak aynı ölçüm adına sahip blokları bitişik bir listede birleştirir.
İşlem hedefinin başlatılması uzun sürüyor: İşlem hedefleri için Docker görüntüleri Azure Container Registry'den (ACR) yüklenir. Azure Machine Learning varsayılan olarak temel hizmet katmanını kullanan bir ACR oluşturur. Çalışma alanınızın ACR'sini standart veya premium katmana geçirmek, görüntüleri oluşturma ve yükleme süresini kısaltabilir. Daha fazla bilgi için bkz. Azure Container Registry hizmet katmanları.
Sonraki adımlar
- Öğretici: Modeli eğitme ve dağıtma, modeli eğitmek için yönetilen işlem hedefi kullanır.
- Scikit-learn, TensorFlow ve PyTorch gibi belirli ML çerçeveleriyle modelleri eğitmeyi öğrenin.
- Daha iyi modeller oluşturmak için hiper parametreleri verimli bir şekilde ayarlamayı öğrenin.
- Eğitilmiş bir modeliniz olduğunda modellerin nasıl ve nereye dağıtılacağı hakkında bilgi edinin.
- ScriptRunConfig sınıf SDK'sı başvurusunu görüntüleyin.
- Azure machine learning'i Azure Sanal Ağ s ile kullanma