다음을 통해 공유


사용자 지정 Docker 이미지를 사용하여 모델 학습

적용 대상:Python용 Azure Machine Learning SDK v1

중요한

이 문서에서는 Azure Machine Learning SDK v1 사용에 대한 정보를 제공합니다. SDK v1은 2025년 3월 31일부터 더 이상 사용되지 않습니다. 지원은 2026년 6월 30일에 종료됩니다. 해당 날짜까지 SDK v1을 설치하고 사용할 수 있습니다.

2026년 6월 30일 이전에 SDK v2로 전환하는 것이 좋습니다. SDK v2에 대한 자세한 내용은 Azure Machine Learning CLI 및 Python SDK v2란?SDK v2 참조를 참조하세요.

이 문서에서는 사용자 지정 Docker 이미지를 사용하여 Azure Machine Learning을 사용하여 모델을 학습시키는 방법을 설명합니다. 예제 스크립트는 나선형 신경망을 만들어 이미지를 분류하는 방법을 보여 줍니다.

Azure Machine Learning은 기본 Docker 기본 이미지를 제공합니다. Azure Machine Learning 환경을 사용하여 유지 관리되는 Azure Machine Learning 기본 이미지 또는 사용자 지정 이미지와 같은 다른 기본 이미지를 지정할 수도 있습니다. 사용자 지정 기본 이미지를 사용하면 학습 작업을 실행할 때 종속성을 면밀히 관리하고 구성 요소 버전을 보다 엄격하게 제어할 수 있습니다.

필수 조건

예제 코드를 실행하려면 구성에 다음 환경 중 하나가 포함되어야 합니다.

  • Machine Learning SDK 및 샘플 리포지토리가 미리 로드된 전용 Notebook 서버가 있는 Azure Machine Learning 컴퓨팅 인스턴스입니다.

    이 구성에는 다운로드 또는 기타 설치가 필요하지 않습니다. 이 환경을 준비하려면 시작할 리소스 만들기를 참조하세요.

  • Jupyter Notebook 서버. 다음 리소스는 이 환경을 준비하는 데 도움이 되는 지침을 제공합니다.

학습 실험 설정

첫 번째 작업은 Machine Learning 작업 영역을 초기화하고, 환경을 정의하고, 컴퓨팅 대상을 구성하여 학습 실험을 설정하는 것입니다.

작업 영역 초기화

Azure Machine Learning 작업 영역은 서비스의 최상위 리소스입니다. 만드는 모든 아티팩트를 사용할 수 있는 중앙 집중식 위치를 제공합니다. Python SDK에서 Workspace 개체를 만들어 작업 영역 아티팩트에 액세스할 수 있습니다.

필요에 따라 사전 요구 사항으로 만든 config.json 파일에서 Workspace 개체를 생성합니다.

from azureml.core import Workspace

ws = Workspace.from_config()

환경 정의

Environment 개체 만들기

from azureml.core import Environment

fastai_env = Environment("fastai2")

다음 코드에서 지정된 기본 이미지는 분산 딥러닝 기능을 허용하는 fast.ai 라이브러리를 지원합니다. 자세한 내용은 fast.ai Docker Hub 리포지토리를 참조하세요.

사용자 지정 Docker 이미지를 사용하는 경우 이미 Python 환경이 제대로 설정되어 있을 수 있습니다. 이 경우 user_managed_dependencies 플래그를 True로 설정하여 사용자 지정 이미지의 기본 제공 Python 환경을 사용합니다. 기본적으로 Azure Machine Learning은 사용자가 지정한 종속성이 있는 Conda 환경을 구축합니다. 서비스는 기본 이미지에 설치한 Python 라이브러리를 사용하는 대신 해당 환경에서 스크립트를 실행합니다.

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

중요한

Azure Machine Learning은 다음 소프트웨어를 제공하는 Docker 이미지만 지원합니다.

  • Ubuntu 18.04 이상
  • Conda 4.7.# 이상
  • Python 3.7 이상
  • /bin/sh에서 사용할 수 있는 POSIX 규격 셸은 학습에 사용되는 모든 컨테이너 이미지에 필요합니다.

Azure Machine Learning 환경을 만들고 관리하는 방법에 대한 자세한 내용은 소프트웨어 환경 만들기 및 사용을 참조하세요.

컴퓨팅 대상 만들기 또는 연결

모델 학습을 위한 컴퓨팅 대상을 만들어야 합니다. 이 자습서에서는 학습 컴퓨팅 리소스로 AmlCompute를 만듭니다.

AmlCompute를 만드는 데 몇 분 정도 걸립니다. 작업 영역에 이미 AmlCompute 리소스가 있는 경우 이 코드는 만들기 프로세스를 건너뜁니다.

다른 Azure 서비스와 마찬가지로, Azure Machine Learning 서비스와 연결된 특정 리소스(예: AmlCompute)에 대한 한도가 있습니다. 자세한 내용은 기본 한도 및 더 높은 할당량을 요청하는 방법을 참조하세요.

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

중요한

컴퓨팅 기반 이미지 빌드에 CPU SKU를 사용합니다.

학습 작업 구성

이 자습서의 경우 GitHub에서 학습 스크립트 train.py를 사용합니다. 실제로, 사용자 지정 학습 스크립트를 변경하지 않고 그대로 Azure Machine Learning을 사용하여 실행할 수 있습니다.

원하는 ScriptRunConfig에서 실행할 작업을 구성하는 리소스를 만듭니다.

from azureml.core import ScriptRunConfig

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

학습 작업 제출

ScriptRunConfig 개체를 사용하여 학습 실행을 제출하는 경우 submit 메서드는 ScriptRun 형식의 개체를 반환합니다. 반환된 ScriptRun 개체는 학습 실행에 대한 정보에 프로그래밍 방식의 액세스를 제공합니다.

from azureml.core import Experiment

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

경고

Azure Machine Learning는 전체 원본 디렉터리를 복사하여 학습 스크립트를 실행합니다. 업로드를 원하지 않는 중요한 데이터가 있는 경우 .ignore 파일을 사용하거나 데이터를 소스 디렉터리에서 제외합니다. 대신 데이터 저장소를 사용하여 데이터에 액세스합니다.