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.
- 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 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_version
ve 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 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_version
ve resource_configuration
parametreleriyle model_framework
kaydederek, 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.