다음을 통해 공유


Azure Machine Learning 환경이란?

Azure Machine Learning 환경은 기계 학습 학습 또는 추론이 발생하는 환경을 캡슐화합니다. 학습 및 채점 스크립트에 대한 Python 패키지 및 소프트웨어 설정을 지정합니다. Machine Learning 작업 영역은 이러한 환경을 관리하고 버전을 지정하여 다양한 컴퓨팅 대상에서 재현 가능하고 감사 가능하며 이식 가능한 기계 학습 워크플로를 가능하게 합니다. Environment 개체를 사용하여 다음을 수행합니다.

  • 학습 스크립트를 개발합니다.
  • 대규모 모델 학습을 위한 Azure Machine Learning 컴퓨팅에서 동일한 환경을 재사용합니다.
  • 동일한 환경을 사용하여 모델을 배포합니다.
  • 기존 모델이 학습된 환경을 다시 확인합니다.

다음 다이어그램에서는 작업 구성(학습의 경우)과 추론 및 배포 구성(웹 서비스 배포의 경우)에서 하나의 Environment 개체를 사용하는 방법을 보여 줍니다.

기계 학습 워크플로의 환경 다이어그램

환경, 컴퓨팅 대상, 학습 스크립트는 함께 작업 구성, 즉 학습 작업의 전체 사양을 구성합니다.

환경 유형

환경은 큐레이팅,사용자 관리시스템 관리의 세 가지 범주로 분류됩니다.

큐레이팅된 환경은 Azure Machine Learning에서 제공하며 기본적으로 작업 영역에서 사용할 수 있습니다. 그대로 사용합니다. 여기에는 다양한 기계 학습 프레임워크를 시작하는 데 도움이 되는 Python 패키지 및 설정 컬렉션이 포함되어 있습니다. 이와 같이 미리 만들어진 환경에서는 배포 시간을 단축할 수 있습니다. Azure Machine Learning은 Microsoft에서 호스트하는 기계 학습레지스트리인 AzureML 레지스트리에서 큐레이팅된 환경을 호스트합니다. 전체 목록은 AzureML 레지스트리의 환경을 참조하세요.

사용자 관리 환경에서는 사용자가 사용자 환경을 설정하고 컴퓨팅 대상에 학습 스크립트에 필요한 모든 패키지를 설치해야 합니다. 또한 모델 배포에 필요한 종속성을 포함해야 합니다. 사용자 관리 환경은 이미지 구체화를 Azure Machine Learning에 위임하는 BYOC(Bring Your Own Container) 또는 Docker 빌드 컨텍스트일 수 있습니다. 큐레이팅된 환경과 마찬가지로 만들고 관리하는 기계 학습 레지스트리를 사용하여 작업 영역에서 사용자 관리 환경을 공유할 수 있습니다.

conda에서 Python 환경을 관리하려는 경우 시스템 관리 환경을 사용합니다. 새 conda 환경은 기본 docker 이미지를 토대로 conda 사양에서 구체화됩니다.

환경 만들기 및 관리

Azure Machine Learning Python SDK, Azure Machine Learning CLI, Azure Machine Learning 스튜디오 및 VS Code 확장에서 환경을 만들 수 있습니다. 각 클라이언트를 사용하면 필요한 경우 기본 이미지, Dockerfile 및 Python 계층을 사용자 지정할 수 있습니다.

특정 코드 샘플은 환경 사용 방법의 "환경 만들기" 섹션을 참조하세요.

작업 영역을 통해 환경을 관리할 수도 있습니다. 작업 영역을 사용하면 다음을 수행할 수 있습니다.

  • 환경을 등록합니다.
  • 작업 영역에서 학습 또는 배포에 사용할 환경을 가져옵니다.
  • 기존 환경을 편집하여 환경의 새 인스턴스를 만듭니다.
  • 시간 경과에 따른 환경의 변경 내용을 확인하여 재현 가능성을 확인합니다.
  • 사용자 환경에서 자동으로 Docker 이미지를 빌드합니다.

실험을 제출하면 서비스는 작업 영역에 "익명" 환경을 자동으로 등록합니다. 이러한 환경은 나열되지 않지만 버전을 사용하여 검색할 수 있습니다.

코드 샘플은 환경을 사용하는 방법의 "환경 관리" 섹션을 참조하세요.

환경 빌드, 캐싱, 재사용

Azure Machine Learning은 환경 정의를 Docker 이미지로 빌드합니다. 또한 후속 학습 작업 및 서비스 엔드포인트 배포에서 다시 사용할 수 있도록 환경을 캐시합니다. 학습 스크립트를 원격으로 실행하려면 Docker 이미지를 만들어야 합니다. 기본적으로 Azure Machine Learning은 작업 영역에 대한 전용 컴퓨팅 집합이 없는 경우 사용 가능한 작업 영역 서버리스 컴퓨팅 할당량 에서 이미지 빌드 대상을 관리합니다.

참고 항목

Azure Machine Learning 작업 영역의 모든 네트워크 제한에는 전용 사용자 관리형 이미지 빌드 컴퓨팅 설정이 필요할 수 있습니다. 작업 영역 리소스를 보호하려면 단계를 따르세요.

환경을 사용하여 작업 제출

환경을 사용하여 원격 작업을 처음 제출하거나 환경 인스턴스를 수동으로 만들 때 Azure Machine Learning은 제공된 사양에 대한 이미지를 빌드합니다. 결과 이미지는 작업 영역과 연결된 컨테이너 레지스트리 인스턴스에 캐시됩니다. 큐레이팅된 환경은 이미 Azure Machine Learning 레지스트리에 캐시되어 있습니다. 작업 실행이 시작될 때 컴퓨팅 대상은 관련 컨테이너 레지스트리에서 이미지를 검색합니다.

Docker 이미지로 환경 빌드

특정 환경 정의에 대한 이미지가 Azure Machine Learning 작업 영역과 연결된 컨테이너 레지스트리 인스턴스에 아직 없는 경우 서비스는 새 이미지를 빌드합니다. 시스템 관리 환경의 경우 이미지 빌드 프로세스는 다음 두 단계로 구성됩니다.

  1. 기본 이미지 다운로드 및 Docker 단계 실행
  2. 환경 정의에 지정된 Conda 종속성에 따라 Conda 환경 빌드

사용자 관리 환경의 경우 서비스는 제공된 Docker 컨텍스트 빌드를 있는 그대로 사용합니다. 이 경우 기본 이미지에 Python 패키지를 포함하거나 사용자 지정 Docker 단계를 지정하여 Python 패키지를 설치해야 합니다.

이미지 캐싱 및 재사용

다른 작업에 동일한 환경 정의를 사용하는 경우 Azure Machine Learning은 작업 영역과 연결된 컨테이너 레지스트리에서 캐시된 이미지를 다시 사용합니다.

캐시된 이미지의 세부 정보를 보려면 Azure Machine Learning 스튜디오의 환경 페이지를 확인하거나 MLClient.environments를 사용하여 환경을 가져오고 조사합니다.

캐시된 이미지를 다시 사용할지 또는 새 이미지를 빌드할지를 결정하기 위해 Azure Machine Learning은 환경 정의에서 해시 값을 계산합니다. 그런 다음 해시를 기존 환경의 해시와 비교합니다. 해시는 환경에 대한 고유 식별자 역할을 하며 환경 정의에 기반합니다.

  • 기본 이미지
  • 사용자 지정 docker 단계
  • Python 패키지

환경 이름 및 버전은 해시에 영향을 주지 않습니다. 환경의 이름을 바꾸거나 다른 환경과 동일한 설정 및 패키지를 사용하여 새 환경을 만드는 경우 해시 값은 동일하게 유지됩니다. 그러나 Python 패키지 추가 또는 제거 또는 패키지 버전 변경과 같은 환경 정의 변경으로 인해 결과 해시 값이 변경됩니다. 환경에서 종속성 또는 채널의 순서를 변경하면 해시가 변경되고 새 이미지 빌드가 필요합니다. 마찬가지로 큐레이팅된 환경을 변경하면 사용자 지정 환경이 생성됩니다.

참고 항목

환경의 이름을 변경하지 않고는 큐레이팅된 환경에 로컬 변경 내용을 제출할 수 없습니다. 접두사 "AzureML-" 및 "Microsoft"는 큐레이팅된 환경에만 예약되어 있으며, 이름이 둘 중 하나에서 시작되면 작업 제출이 실패합니다.

환경의 계산된 해시 값은 작업 영역 컨테이너 레지스트리의 해시와 비교됩니다. 일치 항목이 있는 경우 캐시된 이미지가 끌어와 사용됩니다. 그렇지 않으면 이미지 빌드가 트리거됩니다.

다음 다이어그램은 세 가지 환경 정의를 보여 줍니다. 그 중 두 가지는 이름과 버전이 다르지만 기본 이미지와 Python 패키지가 동일하므로 동일한 해시와 해당 캐시된 이미지가 생성됩니다. 세 번째 환경의 Python 패키지와 버전은 다르므로, 해시 및 캐시된 이미지도 달라집니다.

환경 캐싱 및 Docker 이미지의 다이어그램

작업 영역 컨테이너 레지스트리의 실제 캐시된 이미지에는 끝에 나타나는 해시와 비슷한 azureml/azureml_e9607b2514b066c851012848913ba19f 이름이 있습니다.

중요합니다

  • 고정되지 않은 패키지 종속성이 있는 환경을 만드는 경우(예: numpy) 환경은 환경이 만들어질 때 사용 가능한 패키지 버전을 사용합니다. 일치하는 정의를 사용하는 향후 환경은 원래 버전을 사용합니다.

    패키지를 업데이트하려면 이미지를 다시 빌드하려는 버전 번호를 지정합니다. 이 변경의 예는 numpynumpy==1.18.1으로 업데이트하는 것입니다. 중첩된 종속성을 비롯한 새 종속성이 설치되며 이전에 작동하던 시나리오가 중단될 수 있습니다.

  • 환경 정의와 같이 mcr.microsoft.com/azureml/openmpi3.1.2-ubuntu18.04 고정되지 않은 기본 이미지를 사용하면 태그가 업데이트될 때마다 latest 이미지가 다시 작성될 수 있습니다. 이 동작은 이미지가 최신 패치 및 시스템 업데이트를 수신하는 데 도움이 됩니다.

이미지 패치

Microsoft는 알려진 보안 취약성에 대한 기본 이미지를 패치합니다. 지원되는 이미지에 대한 업데이트는 2주마다 릴리스되며, 최신 버전의 이미지에는 30일 이전의 패치되지 않은 취약성이 없습니다. 패치된 이미지는 변경할 수 없는 새 태그와 함께 릴리스되며 :latest 태그는 패치된 이미지의 최신 버전으로 업데이트됩니다.

새로 패치된 이미지를 사용하려면 연결된 Azure Machine Learning 자산을 업데이트해야 합니다. 예를 들어 관리형 온라인 엔드포인트로 작업할 때 패치된 이미지를 사용하려면 엔드포인트를 다시 배포해야 합니다.

고유한 이미지를 제공하는 경우 이미지를 업데이트하고 이를 사용하는 Azure Machine Learning 자산을 업데이트해야 합니다.

기본 이미지에 대한 자세한 내용은 다음 링크를 참조하세요.