데이터 자산 만들기

완료됨

데이터 과학자로서 기계 학습 모델 학습에 집중하려고 할 것입니다. 기계 학습 모델의 입력으로 사용할 데이터에 액세스해야 하지만 액세스 권한을 얻는 방법에 대해서는 걱정하지 않아도 됩니다. 작업하려는 데이터에 대한 액세스를 간소화하기 위해 데이터 자산을 사용할 수 있습니다.

데이터 자산 이해

Azure Machine Learning에서 데이터 자산은 데이터가 저장되는 위치, 액세스 방법 및 기타 관련 메타데이터에 대한 참조입니다. 데이터 자산을 만들어 데이터 저장소의 데이터, Azure Storage 서비스, 퍼블릭 URL 또는 로컬 디바이스에 저장된 데이터에 액세스할 수 있습니다.

데이터 자산을 만드는 경우의 이점은 다음과 같습니다.

  • 파일 위치를 기억할 필요가 없도록 팀의 다른 멤버와 데이터를 공유하고 다시 사용할 수 있습니다.
  • 연결 문자열 또는 데이터 경로에 대해 걱정할 필요 없이 지원되는 컴퓨팅 형식의 모델 학습 중에 데이터에 원활하게 액세스할 수 있습니다.
  • 데이터 자산의 메타데이터 버전을 관리할 수 있습니다.

다음과 같은 세 가지 주요 데이터 자산 유형을 사용할 수 있습니다.

Azure Machine Learning의 다양한 형식의 데이터 자산 다이어그램.

  • URI 파일: 특정 파일을 가리킵니다.
  • URI 폴더: 폴더를 가리킵니다.
  • MLTable: 폴더 또는 파일을 가리키고 테이블 형식 데이터로 읽을 스키마를 포함합니다.

참고

URIUniform Resource Identifier를 의미하며 로컬 컴퓨터, Azure Blob 또는 Data Lake Storage, 공개적으로 사용 가능한 https 위치 또는 연결된 데이터 저장소의 스토리지 위치를 의미합니다.

데이터 자산을 사용하는 경우

데이터 자산은 기계 학습 작업을 Azure Machine Learning 작업으로 실행할 때 가장 유용합니다. 작업으로서, 입력을 사용하고 출력을 생성하는 Python 스크립트를 실행할 수 있습니다. 데이터 자산은 Azure Machine Learning 작업의 입력 또는 출력으로 구문 분석할 수 있습니다.

각 데이터 자산 유형, 만드는 방법 및 작업에서 데이터 자산을 사용하는 방법을 살펴보겠습니다.

URI 파일 데이터 자산 만들기

URI 파일 데이터 자산은 특정 파일을 가리킵니다. Azure Machine Learning은 파일 경로만 저장하므로 모든 형식의 파일을 가리킬 수 있습니다. 데이터 자산을 사용할 때는 연결하려는 데이터 형식에 따라 데이터를 읽는 방법을 지정합니다.

URI 파일 데이터 자산을 만들 때 사용할 수 있는 지원되는 경로는 다음과 같습니다.

  • 로컬: ./<path>
  • Azure Blob Storage: wasbs://<account_name>.blob.core.windows.net/<container_name>/<folder>/<file>
  • Azure Data Lake Storage(Gen 2): abfss://<file_system>@<account_name>.dfs.core.windows.net/<folder>/<file>
  • 데이터 저장소: azureml://datastores/<datastore_name>/paths/<folder>/<file>

중요

데이터 자산을 만들고 로컬 디바이스에 저장된 파일 또는 폴더를 가리키면 파일 또는 폴더의 복사본이 기본 데이터 저장소 workspaceblobstore에 업로드됩니다. LocalUpload 폴더에서 파일 또는 폴더를 찾을 수 있습니다. 복사본을 업로드하면 데이터가 저장된 로컬 디바이스를 사용할 수 없는 경우에도 Azure Machine Learning 작업 영역에서 데이터에 액세스할 수 있습니다.

URI 파일 데이터 자산을 만들려면 다음 코드를 사용할 수 있습니다.

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

my_path = '<supported-path>'

my_data = Data(
    path=my_path,
    type=AssetTypes.URI_FILE,
    description="<description>",
    name="<name>",
    version="<version>"
)

ml_client.data.create_or_update(my_data)

URI 파일 데이터 자산을 Azure Machine Learning 작업의 입력으로 구문 분석하는 경우 먼저 데이터를 읽어야 사용할 수 있습니다.

작업으로서 실행하려는 Python 스크립트를 만들고 입력 매개 변수 input_data의 값을 URI 파일 데이터 자산(CSV 파일을 가리키는)으로 설정하면 됩니다. Python 스크립트에 다음 코드를 포함하여 데이터를 읽을 수 있습니다.

import argparse
import pandas as pd

parser = argparse.ArgumentParser()
parser.add_argument("--input_data", type=str)
args = parser.parse_args()

df = pd.read_csv(args.input_data)
print(df.head(10))

URI 파일 데이터 자산이 다른 형식의 파일을 가리키는 경우 적절한 Python 코드를 사용하여 데이터를 읽어야 합니다. 예를 들어 CSV 파일 대신 JSON 파일로 작업하는 경우 대신 pd.read_json()을 사용합니다.

URI 폴더 데이터 자산 만들기

URI 폴더 데이터 자산은 특정 폴더를 가리킵니다. URI 파일 데이터 자산과 유사하게 작동하며 동일한 경로를 지원합니다.

Python SDK를 사용하여 URI 폴더 데이터 자산을 만들려면 다음 코드를 사용할 수 있습니다.

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

my_path = '<supported-path>'

my_data = Data(
    path=my_path,
    type=AssetTypes.URI_FOLDER,
    description="<description>",
    name="<name>",
    version='<version>'
)

ml_client.data.create_or_update(my_data)

URI 폴더 데이터 자산을 Azure Machine Learning 작업의 입력으로 구문 분석하는 경우 먼저 데이터를 읽어야 사용할 수 있습니다.

작업으로서 실행하려는 Python 스크립트를 만들고 입력 매개 변수 input_data의 값을 URI 폴더 데이터 자산(여러 CSV 파일을 가리키는)으로 설정하면 됩니다. 폴더의 모든 CSV 파일을 읽고 연결할 수 있습니다. 이 작업은 Python 스크립트에 다음 코드를 포함하여 수행할 수 있습니다.

import argparse
import glob
import pandas as pd

parser = argparse.ArgumentParser()
parser.add_argument("--input_data", type=str)
args = parser.parse_args()

data_path = args.input_data
all_files = glob.glob(data_path + "/*.csv")
df = pd.concat((pd.read_csv(f) for f in all_files), sort=False)

작업 중인 데이터 형식에 따라 파일을 읽는 데 사용하는 코드가 변경될 수 있습니다.

MLTable 데이터 자산 만들기

MLTable 데이터 자산을 사용하면 테이블 형식 데이터를 가리킬 수 있습니다. MLTable 데이터 자산을 만들 때 데이터를 읽을 스키마 정의를 지정합니다. 스키마가 이미 정의되고 데이터 자산과 함께 저장되므로 사용할 때 데이터를 읽는 방법을 지정할 필요가 없습니다.

따라서 데이터의 스키마가 복잡하거나 자주 변경되는 경우 MLTable 데이터 자산을 사용하려고 합니다. 데이터를 사용하는 모든 스크립트에서 데이터를 읽는 방법을 변경하는 대신, 데이터 자산 자체에서만 변경하면 됩니다.

MLTable 데이터 자산을 만들 때 스키마를 정의할 때 데이터의 하위 집합만 지정하도록 선택할 수도 있습니다.

자동화된 Machine Learning과 같은 Azure Machine Learning의 특정 기능에서는 Azure Machine Learning에서 데이터를 읽는 방법을 알아야 하므로 MLTable 데이터 자산을 사용해야 합니다.

스키마를 정의하려면 읽으려는 데이터와 같은 폴더에 MLTable 파일을 포함할 수 있습니다. MLTable 파일에는 읽으려는 데이터를 가리키는 경로와 데이터를 읽는 방법이 포함됩니다.

type: mltable

paths:
  - pattern: ./*.txt
transformations:
  - read_delimited:
      delimiter: ','
      encoding: ascii
      header: all_files_same_headers

Python SDK를 사용하여 MLTable 데이터 자산을 만들려면 다음 코드를 사용할 수 있습니다.

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

my_path = '<path-including-mltable-file>'

my_data = Data(
    path=my_path,
    type=AssetTypes.MLTABLE,
    description="<description>",
    name="<name>",
    version='<version>'
)

ml_client.data.create_or_update(my_data)

MLTable 데이터 자산을 Azure Machine Learning 작업으로 실행하려는 Python 스크립트에 대한 입력으로 구문 분석하는 경우 다음 코드를 포함하여 데이터를 읽을 수 있습니다.

import argparse
import mltable
import pandas

parser = argparse.ArgumentParser()
parser.add_argument("--input_data", type=str)
args = parser.parse_args()

tbl = mltable.load(args.input_data)
df = tbl.to_pandas_dataframe()

print(df.head(10))

일반적인 방법은 테이블 형식 데이터를 Pandas 데이터 프레임으로 변환하는 것입니다. 그러나 워크로드에 더 적합한 경우 데이터를 Spark 데이터 프레임으로 변환할 수도 있습니다.