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.
- Azure Machine Learning SDK'sını (>= 1.13.0) yükleyin.
- Çalışma alanı yapılandırma dosyası oluşturun.
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_version
resource_configuration
parametrelerini model_framework
belirterek 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_version
ve resource_configuration
parametreleriyle model_framework
kaydederek, 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.