Aracılığıyla paylaş


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

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

Bu makalede Azure Machine Learning ile scikit-learn eğitim betiklerinizi ç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'unuzda çalıştırabilirsiniz:

  • Azure Machine Learning işlem örneği

    • Hızlı Başlangıç: İşlem örneği oluşturmak için Azure Machine Learning'i kullanmaya başlayın. Her işlem örneği, SDK ile önceden yüklenmiş ayrılmış bir not defteri sunucusu ve not defterleri örnek deposu 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 workspace nesne oluşturarak ç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 , eğitim betiği train_iris.py sizin için zaten sağlanmıştır. Uygulamada, herhangi bir özel eğitim betiğini olduğu gibi alabilmeniz ve kodunuzu değiştirmenize gerek 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şlevinden iris = datasets.load_iris() örnek verileri kullanır. Kendi verilerinizi kullanmak ve verilere erişmek için, eğitim sırasında verileri kullanılabilir hale getirmek için veri kümeleriyle eğitmeyi öğrenin.

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'in 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. YAML dosyasında conda bağımlılıklarınızı tanımlama; 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ınız 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 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 compute_target istenen işlem hedefini 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, kaynak dizinin tamamını kopyalayarak eğitim betikleri çalıştırır. Karşıya yüklemek istemediğiniz hassas verileriniz varsa bir .ignore dosyası kullanın veya 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 de ç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 alınan çı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ını 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. , ve model_framework_versionresource_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 doğrudan bir web hizmeti olarak 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 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 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, yalnızca statik işlevini 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 modelini 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.