다음을 통해 공유


튜토리얼: Azure Machine Learning에서 데이터 업로드, 액세스 및 탐색하기

적용 대상: Python SDK azure-ai-ml v2(현재)

이 자습서에서는 다음을 수행합니다.

  • 데이터를 클라우드 스토리지에 업로드하세요
  • Azure Machine Learning 데이터 자산 생성
  • 노트북에서 데이터를 액세스하여 대화형으로 개발하세요
  • 데이터 자산의 새 버전을 생성하세요

머신 러닝 프로젝트는 일반적으로 탐색적 데이터 분석(EDA), 데이터 전처리(정제, 기능 엔지니어링), 그리고 가설을 검증하기 위한 머신 러닝 모델 프로토타입 구축으로 시작됩니다. 이 프로토타이핑 프로젝트 단계는 매우 대화형이며, Python 대화형 콘솔을 사용하는 IDE 또는 Jupyter Notebook에서의 개발에 적합합니다. 이 자습서에서는 이러한 개념을 설명합니다.

필수 구성 요소

  1. Azure Machine Learning을 사용하려면 작업 영역이 필요합니다. 아직 작업 영역이 없다면 시작하는 데 필요한 리소스 만들기를 완료하여 작업 영역을 생성하고 사용 방법에 대해 자세히 알아보세요.

    중요합니다

    Azure Machine Learning 작업 영역이 관리형 가상 네트워크로 구성된 경우, 공개 Python 패키지 저장소에 접근할 수 있도록 아웃바운드 규칙을 추가해야 할 수도 있습니다. 자세한 내용은 시나리오: 공용 기계 학습 패키지에 액세스를 참조합니다.

  2. 아직 열려 있지 않은 경우 스튜디오에 로그인하고 작업 영역을 선택합니다.

  3. 작업 영역에서 Notebook을 열거나 만듭니다.

    • 코드를 복사하여 셀에 붙여 넣으려면 새 Notebook을 만듭니다.
    • 또는 스튜디오의 샘플 섹션에서 tutorials/get-started-notebooks/explore-data.ipynb를 열 수 있습니다. 그런 다음 복제를 선택하여 Notebook을 파일에 추가합니다. 샘플 노트북을 찾으려면 샘플 노트북에서 학습하기를 참조하세요.

커널을 설정하고 Visual Studio Code(VS Code)에서 엽니다.

  1. 열려 있는 노트북 위 상단 바에서, 아직 생성하지 않았다면 컴퓨트 인스턴스를 만드세요.

    스크린샷은 컴퓨트 인스턴스를 생성하는 방법을 보여줍니다.

  2. 만일 컴퓨팅 인스턴스가 중지된 경우 컴퓨팅 시작을 선택하고 실행될 때까지 기다리세요.

    스크린샷은 중지된 컴퓨트 인스턴스를 시작하는 방법을 보여줍니다.

  3. 컴퓨트 인스턴스가 실행될 때까지 기다리세요. 그런 다음 오른쪽 상단에서 커널이 Python 3.10 - SDK v2인지 확인하세요. 그렇지 않다면 드롭다운 목록을 사용하여 해당 커널을 선택하세요.

    스크린샷은 커널을 설정하는 방법을 보여줍니다.

    이 커널이 보이지 않으면, 컴퓨트 인스턴스가 실행 중인지 확인하세요. 컴퓨트 인스턴스가 실행 중이라면, 노트북 오른쪽 상단의 새로 고침 버튼을 클릭하세요.

  4. 인증이 필요하다는 배너가 표시되면, 인증을 선택하세요.

  5. 여기에서 노트북을 실행할 수 있으며, 또는 VS Code에서 열어 Azure Machine Learning 리소스의 기능을 활용한 완전한 통합 개발 환경(IDE)에서 작업할 수도 있습니다. VS Code에서 열기를 선택한 다음, 웹 또는 데스크톱 옵션 중 하나를 선택하세요. 이 방식으로 실행하면, VS Code가 컴퓨트 인스턴스, 커널, 그리고 작업 영역 파일 시스템에 연결됩니다.

    스크린샷은 노트북을 VS Code에서 여는 방법을 보여줍니다.

중요합니다

이 자습서의 나머지 부분에는 자습서 Notebook의 셀이 포함되어 있습니다. 새 전자 필기장을 복사하여 붙여넣거나 복제한 경우 지금 전자 필기장으로 전환합니다.

이 자습서에서 사용된 데이터를 다운로드하세요.

데이터 수집을 위해, Azure Data Explorer는 원시 데이터를 이러한 형식으로 처리합니다. 이 자습서에서는 CSV 형식의 신용카드 고객 데이터 샘플을 사용합니다. 이 단계들은 Azure Machine Learning 리소스에서 진행됩니다. 해당 리소스에서, 이 노트북이 있는 폴더 바로 아래에 데이터라는 권장 이름의 로컬 폴더를 생성합니다.

참고

이 자습서는 Azure Machine Learning 리소스 폴더에 저장된 데이터에 의존합니다. 이 자습서에서 '로컬'은 해당 Azure Machine Learning 리소스 내의 폴더 위치를 의미합니다.

  1. 세 개의 점 아래에서 터미널 열기를 선택하세요. 이미지에 표시된 것과 같습니다.

    Notebook 도구 모음에 열려 있는 터미널 도구를 보여 주는 스크린샷.

  2. 터미널 창이 새 탭에서 열립니다.

  3. 디렉터리(cd)를 이 노트북이 위치한 동일한 폴더로 변경했는지 확인하세요. 예를 들어, 노트북이 get-started-notebooks라는 폴더에 있는 경우:

    cd get-started-notebooks    # modify this to the path where your notebook is located
    
  4. 데이터를 컴퓨트 인스턴스로 복사하려면 터미널 창에 다음 명령을 입력하세요.

    mkdir data
    cd data                     # the subfolder where you'll store the data
    wget https://azuremlexamples.blob.core.windows.net/datasets/credit_card/default_of_credit_card_clients.csv
    
  5. 이제 터미널 창을 닫을 수 있습니다.

UC Irvine 머신 러닝 저장소의 데이터에 대한 자세한 내용은 이 자료를 참조하세요.

작업 영역에 대한 핸들을 생성하세요.

코드를 살펴보기 전에 작업 영역을 참조할 수 있는 방법이 필요합니다. 작업 영역에 대한 핸들로 ml_client을 생성합니다. 그런 다음 ml_client을 사용하여 리소스와 작업을 관리합니다.

다음 셀에 구독 ID, 리소스 그룹 이름, 작업 영역 이름을 입력하세요. 이러한 값을 찾으려면 다음을 수행합니다.

  1. 오른쪽 위 Azure Machine Learning 스튜디오 도구 모음에서 작업 영역 이름을 선택합니다.
  2. 작업 영역, 리소스 그룹, 구독 ID 값을 코드에 복사해서 넣으세요.
  3. 각 값을 한 번에 하나씩 개별적으로 복사해야 합니다. 영역을 닫고 값을 붙여넣은 다음, 다음 항목으로 진행하세요.
from azure.ai.ml import MLClient
from azure.identity import DefaultAzureCredential
from azure.ai.ml.entities import Data
from azure.ai.ml.constants import AssetTypes

# authenticate
credential = DefaultAzureCredential()

# Get a handle to the workspace
ml_client = MLClient(
    credential=credential,
    subscription_id="<SUBSCRIPTION_ID>",
    resource_group_name="<RESOURCE_GROUP>",
    workspace_name="<AML_WORKSPACE_NAME>",
)

참고

MLClient를 생성하는 것만으로는 작업 영역에 연결되지 않습니다. 클라이언트 초기화는 지연 방식으로 이루어지며, 호출이 처음 필요할 때까지 대기합니다. 이것은 다음 코드 셀에서 발생합니다.

데이터를 클라우드 스토리지에 업로드하세요.

Azure Machine Learning은 클라우드 내 저장소 위치를 가리키는 통합 자원 식별자(URI)를 사용합니다. URI를 사용하면 노트북과 작업에서 데이터를 쉽게 접근할 수 있습니다. 데이터 URI 형식은 웹 페이지에 접근할 때 웹 브라우저에서 사용하는 URL과 유사합니다. 예를 들어:

  • 공개 HTTPS 서버에서 데이터에 접근: https://<account_name>.blob.core.windows.net/<container_name>/<folder>/<file>
  • Azure Data Lake Gen 2에서 데이터에 접근: abfss://<file_system>@<account_name>.dfs.core.windows.net/<folder>/<file>

Azure Machine Learning 데이터 자산은 웹 브라우저의 즐겨찾기와 유사합니다. 자주 사용하는 데이터의 긴 저장소 경로(URI)를 기억하는 대신, 데이터 자산을 생성하고 친숙한 이름으로 해당 자산에 접근할 수 있습니다.

데이터 자산을 생성하면, 데이터 소스 위치에 대한 참조와 함께 메타데이터 사본도 생성됩니다. 데이터가 기존 위치에 그대로 있기 때문에 추가 저장 비용이 발생하지 않으며, 데이터 원본의 무결성을 위험에 빠뜨리지 않습니다. Azure Machine Learning 데이터 저장소, Azure 스토리지, 공개 URL, 로컬 파일에서 데이터 자산을 생성할 수 있습니다.

작은 규모의 데이터 업로드의 경우, Azure Machine Learning 데이터 자산 생성을 통해 로컬 머신 리소스에서 클라우드 스토리지로 데이터를 업로드할 수 있습니다. 이 방법을 사용하면 추가 도구나 유틸리티가 필요하지 않습니다. 하지만 대용량 데이터 업로드는 전용 도구나 유틸리티가 필요할 수 있으며, 예를 들어 azcopy가 있습니다. azcopy 명령줄 도구는 데이터를 Azure Storage로 전송하거나 가져오는 데 사용됩니다. azcopy에 대한 자세한 내용은 AzCopy 시작하기를 참조하세요.

다음 노트북 셀에서 데이터 자산이 생성됩니다. 코드 샘플은 원시 데이터 파일을 지정된 클라우드 스토리지 리소스로 업로드합니다.

데이터 자산을 생성할 때마다 고유한 버전을 지정해야 합니다. 버전이 이미 존재하면 오류가 발생합니다. 이 코드에서는 데이터를 처음 읽을 때 "initial"을 사용합니다. 해당 버전이 이미 존재하면, 코드는 새로 생성하지 않습니다.

버전 매개 변수는 생략할 수도 있습니다. 이 경우, 버전 번호가 자동으로 생성되며 1부터 시작하여 순차적으로 증가합니다.

이 자습서에서는 첫 번째 버전으로 "initial"이라는 이름을 사용합니다. 프로덕션 머신 러닝 파이프라인 만들기 자습서에서도 이 데이터 버전을 사용하므로, 해당 자습서에서 다시 보게 될 값을 사용합니다.

from azure.ai.ml.entities import Data
from azure.ai.ml.constants import AssetTypes

# Update the 'my_path' variable to match the location of where you downloaded the data on your
# local filesystem

my_path = "./data/default_of_credit_card_clients.csv"
# Set the version number of the data asset
v1 = "initial"

my_data = Data(
    name="credit-card",
    version=v1,
    description="Credit card data",
    path=my_path,
    type=AssetTypes.URI_FILE,
)

## Create data asset if it doesn't already exist:
try:
    data_asset = ml_client.data.get(name="credit-card", version=v1)
    print(
        f"Data asset already exists. Name: {my_data.name}, version: {my_data.version}"
    )
except:
    ml_client.data.create_or_update(my_data)
    print(f"Data asset created. Name: {my_data.name}, version: {my_data.version}")

업로드된 데이터를 검사하려면 왼쪽 탐색 메뉴의 자산 섹션에서 데이터를 선택합니다. 데이터가 업로드되고 데이터 자산이 생성됩니다.

스크린샷은 스튜디오에서 데이터를 보여줍니다.

이 데이터의 이름은 신용 카드입니다. 데이터 자산 탭의 이름 열에서 볼 수 있습니다.

Azure Machine Learning 데이터 저장소는 Azure의 ‘기존’ 스토리지 계정에 대한 ‘참조’입니다. 데이터 저장소는 다음과 같은 이점을 제공합니다.

  1. 다양한 저장소 유형과 상호작용할 수 있는 일반적이고 사용하기 쉬운 API:

    • Azure Data Lake Storage
    • 블롭
    • 파일

    그리고 인증 방법 입니다.

  2. 팀으로 작업할 때 유용한 데이터 저장소를 더 쉽게 찾을 수 있는 방법.

  3. 스크립트에서 자격 증명 기반 데이터 액세스(서비스 주체/SAS/키)에 사용되는 연결 정보를 숨기는 방법.

노트북에서 데이터에 액세스하기

자주 액세스하는 데이터에 대해 데이터 자산을 만들고자 합니다. 데이터 저장소 URI에서 파일 시스템을 통해 액세스하는 방법에 설명된 대로 URI를 사용하여 데이터에 액세스할 수 있습니다. 그러나 앞서 언급했듯이 이러한 URI를 기억하기가 어려워질 수 있습니다.

대안으로, Azure Machine Learning 데이터 저장소용 파일 시스템 인터페이스를 제공하는 azureml-fsspec 라이브러리를 사용할 수 있습니다. 이는 Pandas에서 CSV 파일에 더 쉽게 액세스하는 방법입니다.

중요합니다

노트북 셀에서 이 코드를 실행하여 Jupyter 커널에 azureml-fsspec Python 라이브러리를 설치하세요.

%pip install -U azureml-fsspec
import pandas as pd

# Get a handle of the data asset and print the URI
data_asset = ml_client.data.get(name="credit-card", version=v1)
print(f"Data asset URI: {data_asset.path}")

# Read into pandas - note that you will see 2 headers in your data frame - that is ok, for now

df = pd.read_csv(data_asset.path)
df.head()

노트북에서 데이터에 접근하는 방법에 대한 자세한 내용은 대화형 개발 중 Azure 클라우드 저장소에서 데이터 액세스를 참조하세요.

데이터 자산의 새 버전 만들기

데이터를 머신 러닝 모델 학습에 적합하도록 약간의 정제가 필요합니다. 여기에는:

  • 두 개의 헤더
  • 머신 러닝에서 특성으로 사용되지 않는 클라이언트 ID 열
  • 응답 변수 이름에 공백이 있음

또한 CSV 형식과 비교하면 Parquet 파일 형식이 이 데이터를 저장하는 데 더 적합한 방법입니다. Parquet은 압축을 제공하고 스키마를 유지 관리합니다. 데이터를 정리하고 Parquet 형식으로 저장하려면 다음을 수행합니다.

# Read in data again, this time using the 2nd row as the header
df = pd.read_csv(data_asset.path, header=1)
# Rename column
df.rename(columns={"default payment next month": "default"}, inplace=True)
# Remove ID column
df.drop("ID", axis=1, inplace=True)

# Write file to filesystem
df.to_parquet("./data/cleaned-credit-card.parquet")

이 표는 이전 단계에서 다운로드한 원본 default_of_credit_card_clients.csv 파일의 데이터 구조를 보여줍니다. 업로드된 데이터에는 여기에 표시된 것처럼 23개의 설명 변수와 1개의 응답 변수가 포함되어 있습니다.

열 이름 변수 유형 설명
X1 설명 제공된 신용 금액(NT달러): 개인 소비자 신용과 가족(보조) 신용을 모두 포함합니다.
X2 설명 성별(1 = 남성, 2 = 여성).
X3 설명 교육(1 = 대학원, 2 = 대학교, 3 = 고등학교, 4 = 기타).
X4 설명 결혼 상태(1 = 기혼, 2 = 미혼, 3 = 기타).
X5 설명 나이(년).
X6-X11 설명 과거 결제 내역. 2005년 4월부터 9월까지 추적된 월별 결제 기록. -1 = 정식 결제함; 1 = 한 달 동안 결제가 지연됨; 2 = 2개월간 결제 지연; . . .; 8 = 8개월간 결제 지연; 9 = 9개월 이상 결제가 지연됨.
X12-17 설명 2005년 4월부터 9월까지의 청구서 금액(NT달러)입니다.
X18-23 설명 2005년 4월부터 9월까지의 이전 결제(NT달러)입니다.
Y 응답 기본 결제(예 = 1, 아니요 = 0)

다음으로, 데이터 자산의 새 버전을 생성하세요. 데이터는 자동으로 클라우드 스토리지에 업로드됩니다. 이 버전에서는 코드가 실행될 때마다 서로 다른 버전 번호가 생성되도록 시간 값을 추가합니다.

from azure.ai.ml.entities import Data
from azure.ai.ml.constants import AssetTypes
import time

# Next, create a new version of the data asset (the data is automatically uploaded to cloud storage):
v2 = "cleaned" + time.strftime("%Y.%m.%d.%H%M%S", time.gmtime())
my_path = "./data/cleaned-credit-card.parquet"

# Define the data asset, and use tags to make it clear the asset can be used in training

my_data = Data(
    name="credit-card",
    version=v2,
    description="Default of credit card clients data.",
    tags={"training_data": "true", "format": "parquet"},
    path=my_path,
    type=AssetTypes.URI_FILE,
)

## Create the data asset

my_data = ml_client.data.create_or_update(my_data)

print(f"Data asset created. Name: {my_data.name}, version: {my_data.version}")

정제된 Parquet 파일은 최신 버전의 데이터 원본입니다. 이 코드는 먼저 CSV 버전의 결과 집합을 표시한 다음 Parquet 버전을 표시합니다.

import pandas as pd

# Get a handle of the data asset and print the URI
data_asset_v1 = ml_client.data.get(name="credit-card", version=v1)
data_asset_v2 = ml_client.data.get(name="credit-card", version=v2)

# Print the v1 data
print(f"V1 Data asset URI: {data_asset_v1.path}")
v1df = pd.read_csv(data_asset_v1.path)
print(v1df.head(5))

# Print the v2 data
print(
    "_____________________________________________________________________________________________________________\n"
)
print(f"V2 Data asset URI: {data_asset_v2.path}")
v2df = pd.read_parquet(data_asset_v2.path)
print(v2df.head(5))

리소스 정리

다른 자습서를 이어서 진행할 계획이라면, 다음 단계로 넘어가세요.

컴퓨팅 인스턴스 중지

지금 사용할 계획이 없다면 컴퓨팅 인스턴스를 중지하세요.

  1. 스튜디오의 왼쪽 창에서 컴퓨팅을 선택합니다.
  2. 상단 탭에서 컴퓨트 인스턴스를 선택하세요.
  3. 목록에서 컴퓨팅 인스턴스를 선택합니다.
  4. 상단 도구 모음에서 중지를 선택하세요.

모든 리소스 삭제

중요합니다

사용자가 만든 리소스는 다른 Azure Machine Learning 자습서 및 방법 문서의 필수 구성 요소로 사용할 수 있습니다.

생성한 리소스를 사용할 계획이 없다면 요금이 발생하지 않도록 삭제하세요.

  1. Azure 포털의 검색 상자에 리소스 그룹을 입력하고, 결과에서 선택하세요.

  2. 목록에서 만든 리소스 그룹을 선택합니다.

  3. 개요 페이지에서 리소스 그룹 삭제를 선택하세요.

    Azure 포털에서 리소스 그룹을 삭제하기 위한 선택 항목을 보여 주는 스크린샷입니다.

  4. 리소스 그룹의 이름을 입력합니다. 그런 다음, 삭제를 선택합니다.

다음 단계

데이터 자산에 대한 자세한 내용은 데이터 자산 생성을 참조하세요.

데이터 저장소에 대한 자세한 내용은 데이터 저장소 생성를 참조하세요.

다음 자습서로 계속 진행하여 학습 스크립트를 개발하는 방법을 알아보세요.