온라인 엔드포인트에서 사용하기 위해 배포할 모델 지정
적용 대상:Azure CLI ml 확장 v2(현재)Python SDK azure-ai-ml v2(현재)
이 문서에서는 온라인 배포에 사용할 모델을 지정하는 다양한 방법에 대해 알아봅니다. Azure Machine Learning 온라인 엔드포인트에 모델을 배포하는 경우 다음 두 가지 방법 중 하나로 모델을 지정해야 합니다.
- 로컬 컴퓨터에서 모델 위치 경로를 제공합니다.
- 작업 영역에 이미 등록된 버전이 지정된 모델에 대한 참조를 제공합니다.
온라인 엔드포인트의 배포에 대한 모델을 지정하는 방법은 모델이 저장되는 위치에 따라 달라집니다.
Azure Machine Learning에서 배포를 만든 후 환경 변수 AZUREML_MODEL_DIR
은 모델이 저장된 Azure 내의 스토리지 위치를 가리킵니다.
로컬에 저장된 모델에 대한 배포
이 섹션에서는 로컬 폴더 구조의 예제를 사용하여 온라인 배포에 사용할 모델을 지정하는 방법을 보여 줍니다.
단일 로컬 모델에 대한 배포
배포의 로컬 컴퓨터에 있는 단일 모델을 사용하려면 배포 YAML 구성 파일의 model
에 대한 path
를 지정합니다. 다음 코드는 로컬 경로가 /Downloads/multi-models-sample/models/model_1/v1/sample_m1.pkl
인 배포 YAML의 예입니다.
$schema: https://azuremlschemas.azureedge.net/latest/managedOnlineDeployment.schema.json
name: blue
endpoint_name: my-endpoint
model:
path: /Downloads/multi-models-sample/models/model_1/v1/sample_m1.pkl
code_configuration:
code: ../../model-1/onlinescoring/
scoring_script: score.py
environment:
conda_file: ../../model-1/environment/conda.yml
image: mcr.microsoft.com/azureml/openmpi4.1.0-ubuntu20.04:latest
instance_type: Standard_DS3_v2
instance_count: 1
Azure Machine Learning에서 온라인 엔드포인트에 대한 배포를 만든 후 환경 변수 AZUREML_MODEL_DIR
은 모델이 저장된 Azure 내의 스토리지 위치를 가리킵니다. 예를 들어 /var/azureml-app/azureml-models/aaa-aaa-aaa-aaa-aaa/1
은 이제 모델 sample_m1.pkl
을 포함합니다.
채점 스크립트(score.py
) 내에서 스크립트의 init()
함수에 모델(이 예제에서는 sample_m1.pkl
)을 로드할 수 있습니다.
def init():
model_path = os.path.join(str(os.getenv("AZUREML_MODEL_DIR")), "sample_m1.pkl")
model = joblib.load(model_path)
여러 로컬 모델에 대한 배포
Azure CLI, Python SDK 및 기타 클라이언트 도구를 사용하면 배포 정의에서 배포당 하나의 모델만 지정할 수 있지만 모든 모델을 포함하는 모델 폴더를 파일 또는 하위 디렉터리로 등록하여 배포에서 여러 모델을 계속 사용할 수 있습니다. 배포 중에 등록된 이름과 버전을 지정할 수 있도록 모델 같은 자산을 등록하는 방법에 대한 자세한 내용은 모델 및 환경 등록을 참조하세요.
예제 로컬 폴더 구조에서는 models
폴더에 여러 모델이 있음을 알 수 있습니다. 이러한 모델을 사용하려면 배포 YAML에서 다음과 같이 models
폴더의 경로를 지정합니다.
$schema: https://azuremlschemas.azureedge.net/latest/managedOnlineDeployment.schema.json
name: blue
endpoint_name: my-endpoint
model:
path: /Downloads/multi-models-sample/models/
code_configuration:
code: ../../model-1/onlinescoring/
scoring_script: score.py
environment:
conda_file: ../../model-1/environment/conda.yml
image: mcr.microsoft.com/azureml/openmpi4.1.0-ubuntu20.04:latest
instance_type: Standard_DS3_v2
instance_count: 1
배포를 만든 후 환경 변수 AZUREML_MODEL_DIR
은 모델이 저장된 Azure 내의 스토리지 위치를 가리킵니다. 예를 들어 /var/azureml-app/azureml-models/bbb-bbb-bbb-bbb-bbb/1
은 이제 모델과 파일 구조를 포함합니다.
이 예제에서는 AZUREML_MODEL_DIR
폴더의 내용이 다음과 같이 표시됩니다.
채점 스크립트(score.py
) 내에서 init()
함수에 모델을 로드할 수 있습니다. 다음 코드는 sample_m1.pkl
모델을 로드합니다.
def init():
model_path = os.path.join(str(os.getenv("AZUREML_MODEL_DIR")), "models","model_1","v1", "sample_m1.pkl ")
model = joblib.load(model_path)
여러 모델을 하나의 배포에 배포하는 방법의 예제는 하나의 배포에 여러 모델 배포(CLI 예제) 및 여러 모델을 하나의 배포에 배포(SDK 예제)를 참조하세요.
팁
등록할 파일이 1500개 이상인 경우 모델을 등록할 때 파일 또는 하위 디렉터리를 .tar.gz로 압축하는 것이 좋습니다. 모델을 사용하려면 채점 스크립트에서 init()
함수의 파일 또는 하위 디렉터리를 압축 해제하면 됩니다. 또는 모델을 등록할 때 azureml.unpack
속성을 True
로 설정하여 파일 또는 하위 디렉터리의 압축을 자동으로 해제합니다. 두 경우 모두 파일 압축 해제는 초기화 단계에서 한 번 수행됩니다.
작업 영역에 등록된 모델에 대한 배포
배포 YAML에서 해당 이름을 참조하여 배포 정의에 등록된 모델을 사용할 수 있습니다. 예를 들어 다음 배포 YAML 구성은 등록된 model
이름을 azureml:local-multimodel:3
로 지정합니다.
$schema: https://azuremlschemas.azureedge.net/latest/managedOnlineDeployment.schema.json
name: blue
endpoint_name: my-endpoint
model: azureml:local-multimodel:3
code_configuration:
code: ../../model-1/onlinescoring/
scoring_script: score.py
environment:
conda_file: ../../model-1/environment/conda.yml
image: mcr.microsoft.com/azureml/openmpi4.1.0-ubuntu20.04:latest
instance_type: Standard_DS3_v2
instance_count: 1
이 예제에서는 local-multimodel:3
Azure Machine Learning 스튜디오의 모델 탭에서 볼 수 있는 다음 모델 아티팩트가 포함되어 있음을 고려합니다.
배포를 만든 후 환경 변수 AZUREML_MODEL_DIR
은 모델이 저장된 Azure 내의 스토리지 위치를 가리킵니다. 예를 들어 /var/azureml-app/azureml-models/local-multimodel/3
은 모델과 파일 구조를 포함합니다. AZUREML_MODEL_DIR
은 모델 아티팩트의 루트가 포함된 폴더를 가리킵니다. 이 예제에서는 AZUREML_MODEL_DIR
폴더의 콘텐츠가 다음과 같이 표시됩니다.
채점 스크립트(score.py
) 내에서 init()
함수에 모델을 로드할 수 있습니다. 예를 들어 diabetes.sav
모델을 로드합니다.
def init():
model_path = os.path.join(str(os.getenv("AZUREML_MODEL_DIR"), "models", "diabetes", "1", "diabetes.sav")
model = joblib.load(model_path)
모델 카탈로그에서 사용 가능한 모델에 대한 배포
Azure OpenAI 컬렉션에 있는 모델을 제외하고 모델 카탈로그의 모든 모델에 대해 배포를 위해 모델의 카드에 표시된 모델 ID를 사용할 수 있습니다. 모델 ID의 형식은 azureml://registries/{registry_name}/models/{model_name}/versions/{model_version}
입니다. 예를 들어 Meta Llama 3-8 B Instruct 모델의 모델 ID는 azureml://registries/azureml-meta/models/Meta-Llama-3-8B-Instruct/versions/2
입니다.
일부 모델 카드에는 배포에 모델 ID를 사용하는 방법을 보여 주는 예제 Notebook이 포함되어 있습니다.
조직의 레지스트리에서 사용할 수 있는 모델에 대한 배포
조직의 레지스트리에 있는 각 모델에는 azureml://registries/{registry_name}/models/{model_name}/versions/{model_version}
형식의 모델 ID가 있습니다. 동일한 레지스트리에 등록된 환경을 사용하도록 선택할 수도 있습니다.