CLI & SDK(v2)를 통해 Azure Machine Learning 환경 관리

적용 대상:Azure CLI ml 확장 v2(현재)Python SDK azure-ai-ml v2(현재)

Azure Machine Learning 환경은 작업 또는 배포에 대한 실행 환경을 정의하고 코드에 대한 의존도를 캡슐화합니다. Azure Machine Learning에서는 환경 사양을 사용하여 지정된 컴퓨팅 대상에서 학습 또는 채점 코드가 실행되는 Docker 컨테이너를 만듭니다. Conda 사양, Docker 이미지, Docker 빌드 컨텍스트에서 환경을 정의할 수 있습니다.

이 문서에서는 SDK 및 CLI(v2)를 사용하여 Azure Machine Learning 환경을 만들고 관리하는 방법을 알아봅니다.

필수 조건

이 문서의 단계를 수행하기 전에 다음과 같은 필수 구성 요소가 있는지 확인합니다.

  • Azure Machine Learning 작업 영역 리소스가 없으면 빠른 시작: 작업 영역 리소스 만들기 문서의 단계에서 리소스를 만듭니다.

  • Azure CLI 및 ml 확장 또는 Azure Machine Learning Python SDK v2:

    • Azure CLI 및 확장을 설치하려면 CLI(v2) 설치, 설정 및 사용을 참조하세요.

      Important

      이 문서의 CLI 예제에서는 Bash(또는 호환) 셸을 사용한다고 가정합니다. 예를 들어 Linux 시스템 또는 Linux용 Windows 하위 시스템에서 이러한 예제를 사용합니다.

    • Python SDK v2를 설치하려면 다음 명령을 사용합니다.

      pip install azure-ai-ml azure-identity
      

      기존 SDK 설치를 최신 버전으로 업데이트하려면 다음 명령을 사용합니다.

      pip install --upgrade azure-ai-ml azure-identity
      

      자세한 내용은 Azure Machine Learning용 Python SDK v2 설치를 참조하세요.

모든 기능을 갖춘 개발 환경을 위해서는 Visual Studio Code 및 Azure Machine Learning 확장을 사용하여 Azure Machine Learning 리소스를 관리하고 기계 학습 모델을 학습시킵니다.

예제 리포지토리 복제

학습 예를 실행하려면 먼저 리포지토리 예를 복제합니다. CLI 예의 경우 cli 디렉터리로 변경합니다. SDK 예의 경우 sdk/python/assets/environment 디렉터리로 변경합니다.

git clone --depth 1 https://github.com/Azure/azureml-examples

--depth 1은 리포지토리에 대한 최신 커밋만 복제하여 작업을 완료하는 시간을 줄입니다.

작업 영역에 연결

다음 탭을 사용하여 환경 작업에 사용할 방법을 선택합니다. 탭을 선택하면 이 문서의 모든 탭이 동일한 탭으로 자동 전환됩니다. 언제든지 다른 탭을 선택할 수 있습니다.

Azure CLI를 사용하는 경우 구독, 리소스 그룹 및 작업 영역 이름과 같은 식별자 매개 변수가 필요합니다. 각 명령에 대해 이러한 매개 변수를 지정할 수 있지만 모든 명령에 사용할 기본값을 설정할 수도 있습니다. 다음 명령을 사용하여 기본값을 설정합니다. <subscription ID>, <Azure Machine Learning workspace name><resource group>을 구성 값으로 바꿉니다.

az account set --subscription <subscription ID>
az configure --defaults workspace=<Azure Machine Learning workspace name> group=<resource group>

큐레이팅 환경

Azure Machine Learning에는 큐레이팅된 환경과 사용자 지정 환경이라는 두 가지 유형의 환경이 있습니다. 큐레이팅된 환경은 인기 있는 ML 프레임워크 및 도구를 포함하는 미리 정의된 환경입니다. 사용자 지정 환경은 사용자 정의되며 az ml environment create를 통해 만들 수 있습니다.

큐레이팅된 환경은 Azure Machine Learning에서 제공되며 기본적으로 사용할 수 있습니다. Azure Machine Learning에서는 최신 프레임워크 버전 릴리스로 이러한 환경을 정기적으로 업데이트하고 버그 수정 및 보안 패치로 유지 관리합니다. 캐시된 Docker 이미지로 지원되므로 작업 준비 비용과 모델 배포 시간이 줄어듭니다.

환경의 특정 버전이나 최신 버전을 참조하여 학습 또는 배포를 위해 이러한 큐레이팅된 환경을 기본 제공할 수 있습니다. 다음 구문을 사용합니다. azureml://registries/azureml/environment/<curated-environment-name>/versions/<version-number> 또는 azureml://registries/azureml/environment/<curated-environment-name>/labels/latest. 이러한 큐레이팅된 환경을 지원하는 Dockerfiles를 수정하여 고유한 사용자 지정 환경에 대한 참조로 사용할 수도 있습니다.

