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 작업 영역 자세한 내용은 Azure Machine Learning 작업 영역 만들기를 참조하세요.
작업 영역에 등록된 기계 학습 모델. 등록된 모델이 없는 경우 모델을 배포하는 방법 및 위치를 참조하세요.
Machine Learning Service에 대한 Azure CLI 확장(v1), Azure Machine Learning Python SDK 또는 Azure Machine Learning Visual Studio Code 확장.
Important
이 문서의 일부 Azure CLI 명령에서는
azure-cli-ml
또는 v1(Azure Machine Learning용 확장)을 사용합니다. v1 확장에 대한 지원은 2025년 9월 30일에 종료됩니다. v1 확장은 이 날짜까지 설치하고 사용할 수 있습니다.2025년 9월 30일 이전에
ml
또는 v2 확장으로 전환하는 것이 좋습니다. v2 확장에 대한 자세한 내용은 Azure ML CLI 확장 및 Python SDK v2를 참조하세요.이 문서의 Python 코드 조각에서는 다음 변수가 설정되었다고 가정합니다.
ws
- 작업 영역으로 설정.model
- 등록된 모델로 설정.inference_config
- 모델에 대한 유추 구성으로 설정.
이러한 변수를 설정하는 방법에 대한 자세한 내용은 모델을 배포하는 방법 및 위치를 참조하세요.
이 문서의 CLI 코드 조각에서는
inferenceconfig.json
문서를 만들었다고 가정합니다. 이 문서 만들기에 대한 자세한 내용은 모델을 배포하는 방법 및 위치를 참조하세요.
제한 사항
참고 항목
- 가상 네트워크에 Azure Container Instances를 배포하는 것은 지원되지 않습니다. 대신 네트워크 격리를 위해 관리되는 온라인 엔드포인트를 사용하는 것이 좋습니다.
- 효과적인 지원을 보장하려면 ACI 컨테이너에 필요한 로그를 제공해야 합니다. 이러한 로그가 없으면 기술 지원을 보장할 수 없습니다. 배포 구성에서 지정하여 ACI 컨테이너 로그를 효율적으로 관리하고 분석하여
enable_app_insights=True
로그 분석 도구를 사용하는 것이 좋습니다.
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 |
이 웹 서비스에 대해 TLS를 사용하도록 설정할지 여부를 나타냅니다. 기본값은 False입니다. |
appInsightsEnabled |
enable_app_insights |
이 웹 서비스에 대해 AppInsights를 사용할지 여부. 기본값은 False입니다. |
sslCertificate |
ssl_cert_pem_file |
TLS가 사용하도록 설정된 경우 필요한 인증서 파일 |
sslKey |
ssl_key_pem_file |
TLS가 사용하도록 설정된 경우 필요한 키 파일 |
cname |
ssl_cname |
TLS가 사용하도록 설정된 경우에 대한 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를 사용하는 모든 사용자는 변경할 필요가 없습니다. 생성되는 기본 리소스의 이름에 대해서는 어떠한 보증도 하지 않습니다.