Azure Machine Learning (SDK v1) ile scikit-learn modellerini uygun ölçekte eğitin

ŞUNLAR IÇIN GEÇERLIDIR:Python SDK azureml v1

Bu makalede, scikit-learn eğitim betiklerinizi Azure Machine Learning ile çalıştırmayı öğrenin.

Bu makaledeki örnek betikler, scikit-learn'ün iris veri kümesini temel alan bir makine öğrenmesi modeli oluşturmak üzere iris çiçek görüntülerini sınıflandırmak için kullanılır.

İster sıfırdan bir makine öğrenmesi scikit-learn modeli eğitin ister mevcut bir modeli buluta taşıyın, Azure Machine Learning'i kullanarak esnek bulut işlem kaynaklarını kullanarak açık kaynak eğitim işlerinin ölçeğini genişletebilirsiniz. Azure Machine Learning ile üretim sınıfı modeller oluşturabilir, dağıtabilir, sürüm oluşturabilir ve izleyebilirsiniz.

Önkoşullar

Bu kodu bir Azure Machine Learning işlem örneğinde veya kendi Jupyter Notebook çalıştırabilirsiniz:

  • Azure Machine Learning işlem örneği

    • İşlem örneği oluşturmak için Hızlı Başlangıç: Azure Machine Learning'i kullanmaya başlama bölümünü tamamlayın. Her işlem örneği, SDK ve not defterleri örnek deposu ile önceden yüklenmiş ayrılmış bir not defteri sunucusu içerir.
    • Azure Machine Learning stüdyosu not defteri sekmesini seçin. Örnekler eğitim klasöründe, şu dizine giderek tamamlanmış ve genişletilmiş bir not defteri bulun: how-to-use-azureml > ml-frameworks > scikit-learn > train-hyperparameter-tune-deploy-with-sklearn klasörü.
    • Bu öğreticiyi tamamlamak için örnek eğitim klasöründeki önceden doldurulmuş kodu kullanabilirsiniz.
  • bir Jupyter Notebook sunucusu oluşturun ve aşağıdaki bölümlerde kodu çalıştırın.

Denemeyi ayarlama

Bu bölüm gerekli Python paketlerini yükleyerek, çalışma alanını başlatarak, eğitim ortamını tanımlayarak ve eğitim betiğini hazırlayarak eğitim denemesini ayarlar.

Çalışma alanı başlatma

Azure Machine Learning çalışma alanı, hizmetin en üst düzey kaynağıdır. Oluşturduğunuz tüm yapıtlarla çalışmak için merkezi bir yer sağlar. Python SDK'sında bir nesne oluşturarak workspace çalışma alanı yapıtlarına erişebilirsiniz.

Önkoşullar bölümünde oluşturulan dosyadan config.json bir çalışma alanı nesnesi oluşturun.

from azureml.core import Workspace

ws = Workspace.from_config()

Betikleri hazırlama

Bu öğreticide, train_iris.py eğitim betiği sizin için zaten sağlanmıştır. Uygulamada, herhangi bir özel eğitim betiğini olduğu gibi alabilmeniz ve kodunuzu değiştirmek zorunda kalmadan Azure Machine Learning ile çalıştırabilmeniz gerekir.

Not

  • Sağlanan eğitim betiği, betik içindeki nesneyi kullanarak Azure Machine Learning çalıştırmanızda bazı ölçümlerin nasıl günlüğe kaydedileceklerini Run gösterir.
  • Sağlanan eğitim betiği işlevden iris = datasets.load_iris() örnek verileri kullanır. Kendi verilerinizi kullanmak ve verilerinize erişmek için bkz. Eğitim sırasında verileri kullanılabilir hale getirmek için veri kümeleriyle eğitim yapma.

Ortamınızı tanımlama

Eğitim betiğinizin bağımlılıklarını kapsülleyen Azure Machine Learning Ortamı'nı tanımlamak için özel bir ortam tanımlayabilir veya azure machine learning seçilmiş ortamını kullanabilirsiniz.

Seçilmiş bir ortam kullanma

İsteğe bağlı olarak, kendi ortamınızı tanımlamak istemiyorsanız Azure Machine Learning önceden oluşturulmuş, seçilmiş ortamlar sağlar.

Seçilmiş bir ortam kullanmak istiyorsanız, bunun yerine aşağıdaki komutu çalıştırabilirsiniz:

from azureml.core import Environment

sklearn_env = Environment.get(workspace=ws, name='AzureML-Tutorial')

Özel ortam oluşturma

Kendi özel ortamınızı da oluşturabilirsiniz. Conda bağımlılıklarınızı YAML dosyasında tanımlayın; bu örnekte dosya olarak adlandırılır conda_dependencies.yml.

dependencies:
  - python=3.7
  - scikit-learn
  - numpy
  - pip:
    - azureml-defaults

Bu Conda ortamı belirtiminden bir Azure Machine Learning ortamı oluşturun. Ortam, çalışma zamanında bir Docker kapsayıcısına paketlenir.

from azureml.core import Environment

sklearn_env = Environment.from_conda_specification(name='sklearn-env', file_path='conda_dependencies.yml')

Ortam oluşturma ve kullanma hakkında daha fazla bilgi için bkz. Azure Machine Learning'de yazılım ortamları oluşturma ve kullanma.

Eğitim çalıştırmanızı yapılandırma ve gönderme

ScriptRunConfig Oluşturma

Eğitim betiğiniz, kullanılacak ortam ve üzerinde çalıştırılacak işlem hedefi dahil olmak üzere eğitim işinizin yapılandırma ayrıntılarını belirtmek için bir ScriptRunConfig nesnesi oluşturun. Eğitim betiğinizin tüm bağımsız değişkenleri, parametresinde arguments belirtilirse komut satırı aracılığıyla geçirilir.

Aşağıdaki kod, işinizi yerel makinenizde yürütülecek şekilde göndermek için bir ScriptRunConfig nesnesi yapılandıracaktır.

from azureml.core import ScriptRunConfig

src = ScriptRunConfig(source_directory='.',
                      script='train_iris.py',
                      arguments=['--kernel', 'linear', '--penalty', 1.0],
                      environment=sklearn_env)

Bunun yerine işinizi uzak bir kümede çalıştırmak istiyorsanız ScriptRunConfig parametresi için istenen işlem hedefini compute_target belirtebilirsiniz.

from azureml.core import ScriptRunConfig

compute_target = ws.compute_targets['<my-cluster-name>']
src = ScriptRunConfig(source_directory='.',
                      script='train_iris.py',
                      arguments=['--kernel', 'linear', '--penalty', 1.0],
                      compute_target=compute_target,
                      environment=sklearn_env)

Çalıştırmanızı gönderme

from azureml.core import Experiment

run = Experiment(ws,'Tutorial-TrainIRIS').submit(src)
run.wait_for_completion(show_output=True)

Uyarı

Azure Machine Learning, tüm kaynak dizini kopyalayarak eğitim betiklerini çalıştırır. Karşıya yüklemek istemediğiniz hassas verileriniz varsa bir .ignore dosyası kullanın veya dosyayı kaynak dizinine eklemeyin. Bunun yerine, Azure Machine Learning veri kümesini kullanarak verilerinize erişin.

Çalıştırma yürütmesi sırasında ne olur?

Çalıştırma yürütülürken aşağıdaki aşamalardan geçer:

  • Hazırlanıyor: Tanımlanan ortama göre bir docker görüntüsü oluşturulur. Görüntü çalışma alanının kapsayıcı kayıt defterine yüklenir ve sonraki çalıştırmalar için önbelleğe alınır. Günlükler ayrıca çalıştırma geçmişine akışla aktarılır ve ilerleme durumunu izlemek için görüntülenebilir. Bunun yerine seçilmiş bir ortam belirtilirse, seçilen ortamı destekleyen önbelleğe alınmış görüntü kullanılır.

  • Ölçeklendirme: Batch AI kümesinin çalıştırmayı yürütmek için şu anda kullanılabilir olandan daha fazla düğüme ihtiyacı varsa küme ölçeği artırmaya çalışır.

  • Çalışıyor: Betik klasöründeki tüm betikler işlem hedefine yüklenir, veri depoları bağlanır veya kopyalanır ve script yürütülür. stdout ve ./logs klasöründen çıkışlar çalıştırma geçmişine akışla aktarılır ve çalıştırmayı izlemek için kullanılabilir.

  • İşlem Sonrası: Çalıştırmanın ./outputs klasörü çalıştırma geçmişine kopyalanır.

Modeli kaydetme ve kaydetme

Modeli eğitdikten sonra kaydedebilir ve çalışma alanınıza kaydedebilirsiniz. Model kaydı, model yönetimini ve dağıtımı basitleştirmek için modellerinizi çalışma alanınızda depolamanıza ve sürüm oluşturmanıza olanak tanır.

Modeli kaydetmek için eğitim betiğinize aşağıdaki kodu (train_iris.py) ekleyin.

import joblib

joblib.dump(svm_model_linear, 'model.joblib')

Aşağıdaki kodla modeli çalışma alanınıza kaydedin. , model_framework_versionve resource_configurationparametrelerini model_frameworkbelirterek kod içermeyen model dağıtımı kullanılabilir hale gelir. Kod içermeyen model dağıtımı, modelinizi kayıtlı modelden bir web hizmeti olarak doğrudan dağıtmanıza olanak tanır ve ResourceConfiguration nesne web hizmeti için işlem kaynağını tanımlar.

from azureml.core import Model
from azureml.core.resource_configuration import ResourceConfiguration

model = run.register_model(model_name='sklearn-iris', 
                           model_path='outputs/model.joblib',
                           model_framework=Model.Framework.SCIKITLEARN,
                           model_framework_version='0.19.1',
                           resource_configuration=ResourceConfiguration(cpu=1, memory_in_gb=0.5))

Dağıtım

Yeni kaydettiğiniz model, Azure Machine Learning'deki diğer tüm kayıtlı modellerde olduğu gibi dağıtılabilir. Dağıtım nasıl yapılır, modelleri kaydetmeyle ilgili bir bölüm içerir, ancak zaten kayıtlı bir modeliniz olduğundan dağıtım için doğrudan [işlem hedefi oluşturmahow-to-deploy-and-where.md#choose-a-compute-target) bölümüne atlayabilirsiniz.

(Önizleme) Kod içermeyen model dağıtımı

Önemli

Bu özellik şu anda genel önizlemededir. Bu önizleme sürümü hizmet düzeyi sözleşmesi olmadan sağlanır ve üretim iş yükleri için bu sürümü önermeyiz. Bazı özellikler desteklenmiyor olabileceği gibi özellikleri sınırlandırılmış da olabilir.

Daha fazla bilgi için bkz. Microsoft Azure Önizlemeleri için Ek Kullanım Koşulları.

Geleneksel dağıtım yolu yerine scikit-learn için kod içermeyen dağıtım özelliğini (önizleme) de kullanabilirsiniz. Kod içermeyen model dağıtımı tüm yerleşik scikit-learn model türleri için desteklenir. Modelinizi yukarıda gösterildiği gibi , model_framework_versionve resource_configuration parametreleriyle model_frameworkkaydederek, statik işlevi kullanarak deploy() modelinizi dağıtabilirsiniz.

web_service = Model.deploy(ws, "scikit-learn-service", [model])

Not

Bu bağımlılıklar önceden oluşturulmuş scikit-learn çıkarım kapsayıcısında bulunur.

    - azureml-defaults
    - inference-schema[numpy-support]
    - scikit-learn
    - numpy

Tam nasıl yapılır , Azure Machine Learning'de dağıtımı daha ayrıntılı bir şekilde kapsar.

Sonraki adımlar

Bu makalede bir scikit-learn modeli eğitip kaydettiniz ve dağıtım seçenekleri hakkında bilgi edindiniz. Azure Machine Learning hakkında daha fazla bilgi edinmek için bu diğer makalelere bakın.