Aracılığıyla paylaş


Ö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:

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ı Noneunutmayı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 ScriptRunbir 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: