Azure Machine Learning CLI, SDK ve REST API ile modelleri eğitin

GEÇERLİDİR:Azure CLI ml extension v2 (geçerli)Python SDK azure-ai-ml v2 (geçerli)

Azure Machine Learning, ML eğitim işlerini göndermek için birden çok yol sağlar. Bu makalede, aşağıdaki yöntemleri kullanarak işleri göndermeyi öğreneceksiniz:

  • Makine öğrenmesi için Azure CLI uzantısı: CLI v2 olarak da adlandırılan ml uzantısı.
  • Azure Machine Learning için Python SDK v2.
  • REST API: CLI ve SDK'nın üzerinde oluşturulduğu API.

Önkoşullar

SDK'yi kullanmak için:

  • Python için Azure Machine Learning SDK v2'yi yükleyin.
  • azure-identity paketini yükleyin: pip install azure-identity.

Örnek deposunu kopyalama

Bu makaledeki kod parçacıkları Azure Machine Learning depo GitHub örneklerine dayanır. Depoyu geliştirme ortamınıza kopyalamak için aşağıdaki komutu kullanın:

git clone --depth 1 https://github.com/Azure/azureml-examples
cd azureml-examples

Ipucu

Yalnızca depoya en son commit'i kopyalamak için --depth 1 kullanın, bu da işlem tamamlanma süresini kısaltır.

Bu makaledeki geri kalan komutlar, komutları azureml-examples dizininden çalıştırdığınızı varsayar.

Örnek iş

Bu makaledeki örneklerde MLFlow modelini eğitmek için iris çiçek veri kümesi kullanılır.

Bulutta eğitin

Bulutta eğitim yaparken, Azure Machine Learning çalışma alanınıza bağlanmanız ve eğitim işini çalıştırmak için bir işlem kaynağı seçmeniz gerekir.

Çalışma alanına bağlanma

Ipucu

Modeli eğitmek için kullanmak istediğiniz yöntemi seçmek için aşağıdaki sekmeleri kullanın. Sekme seçildiğinde, bu makaledeki tüm sekmeler otomatik olarak aynı sekmeye geçer. İstediğiniz zaman başka bir sekme seçebilirsiniz.

Çalışma alanına bağlanmak için tanımlayıcı parametrelerine (abonelik, kaynak grubu ve çalışma alanı adı) ihtiyacınız vardır. Gereken Azure Machine Learning çalışma alanına erişim tanıtıcısı almak için MLClient ad alanından azure.ai.ml bu ayrıntıları kullanın. Kimlik doğrulaması yapmak için default Azure kimlik doğrulamasını kullanın. Kimlik bilgilerini yapılandırma ve çalışma alanına bağlanma hakkında daha fazla bilgi için bu example konusuna bakın.

#import required libraries
from azure.ai.ml import MLClient
from azure.identity import DefaultAzureCredential

#Enter details of your Azure Machine Learning workspace
subscription_id = '<SUBSCRIPTION_ID>'
resource_group = '<RESOURCE_GROUP>'
workspace = '<AZUREML_WORKSPACE_NAME>'

#connect to the workspace
ml_client = MLClient(DefaultAzureCredential(), subscription_id, resource_group, workspace)

Çalışma alanı adını yazdırarak bağlantıyı doğrulayın:

print(ml_client.workspace_name)

Eğitim için işlem kaynağı oluşturma

Not

Sunucusuz işlemi denemek için bu adımı atlayın ve Eğitim işini gönderme bölümüne geçin.

Azure Machine Learning işlem kümesi, eğitim işini çalıştırmak için kullanabileceğiniz tam olarak yönetilen bir işlem kaynağıdır. Aşağıdaki örneklerde adlı cpu-clusterbir işlem kümesi oluşturursunuz.

from azure.ai.ml.entities import AmlCompute

# specify aml compute name.
cpu_compute_target = "cpu-cluster"

try:
    ml_client.compute.get(cpu_compute_target)
except Exception:
    print("Creating a new cpu compute target...")
    compute = AmlCompute(
        name=cpu_compute_target, size="STANDARD_D2_V2", min_instances=0, max_instances=4
    )
    ml_client.compute.begin_create_or_update(compute).result()

İşlem kümesinin var olduğunu doğrulayın:

cpu_cluster = ml_client.compute.get("cpu-cluster")
print(f"Compute '{cpu_cluster.name}' provisioning state: {cpu_cluster.provisioning_state}")

Eğitim işini gönderme

Bu betiği çalıştırmak için, command altında bulunan main.py Python betiğini yürüten bir ./sdk/python/jobs/single-step/lightgbm/iris/src/ kullanın. komutu job olarak Azure Machine Learning olarak gönderirsiniz.

Not

Sunucusuz işlem kullanmak için bu kodda compute="cpu-cluster"'i silin.

from azure.ai.ml import command, Input

# define the command
command_job = command(
    code="./src",
    command="python main.py --iris-csv ${{inputs.iris_csv}} --learning-rate ${{inputs.learning_rate}} --boosting ${{inputs.boosting}}",
    environment="AzureML-lightgbm-3.2-ubuntu18.04-py37-cpu@latest",
    inputs={
        "iris_csv": Input(
            type="uri_file",
            path="https://azuremlexamples.blob.core.windows.net/datasets/iris.csv",
        ),
        "learning_rate": 0.9,
        "boosting": "gbdt",
    },
    compute="cpu-cluster",
)

İşi aynı Python oturumunda gönderin:

