레지스트리를 사용하여 작업 영역 간에 데이터 공유(미리 보기)
Azure Machine Learning 레지스트리를 사용하면 조직 내의 작업 영역에서 협업할 수 있습니다. 레지스트리를 사용하면 모델, 구성 요소, 환경 및 데이터를 공유할 수 있습니다. 레지스트리와 데이터를 공유하는 것은 현재 미리 보기 기능입니다. 이 문서에서는 다음 방법을 설명합니다.
- 레지스트리에 데이터 자산을 만듭니다.
- 기존 데이터 자산을 작업 영역에서 레지스트리로 공유합니다.
- 레지스트리의 데이터 자산을 작업 영역의 모델 학습 작업에 대한 입력으로 사용합니다.
Important
이 기능은 현재 공개 미리 보기로 제공됩니다. 이 미리 보기 버전은 서비스 수준 계약 없이 제공되며, 프로덕션 워크로드에는 권장되지 않습니다. 특정 기능이 지원되지 않거나 기능이 제한될 수 있습니다.
자세한 내용은 Microsoft Azure Preview에 대한 추가 사용 약관을 참조하세요.
Azure Machine Learning 레지스트리를 사용하여 데이터를 공유하면 해결할 수 있는 주요 시나리오
중앙 위치의 여러 팀, 프로젝트 또는 작업 영역에서 데이터를 공유하려고 할 수 있습니다. 이러한 데이터에는 중요한 액세스 제어가 없으며 조직에서 광범위하게 사용될 수 있습니다.
예를 들면 다음과 같습니다.
- 팀이 전처리되고 실험에 사용할 준비가 된 공개 데이터 세트를 공유하려고 합니다.
- 조직의 외부 공급업체로부터 프로젝트에 대한 특정 데이터 세트를 획득했으며, 프로젝트 관련 작업을 하는 모든 팀에서 이 데이터 세트를 사용할 수 있도록 하려 합니다.
- 팀이 다양한 지역에 있는 작업 영역 간에 데이터 자산을 공유하려고 합니다.
이러한 시나리오에서는 레지스트리에 데이터 자산을 만들거나 기존 데이터 자산을 작업 영역에서 레지스트리로 공유할 수 있습니다. 그런 다음 이 데이터 자산을 여러 작업 영역에서 사용할 수 있습니다.
Azure Machine Learning 레지스트리를 사용하여 데이터를 공유하는 것으로 해결할 수 없는 시나리오
액세스 제어가 세분화되어야 하는 중요한 데이터를 공유합니다. 조직의 다른 많은 사용자가 레지스트리에 액세스할 수 있는 동안에는 소규모 사용자/작업 영역 하위 집합과 공유하기 위한 데이터 자산을 레지스트리에 만들 수 없습니다.
복사해서는 안 되거나, 너무 크거나, 너무 비싸서 복사할 수 없는 기존 스토리지에서 사용할 수 있는 데이터를 공유합니다. 레지스트리에 데이터 자산이 만들어질 때마다 해당 자산을 복제할 수 있도록 데이터의 복사본 하나가 레지스트리 스토리지에 수집됩니다.
Azure Machine Learning 레지스트리에서 지원하는 데이터 자산 유형
팁
시나리오에 대해 uri_file
, uri_folder
또는 mltable
중 어떤 것을 사용할지 결정할 때는 다음 정식 시나리오를 확인해 보세요.
다음과 같은 세 가지 데이터 자산 유형을 만들 수 있습니다.
Type | V2 API | 정식 시나리오 |
---|---|---|
파일: 단일 파일 참조 | uri_file |
단일 파일 읽기/쓰기 - 이 파일은 어떤 형식이든 될 수 있습니다. |
폴더: 단일 폴더 참조 | uri_folder |
Pandas/Spark에서 parquet/CSV 파일의 디렉터리를 읽고/써야 합니다. 디렉터리에 있는 이미지, 텍스트, 오디오, 동영상 파일을 사용하여 딥 러닝합니다. |
테이블: 데이터 테이블 참조 | mltable |
자주 변경되는 복잡한 스키마가 있거나 대규모 테이블 형식 데이터의 하위 집합이 필요합니다. |
Azure Machine Learning 레지스트리에서 지원하는 경로
데이터 자산을 만들 때는 데이터 위치를 가리키는 경로 매개 변수를 지정해야 합니다. 현재 지원되는 유일한 경로는 로컬 컴퓨터에 있는 위치입니다.
팁
"로컬"은 사용 중인 컴퓨터의 로컬 스토리지를 의미합니다. 예를 들어 노트북을 사용하는 경우 로컬 드라이브입니다. Azure Machine Learning 컴퓨팅 인스턴스인 경우 컴퓨팅 인스턴스의 "로컬" 드라이브입니다.
필수 조건
이 문서의 단계를 수행하기 전에 다음과 같은 필수 구성 요소가 있는지 확인합니다.
Azure Machine Learning 레지스트리 및 Azure Machine Learning의 데이터 개념에 대해 잘 알고 있습니다.
데이터를 공유하기 위한 Azure Machine Learning 레지스트리입니다. 레지스트리를 만들려면 레지스트리를 만드는 방법을 참조하세요.
Azure Machine Learning 작업 영역 리소스가 없으면 빠른 시작: 작업 영역 리소스 만들기 문서의 단계에서 리소스를 만듭니다.
Important
작업 영역을 만들 Azure 지역(위치)이 Azure Machine Learning 레지스트리를 지원하는 지역 목록에 있어야 합니다.
모델, 구성 요소 및 환경을 공유하는 방법 문서의 환경 및 구성 요소가 있습니다.
Azure CLI 및
ml
확장 또는 Azure Machine Learning Python SDK v2:Azure CLI 및 확장을 설치하려면 CLI(v2) 설치, 설정 및 사용을 참조하세요.
Important
이 문서의 CLI 예제에서는 Bash(또는 호환) 셸을 사용한다고 가정합니다. 예를 들어 Linux 시스템 또는 Linux용 Windows 하위 시스템에서 이러한 예제를 사용합니다.
또한 이 예제에서는 구독, 작업 영역, 리소스 그룹 또는 위치에 대한 매개 변수를 지정할 필요가 없도록 Azure CLI에 대한 기본값을 구성한 것으로 가정합니다. 기본값을 설정하려면 다음 명령을 사용합니다. 다음 매개 변수를 구성의 값으로 바꿉니다.
<subscription>
를 Azure 구독 ID로 바꿉니다.<workspace>
을(를) Azure Machine Learning 작업 영역 이름으로 바꿉니다.<resource-group>
을 작업 영역이 포함된 Azure 리소스 그룹으로 바꿉니다.<location>
을 작업 영역이 포함된 Azure 지역으로 바꿉니다.
az account set --subscription <subscription> az configure --defaults workspace=<workspace> group=<resource-group> location=<location>
현재 기본값은
az configure -l
명령을 사용하여 확인할 수 있습니다.
예제 리포지토리 복제
이 문서의 코드 예제는 예제 리포지토리의 nyc_taxi_data_regression
샘플을 기반으로 합니다. 개발 환경에서 이러한 파일을 사용하려면 다음 명령을 사용하여 리포지토리를 복제하고 디렉터리를 예제로 변경합니다.
git clone https://github.com/Azure/azureml-examples
cd azureml-examples
CLI 예제의 경우 예제 리포지토리의 로컬 복제본에서 디렉터리를 cli/jobs/pipelines-with-components/nyc_taxi_data_regression
으로 변경합니다.
cd cli/jobs/pipelines-with-components/nyc_taxi_data_regression
SDK 연결 만들기
팁
이 단계는 Python SDK를 사용하는 경우에만 필요합니다.
Azure Machine Learning 작업 영역 및 레지스트리 모두에 클라이언트를 연결합니다. 다음 예제에서는 <...>
자리 표시자 값을 구성에 적합한 값으로 바꿉니다. 예를 들어 Azure 구독 ID, 작업 영역 이름, 레지스트리 이름 등이 있습니다.
ml_client_workspace = MLClient( credential=credential,
subscription_id = "<workspace-subscription>",
resource_group_name = "<workspace-resource-group",
workspace_name = "<workspace-name>")
print(ml_client_workspace)
ml_client_registry = MLClient(credential=credential,
registry_name="<REGISTRY_NAME>",
registry_location="<REGISTRY_REGION>")
print(ml_client_registry)
레지스트리에서 데이터 만들기
이 단계에서 만든 데이터 자산은 이 문서 뒷부분에서 학습 작업을 제출할 때 사용됩니다.
팁
동일한 CLI 명령 az ml data create
를 사용하여 작업 영역 또는 레지스트리에서 데이터를 만들 수 있습니다. --workspace-name
명령을 사용하여 이 명령을 실행하면 작업 영역에 데이터가 만들어지며, --registry-name
을 사용하여 이 명령을 실행하면 레지스트리에 데이터가 만들어집니다.
데이터 원본은 이전에 복제한 예제 리포지토리에 있습니다. 로컬 클론 아래에서 디렉터리 경로 cli/jobs/pipelines-with-components/nyc_taxi_data_regression
으로 이동합니다. 이 디렉터리에서 data-registry.yml
라는 YAML 파일을 만들고 다음 YAML을 파일의 내용으로 사용합니다.
$schema: https://azuremlschemas.azureedge.net/latest/data.schema.json
name: transformed-nyc-taxt-data
description: Transformed NYC Taxi data created from local folder.
version: 1
type: uri_folder
path: data_transformed/
path
값은 레지스트리를 사용하여 공유되는 데이터가 포함된 data_transformed
하위 디렉터리를 가리킵니다.
레지스트리에 데이터를 만들려면 az ml data create
를 사용합니다. 다음 예제에서는 <registry-name>
을 실제 레지스트리의 이름으로 바꿉니다.
az ml data create --file data-registry.yml --registry-name <registry-name>
이 이름과 버전을 가진 데이터가 레지스트리에 이미 있다는 오류가 발생하는 경우 data-registry.yml
의 version
필드를 편집하거나, CLI에서 data-registry.yml
의 버전 값을 재정의하는 다른 버전을 지정하면 됩니다.
# use shell epoch time as the version
version=$(date +%s)
az ml data create --file data-registry.yml --registry-name <registry-name> --set version=$version
팁
version=$(date +%s)
명령이 환경의 $version
변수를 설정하지 않는 경우 $version
을 난수로 바꿉니다.
az ml data create
명령 출력의 name
및 version
을 저장하고, 자산의 세부 정보를 보려면 이를 az ml data show
명령과 함께 사용합니다.
az ml data show --name transformed-nyc-taxt-data --version 1 --registry-name <registry-name>
팁
다른 데이터 이름이나 버전을 사용한 경우 그에 맞게 --name
및 --version
매개 변수를 바꿉니다.
az ml data list --registry-name <registry-name>
명령을 사용하여 레지스트리의 모든 데이터 자산을 나열할 수도 있습니다.
레지스트리에서 환경 및 구성 요소 만들기
레지스트리에서 환경 및 구성 요소를 만들려면 모델, 구성 요소 및 환경을 공유하는 방법 문서의 단계를 따릅니다. 환경 및 구성 요소는 다음 섹션의 학습 작업에서 사용됩니다.
팁
레지스트리의 환경 및 구성 요소를 사용하는 대신 작업 영역의 환경 및 구성 요소를 사용할 수도 있습니다.
레지스트리의 구성 요소를 사용하여 작업 영역에서 파이프라인 작업 실행
레지스트리의 구성 요소 및 데이터를 사용하는 파이프라인 작업을 실행하는 경우 컴퓨팅 리소스는 작업 영역에 대해 로컬입니다. 다음 예제에서 작업은 Scikit Learn 학습 구성 요소와 이전 섹션에서 만든 데이터 자산을 사용하여 모델을 학습시킵니다.
참고 항목
핵심은 이 파이프라인이 특정 작업 영역에 있지 않은 학습 데이터를 사용하여 작업 영역에서 실행된다는 것입니다. 이 데이터는 조직의 모든 작업 영역에서 사용할 수 있는 레지스트리에 있습니다. 해당 작업 영역에서 학습 데이터를 사용할 수 있도록 만들 걱정을 할 필요 없이, 액세스 권한이 있는 모든 작업 영역에서 이 학습 작업을 실행할 수 있습니다.
cli/jobs/pipelines-with-components/nyc_taxi_data_regression
디렉터리에 있는지 확인합니다. single-job-pipeline.yml
파일의 train_job
섹션의 component
섹션이 학습 구성 요소를 참조하도록 편집하고, training_data
섹션의 path
가 이전 섹션에서 만든 데이터 자산을 참조하도록 편집합니다. 다음 예제에는 single-job-pipeline.yml
파일을 편집한 후의 모습이 나와 있습니다. <registry_name>
를 실제 레지스트리의 이름으로 바꿉니다.
$schema: https://azuremlschemas.azureedge.net/latest/pipelineJob.schema.json
type: pipeline
display_name: nyc_taxi_data_regression_single_job
description: Single job pipeline to train regression model based on nyc taxi dataset
jobs:
train_job:
type: command
component: azureml://registries/<registry-name>/component/train_linear_regression_model/versions/1
compute: azureml:cpu-cluster
inputs:
training_data:
type: uri_folder
path: azureml://registries/<registry-name>/data/transformed-nyc-taxt-data/versions/1
outputs:
model_output:
type: mlflow_model
test_data:
Warning
- 파이프라인 작업을 실행하기 전에, 작업을 실행할 작업 영역이 데이터를 만든 레지스트리에서 지원하는 Azure 지역에 있는지 확인합니다.
- 작업 영역에 이름이
cpu-cluster
인 컴퓨팅 클러스터가 있는지 확인하거나jobs.train_job.compute
아래에서compute
필드를 컴퓨팅 이름으로 편집합니다.
az ml job create
명령을 사용하여 파이프라인 작업을 실행합니다.
az ml job create --file single-job-pipeline.yml
팁
필수 구성 요소 섹션에 설명된 대로 기본 작업 영역 및 리소스 그룹을 구성하지 않은 경우 작업할 az ml job create
의 --workspace-name
및 --resource-group
매개 변수를 지정해야 합니다.
작업 실행에 대한 자세한 내용은 다음 문서를 참조하세요.
작업 영역에서 레지스트리로 데이터 공유
다음 단계에서는 작업 영역에서 레지스트리로 기존 데이터 자산을 공유하는 방법을 보여 줍니다.
먼저 작업 영역에 데이터 자산을 만듭니다. cli/assets/data
디렉터리에 있는지 확인합니다. 이 디렉터리에 있는 local-folder.yml
이 작업 영역에 데이터 자산을 만드는 데 사용됩니다. 이 파일에 지정된 데이터는 cli/assets/data/sample-data
디렉터리에서 사용할 수 있습니다. 다음 YAML은 local-folder.yml
파일의 내용입니다.
$schema: https://azuremlschemas.azureedge.net/latest/data.schema.json
name: local-folder-example-titanic
description: Dataset created from local folder.
type: uri_folder
path: sample-data/
작업 영역에 데이터 자산을 만들려면 다음 명령을 사용합니다.
az ml data create -f local-folder.yml
작업 영역에 데이터 자산을 만드는 방법에 대한 자세한 내용은 데이터 자산을 만드는 방법을 참조하세요.
작업 영역에 만든 데이터 자산은 레지스트리에 공유할 수 있습니다. 해당 자산은 레지스트리에서 여러 작업 영역에 사용할 수 있습니다. 공유 함수에 --share_with_name
및 --share_with_version
매개 변수를 전달하고 있습니다. 이러한 매개 변수는 선택 사항이며 전달하지 않으면 해당 데이터는 작업 영역과 동일한 이름 및 버전으로 공유됩니다.
다음 예에서는 share 명령을 사용하여 데이터 자산을 공유하는 방법을 보여 줍니다. <registry-name>
을 데이터를 공유할 레지스트리의 이름으로 바꿉니다.
az ml data share --name local-folder-example-titanic --version <version-in-workspace> --share-with-name <name-in-registry> --share-with-version <version-in-registry> --registry-name <registry-name>