Azure Machine Learning 스튜디오 UI에서 또는 az ml environment list를 통해 CLI(v2)를 사용하여 사용 가능한 큐레이팅된 환경 집합을 볼 수 있습니다.

CLI 또는 SDK에서 큐레이팅된 환경으로 작업할 때 환경 이름은 AzureML-로 시작하고 그 뒤에 큐레이팅된 환경 이름이 옵니다. Azure Machine Learning 스튜디오를 사용하는 경우에는 이 접두사가 없습니다. 이러한 차이가 발생하는 이유는 스튜디오 UI가 큐레이팅된 환경과 사용자 지정 환경을 별도의 탭에 표시하므로 접두사가 필요하지 않기 때문입니다. CLI와 SDK에는 이러한 구분이 없으므로 접두사는 큐레이팅된 환경과 사용자 지정 환경을 구별하는 데 사용됩니다.

사용자 지정 환경 만들기

Docker 이미지, Docker 빌드 컨텍스트 및 Docker 이미지가 포함된 conda 사양에서 환경을 정의할 수 있습니다.

Docker 이미지에서 환경 만들기

Docker 이미지에서 환경을 정의하려면 Docker Hub 또는 Azure Container Registry 같은 레지스트리에 호스트되는 이미지의 이미지 URI를 제공합니다.

다음 예제는 Docker 이미지에서 정의된 환경에 대한 YAML 사양 파일입니다. Docker Hub 공식 PyTorch 리포지토리의 이미지는 YAML 파일의 image 속성을 통해 지정됩니다.

$schema: https://azuremlschemas.azureedge.net/latest/environment.schema.json
name: docker-image-example
image: pytorch/pytorch:latest
description: Environment created from a Docker image.

환경을 만들려면 다음을 수행합니다.

az ml environment create --file assets/environment/docker-image.yml

Azure Machine Learning에서는 일반적인 시스템 의존성을 가진 CPU 및 GPU Ubuntu Linux 기반 기본 이미지 세트를 유지 관리합니다. 예를 들어 GPU 이미지는 Miniconda, OpenMPI, CUDA, cuDNN, NCCL을 포함합니다. 사용자 환경에 이러한 이미지를 사용하거나 사용자 고유의 사용자 지정 이미지를 빌드할 때 해당 Dockerfiles를 참조로 사용할 수 있습니다.

기본 이미지 집합 및 해당 Dockerfiles는 AzureML - 컨테이너 리포지토리를 참조하세요.

Docker 빌드 컨텍스트에서 환경 만들기

미리 빌드된 이미지에서 환경을 정의하는 대신 Docker 빌드 컨텍스트에서 정의할 수도 있습니다. 이렇게 하려면 빌드 컨텍스트 역할을 하는 디렉터리를 지정합니다. 이 디렉터리에는 Dockerfile(1MB 이하) 및 이미지를 빌드하는 데 필요한 다른 파일이 포함되어야 합니다.

다음 예제는 빌드 컨텍스트에서 정의된 환경에 대한 YAML 사양 파일입니다. 빌드 컨텍스트 폴더의 로컬 경로는 build.path 필드에 지정되며 해당 빌드 컨텍스트 폴더 내의 Dockerfile에 대한 상대 경로는 build.dockerfile_path 필드에 지정됩니다. YAML 파일에서 build.dockerfile_path가 생략된 경우 Azure Machine Learning은 빌드 컨텍스트의 루트에서 Dockerfile이라는 Dockerfile을 찾습니다.

이 예제에서 빌드 컨텍스트에는 Dockerfile이라는 Dockerfile과 Python 패키지를 설치하기 위해 Dockerfile 내에서 참조되는 requirements.txt 파일이 포함됩니다.

$schema: https://azuremlschemas.azureedge.net/latest/environment.schema.json
name: docker-context-example
build:
  path: docker-contexts/python-and-pip

환경을 만들려면 다음을 수행합니다.

az ml environment create --file assets/environment/docker-context.yml

Azure Machine Learning은 환경이 만들어질 때 빌드 컨텍스트에서 이미지 빌드를 시작합니다. 빌드 상태를 모니터링하고 스튜디오 UI에서 빌드 로그를 볼 수 있습니다.

Conda 사양에서 환경 만들기

Conda 환경에 대한 종속성을 포함하는 표준 Conda YAML 구성 파일을 사용하여 환경을 정의할 수 있습니다. 이 표준 형식에 대한 자세한 내용은 수동으로 환경 만들기를 참조하세요.

이 환경에 대한 기본 Docker 이미지도 지정해야 합니다. Azure Machine Learning은 제공된 Docker 이미지 위에 Conda 환경을 빌드합니다. Docker 이미지에 일부 Python 종속성을 설치한 경우 이러한 패키지는 실행 환경에 존재하지 않으므로 런타임 오류가 발생합니다. 기본적으로 Azure Machine Learning은 사용자가 지정한 종속성을 사용하여 Conda 환경을 빌드하고 기본 이미지에 설치한 Python 라이브러리를 사용하는 대신 해당 환경에서 작업을 실행합니다.

다음 예제는 Conda 사양에서 정의된 환경에 대한 YAML 사양 파일입니다. 여기서 Azure Machine Learning 환경 YAML 파일의 conda 파일에 대한 상대 경로는 conda_file 속성을 통해 지정됩니다. 또는 별도의 파일에서 정의하는 대신 conda_file 속성을 사용하여 Conda 사양 인라인을 정의할 수 있습니다.

$schema: https://azuremlschemas.azureedge.net/latest/environment.schema.json
name: docker-image-plus-conda-example
image: mcr.microsoft.com/azureml/openmpi4.1.0-ubuntu20.04
conda_file: conda-yamls/pydata.yml
description: Environment created from a Docker image plus Conda environment.

환경을 만들려면 다음을 수행합니다.

az ml environment create --file assets/environment/docker-image-plus-conda.yaml

Azure Machine Learning에서는 작업 또는 배포에서 환경을 사용할 때 이 환경 사양에서 최종 Docker 이미지를 빌드합니다. 스튜디오 UI에서 환경 빌드를 수동으로 트리거할 수도 있습니다.

환경 관리

SDK 및 CLI(v2)를 사용하면 Azure Machine Learning 환경 자산의 수명 주기도 관리할 수 있습니다.

List

작업 영역의 모든 환경을 나열합니다.

az ml environment list

지정된 이름 아래에 모든 환경 버전을 나열합니다.

az ml environment list --name docker-image-example

표시

특정 환경의 세부 정보를 얻습니다.

az ml environment show --name docker-image-example --version 1

엽데이트

특정 환경의 변경 가능한 속성을 업데이트합니다.

az ml environment update --name docker-image-example --version 1 --set description="This is an updated description."

Important

환경의 경우 descriptiontags만 업데이트할 수 있습니다. 다른 모든 속성은 불변입니다. 이러한 속성을 변경해야 하는 경우 새 버전의 환경을 만들어야 합니다.

보관

환경을 보관하면 기본적으로 목록 쿼리(az ml environment list)에서 환경이 숨겨집니다. 워크플로에서 보관된 환경을 계속 참조하고 사용할 수 있습니다. 환경의 모든 버전 또는 특정 버전만 보관할 수 있습니다.

버전을 지정하지 않으면 해당 이름 아래의 모든 환경 버전이 보관됩니다. 보관된 환경 컨테이너 아래에 새 환경 버전을 만들면 해당 새 버전도 자동으로 보관됨으로 설정됩니다.

환경의 모든 버전 보관:

az ml environment archive --name docker-image-example

특정 환경 버전을 보관합니다.

az ml environment archive --name docker-image-example --version 1

교육용 환경 사용

학습 작업에 사용자 지정 환경을 사용하려면 작업 YAML 구성의 environment 필드를 지정합니다. environment: azureml:<environment-name>:<environment-version> 또는 environment: azureml:<environment-name>@latest(최신 버전의 환경 참조)를 통해 기존에 등록된 Azure Machine Learning 환경을 참조하거나 인라인으로 환경 사양을 정의할 수 있습니다. 환경 인라인을 정의하는 경우 이러한 환경은 “등록되지 않은” 환경으로 처리되고 환경 자산 레지스트리에서 추적되지 않기 때문에 nameversion 필드를 지정하지 마세요.

학습 작업을 제출하면 새 환경을 빌드하는 데 몇 분 정도 걸릴 수 있습니다. 시간은 필요한 종속성의 크기에 따라 달라집니다. 환경은 서비스에서 캐시됩니다. 환경 정의가 변경되지 않는 한, 전체 설정을 한 번만 하면 됩니다.


작업에서 환경을 사용하는 방법에 대한 자세한 내용은 모델 학습을 참조하세요.

모델 배포에 환경 사용

온라인 및 일괄 처리 채점 모두에 대한 모델 배포에 환경을 사용할 수도 있습니다. 이렇게 하려면 배포 YAML 구성에서 environment 필드를 지정합니다.

배포에서 환경을 사용하는 방법에 대한 자세한 내용은 온라인 엔드포인트를 사용하여 기계 학습 모델 배포 및 채점을 참조하세요.

다음 단계