데이터 저장소를 사용하여 Azure의 스토리지 서비스에 연결

적용 대상:Python SDK azureml v1

적용 대상:Azure CLI ml 확장 v1

이 문서에서는 Azure Machine Learning 데이터 저장소 및 Azure Machine Learning Python SDK를 사용하여 Azure의 데이터 스토리지 서비스에 연결하는 방법을 알아봅니다.

데이터 저장소는 Azure의 스토리지 서비스에 안전하게 연결되며 인증 자격 증명 또는 원래 데이터 저장소의 무결성에 대한 위험을 방지합니다. 데이터 저장소는 작업 영역과 연결된 Key Vault연결 정보(예: 구독 ID 또는 토큰 권한 부여)를 저장합니다. 데이터 저장소를 사용하면 스크립트에서 연결 정보를 하드 코딩하지 않아도 되므로 스토리지에 안전하게 액세스할 수 있습니다. 이 Azure 스토리지 솔루션에 연결하는 데이터 저장소를 만들 수 있습니다.

데이터 저장소가 Azure Machine Learning 전체 데이터 액세스 워크플로와 어떻게 일치하는지 설명하는 자세한 내용은 보안 액세스 데이터 문서를 참조하세요.

UI를 사용하여 데이터 스토리지 리소스에 연결하는 방법을 알아보려면 스튜디오 UI를 사용하여 데이터 스토리지에 커넥트 방문하세요.

이 문서에서는 자격 증명 기반 인증 자격 증명(예: 서비스 주체 또는 SAS(공유 액세스 서명) 토큰)을 사용하여 스토리지 서비스에 연결한다고 가정합니다. 자격 증명이 데이터 저장소에 등록된 경우 작업 영역 읽기 권한자 역할을 가진 모든 사용자가 해당 자격 증명을 검색할 수 있습니다. 자세한 내용은 작업 영역의 역할 관리를 참조하세요.

ID 기반 데이터 액세스에 대한 자세한 내용은 스토리지 서비스(v1)에 대한 ID 기반 데이터 액세스를 참조하세요.

필수 구성 요소

  • Azure 구독 Azure 구독이 아직 없는 경우 시작하기 전에 체험 계정을 만듭니다. 무료 또는 유료 버전의 Azure Machine Learning 사용해 보기

  • 지원되는 스토리지 유형을 사용하는 Azure Storage 계정

  • Python용 Azure Machine Learning SDK

  • Azure Machine Learning 작업 영역

    Azure Machine Learning 작업 영역 만들기 또는 Python SDK를 통해 기존 작업 영역 사용

    및 클래스를 Workspace 가져오고 함수를 사용하여 파일에서 config.json 구독 정보를 로드합니다from_config().Datastore 기본적으로 함수는 현재 디렉터리에서 JSON 파일을 찾지만 다음을 사용하여 파일을 from_config(path="your/file/path")가리키도록 경로 매개 변수를 지정할 수도 있습니다.

    import azureml.core
    from azureml.core import Workspace, Datastore
    
    ws = Workspace.from_config()
    

    작업 영역 만들기는 Azure Blob 컨테이너와 Azure 파일 공유를 데이터 저장소로 작업 영역에 자동으로 등록합니다. 각각 이름이 workspaceblobstoreworkspacefilestore로 지정됩니다. 작업 workspaceblobstore 영역 아티팩트와 기계 학습 실험 로그를 저장합니다. 기본 데이터 저장소 역할을 하며 작업 영역에서 삭제할 수 없습니다. workspacefilestore 컴퓨팅 인스턴스를 통해 권한이 부여된 Notebook 및 R 스크립트를 저장합니다.

    참고 항목

    Azure Machine Learning 디자이너는 디자이너 홈페이지에서 샘플을 열 때 azureml_globaldatasets이라는 데이터 저장소를 자동으로 만듭니다. 이 데이터 저장소는 샘플 데이터 세트만 포함합니다. 기밀 데이터 액세스에는 이 데이터 저장소를 사용하지 마세요.

지원되는 데이터 스토리지 서비스 유형

데이터 저장소는 현재 이 매트릭스에 나열된 스토리지 서비스에 대한 연결 정보의 스토리지를 지원합니다.

지원되지 않는 스토리지 솔루션 (다음 표에 나열되지 않은 솔루션)의 경우 데이터를 연결하고 작업할 때 문제가 발생할 수 있습니다. 지원되는 Azure Storage 솔루션으로 데이터를 이동하는 것이 좋습니다. 이는 ML 실험 중 데이터 송신 비용 절감과 같은 추가 시나리오에도 도움이 될 수 있습니다.

저장소 유형 인증 유형 Azure Machine Learning 스튜디오 Azure Machine Learning Python SDK Azure Machine Learning CLI Azure Machine Learning REST API VS Code
Azure Blob Storage 계정 키
SAS 토큰
Azure 파일 공유 계정 키
SAS 토큰
Azure Data Lake Storage Gen 1 서비스 사용자
Azure Data Lake Storage Gen 2 서비스 사용자
Azure SQL Database SQL 인증
서비스 사용자
Azure PostgreSQL SQL 인증
Azure Database for MySQL SQL 인증 ✓* ✓* ✓*
Databricks 파일 시스템 인증 없음 ✓** ✓** ✓**

스토리지 지침

Azure Blob 컨테이너에 대한 데이터 저장소를 만드는 것이 좋습니다. BLOB에 표준 스토리지와 프리미엄 스토리지 둘 다 제공됩니다. Premium Storage는 비용이 더 많이 들지만 처리량 속도가 빠르면 특히 큰 데이터 세트에 대해 학습하는 경우 학습 실행 속도가 향상될 수 있습니다. 스토리지 계정 비용에 대한 자세한 내용은 Azure 가격 계산기를 참조 하세요.

Azure Data Lake Storage Gen2 는 Azure Blob Storage를 기반으로 빌드됩니다. 엔터프라이즈 빅 데이터 분석을 위해 설계되었습니다. Data Lake Storage Gen2의 일부로 Blob Storage에는 계층 구조 네임스페이 스가 있습니다. 계층 구조 네임스페이스는 효율적인 데이터 액세스를 위해 개체/파일을 디렉터리 계층 구조로 구성합니다.

스토리지 액세스 및 권한

Azure Storage 서비스에 안전하게 연결하려면 Azure Machine Learning에서 해당하는 데이터 스토리지 컨테이너에 액세스할 권한이 있어야 합니다. 이 액세스 권한은 데이터 저장소를 등록하는 데 사용되는 인증 자격 증명에 따라 다릅니다.

참고 항목

이 참고 자료는 ID 기반 데이터 액세스 권한으로 생성된 데이터 저장소에도 적용됩니다.

가상 네트워크

방화벽 뒤 또는 가상 네트워크 내에 있는 스토리지 계정과 통신하려면 Azure Machine Learning에 추가 구성 단계가 필요합니다. 방화벽 뒤에 있는 스토리지 계정의 경우 Azure Portal을 사용하여 클라이언트의 IP 주소를 허용 목록에 추가할 수 있습니다.

Azure Machine Learning은 가상 네트워크 외부의 클라이언트에서 요청을 받을 수 있습니다. 서비스에서 데이터를 요청하는 엔터티가 안전한지 확인하고 작업 영역에서 데이터를 표시할 수 있도록 하려면 작업 영역에서 프라이빗 엔드포인트를 사용합니다.

Python SDK 사용자의 경우: 학습 스크립트를 사용하여 컴퓨팅 대상의 데이터에 액세스하려면 스토리지의 동일한 가상 네트워크 및 서브넷 내에서 컴퓨팅 대상을 찾아야 합니다. 동일한 가상 네트워크에서 컴퓨팅 인스턴스/클러스터를 사용할 수 있습니다.

Azure Machine Learning 스튜디오 사용자의 경우: 데이터 세트 미리 보기, 프로필 및 자동화된 기계 학습과 같은 여러 기능이 데이터 세트에서 데이터를 읽는 기능에 의존합니다. 이러한 기능이 가상 네트워크 뒤에 있는 스토리지에서 작동하도록 하려면 스튜디오에서 작업 영역 관리 ID를 사용하여 Azure Machine Learning이 가상 네트워크 외부에서 스토리지 계정에 액세스하도록 허용합니다.

참고 항목

가상 네트워크 뒤에 있는 Azure SQL Database에 저장된 데이터의 경우 Azure Machine Learning이 스토리지 계정에 액세스할 수 있도록 Azure Portal에서 공용 액세스거부를 No로 설정합니다.

액세스 유효성 검사

Warning

스토리지 계정에 대한 테넌트 간 액세스는 지원되지 않습니다. 시나리오에서 테넌트 간 액세스가 필요한 경우 사용자 지정 코드 솔루션에 대한 지원을 받으려면 Azure Machine Learning 데이터 지원 팀 별칭 amldatasupport@microsoft.com 에 문의하세요.

초기 데이터 저장소 만들기 및 등록 프로세스의 일환으로 Azure Machine Learning은 기본 스토리지 서비스가 존재하고 사용자가 제공한 보안 주체(사용자 이름, 서비스 주체 또는 SAS 토큰)가 지정된 스토리지에 액세스할 수 있는지 자동으로 확인합니다.

데이터 저장소가 생성된 후 이 유효성 검사는 기본 스토리지 컨테이너에 액세스해야 하는 메서드에 대해서만 수행되고, 데이터 저장소 개체가 검색될 때마다 수행되지는 않습니다. 예를 들어 데이터 저장소에서 파일을 다운로드하려는 경우 유효성 검사가 수행됩니다. 그러나 기본 데이터 저장소만 변경하려는 경우에는 유효성 검사가 수행되지 않습니다.

기본 스토리지 서비스에 대한 액세스를 인증하려면 만들려는 데이터 저장소 유형의 해당 register_azure_*() 메서드에 계정 키, SAS(공유 액세스 서명) 토큰 또는 서비스 주체를 제공하면 됩니다. 스토리지 유형 행렬에는 각 데이터 저장소 유형에 해당하는 지원되는 인증 유형이 나열됩니다.

Azure Portal에서 계정 키, SAS 토큰 및 서비스 주체 정보를 찾을 수 있습니다.

  • 인증에 계정 키 또는 SAS 토큰을 사용하려면 왼쪽 창에서 스토리지 계정을 선택하고 등록할 스토리지 계정을 선택합니다.

    • 개요 페이지에서는 계정 이름, 파일 공유 이름, 컨테이너 등을 제공합니다.
      • 계정 키의 경우 설정 창에서 액세스 키이동합니다.
      • SAS 토큰의 경우 설정 창에서 공유 액세스 서명으로 이동합니다.
  • 인증에 서비스 주체를 사용하려면 앱 등록 이동하여 사용하려는 앱을 선택합니다.

    • 선택한 앱의 해당 개요 페이지에는 필요한 정보(예: 테넌트 ID 및 클라이언트 ID)가 포함되어 있습니다.

Important

Azure Storage 계정(계정 키 또는 SAS 토큰)에 대한 액세스 키를 변경하려면 새 자격 증명을 작업 영역 및 연결된 데이터 저장소와 동기화합니다. 자세한 내용은 업데이트된 자격 증명 동기화를 참조하세요.

사용 권한

Azure Blob 컨테이너 및 Azure Data Lake Gen 2 스토리지의 경우 인증 자격 증명에 Storage Blob 데이터 판독기 액세스 권한이 있는지 확인합니다. 자세한 내용은 Storage Blob 데이터 읽기 프로그램을 방문하세요. 계정 SAS 토큰은 기본적으로 권한 없음으로 설정됩니다.

  • 데이터 읽기 액세스의 경우 인증 자격 증명에 컨테이너 및 개체에 대한 최소 목록 및 읽기 권한이 있어야 합니다.

  • 데이터 쓰기 액세스 에는 쓰기 및 추가 권한도 필요합니다.

데이터 저장소 만들기 및 등록

Azure Storage 솔루션을 데이터 저장소로 등록하면 해당 데이터 저장소가 자동으로 만들어지고 특정 작업 영역에 등록됩니다. 가상 네트워크 시나리오 및 필요한 인증 자격 증명을 찾을 수 있는 위치에 대한 지침은 이 문서의 스토리지 액세스 및 권한을 검토합니다.

이 섹션에서는 이러한 스토리지 유형에 대한 Python SDK를 통해 데이터 저장소를 만들고 등록하는 방법을 설명하는 예제를 제공합니다. 이러한 예제에 표시된 매개 변수는 데이터 저장소를 만들고 등록하는 데 필요한 매개 변수 입니다.

지원되는 다른 스토리지 서비스에 대한 데이터 저장소를 만들려면 해당 register_azure_* 방법에 대한 참조 설명서를 참조하세요.

UI를 사용하여 데이터 스토리지 리소스에 연결하는 방법을 알아보려면 Azure Machine Learning 스튜디오 커넥트 방문하세요.

Important

동일한 이름으로 데이터 저장소를 등록 취소하고 다시 등록하는 경우 다시 등록이 실패하면 작업 영역의 Azure Key Vault에서 일시 삭제를 사용하도록 설정하지 않았을 수 있습니다. 기본적으로 작업 영역에서 만든 키 자격 증명 모음 인스턴스에 대해 일시 삭제가 사용하도록 설정되어 있지만, 기존 키 자격 증명 모음을 사용하거나 2020년 10월 이전에 작업 영역을 만든 경우에는 사용하지 않을 수 있습니다. 일시 삭제 를 사용하도록 설정하는 방법에 대한 자세한 내용은 기존 키 자격 증명 모음에 대해 일시 삭제 켜기를 참조하세요.

참고 항목

데이터 저장소 이름은 소문자, 숫자 및 밑줄만 포함해야 합니다.

Azure Blob 컨테이너

Azure Blob 컨테이너를 데이터 저장소로 등록하려면 이 메서드를 register_azure_blob_container() 사용합니다.

이 코드 샘플은 데이터 저장소 wsblob_datastore_name 만들고 작업 영역에 등록합니다. 데이터 저장소는 제공된 계정 액세스 키를 사용하여 스토리지 계정의 my-container-name Blob 컨테이너에 my-account-name 액세스합니다. 가상 네트워크 시나리오 및 필요한 인증 자격 증명을 찾을 수 있는 위치에 대한 지침은 스토리지 액세스 및 권한 섹션을 검토합니다.

blob_datastore_name='azblobsdk' # Name of the datastore to workspace
container_name=os.getenv("BLOB_CONTAINER", "<my-container-name>") # Name of Azure blob container
account_name=os.getenv("BLOB_ACCOUNTNAME", "<my-account-name>") # Storage account name
account_key=os.getenv("BLOB_ACCOUNT_KEY", "<my-account-key>") # Storage account access key

blob_datastore = Datastore.register_azure_blob_container(workspace=ws, 
                                                         datastore_name=blob_datastore_name, 
                                                         container_name=container_name, 
                                                         account_name=account_name,
                                                         account_key=account_key)

Azure 파일 공유

Azure 파일 공유를 데이터 저장소로 등록하려면 이 메서드를 register_azure_file_share() 사용합니다.

이 코드 샘플은 데이터 저장소 wsfile_datastore_name 만들고 작업 영역에 등록합니다. 데이터 저장소는 제공된 계정 액세스 키와 함께 스토리지 계정의 파일 공유 my-account-name 를 사용합니다my-fileshare-name. 가상 네트워크 시나리오 및 필요한 인증 자격 증명을 찾을 수 있는 위치에 대한 지침은 스토리지 액세스 및 권한 섹션을 검토합니다.

file_datastore_name='azfilesharesdk' # Name of the datastore to workspace
file_share_name=os.getenv("FILE_SHARE_CONTAINER", "<my-fileshare-name>") # Name of Azure file share container
account_name=os.getenv("FILE_SHARE_ACCOUNTNAME", "<my-account-name>") # Storage account name
account_key=os.getenv("FILE_SHARE_ACCOUNT_KEY", "<my-account-key>") # Storage account access key

file_datastore = Datastore.register_azure_file_share(workspace=ws,
                                                     datastore_name=file_datastore_name, 
                                                     file_share_name=file_share_name, 
                                                     account_name=account_name,
                                                     account_key=account_key)

Azure Data Lake Storage Generation 2

ADLS Gen 2(Azure Data Lake Storage Gen 2) 데이터 저장소의경우 register_azure_data_lake_gen2() 메서드를 사용하여 서비스 주체 권한이 있는 Azure Data Lake Gen 2 스토리지 에 연결된 자격 증명 데이터 저장소를 등록합니다.

서비스 주체를 사용하려면 애플리케이션을 등록하고 Azure RBAC(Azure 역할 기반 액세스 제어) 또는 ACL(액세스 제어 목록)을 통해 서비스 주체 데이터 액세스 권한을 부여해야 합니다. 자세한 내용은 ADLS Gen 2에 대해 설정된 액세스 제어를 참조하세요.

이 코드는 데이터 저장소 wsadlsgen2_datastore_name 만들고 작업 영역에 등록합니다. 이 데이터 저장소는 제공된 서비스 주체 자격 증명을 account_name 사용하여 스토리지 계정의 파일 시스템에 test 액세스합니다. 스토리지 액세스 및 사용 권한 섹션을 검토하여 가상 네트워크 시나리오에 대한 참고 자료와 필요한 인증 자격 증명을 확인할 수 있는 위치를 확인합니다.

adlsgen2_datastore_name = 'adlsgen2datastore'

subscription_id=os.getenv("ADL_SUBSCRIPTION", "<my_subscription_id>") # subscription id of ADLS account
resource_group=os.getenv("ADL_RESOURCE_GROUP", "<my_resource_group>") # resource group of ADLS account

account_name=os.getenv("ADLSGEN2_ACCOUNTNAME", "<my_account_name>") # ADLS Gen2 account name
tenant_id=os.getenv("ADLSGEN2_TENANT", "<my_tenant_id>") # tenant id of service principal
client_id=os.getenv("ADLSGEN2_CLIENTID", "<my_client_id>") # client id of service principal
client_secret=os.getenv("ADLSGEN2_CLIENT_SECRET", "<my_client_secret>") # the secret of service principal

adlsgen2_datastore = Datastore.register_azure_data_lake_gen2(workspace=ws,
                                                             datastore_name=adlsgen2_datastore_name,
                                                             account_name=account_name, # ADLS Gen2 account name
                                                             filesystem='test', # ADLS Gen2 filesystem
                                                             tenant_id=tenant_id, # tenant id of service principal
                                                             client_id=client_id, # client id of service principal
                                                             client_secret=client_secret) # the secret of service principal

다른 Azure 도구를 사용하여 데이터 저장소 만들기

Python SDK 및 스튜디오를 사용하여 데이터 저장소를 만드는 것 외에도 Azure Resource Manager 템플릿 또는 Azure Machine Learning VS Code 확장을 사용하여 데이터 저장소를 만들 수도 있습니다.

Azure Resource Manager

여러 템플릿을 https://github.com/Azure/azure-quickstart-templates/tree/master/quickstarts/microsoft.machinelearningservices 사용하여 데이터 저장소를 만들 수 있습니다. 이러한 템플릿 에 대한 자세한 내용은 Azure Resource Manager 템플릿을 사용하여 Azure Machine Learning용 작업 영역을 만듭니다.

VS Code 확장

Azure Machine Learning VS Code 확장을 사용하여 데이터 저장소를 만들고 관리하는 방법에 대한 자세한 내용은 VS Code 리소스 관리 방법 가이드를 참조하세요.

데이터 저장소의 데이터 사용

데이터 저장소를 만든 후 데이터와 상호 작용할 Azure Machine Learning 데이터 세트를 만듭니다. 데이터 세트는 학습과 같은 기계 학습 작업을 위해 지연 평가 소모성 개체로 데이터를 패키지합니다. 데이터 세트를 사용하면 컴퓨팅 대상에 대한 모델 학습을 위해 Azure Storage 서비스에서 모든 형식의 파일을 다운로드하거나 탑재할 수 있습니다. 데이터 세트를 사용하여 ML 모델을 학습시키는 방법을 알아보세요.

작업 영역에서 데이터 저장소 가져오기

현재 작업 영역에 등록된 특정 데이터 저장소를 가져오려면 Datastore 클래스에서 get() 정적 메서드를 사용합니다.

# Get a named datastore from the current workspace
datastore = Datastore.get(ws, datastore_name='your datastore name')

지정된 작업 영역에 등록된 데이터 저장소 목록을 얻으려면 작업 영역 개체의 datastores 속성을 사용합니다.

# List all datastores registered in the current workspace
datastores = ws.datastores
for name, datastore in datastores.items():
    print(name, datastore.datastore_type)

이 코드 샘플에서는 작업 영역의 기본 데이터 저장소를 가져오는 방법을 보여줍니다.

datastore = ws.get_default_datastore()

이 코드 샘플을 사용하여 기본 데이터 저장소를 변경할 수도 있습니다. SDK만 이 기능을 지원합니다.

 ws.set_default_datastore(new_default_datastore)

채점 중에 데이터 액세스

Azure Machine Learning은 모델을 채점에 사용할 수 있는 여러 가지 방법을 제공합니다. 이러한 방법 중 일부는 데이터 저장소에 대한 액세스를 제공하지 않습니다. 다음 표에서는 점수 매기기 중에 데이터 저장소에 대한 액세스를 허용하는 방법을 설명합니다.

메서드 데이터 저장소 액세스 설명
일괄 처리 예측 대량의 데이터에 대해 비동기적으로 예측합니다.
웹 서비스   모델을 웹 서비스로 배포합니다.

SDK가 데이터 저장소에 대한 액세스를 제공하지 않는 경우 관련 Azure SDK를 사용하여 사용자 지정 코드를 만들어 데이터에 액세스할 수 있습니다. 예를 들어 Python 용 Azure Storage SDK 클라이언트 라이브러리는 Blob 또는 파일에 저장된 데이터에 액세스할 수 있습니다.

지원되는 Azure 스토리지 솔루션으로 데이터 이동

Azure Machine Learning은 에서 데이터 액세스를 지원합니다.

  • Azure Blob 스토리지
  • Azure 파일
  • Azure Data Lake Storage Gen1
  • Azure Data Lake Storage Gen2
  • Azure SQL Database
  • Azure Database for PostgreSQL

지원되지 않는 스토리지를 사용하는 경우 Azure Data Factory 및 다음 단계를 사용하여 데이터를 지원되는 Azure Storage 솔루션으로 이동하는 것이 좋습니다. 지원되는 스토리지로 데이터를 이동하면 기계 학습 실험 중에 발생하는 데이터 송신 비용을 절감할 수 있습니다.

Azure Data Factory는 80개 이상의 미리 빌드된 커넥터와 함께 효율적이고 복원력 있는 데이터 전송을 추가 비용 없이 제공합니다. 이러한 커넥터로는 Azure 데이터 서비스, 온-프레미스 데이터 원본, Amazon S3 및 Redshift, Google BigQuery가 있습니다.

다음 단계