# submit the command
returned_job = ml_client.jobs.create_or_update(command_job)
# get a URL for the status of the job
returned_job.studio_url

Yukarıdaki örneklerde şunları yapılandırmışsınız:

  • code - komutu çalıştırılacak kodun bulunduğu yol.
  • command - çalışması gereken komut.
  • environment - eğitim betiğini çalıştırmak için gereken ortam. Bu örnekte, Azure Machine Learning tarafından sağlanan AzureML-lightgbm-3.2-ubuntu18.04-py37-cpu@latest adlı, seçilmiş veya hazır bir ortam kullanın. Temel bir Docker imajı belirterek ve üzerine bir conda YAML dosyası belirterek de özel ortamları kullanabilirsiniz.
  • inputs - komut için isim-değer çiftleri kullanan girişlerin sözlüğü. anahtar, iş bağlamında girişin adı ve değer giriş değeridir. command içindeki başvurular için ${{inputs.<input_name>}} ifadesini kullanın. Girdi olarak dosya veya klasör kullanmak için sınıfını Input kullanın. Daha fazla bilgi için bkz. SDK ve CLI v2 ifadeleri.

Daha fazla bilgi için başvuru belgelerine bakın.

İşi gönderdiğinizde, hizmet Azure Machine Learning Stüdyosu iş durumunun URL'sini döndürür. İş ilerleme durumunu görüntülemek için stüdyo kullanıcı arabirimini kullanın. İşin geçerli durumunu denetlemek için de kullanabilirsiniz returned_job.status .

print(f"Studio URL: {returned_job.studio_url}")

Önemli

Azure Machine Learning eğitim ve komut görevleri, özelleştirilmiş etki alanı adı etiketleri kullanan Azure Kapsayıcı Kayıt Defterlerini (ACR) desteklemez. Böyle bir kayıt defterine başvuran işler, görüntü çekme veya ortam çözümleme hataları nedeniyle başlatma sırasında başarısız olabilir. Bu sorunu önlemek için:

  • ACR'niz için varsayılan oturum açma sunucusu biçimini (<registry-name>.azurecr.io) kullanın.
  • Kayıt defterini oluşturduğunuzda Etki alanı adı etiket kapsamınıGüvenli Değil olarak ayarlayın.

Eğitim işini izleme

Modeli kaydetmeden önce eğitim işinin tamamlanmasını bekleyin. İş durumu, StartingPreparingRunningCompleted durumlarından geçer.

İş çıkışını gerçek zamanlı olarak izlemek için kullanın ml_client.jobs.stream() :

ml_client.jobs.stream(returned_job.name)

Alternatif olarak, program aracılığıyla iş durumunu denetleyin:

returned_job = ml_client.jobs.get(returned_job.name)
print(f"Job status: {returned_job.status}")

Eğitilen modeli kaydetme

Aşağıdaki örneklerde modelin Azure Machine Learning çalışma alanınıza nasıl kaydedilecekleri gösterilmektedir.

Ipucu

Eğitim işi bir name özellik döndürür. Modelin yolunun bir parçası olarak bu adı kullanın.

from azure.ai.ml.entities import Model
from azure.ai.ml.constants import AssetTypes

run_model = Model(
    path="azureml://jobs/{}/outputs/artifacts/paths/model/".format(returned_job.name),
    name="run-model-example",
    description="Model created from run.",
    type=AssetTypes.MLFLOW_MODEL
)

ml_client.models.create_or_update(run_model)

Modelin kayıtlı olduğunu doğrulayın:

registered_model = ml_client.models.get("run-model-example", version="1")
print(f"Model '{registered_model.name}' version {registered_model.version} registered successfully.")

Kaynakları temizle

daha fazla eğitim işi için işlem kümesini kullanmayı planlamıyorsanız ücretlendirmeyi durdurmak için bu kümeyi silin. Küme, hiç düğüm çalışmıyor olsa bile var olduğu sürece ücretlendirilmeye devam eder.

ml_client.compute.begin_delete("cpu-cluster").wait()

Sık karşılaşılan hataları giderme

Error Nedeni Çözünürlük
ImportError: No module named 'azure.identity' Eksik azure-identity paket pip install azure-identity komutunu çalıştırın
DefaultAzureCredential failed Azure oturum açmamış Önce az login çalıştırın veya hizmet sorumlusu kimlik doğrulaması için ortam değişkenlerini ayarlayın
ComputeNotFound Küme adı eşleşmiyor veya küme silinmiş Küme adını doğrulama ve sağlama durumunu denetleme
EnvironmentNotFound Seçilen ortam kullanım dışı veya kullanılamıyor ml_client.environments.list() ile kullanılabilir ortamları listeleyin ve güncel bir sürüm kullanın
QuotaExceeded VM boyutu için yetersiz vCPU kotası Kota artışı isteme veya daha küçük bir VM boyutu kullanma

Ortama özgü sorunlar için bkz. Ortam görüntüsü derlemelerinde sorun giderme.

Sonraki adımlar

Artık eğitilmiş bir modeliniz olduğuna göre, çevrimiçi uç nokta kullanarak nasıl dağıtacağınızı öğrenin.

Daha fazla örnek için Azure Machine Learning örnekleri GitHub deposuna bakın.

Bu makalede kullanılan Azure CLI komutları, Python SDK sınıfları veya REST API'leri hakkında daha fazla bilgi için aşağıdaki başvuru belgelerine bakın: