Azure Machine Learning, ML eğitim işlerini göndermek için birden fazla yol sağlar. Bu makalede, aşağıdaki yöntemleri kullanarak işleri göndermeyi öğreneceksiniz:
Makine öğrenmesi için Azure CLI uzantısı: ml CLI v2 olarak da adlandırılan uzantı.
Azure Machine Learning için Python SDK v2.
REST API: CLI ve SDK'nın üzerinde oluşturulduğu API.
Önkoşullar
Azure aboneliği. Azure aboneliğiniz yoksa başlamadan önce ücretsiz bir hesap oluşturun. Azure Machine Learning'in ücretsiz veya ücretli sürümünü deneyin.
PowerShell'de için curl bir diğer addır Invoke-WebRequest ve curl -d "key=val" -X POST uri olur Invoke-WebRequest -Body "key=val" -Method POST -Uri uri.
REST API'yi PowerShell'den çağırmak mümkün olsa da, bu makaledeki örneklerde Bash kullandığınız varsayılır.
JSON işlemek için jq yardımcı programı. Bu yardımcı program, REST API çağrılarından döndürülen JSON belgelerindeki değerleri ayıklamak için kullanılır.
Örnek deposunu kopyalama
Bu makaledeki kod parçacıkları, Azure Machine Learning örnekleri GitHub deposundaki örnekleri temel alır. Depoyu geliştirme ortamınıza kopyalamak için aşağıdaki komutu kullanın:
Yalnızca en son işlemeyi depoya kopyalamak için kullanın --depth 1 ; bu işlem tamamlanma süresini kısaltılır.
Ö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 kullanılacak bir işlem kaynağı seçmeniz gerekir.
1. Çalışma alanına bağlanma
İpucu
Modeli eğitmek için kullanmak istediğiniz yöntemi seçmek için aşağıdaki sekmeleri kullanın. Bir 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. Gerekli Azure Machine Learning çalışma alanına bir tanıtıcı almak için ad alanında bu ayrıntıları MLClientazure.ai.ml kullanacaksınız. Kimlik doğrulaması yapmak için varsayılan Azure kimlik doğrulamasını kullanırsınız. Kimlik bilgilerini yapılandırma ve çalışma alanına bağlanma hakkında daha fazla bilgi için bu örneği gözden geçirin.
#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)
Azure CLI'yı kullanırken tanımlayıcı parametrelerine (abonelik, kaynak grubu ve çalışma alanı adı) ihtiyacınız vardır. Her komut için bu parametreleri belirtebilirsiniz ancak tüm komutlar için kullanılacak varsayılanları da ayarlayabilirsiniz. Varsayılan değerleri ayarlamak için aşağıdaki komutları kullanın. , <Azure Machine Learning workspace name>ve <resource group> değerlerini yapılandırmanızın değerleriyle değiştirin<subscription ID>:
az account set --subscription <subscription ID>
az configure --defaults workspace=<Azure Machine Learning workspace name> group=<resource group>
Bu makaledeki REST API örnekleri , $RESOURCE_GROUP, $LOCATIONve $WORKSPACE yer tutucularını kullanır$SUBSCRIPTION_ID. Yer tutucuları aşağıdaki gibi kendi değerlerinizle değiştirin:
$SUBSCRIPTION_ID: Azure abonelik kimliğiniz.
$RESOURCE_GROUP: Çalışma alanınızı içeren Azure kaynak grubu.
$LOCATION: Çalışma alanınızın bulunduğu Azure bölgesi.
$WORKSPACE: Azure Machine Learning çalışma alanınızın adı.
$COMPUTE_NAME: Azure Machine Learning işlem kümenizin adı.
Yönetim REST bir hizmet sorumlusu kimlik doğrulama belirteci istemektedir. Aşağıdaki komutla bir belirteç alabilirsiniz. Belirteç, ortam değişkeninde $TOKEN depolanır:
Hizmet sağlayıcısı, uyumluluğu sağlamak için bağımsız değişkenini api-version kullanır. Bağımsız api-version değişken hizmetten hizmete değişir. API sürümünü, gelecekteki sürümleri kapsayacak şekilde bir değişken olarak ayarlayın:
API_VERSION="2022-05-01"
REST API kullanarak eğitirken, veri ve eğitim betikleri çalışma alanının erişebileceği bir depolama hesabına yüklenmelidir. Aşağıdaki örnek, çalışma alanınızın depolama bilgilerini alır ve daha sonra kullanabilmemiz için bunları değişkenlere kaydeder:
Azure Machine Learning işlem kümesi, eğitim işini çalıştırmak için kullanılabilecek tam olarak yönetilen bir işlem kaynağıdır. Aşağıdaki örneklerde adlı cpu-compute bir işlem kümesi oluşturulur.
Birkaç saniye sonra yanıt döndürülürken, bu yalnızca oluşturma isteğinin kabul edildiğini gösterir. Küme oluşturma işleminin tamamlanması birkaç dakika sürebilir.
Bu betiği çalıştırmak için ./sdk/python/jobs/single-step/lightgbm/iris/src/ altında bulunan main.py Python betiğini yürüten bir command kullanacaksınız. Komut, Azure Machine Learning'e olarak job gönderilerek çalıştırılır.
Not
Sunucusuz işlem kullanmak için bu kodda silincompute="cpu-cluster".
# 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ıracak kodun bulunduğu yol
command - çalıştırılması gereken komut
environment - eğitim betiğini çalıştırmak için gereken ortam. Bu örnekte, Azure Machine Learning AzureML-lightgbm-3.2-ubuntu18.04-py37-cputarafından sağlanan adlı, seçilmiş veya hazır bir ortam kullanıyoruz. yönergesini kullanarak bu ortamın en son sürümünü kullanırız @latest . Temel bir docker görüntüsü belirterek ve üzerine bir conda yaml belirterek de özel ortamları kullanabilirsiniz.
inputs - komutuna ad değer çiftleri kullanan girişlerin sözlüğü. anahtar, iş bağlamında girişin adı ve değer giriş değeridir. girişlerine ifadesi kullanılarak başvurulur command${{inputs.<input_name>}} . Girdi olarak dosya veya klasör kullanmak için sınıfını Input kullanabilirsiniz. Daha fazla bilgi için bkz . SDK ve CLI v2 ifadeleri.
İşi gönderdiğinizde, Azure Machine Learning stüdyosu iş durumuna bir URL döndürülü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 .
az ml job create Bu örnekte kullanılan komut bir YAML iş tanımı dosyası gerektirir. Bu örnekte kullanılan dosyanın içeriği şunlardır:
Not
Sunucusuz işlem kullanmak için bu kodda silincompute: azureml:cpu-cluster".
$schema: https://azuremlschemas.azureedge.net/latest/commandJob.schema.json
code: src
command: >-
python main.py
--iris-csv ${{inputs.iris_csv}}
inputs:
iris_csv:
type: uri_file
path: https://azuremlexamples.blob.core.windows.net/datasets/iris.csv
environment: azureml:AzureML-lightgbm-3.3@latest
compute: azureml:cpu-cluster
display_name: lightgbm-iris-example
experiment_name: lightgbm-iris-example
description: Train a LightGBM model on the Iris dataset.
Yukarıdakilerde şunları yapılandırmışsınız:
code - komutu çalıştıracak kodun bulunduğu yol
command - çalıştırılması gereken komut
inputs - komutuna ad değer çiftleri kullanan girişlerin sözlüğü. anahtar, iş bağlamında girişin adı ve değer giriş değeridir. girişlerine ifadesi kullanılarak başvurulur command${{inputs.<input_name>}} . Daha fazla bilgi için bkz . SDK ve CLI v2 ifadeleri.
environment - eğitim betiğini çalıştırmak için gereken ortam. Bu örnekte, Azure Machine Learning AzureML-lightgbm-3.3tarafından sağlanan adlı, seçilmiş veya hazır bir ortam kullanıyoruz. yönergesini kullanarak bu ortamın en son sürümünü kullanırız @latest . Temel bir docker görüntüsü belirterek ve üzerine bir conda yaml belirterek de özel ortamları kullanabilirsiniz.
İşi göndermek için aşağıdaki komutu kullanın. Eğitim işinin çalıştırma kimliği (adı) değişkeninde $run_id depolanır:
run_id=$(az ml job create -f jobs/single-step/lightgbm/iris/job.yml --query name -o tsv)
İş hakkındaki bilgileri döndürmek için depolanan çalıştırma kimliğini kullanabilirsiniz. parametresi, --web işte ayrıntılarına inebileceğiniz Azure Machine Learning stüdyosu web kullanıcı arabirimini açar:
az ml job show -n $run_id --web
İş gönderimi kapsamında eğitim betiklerinin ve verilerin Azure Machine Learning çalışma alanınızın erişebileceği bir bulut depolama konumuna yüklenmesi gerekir.
Eğitim betiğini karşıya yüklemek için aşağıdaki Azure CLI komutunu kullanın. komutu, tek bir dosyayı değil eğitim için gereken dosyaları içeren dizini belirtir. Bunun yerine verileri karşıya yüklemek için REST kullanmak isterseniz Bkz . Put Blob başvurusu:
az storage blob upload-batch -d $AZUREML_DEFAULT_CONTAINER/testjob -s cli/jobs/single-step/lightgbm/iris/src/ --account-name $AZURE_STORAGE_ACCOUNT
Eğitim verilerine sürümlenmiş bir başvuru oluşturun. Bu örnekte veriler zaten buluttadır ve konumundadır https://azuremlexamples.blob.core.windows.net/datasets/iris.csv. Verilere başvurma hakkında daha fazla bilgi için bkz . Azure Machine Learning'de veriler:
İşle kullanmak üzere eğitim betiğine sürümlü bir başvuru kaydedin. Bu örnekte betik konumu, 1. adımda karşıya yüklediğiniz varsayılan depolama hesabı ve kapsayıcıdır. Sürümlenmiş eğitim kodunun kimliği döndürülür ve değişkende $TRAIN_CODE depolanır:
Kümenin eğitim betiğini çalıştırmak için kullanacağı ortamı oluşturun. Bu örnekte, Azure Machine Learning AzureML-lightgbm-3.2-ubuntu18.04-py37-cputarafından sağlanan adlı, seçilmiş veya hazır bir ortam kullanıyoruz. Aşağıdaki komut, ortam sürümlerinin listesini alır ve en yenisi koleksiyonun en üstünde yer alır. jq en son ([0]) sürümün kimliğini almak için kullanılır. Bu kimlik daha sonra değişkende $ENVIRONMENT depolanır.
Son olarak, işi gönderin. Aşağıdaki örnekte işin nasıl gönderilip eğitim kodu kimliğine, ortam kimliğine, giriş verilerinin URL'sine ve işlem kümesinin kimliğine nasıl başvuracakları gösterilmektedir. İş çıktı konumu şu değişkende $JOB_OUTPUT depolanır:
İpucu
İş adı benzersiz olmalıdır. Bu örnekte, uuidgen ad için benzersiz bir değer oluşturmak için kullanılır.
Not
Sunucusuz işlem kullanmak için bu koddaki \"computeId\": satırı silin.
name Eğitim işi tarafından döndürülen özellik, modelin yolunun bir parçası olarak kullanılır.
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)
İpucu
Ad (değişkende $run_id depolanır) modelin yolunun bir parçası olarak kullanılır.
az ml model create -n sklearn-iris-example -v 1 -p runs:/$run_id/model --type mlflow_model
İpucu
Ad (değişkende $run_id depolanır) modelin yolunun bir parçası olarak kullanılır.
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: