Sunucusuz işlemde model eğitimi

ŞUNLAR IÇIN GEÇERLIDIR: Azure CLI ml uzantısı v2 (geçerli)Python SDK azure-ai-ml v2 (geçerli)

Artık modelinizi ölçeklenebilir bir şekilde eğitmek için işlem oluşturmanız ve yönetmeniz gerekmez. Bunun yerine işiniz sunucusuz işlem adı verilen yeni bir işlem hedef türüne gönderilebilir. Sunucusuz işlem, Azure Machine Learning'de eğitim işlerini çalıştırmanın en kolay yoludur. Sunucusuz işlem, tam olarak yönetilen, isteğe bağlı bir işlemdir. Azure Machine Learning işlemi sizin için oluşturur, ölçeklendirir ve yönetir. Sunucusuz işlemle model eğitimi sayesinde makine öğrenmesi uzmanları makine öğrenmesi modelleri oluşturma uzmanlığına odaklanabilir ve işlem altyapısı veya ayarlama hakkında bilgi edinmek zorunda değildir.

Makine öğrenmesi uzmanları, işin ihtiyaç duyduğu kaynakları belirtebilir. Azure Machine Learning işlem altyapısını yönetir ve yönetilen ağ izolasyonu yüklerinizi azaltmanızı sağlar.

Kuruluşlar ayrıca her iş için en uygun kaynakları belirterek maliyetleri düşürebilir. BT Yönetici, abonelik ve çalışma alanı düzeyinde çekirdek kotası belirterek ve Azure ilkelerini uygulayarak denetimi uygulamaya devam edebilir.

Sunucusuz işlem, LLAMA 2 gibi model kataloğundaki modellerde ince ayar yapmak için kullanılabilir. Sunucusuz işlem, Azure Machine Learning stüdyosu, SDK ve CLI'dan her tür işi çalıştırmak için kullanılabilir. Sunucusuz işlem, ortam görüntüleri oluşturmak ve sorumlu yapay zeka panosu senaryoları için de kullanılabilir. Sunucusuz işler, Azure Machine Learning işlem kotası ile aynı kotayı tüketir. Standart (ayrılmış) katmanı veya spot (düşük öncelikli) VM'leri seçebilirsiniz. Yönetilen kimlik ve kullanıcı kimliği sunucusuz işler için desteklenir. Faturalama modeli, Azure Machine Learning işlemiyle aynıdır.

Sunucusuz işlemin avantajları

  • Azure Machine Learning oluşturma, ayarlama, ölçeklendirme, silme, düzeltme eki uygulama, işlem altyapısını yönetme ve yönetim ek yükünü azaltma
  • İşlem, çeşitli işlem türleri ve ilgili özellikler hakkında bilgi edinmeniz gerekmez.
  • Aynı ayarları kullanarak ve her çalışma alanı için çoğaltma kullanarak gereken her VM boyutu için tekrar tekrar kümeler oluşturmaya gerek yoktur.
  • Her işin çalışma zamanında ihtiyaç duyduğu kaynakları örnek türü (VM boyutu) ve örnek sayısı açısından belirterek maliyetleri iyileştirebilirsiniz. bir işin ihtiyaç duyacağı kaynakları iyileştirmek için işin kullanım ölçümlerini izleyebilirsiniz.
  • bir işi çalıştırma adımlarında azaltma
  • İş gönderimini daha da basitleştirmek için kaynakları tamamen atlayabilirsiniz. Azure Machine Learning, örnek sayısını varsayılan olarak belirler ve kota, maliyet, performans ve disk boyutu gibi faktörlere göre bir örnek türü (VM boyutu) seçer.
  • bazı durumlarda işlerin yürütülmesine başlamadan önce daha az bekleme süresi.
  • İş gönderimi için kullanıcı kimliği ve çalışma alanı kullanıcı tarafından atanan yönetilen kimlik desteklenir.
  • yönetilen ağ izolasyonu ile ağ yalıtımı yapılandırmanızı kolaylaştırabilir ve otomatikleştirebilirsiniz. Müşteri sanal ağı da desteklenir
  • Kota ve Azure ilkeleri aracılığıyla denetimi Yönetici

Sunucusuz işlem kullanma

  • Aşağıda gösterildiği gibi not defterlerini kullanarak LLAMA 2 gibi temel modelleri inceleyebilirsiniz:

  • Kendi işlem kümenizi oluşturduğunuzda, komut işinde adını kullanırsınız, örneğin compute="cpu-cluster". Sunucusuz ile işlem kümesi oluşturmayı atlayabilir ve parametresini compute atlayarak sunucusuz işlem kullanabilirsiniz. bir iş için belirtilmediğinde compute , iş sunucusuz işlem üzerinde çalışır. CLI veya SDK işlerinizdeki işlem adını atlayarak aşağıdaki iş türlerinde sunucusuz işlem kullanmak ve isteğe bağlı olarak örnek sayısı ve örnek türü açısından bir işin ihtiyaç duyacağı kaynakları sağlayın:

    • Etkileşimli işler ve dağıtılmış eğitim de dahil olmak üzere komut işleri
    • AutoML işleri
    • Süpürme işleri
    • Paralel işler
  • CLI aracılığıyla işlem hattı işleri için işlem hattı düzeyinde varsayılan işlem kullanın default_compute: azureml:serverless . SDK aracılığıyla işlem hattı işleri için kullanın default_compute="serverless". Örnek için bkz . İşlem hattı işi .

  • Studio'da (önizleme) bir eğitim işi gönderdiğinizde işlem türü olarak Sunucusuz'u seçin.

  • Azure Machine Learning tasarımcısı kullanırken, varsayılan işlem olarak Sunucusuz'a tıklayın.

  • Sorumlu yapay zeka panosu için sunucusuz işlem kullanabilirsiniz

Performans değerlendirmeleri

Sunucusuz işlem, eğitiminizi aşağıdaki yollarla hızlandırmaya yardımcı olabilir:

Kota yetersiz: Kendi işlem kümenizi oluşturduğunuzda, oluşturulacak VM boyutunu ve düğüm sayısını bulmak sizin sorumluluğunuzdadır. İşiniz çalıştığında, küme için yeterli kotanız yoksa iş başarısız olur. Sunucusuz işlem, varsayılan olarak uygun bir VM boyutu seçmek için kotanızla ilgili bilgileri kullanır.

Ölçeği azaltma iyileştirmesi: İşlem kümesinin ölçeği azaltıldığında, yeni bir işin ölçeği azaltmanın gerçekleşmesini beklemesi ve ardından işin çalıştırılabilmesi için ölçeği artırması gerekir. Sunucusuz işlemde ölçeği azaltmayı beklemeniz gerekmez ve işiniz başka bir kümede/düğümde çalışmaya başlayabilir (kotanız olduğu varsayılarak).

Küme meşgul iyileştirmesi: bir iş bir işlem kümesinde çalıştırıldığında ve başka bir iş gönderildiğinde, işiniz şu anda çalışan işin arkasında kuyruğa alınır. Sunucusuz işlemle, işi çalıştırmaya başlamak için başka bir düğüme/başka bir kümeye sahip olursunuz (kotanız olduğu varsayılarak).

Kota

İşi gönderirken, devam etmek için yeterli Azure Machine Learning işlem kotasına (hem çalışma alanı hem de abonelik düzeyi kotası) ihtiyacınız vardır. Sunucusuz işler için varsayılan VM boyutu bu kotaya göre seçilir. Kendi VM boyutunuzu/ailenizi belirtirseniz:

  • VM boyutunuz/aileniz için kotanız varsa ancak örnek sayısı için yeterli kotanız yoksa bir hata görürsünüz. Hata, örnek sayısını kota sınırınıza göre geçerli bir sayıya azaltmanızı veya bu VM ailesi için kota artışı istemenizi veya VM boyutunu değiştirmenizi önerir
  • Belirtilen VM boyutunuz için kotanız yoksa bir hata görürsünüz. Hata, bu VM ailesi için kotanız veya istek kotanız olan farklı bir VM boyutu seçmenizi önerir
  • VM ailesinin sunucusuz işi çalıştırması için yeterli kotanız varsa ancak diğer işler kotayı kullanıyorsa, kota kullanılabilir olana kadar işinizin kuyrukta beklemesi gerektiğini belirten bir ileti alırsınız

Azure portalında kullanımınızı ve kotanızı görüntülediğinizde sunucusuz işler tarafından kullanılan tüm kotayı görmek için "Sunucusuz" adını görürsünüz.

Kimlik desteği ve kimlik bilgisi geçişi

  • Kullanıcı kimlik bilgisi geçişi : Sunucusuz işlem, kullanıcı kimlik bilgisi geçişlerini tam olarak destekler. İşi gönderen kullanıcının kullanıcı belirteci depolama erişimi için kullanılır. Bu kimlik bilgileri Microsoft Entra Id'nizden alınıyor.

    from azure.ai.ml import command
    from azure.ai.ml import MLClient     # Handle to the workspace
    from azure.identity import DefaultAzureCredential     # Authentication package
    from azure.ai.ml.entities import ResourceConfiguration
    from azure.ai.ml.entities import UserIdentityConfiguration 
    
    credential = DefaultAzureCredential()
    # Get a handle to the workspace. You can find the info on the workspace tab on ml.azure.com
    ml_client = MLClient(
        credential=credential,
        subscription_id="<Azure subscription id>", 
        resource_group_name="<Azure resource group>",
        workspace_name="<Azure Machine Learning Workspace>",
    )
    job = command(
        command="echo 'hello world'",
        environment="AzureML-sklearn-1.0-ubuntu20.04-py38-cpu@latest",
            identity=UserIdentityConfiguration(),
    )
    # submit the command job
    ml_client.create_or_update(job)
    
  • Kullanıcı tarafından atanan yönetilen kimlik: Kullanıcı tarafından atanan yönetilen kimlikleyapılandırılmış bir çalışma alanınız varsa, bu kimliği depolama erişimi için sunucusuz iş ile kullanabilirsiniz.

    from azure.ai.ml import command
    from azure.ai.ml import MLClient     # Handle to the workspace
    from azure.identity import DefaultAzureCredential    # Authentication package
    from azure.ai.ml.entities import ResourceConfiguration
    from azure.ai.ml.entities import ManagedIdentityConfiguration
    
    credential = DefaultAzureCredential()
    # Get a handle to the workspace. You can find the info on the workspace tab on ml.azure.com
    ml_client = MLClient(
        credential=credential,
        subscription_id="<Azure subscription id>", 
        resource_group_name="<Azure resource group>",
        workspace_name="<Azure Machine Learning Workspace>",
    )
    job = command(
        command="echo 'hello world'",
        environment="AzureML-sklearn-1.0-ubuntu20.04-py38-cpu@latest",
            identity= ManagedIdentityConfiguration(),
    )
    # submit the command job
    ml_client.create_or_update(job)
    
    

Kullanıcı tarafından atanan yönetilen kimliği ekleme hakkında bilgi için bkz . Kullanıcı tarafından atanan yönetilen kimliği ekleme.

Komut işlerinin özelliklerini yapılandırma

Komut, süpürme ve AutoML işleri için işlem hedefi belirtilmezse işlem varsayılan olarak sunucusuz işlem olarak ayarlanır. Örneğin, bu komut işi için:

from azure.ai.ml import command
from azure.ai.ml import command 
from azure.ai.ml import MLClient # Handle to the workspace
from azure.identity import DefaultAzureCredential # Authentication package

credential = DefaultAzureCredential()
# Get a handle to the workspace. You can find the info on the workspace tab on ml.azure.com
ml_client = MLClient(
    credential=credential,
    subscription_id="<Azure subscription id>", 
    resource_group_name="<Azure resource group>",
    workspace_name="<Azure Machine Learning Workspace>",
)
job = command(
    command="echo 'hello world'",
    environment="AzureML-sklearn-1.0-ubuntu20.04-py38-cpu@latest",
)
# submit the command job
ml_client.create_or_update(job)

İşlem varsayılan olarak sunucusuz işlem olarak şu şekildedir:

  • Bu iş için tek düğüm. Varsayılan düğüm sayısı, işin türüne bağlıdır. Diğer iş türleri için aşağıdaki bölümlere bakın.
  • Kota, performans, maliyet ve disk boyutuna göre belirlenen CPU sanal makinesi.
  • Ayrılmış sanal makineler
  • Çalışma alanı konumu

Bu varsayılanları geçersiz kılabilirsiniz. Sunucusuz işlem için VM türünü veya düğüm sayısını belirtmek istiyorsanız, işinize ekleyin resources :

  • instance_type belirli bir VM'yi seçin. Belirli bir CPU/GPU VM boyutu istiyorsanız bu parametreyi kullanın

  • instance_count düğüm sayısını belirtmek için.

    from azure.ai.ml import command 
    from azure.ai.ml import MLClient # Handle to the workspace
    from azure.identity import DefaultAzureCredential # Authentication package
    from azure.ai.ml.entities import JobResourceConfiguration 
    
    credential = DefaultAzureCredential()
    # Get a handle to the workspace. You can find the info on the workspace tab on ml.azure.com
    ml_client = MLClient(
        credential=credential,
        subscription_id="<Azure subscription id>", 
        resource_group_name="<Azure resource group>",
        workspace_name="<Azure Machine Learning Workspace>",
    )
    job = command(
        command="echo 'hello world'",
        environment="AzureML-sklearn-1.0-ubuntu20.04-py38-cpu@latest",
        resources = JobResourceConfiguration(instance_type="Standard_NC24", instance_count=4)
    )
    # submit the command job
    ml_client.create_or_update(job)
    
  • İş katmanını değiştirmek için Ayrılmış VM'ler (job_tier: Standard) ile Düşük öncelik(jobtier: Spot arasında seçim yapmak için kullanınqueue_settings.

    from azure.ai.ml import command
    from azure.ai.ml import MLClient    # Handle to the workspace
    from azure.identity import DefaultAzureCredential    # Authentication package
    credential = DefaultAzureCredential()
    # Get a handle to the workspace. You can find the info on the workspace tab on ml.azure.com
    ml_client = MLClient(
        credential=credential,
        subscription_id="<Azure subscription id>", 
        resource_group_name="<Azure resource group>",
        workspace_name="<Azure Machine Learning Workspace>",
    )
    job = command(
        command="echo 'hello world'",
        environment="AzureML-sklearn-1.0-ubuntu20.04-py38-cpu@latest",
        queue_settings={
          "job_tier": "spot"  
        }
    )
    # submit the command job
    ml_client.create_or_update(job)
    

Komut işleri olan tüm alanlar için örnek

İşte işin kullanması gereken kimlik de dahil olmak üzere belirtilen tüm alanlara bir örnek. Çalışma alanı düzeyi yönetilen ağ izolasyonu otomatik olarak kullanıldığından sanal ağ ayarlarını belirtmeniz gerekmez.

from azure.ai.ml import command
from azure.ai.ml import MLClient      # Handle to the workspace
from azure.identity import DefaultAzureCredential     # Authentication package
from azure.ai.ml.entities import ResourceConfiguration
from azure.ai.ml.entities import UserIdentityConfiguration 

credential = DefaultAzureCredential()
# Get a handle to the workspace. You can find the info on the workspace tab on ml.azure.com
ml_client = MLClient(
    credential=credential,
    subscription_id="<Azure subscription id>", 
    resource_group_name="<Azure resource group>",
    workspace_name="<Azure Machine Learning Workspace>",
)
job = command(
    command="echo 'hello world'",
    environment="AzureML-sklearn-1.0-ubuntu20.04-py38-cpu@latest",
         identity=UserIdentityConfiguration(),
    queue_settings={
      "job_tier": "Standard"  
    }
)
job.resources = ResourceConfiguration(instance_type="Standard_E4s_v3", instance_count=1)
# submit the command job
ml_client.create_or_update(job)

Sunucusuz işlemle ilgili daha fazla eğitim örneğini şu konumda görüntüleyebilirsiniz:

AutoML işi

AutoML işleri için işlem belirtmeye gerek yoktur. Kaynaklar isteğe bağlı olarak belirtilebilir. Örnek sayısı belirtilmezse, max_concurrent_trials ve max_nodes parametrelerine göre varsayılan olarak belirlenir. Örnek türü olmayan bir AutoML görüntü sınıflandırması veya NLP görevi gönderirseniz GPU VM boyutu otomatik olarak seçilir. AutoML işini CLI'ler, SDK veya Studio aracılığıyla göndermek mümkündür. Studio'da sunucusuz işlem içeren AutoML işlerini göndermek için önce önizleme panelindeki Studio'da eğitim işi gönderme (önizleme) özelliğini etkinleştirin.

Tür veya örnek sayısını belirtmek istiyorsanız sınıfını ResourceConfiguration kullanın.

# Create the AutoML classification job with the related factory-function.
from azure.ai.ml.entities import ResourceConfiguration 

classification_job = automl.classification(
    experiment_name=exp_name,
    training_data=my_training_data_input,
    target_column_name="y",
    primary_metric="accuracy",
    n_cross_validations=5,
    enable_model_explainability=True,
    tags={"my_custom_tag": "My custom value"},
)

# Limits are all optional
classification_job.set_limits(
    timeout_minutes=600,
    trial_timeout_minutes=20,
    max_trials=max_trials,
    # max_concurrent_trials = 4,
    # max_cores_per_trial: -1,
    enable_early_termination=True,
)

# Training properties are optional
classification_job.set_training(
    blocked_training_algorithms=[ClassificationModels.LOGISTIC_REGRESSION],
    enable_onnx_compatible_models=True,
)

# Serverless compute resources used to run the job
classification_job.resources = 
ResourceConfiguration(instance_type="Standard_E4s_v3", instance_count=6)

İşlem hattı işi

İşlem hattı işi için sunucusuz işlem kullanmak için varsayılan işlem türünüz olarak belirtin "serverless" .

# Construct pipeline
@pipeline()
def pipeline_with_components_from_yaml(
    training_input,
    test_input,
    training_max_epochs=20,
    training_learning_rate=1.8,
    learning_rate_schedule="time-based",
):
    """E2E dummy train-score-eval pipeline with components defined via yaml."""
    # Call component obj as function: apply given inputs & parameters to create a node in pipeline
    train_with_sample_data = train_model(
        training_data=training_input,
        max_epochs=training_max_epochs,
        learning_rate=training_learning_rate,
        learning_rate_schedule=learning_rate_schedule,
    )

    score_with_sample_data = score_data(
        model_input=train_with_sample_data.outputs.model_output, test_data=test_input
    )
    score_with_sample_data.outputs.score_output.mode = "upload"

    eval_with_sample_data = eval_model(
        scoring_result=score_with_sample_data.outputs.score_output
    )

    # Return: pipeline outputs
    return {
        "trained_model": train_with_sample_data.outputs.model_output,
        "scored_data": score_with_sample_data.outputs.score_output,
        "evaluation_report": eval_with_sample_data.outputs.eval_output,
    }


pipeline_job = pipeline_with_components_from_yaml(
    training_input=Input(type="uri_folder", path=parent_dir + "/data/"),
    test_input=Input(type="uri_folder", path=parent_dir + "/data/"),
    training_max_epochs=20,
    training_learning_rate=1.8,
    learning_rate_schedule="time-based",
)

# set pipeline to use serverless compute
pipeline_job.settings.default_compute = "serverless"

Sunucusuz işlem Tasarım Aracı varsayılan işlem olarak da ayarlayabilirsiniz.

Sonraki adımlar

Sunucusuz işlemle ilgili daha fazla eğitim örneğini şu konumda görüntüleyebilirsiniz: