Özel Docker görüntüsü kullanarak modeli eğitin
ŞUNUN IÇIN GEÇERLIDIR: Python SDK azureml v1
Bu makalede, Azure Machine Learning ile model eğitirken özel bir Docker görüntüsü kullanmayı öğrenin. Bu makaledeki örnek betikleri kullanarak konvolutional sinir ağı oluşturarak evcil hayvan görüntülerini sınıflandıracaksınız.
Azure Machine Learning varsayılan bir Docker temel görüntüsü sağlar. Azure Machine Learning ortamlarını, bakımı yapılan Azure Machine Learning temel görüntülerinden biri veya kendi özel görüntünüz gibi farklı bir temel görüntü belirtmek için de kullanabilirsiniz. Özel temel görüntüler, eğitim işlerini çalıştırırken bağımlılıklarınızı yakından yönetmenize ve bileşen sürümleri üzerinde daha sıkı denetim sahibi olmanıza olanak tanır.
Önkoşullar
Kodu şu ortamlardan birinde çalıştırın:
- Azure Machine Learning işlem örneği (indirme veya yükleme gerekmez):
- SDK ve örnek depo ile önceden yüklenmiş ayrılmış bir not defteri sunucusu oluşturmaya başlamak için kaynak oluşturma öğreticisini tamamlayın.
- Kendi Jupyter Notebook sunucunuz:
- Çalışma alanı yapılandırma dosyası oluşturun.
- Azure Machine Learning SDK'sını yükleyin.
- İnternet'te kullanılabilen bir Azure kapsayıcı kayıt defteri veya başka bir Docker kayıt defteri oluşturun.
Eğitim denemesi ayarlama
Bu bölümde, bir çalışma alanını başlatarak, ortamınızı tanımlayarak ve işlem hedefi yapılandırarak eğitim denemenizi ayarlarsınız.
Ç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.
Workspace
Önkoşul olarak oluşturduğunuz config.json dosyasından bir nesne oluşturun.
from azureml.core import Workspace
ws = Workspace.from_config()
Ortamınızı tanımlama
Bir Environment
nesne oluşturun.
from azureml.core import Environment
fastai_env = Environment("fastai2")
Aşağıdaki kodda belirtilen temel görüntü, dağıtılmış derin öğrenme özelliklerine olanak tanıyan fast.ai kitaplığını destekler. Daha fazla bilgi için fast.ai Docker Hub deposuna bakın.
Özel Docker görüntünüzü kullanırken Python ortamınızı zaten düzgün bir şekilde ayarlamış olabilirsiniz. Bu durumda, bayrağını özel görüntünüzün user_managed_dependencies
yerleşik Python ortamını kullanacak şekilde True
ayarlayın. Varsayılan olarak, Azure Machine Learning belirttiğiniz bağımlılıklarla bir Conda ortamı oluşturur. Hizmet, temel görüntüye yüklediğiniz Python kitaplıklarını kullanmak yerine bu ortamda betiği çalıştırır.
fastai_env.docker.base_image = "fastdotai/fastai2:latest"
fastai_env.python.user_managed_dependencies = True
Özel kapsayıcı kayıt defteri kullanma (isteğe bağlı)
Çalışma alanınızda olmayan bir özel kapsayıcı kayıt defterinden görüntü kullanmak için deponun adresini ve kullanıcı adı ile parolayı belirtmek için kullanın docker.base_image_registry
:
# Set the container registry information.
fastai_env.docker.base_image_registry.address = "myregistry.azurecr.io"
fastai_env.docker.base_image_registry.username = "username"
fastai_env.docker.base_image_registry.password = "password"
Özel dockerfile kullanma (isteğe bağlı)
Özel bir Dockerfile kullanmak da mümkündür. Python dışı paketleri bağımlılık olarak yüklemeniz gerekiyorsa bu yaklaşımı kullanın. Temel görüntüyü olarak ayarlamayı None
unutmayın.
# Specify Docker steps as a string.
dockerfile = r"""
FROM mcr.microsoft.com/azureml/openmpi3.1.2-ubuntu18.04:20210615.v1
RUN echo "Hello from custom container!"
"""
# Set the base image to None, because the image is defined by Dockerfile.
fastai_env.docker.base_image = None
fastai_env.docker.base_dockerfile = dockerfile
# Alternatively, load the string from a file.
fastai_env.docker.base_image = None
fastai_env.docker.base_dockerfile = "./Dockerfile"
Önemli
Azure Machine Learning yalnızca aşağıdaki yazılımları sağlayan Docker görüntülerini destekler:
- Ubuntu 18.04 veya üzeri.
- Conda 4.7.# veya üzeri.
- Python 3.7+.
- Eğitim için kullanılan tüm kapsayıcı görüntülerinde /bin/sh konumunda kullanılabilen POSIX uyumlu bir kabuk gereklidir.
Azure Machine Learning ortamlarını oluşturma ve yönetme hakkında daha fazla bilgi için bkz . Yazılım ortamları oluşturma ve kullanma.
İşlem hedefi oluşturma veya ekleme
Modelinizi eğitmek için bir işlem hedefi oluşturmanız gerekir. Bu öğreticide, eğitim işlem kaynağınız olarak oluşturacaksınız AmlCompute
.
oluşturma AmlCompute
işlemi birkaç dakika sürer. AmlCompute
Kaynak zaten çalışma alanınızdaysa, bu kod oluşturma işlemini atlar.
Diğer Azure hizmetlerinde olduğu gibi, Azure Machine Learning hizmetiyle ilişkili belirli kaynaklarda (örneğin, AmlCompute
) sınırlar vardır. Daha fazla bilgi için bkz . Varsayılan sınırlar ve daha yüksek bir kota isteme.
from azureml.core.compute import ComputeTarget, AmlCompute
from azureml.core.compute_target import ComputeTargetException
# Choose a name for your cluster.
cluster_name = "gpu-cluster"
try:
compute_target = ComputeTarget(workspace=ws, name=cluster_name)
print('Found existing compute target.')
except ComputeTargetException:
print('Creating a new compute target...')
compute_config = AmlCompute.provisioning_configuration(vm_size='STANDARD_NC6',
max_nodes=4)
# Create the cluster.
compute_target = ComputeTarget.create(ws, cluster_name, compute_config)
compute_target.wait_for_completion(show_output=True)
# Use get_status() to get a detailed status for the current AmlCompute.
print(compute_target.get_status().serialize())
Önemli
İşlem üzerinde herhangi bir görüntü derlemesi için CPU SKU'larını kullanın.
Eğitim işinizi yapılandırma
Bu öğretici için GitHub'da train.py eğitim betiğini kullanın. Uygulamada herhangi bir özel eğitim betiğini alıp Azure Machine Learning ile olduğu gibi çalıştırabilirsiniz.
İşinizi istenen işlem hedefinde çalıştıracak şekilde yapılandırmak için bir ScriptRunConfig
kaynak oluşturun.
from azureml.core import ScriptRunConfig
src = ScriptRunConfig(source_directory='fastai-example',
script='train.py',
compute_target=compute_target,
environment=fastai_env)
Eğitim işinizi gönderme
Bir nesne kullanarak ScriptRunConfig
bir eğitim çalıştırması gönderdiğinizde submit
, yöntemi türünde ScriptRun
bir nesne döndürür. Döndürülen ScriptRun
nesne, eğitim çalıştırması hakkındaki bilgilere programlı erişim sağlar.
from azureml.core import Experiment
run = Experiment(ws,'Tutorial-fastai').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 dizine eklemeyin. Bunun yerine, bir veri deposu kullanarak verilerinize erişin.
Sonraki adımlar
Bu makalede, özel bir Docker görüntüsü kullanarak modeli eğitmişsinizdir. Azure Machine Learning hakkında daha fazla bilgi edinmek için şu diğer makalelere bakın: