Azure Machine Learning에서 등록된 모델 작업
적용 대상:Azure CLI ml 확장 v2(현재)Python SDK azure-ai-ml v2(현재)
이 문서에서는 다음을 사용하여 Azure Machine Learning에서 모델을 등록하고 작업하는 방법을 알아봅니다.
- Azure Machine Learning 스튜디오 UI.
- Azure Machine Learning V2 CLI.
- Python Azure Machine Learning V2 SDK.
다음 방법에 대해 설명합니다.
- 로컬 파일, 데이터 저장소 또는 작업 출력에서 모델 레지스트리에 등록된 모델을 만듭니다.
- 사용자 지정, MLflow, Triton과 같은 다양한 유형의 모델에서 작업합니다.
- 학습 작업에서 모델을 입력 또는 출력으로 사용합니다.
- 모델 자산의 수명 주기를 관리합니다.
모델 등록
모델 등록을 통해 Azure 클라우드의 작업 영역에서 모델을 저장하고 버전을 지정할 수 있습니다. 모델 레지스트리에서는 학습된 모델을 구성하고 추적할 수 있습니다. Azure CLI, Python SDK 또는 Machine Learning 스튜디오 UI를 사용하여 Azure Machine Learning에서 모델을 자산으로 등록할 수 있습니다.
지원되는 경로
모델을 등록하려면 데이터 또는 작업 위치를 가리키는 경로를 지정해야 합니다. 다음 표에서는 Azure Machine Learning에서 지원하는 다양한 데이터 위치와 path
매개 변수에 대한 구문을 보여 줍니다.
위치 | 구문 |
---|---|
수집 | <model-folder>/<model-filename> |
Azure Machine Learning 데이터 저장소 | azureml://datastores/<datastore-name>/paths/<path_on_datastore> |
Azure Machine Learning 작업 | azureml://jobs/<job-name>/outputs/<output-name>/paths/<path-to-model-relative-to-the-named-output-location> |
MLflow 작업 | runs:/<run-id>/<path-to-model-relative-to-the-root-of-the-artifact-location> |
Machine Learning 작업 영역의 모델 자산 | azureml:<model-name>:<version> |
Machine Learning 레지스트리의 모델 자산 | azureml://registries/<registry-name>/models/<model-name>/versions/<version> |
지원되는 모드
입력 또는 출력에 모델을 사용하는 경우 다음 모드 중 하나를 지정할 수 있습니다. 예를 들어 모델을 읽기 전용으로 탑재할지 아니면 컴퓨팅 대상에 다운로드할지 지정할 수 있습니다.
ro_mount
: 데이터를 컴퓨팅 대상에 읽기 전용으로 탑재합니다.rw_mount
: 데이터를 읽기/쓰기로 탑재합니다.download
: 데이터를 컴퓨팅 대상에 다운로드합니다.upload
: 컴퓨팅 대상에서 데이터를 업로드합니다.direct
: URI를 문자열로 전달합니다.
다음 표에서는 다양한 모델 유형 입력 및 출력에 사용할 수 있는 모드 옵션을 보여 줍니다.
Type | upload |
download |
ro_mount |
rw_mount |
direct |
---|---|---|---|---|---|
custom 파일 입력 |
|||||
custom 폴더 입력 |
✓ | ✓ | ✓ | ||
mlflow 입력 |
✓ | ✓ | |||
custom 파일 출력 |
✓ | ✓ | ✓ | ||
custom 폴더 출력 |
✓ | ✓ | ✓ | ||
mlflow 출력 |
✓ | ✓ | ✓ |
필수 조건
- Azure Machine Learning의 무료 또는 유료 버전이 포함된 Azure 구독입니다. Azure 구독이 없는 경우 시작하기 전에 체험 계정을 만듭니다.
- Azure Machine Learning 작업 영역
이 문서의 코드 샘플을 실행하고 Azure Machine Learning V2 CLI 또는 Python Azure Machine Learning V2 SDK를 사용하려면 다음도 필요합니다.
Azure CLI 버전 2.38.0 이상 설치.
다음 명령을 실행하여 설치된
ml
확장의 V2. 자세한 내용은 CLI(v2) 설치, 설정 및 사용을 참조하세요.az extension add -n ml
참고 항목
V2는 완전한 이전 버전과의 호환성을 제공합니다. v1 SDK 또는 CLI에서 모델 자산을 계속 사용할 수 있습니다. v1 CLI 또는 SDK에 등록된 모든 모델에는 custom
형식이 할당됩니다.
스튜디오 UI를 사용하여 모델 등록
Azure Machine Learning 스튜디오 UI를 사용하여 모델을 등록하려면 다음을 수행합니다.
스튜디오의 작업 영역의 왼쪽 탐색 영역에서 모델을 선택합니다.
모델 목록 페이지에서 등록을 선택하고 드롭다운 목록에서 다음 위치 중 하나를 선택합니다.
- 로컬 파일에서
- 작업 출력에서
- 데이터 저장소에서
- 로컬 파일에서(프레임워크 기반)
첫 번째 모델 등록 화면에서 다음을 수행합니다.
- 모델에 대한 로컬 파일, 데이터 저장소 또는 작업 출력으로 이동합니다.
- 입력 모델 유형(MLflow, Triton 또는 지정되지 않은 형식)을 선택합니다.
모델 설정 화면에서 등록된 모델에 대한 이름 및 기타 선택 설정을 제공하고 다음을 선택합니다.
검토 화면에서 구성을 검토한 다음, 등록을 선택합니다.
Azure CLI 또는 Python SDK를 사용하여 모델 등록
다음 코드 조각에서는 Azure CLI 또는 Python SDK를 사용하여 Azure Machine Learning에서 모델을 자산으로 등록하는 방법을 설명합니다. 이러한 코드 조각은 custom
및 mlflow
모델 유형을 사용합니다.
custom
유형은 Azure Machine Learning에서 현재 지원하지 않는 사용자 지정 표준으로 학습된 모델 파일 또는 폴더를 참조합니다.mlflow
유형은 MLflow를 사용하여 학습된 모델을 참조합니다. MLflow 학습 모델은 MLmodel 파일, model 파일, conda dependencies 파일 및 requirements.txt 파일이 포함된 폴더에 있습니다.
팁
azureml-examples 리포지토리에서 model.ipynb Notebook을 실행하여 다음 샘플의 Python 버전을 따를 수 있습니다.
작업 영역에 연결
작업 영역은 Azure Machine Learning의 최상위 리소스로, Azure Machine Learning을 사용할 때 만든 모든 아티팩트를 사용할 수 있는 중앙 집중식 환경을 제공합니다. 이 섹션에서는 Azure Machine Learning 작업 영역에 연결하여 등록된 모델을 만듭니다.
az login
을 실행하고 프롬프트를 따라 Azure에 로그인합니다.다음 명령에서
<subscription-id>
,<workspace-name>
,<resource-group>
,<location>
자리 표시자를 사용자 환경의 값으로 바꿉니다.az account set --subscription <subscription-id> az configure --defaults workspace=<workspace-name> group=<resource-group> location=<location>
등록된 모델 만들기
다음과 같은 모델에서 등록된 모델을 만들 수 있습니다.
- 로컬 컴퓨터에 있는 모델.
- Azure Machine Learning 데이터 저장소에 있는 모델.
- Azure Machine Learning 작업의 출력.
로컬 파일 또는 폴더
YAML 파일 <file-name>.yml을 만듭니다. 파일에서 등록된 모델의 이름, 로컬 모델 파일의 경로, 설명을 제공합니다. 예시:
$schema: https://azuremlschemas.azureedge.net/latest/model.schema.json name: local-file-example path: mlflow-model/model.pkl description: Model created from local file.
YAML 파일의 이름을 사용하여 다음 명령을 실행합니다.
az ml model create -f <file-name>.yml
전체 예제는 모델 YAML을 참조하세요.
Datastore
지원되는 URI 형식을 사용하여 클라우드 경로에서 모델을 만들 수 있습니다.
다음 예제에서는 azureml://datastores/<datastore-name>/paths/<path_on_datastore>
구문을 사용하여 데이터 저장소의 경로를 가리키는 약식 azureml
스키마를 사용합니다.
az ml model create --name my-model --version 1 --path azureml://datastores/myblobstore/paths/models/cifar10/cifar.pt
전체 예제는 CLI 참조를 참조하세요.
작업 출력
모델 데이터가 작업 출력에서 가져온 경우 모델 경로를 지정하는 두 가지 옵션이 있습니다. MLflow runs:
URI 형식 또는 azureml://jobs
URI 형식을 사용할 수 있습니다.
참고 항목
아티팩트 예약 키워드는 기본 아티팩트 위치의 출력을 나타냅니다.
MLflow 실행: URI 형식
이 옵션은 MLflow
runs:
URI 형식에 이미 익숙한 MLflow 사용자에게 가장 적합합니다. 이 옵션은 기본 아티팩트 위치(모든 MLflow 로깅 모델 및 아티팩트가 있는 위치)의 아티팩트에서 모델을 만듭니다. 또한 이 옵션은 등록된 모델과 모델이 생성된 실행 간에 계보를 설정합니다.형식:
runs:/<run-id>/<path-to-model-relative-to-the-root-of-the-artifact-location>
예시:
az ml model create --name my-registered-model --version 1 --path runs:/my_run_0000000000/model/ --type mlflow_model
azureml://jobs URI 형식
azureml://jobs
참조 URI 옵션을 사용하면 아티팩트의 모델을 작업의 출력 경로에 등록할 수 있습니다. 이 형식은azureml://datastores
참조 URI 형식과 일치하며 기본 아티팩트 위치 이외의 명명된 출력에서 아티팩트 참조를 지원합니다.MLflow를 사용하여 학습 스크립트 내에서 모델을 직접 등록하지 않은 경우 이 옵션을 사용하여 등록된 모델과 학습된 작업 간에 계보를 설정할 수 있습니다.
형식:
azureml://jobs/<run-id>/outputs/<output-name>/paths/<path-to-model>
- 기본 아티팩트 위치:
azureml://jobs/<run-id>/outputs/artifacts/paths/<path-to-model>/
. 이 위치는 MLflowruns:/<run-id>/<model>
과 동일합니다. - 명명된 출력 폴더:
azureml://jobs/<run-id>/outputs/<named-output-folder>
- 명명된 출력 폴더 내의 특정 파일:
azureml://jobs/<run-id>/outputs/<named-output-folder>/paths/<model-filename>
- 명명된 출력 폴더 내의 특정 폴더 경로:
azureml://jobs/<run-id>/outputs/<named-output-folder>/paths/<model-folder-name>
예시:
명명된 출력 폴더의 모델 저장:
az ml model create --name run-model-example --version 1 --path azureml://jobs/my_run_0000000000/outputs/artifacts/paths/model/
전체 예제는 CLI 참조를 참조하세요.
- 기본 아티팩트 위치:
학습에 모델 사용
또한 v2 Azure CLI 및 Python SDK를 사용하면 모델을 학습 작업의 입력 또는 출력으로 사용할 수 있습니다.
학습 작업에서 모델을 입력으로 사용
작업 사양 YAML 파일, <file-name>.yml을 만듭니다. 작업의
inputs
섹션에서 다음을 지정합니다.- 모델
type
(mlflow_model
,custom_model
또는triton_model
일 수 있음). - 모델이 위치한
path
(다음 예제의 주석에 나열된 경로 중 어느 것이든 될 수 있음).
$schema: https://azuremlschemas.azureedge.net/latest/commandJob.schema.json # Possible Paths for models: # AzureML Datastore: azureml://datastores/<datastore-name>/paths/<path_on_datastore> # MLflow run: runs:/<run-id>/<path-to-model-relative-to-the-root-of-the-artifact-location> # Job: azureml://jobs/<job-name>/outputs/<output-name>/paths/<path-to-model-relative-to-the-named-output-location> # Model Asset: azureml:<my_model>:<version> command: | ls ${{inputs.my_model}} inputs: my_model: type: mlflow_model # List of all model types here: https://learn.microsoft.com/azure/machine-learning/reference-yaml-model#yaml-syntax path: ../../assets/model/mlflow-model environment: azureml://registries/azureml/environments/sklearn-1.5/labels/latest
- 모델
다음 명령을 실행하여 YAML 파일 이름을 대체합니다.
az ml job create -f <file-name>.yml
전체 예제는 모델 GitHub 리포지토리를 참조하세요.
작업에 대한 출력으로 모델 작성
작업은 출력을 사용하여 클라우드 기반 스토리지에 모델을 작성할 수 있습니다.
작업 사양 YAML 파일 <file-name>.yml을 만듭니다. 출력 모델 유형 및 경로로
outputs
섹션을 채웁니다.$schema: https://azuremlschemas.azureedge.net/latest/commandJob.schema.json # Possible Paths for Model: # Local path: mlflow-model/model.pkl # AzureML Datastore: azureml://datastores/<datastore-name>/paths/<path_on_datastore> # MLflow run: runs:/<run-id>/<path-to-model-relative-to-the-root-of-the-artifact-location> # Job: azureml://jobs/<job-name>/outputs/<output-name>/paths/<path-to-model-relative-to-the-named-output-location> # Model Asset: azureml:<my_model>:<version> code: src command: >- python hello-model-as-output.py --input_model ${{inputs.input_model}} --custom_model_output ${{outputs.output_folder}} inputs: input_model: type: mlflow_model # mlflow_model,custom_model, triton_model path: ../../assets/model/mlflow-model outputs: output_folder: type: custom_model # mlflow_model,custom_model, triton_model environment: azureml://registries/azureml/environments/sklearn-1.5/labels/latest
CLI를 사용하여 작업을 만듭니다.
az ml job create --file <file-name>.yml
전체 예제는 모델 GitHub 리포지토리를 참조하세요.
모델 관리
Azure CLI 및 Python SDK를 사용하면 Azure Machine Learning 모델 자산의 수명 주기도 관리할 수 있습니다.
List
작업 영역의 모든 모델을 나열합니다.
az ml model list
지정된 이름 아래에 모든 모델 버전을 나열합니다.
az ml model list --name run-model-example
표시
특정 모델의 세부 정보를 얻습니다.
az ml model show --name run-model-example --version 1
엽데이트
특정 모델의 변경 가능한 속성을 업데이트합니다.
Important
모델의 경우 description
및 tags
만 업데이트할 수 있습니다. 다른 모든 속성은 불변이며, 이를 변경해야 하는 경우 새 버전의 모델을 만들어야 합니다.
az ml model update --name run-model-example --version 1 --set description="This is an updated description." --set tags.stage="Prod"
보관
모델을 보관하면 기본적으로 az ml model list
처럼 목록 쿼리에서 모델이 숨겨집니다. 워크플로에서 보관된 모델을 계속 참조하고 사용할 수 있습니다.
모델의 모든 버전 또는 특정 버전만 보관할 수 있습니다. 버전을 지정하지 않으면 모델의 모든 버전이 보관됩니다. 보관된 모델 컨테이너에서 새 모델 버전을 만드는 경우 해당 새 버전도 자동으로 보관으로 설정됩니다.
모델의 모든 버전을 보관합니다.
az ml model archive --name run-model-example
특정 모델 버전을 보관합니다.
az ml model archive --name run-model-example --version 1