Bagikan melalui


Melatih model menggunakan citra Docker kustom

BERLAKU UNTUK:SDK Python azureml v1

Dalam artikel ini, pelajari cara menggunakan citra Docker kustom saat Anda melatih model dengan Azure Machine Learning. Anda akan menggunakan contoh skrip dalam artikel ini untuk mengklasifikasikan citra hewan peliharaan dengan membuat jaringan saraf konvolusional.

Azure Machine Learning menyediakan citra dasar Docker default. Anda juga dapat menggunakan lingkungan Azure Machine Learning untuk menentukan citra dasar yang berbeda, seperti salah satu citra dasar Azure Machine Learning yang dikelola atau citra kustom Anda sendiri. Citra dasar kustom memungkinkan Anda mengelola dependensi dengan cermat dan mempertahankan kontrol yang lebih ketat atas versi komponen saat menjalankan pekerjaan pelatihan.

Prasyarat

Jalankan kode ini pada salah satu lingkungan tersebut:

Menyiapkan eksperimen pelatihan

Di bagian ini, Anda menyiapkan eksperimen pelatihan dengan menginisialisasi ruang kerja, mendefinisikan lingkungan Anda, dan mengonfigurasi target komputasi.

Menginisialisasi ruang kerja

Ruang kerja Azure Machine Learning adalah sumber daya tingkat teratas untuk layanan ini. Ruang kerja ini menyediakan tempat terpusat guna menangani semua artefak yang Anda buat. Di SDK Python, Anda dapat mengakses artefak ruang kerja dengan membuat objek Workspace.

Buat objek Workspace dari file config.json yang Anda buat sebagai prasyarat.

from azureml.core import Workspace

ws = Workspace.from_config()

Menentukan lingkungan Anda

Membuat objek Environment.

from azureml.core import Environment

fastai_env = Environment("fastai2")

Citra dasar yang ditentukan dalam kode berikut mendukung pustaka fast.ai, yang memungkinkan kemampuan pembelajaran mendalam terdistribusi. Untuk mengetahui informasi selengkapnya, lihat repositori Hub Docker fast.ai.

Saat menggunakan citra Docker kustom, Anda mungkin sudah menyiapkan lingkungan Python dengan benar. Dalam hal ini, atur bendera user_managed_dependencies ke True menggunakan lingkungan Python bawaan citra kustom Anda. Secara default, Azure Machine Learning membangun lingkungan Conda dengan dependensi yang Anda tentukan. Layanan ini akan menjalankan skrip di lingkungan tersebut alih-alih menggunakan pustaka Python apa pun yang Anda instal pada citra dasar.

fastai_env.docker.base_image = "fastdotai/fastai2:latest"
fastai_env.python.user_managed_dependencies = True

Menggunakan registri kontainer privat (opsional)

Untuk menggunakan citra dari registri kontainer privat yang tidak ada di ruang kerja Anda, gunakan docker.base_image_registry untuk menentukan alamat repositori dan nama pengguna dan kata sandi:

# 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"

Menggunakan Dockerfile kustom (opsional)

Anda juga dapat menggunakan Dockerfile kustom. Gunakan pendekatan ini jika Anda perlu menginstal paket non-Python sebagai dependensi. Ingatlah untuk mengatur citra dasar ke None.

# 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"

Penting

Azure Machine Learning hanya mendukung citra Docker yang menyediakan perangkat lunak berikut:

  • Ubuntu 18.04 atau yang lebih baru.
  • Conda 4.7.# atau yang lebih baru.
  • Python 3.7+.
  • Shell yang mematuhi POSIX yang tersedia di /bin/sh diperlukan dalam gambar kontainer apa pun yang digunakan untuk pelatihan.

Untuk mengetahui informasi selengkapnya tentang pembuatan dan pengelolaan lingkungan Azure Machine Learning, lihat Membuat dan menggunakan lingkungan perangkat lunak.

Membuat atau melampirkan target komputasi

Anda perlu membuat target komputasi untuk melatih model Anda. Dalam tutorial ini, Anda membuat AmlCompute sebagai sumber daya komputasi pelatihan Anda.

Pembuatan AmlCompute membutuhkan waktu beberapa menit. Jika sumber daya AmlCompute sudah ada di ruang kerja Anda, kode ini melompati proses pembuatan.

Seperti halnya layanan Azure lainnya, ada batasan pada sumber daya tertentu (misalnya, AmlCompute) yang terkait dengan Azure Machine Learning service. Untuk mengetahui informasi selengkapnya, lihat Batas default dan cara meminta kuota yang lebih tinggi.

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())

Penting

Menggunakan SKU CPU untuk setiap citra yang dibangun berdasarkan komputasi.

Mengonfigurasi pekerjaan pelatihan Anda

Untuk tutorial ini, gunakan skrip pelatihan train.py di GitHub. Dalam praktiknya, Anda dapat mengambil skrip pelatihan kustom apa pun, sebagaimana adanya, dan menjalankannya dengan Azure Machine Learning.

Buat sumber daya ScriptRunConfig untuk mengonfigurasi pekerjaan Anda agar berjalan pada target komputasi yang diinginkan.

from azureml.core import ScriptRunConfig

src = ScriptRunConfig(source_directory='fastai-example',
                      script='train.py',
                      compute_target=compute_target,
                      environment=fastai_env)

Mengirimkan pekerjaan pelatihan Anda

Saat Anda mengirimkan pelatihan yang dijalankan dengan menggunakan objek ScriptRunConfig, metode submit akan menampilkan objek jenis ScriptRun. Objek ScriptRun yang dikembalikan akan memberi Anda akses terprogram ke informasi tentang eksekusi pelatihan.

from azureml.core import Experiment

run = Experiment(ws,'Tutorial-fastai').submit(src)
run.wait_for_completion(show_output=True)

Peringatan

Azure Machine Learning menjalankan skrip pelatihan dengan menyalin seluruh direktori sumber. Jika Anda memiliki data sensitif yang tidak ingin diunggah, gunakan .ignore file atau jangan sertakan data tersebut dalam direktori sumber. Sebagai gantinya, akses data Anda dengan menggunakan datastore.

Langkah berikutnya

Dalam artikel ini, Anda melatih model dengan menggunakan citra Docker kustom. Lihat artikel lainnya ini untuk mempelajari Azure Machine Learning lebih lanjut: