CLI(v1)을 사용하여 Azure Container Instances에 모델 배포

Important

이 문서에서는 CLI 및 SDK v1을 사용하여 모델을 배포하는 방법을 보여줍니다. v2에 권장되는 방법은 온라인 엔드포인트를 사용하여 기계 학습 모델 배포 및 점수 매기기를 참조하세요.

Azure Machine Learning을 사용하여 ACI(Azure Container Instances)에서 모델을 웹 서비스로 배포하는 방법을 알아봅니다. 다음과 같은 경우 Azure Container Instances를 사용합니다.

  • 자체 Kubernetes 클러스터를 관리하지 않는 것을 선호하는 경우
  • 가동 시간에 영향을 줄 수 있는 서비스 복제본이 하나만 있어도 괜찮은 경우

ACI에 대한 할당량 및 지역 가용성에 대한 정보는 Azure Container Instances에 대한 할당량 및 지역 가용성 문서를 참조하세요.

Important

웹 서비스로 배포하기 전에 로컬로 디버그하는 것이 좋습니다. 자세한 내용은 로컬로 디버그를 참조하세요.

또한 Azure Machine Learning - 로컬 Notebook에 배포를 참조할 수 있습니다.

필수 조건

제한 사항

Azure Machine Learning 작업 영역이 프라이빗 엔드포인트로 구성된 경우 VNet의 Azure Container Instances에 배포하는 것은 지원되지 않습니다. 대신 네트워크 격리에서 관리형 온라인 엔드포인트를 사용하는 것이 좋습니다.

ACI에 배포

Azure Container Instances에 모델을 배포하려면 필요한 컴퓨팅 리소스를 설명하는 배포 구성을 만듭니다. 예를 들어 코어 수 및 메모리입니다. 모델 및 웹 서비스를 호스트하는 데 필요한 환경을 설명하는 유추 구성도 필요합니다. 유추 구성을 만드는 방법에 대한 자세한 내용은 모델을 배포하는 방법 및 위치를 참조하세요.

참고 항목

  • ACI는 크기가 1GB 미만인 작은 모델에만 적합합니다.
  • 더 큰 개발/테스트 모델에는 단일 노드 AKS를 사용하는 것이 좋습니다.
  • 배포할 모델 수는 배포당(컨테이너당) 모델 1,000개로 제한됩니다.

SDK 사용

적용 대상:Python SDK azureml v1

from azureml.core.webservice import AciWebservice, Webservice
from azureml.core.model import Model

deployment_config = AciWebservice.deploy_configuration(cpu_cores = 1, memory_gb = 1)
service = Model.deploy(ws, "aciservice", [model], inference_config, deployment_config)
service.wait_for_deployment(show_output = True)
print(service.state)

이 예제에 사용된 클래스, 메서드 및 매개 변수에 대한 자세한 내용은 다음 참조 문서를 확인하세요.

Azure CLI 사용

적용 대상:Azure CLI ml 확장 v1

CLI를 사용하여 배포하려면 다음 명령을 사용합니다. mymodel:1은 등록된 모델의 이름과 버전으로 바꿉니다. myservice는 이 서비스를 제공할 이름으로 바꿉니다.

az ml model deploy -n myservice -m mymodel:1 --ic inferenceconfig.json --dc deploymentconfig.json

deploymentconfig.json 문서의 항목은 AciWebservice.deploy_configuration에 대한 매개 변수에 매핑됩니다. 다음 표에서는 JSON 문서의 엔터티 및 메서드에 대한 매개 변수 간의 매핑에 대해 설명합니다.

JSON 엔터티 메서드 매개 변수 설명
computeType 해당 없음 컴퓨팅 대상. ACI의 경우 값은 ACI여야 합니다.
containerResourceRequirements 해당 없음 CPU 및 메모리 엔터티에 대한 컨테이너입니다.
  cpu cpu_cores 할당할 CPU 코어 수입니다. 기본값은 0.1입니다
  memoryInGB memory_gb 이 웹 서비스에 할당할 메모리 양(GB)입니다. 기본값은 0.5입니다
location location 이 웹 서비스를 배포할 Azure 지역입니다. 지정하지 않으면 작업 영역 위치가 사용됩니다. 사용 가능한 지역에 대한 자세한 내용은 ACI 지역에서 확인할 수 있습니다.
authEnabled auth_enabled 이 웹 서비스에 대해 인증을 사용할지 여부. 기본값은 False입니다.
sslEnabled ssl_enabled 이 웹 서비스에 대해 SSL을 사용할지 여부. 기본값은 False입니다.
appInsightsEnabled enable_app_insights 이 웹 서비스에 대해 AppInsights를 사용할지 여부. 기본값은 False입니다.
sslCertificate ssl_cert_pem_file SSL을 사용하는 경우 필요한 인증서 파일
sslKey ssl_key_pem_file SSL을 사용하는 경우 필요한 키 파일
cname ssl_cname SSL을 사용하는 경우의 cname
dnsNameLabel dns_name_label 채점 엔드포인트에 대한 DNS 이름 레이블 지정하지 않으면 채점 엔드포인트에 대해 고유한 DNS 이름 레이블이 생성됩니다.

다음 JSON은 CLI에서 사용할 수 있는 배포 구성의 예제입니다.

{
    "computeType": "aci",
    "containerResourceRequirements":
    {
        "cpu": 0.5,
        "memoryInGB": 1.0
    },
    "authEnabled": true,
    "sslEnabled": false,
    "appInsightsEnabled": false
}

자세한 내용은 az ml model deploy 참조를 확인하세요.

VS Code 사용

VS Code에서 리소스를 관리하는 방법을 참조하세요.

Important

테스트를 위해 미리 ACI 컨테이너를 만들 필요가 없습니다. ACI 컨테이너는 필요에 따라 만들어집니다.

Important

생성된 모든 기본 ACI 리소스에 해시된 작업 영역 ID를 추가했습니다. 동일한 작업 영역의 모든 ACI 이름에는 동일한 접미사가 사용됩니다. Azure Machine Learning 서비스 이름은 "service_name"을 제공하는 동일한 고객이며 Azure Machine Learning SDK API를 사용하는 모든 사용자는 변경할 필요가 없습니다. 생성되는 기본 리소스의 이름에 대해서는 어떠한 보증도 하지 않습니다.

다음 단계