구성 요소 만들기
구성 요소를 사용하면 동일한 Azure Machine Learning 작업 영역 내의 사용자 간에 쉽게 공유할 수 있는 재사용 가능한 스크립트를 만들 수 있습니다. 구성 요소를 사용하여 Azure Machine Learning 파이프라인을 빌드할 수도 있습니다.
구성 요소 사용
구성 요소를 사용하는 두 가지 주요 이유는 다음과 같습니다.
- 파이프라인 빌드
- 바로 가기 코드 공유
스케일링을 위한 코드를 준비할 때 구성 요소를 만들려고 합니다. 실험 및 개발을 완료하고 모델을 프로덕션으로 이동할 준비가 된 경우
Azure Machine Learning에서 작업 영역 내에 코드(기본 설정 언어로)를 저장하는 구성 요소를 만들 수 있습니다. 이상적으로는 기계 학습 워크플로와 관련된 특정 작업을 수행하도록 구성 요소를 디자인하는 것이 좋습니다.
예를 들어 구성 요소는 데이터를 정규화하거나, 기계 학습 모델을 학습시키거나, 모델을 평가하는 Python 스크립트로 구성될 수 있습니다.
구성 요소는 자신의 Azure Machine Learning 파이프라인에서 구성 요소를 다시 사용할 수 있는 다른 Azure Machine Learning 사용자와 쉽게 공유할 수 있습니다.
구성 요소 만들기
구성 요소는 다음과 같은 세 부분으로 구성됩니다.
- 메타데이터: 구성 요소의 이름, 버전 등을 포함합니다.
- 인터페이스: 예상 입력 매개 변수(예: 데이터 세트 또는 하이퍼 매개 변수) 및 예상 출력(예: 메트릭 및 아티팩트)을 포함합니다.
- 명령, 코드 및 환경: 코드를 실행하는 방법을 지정합니다.
구성 요소를 만들려면 다음 두 개의 파일이 필요합니다.
- 실행하려는 워크플로가 포함된 스크립트입니다.
- 구성 요소의 메타데이터, 인터페이스, 명령, 코드, 환경을 정의하는 YAML 파일입니다.
YAML 파일을 만들거나 command_component() 함수를 데코레이터로 사용하여 YAML 파일을 만들 수 있습니다.
팁
여기서는 YAML 파일을 만들어 구성 요소를 만드는 데 집중하겠습니다. 또는 을 사용하여 command_component()구성 요소를 만드는 방법에 대해 자세히 알아보세요.
예를 들어 누락된 값을 제거하고 데이터를 정규화하여 데이터를 준비하는 prep.py Python 스크립트가 있을 수 있습니다.
# import libraries
import argparse
import pandas as pd
import numpy as np
from pathlib import Path
from sklearn.preprocessing import MinMaxScaler
# setup arg parser
parser = argparse.ArgumentParser()
# add arguments
parser.add_argument("--input_data", dest='input_data',
type=str)
parser.add_argument("--output_data", dest='output_data',
type=str)
# parse args
args = parser.parse_args()
# read the data
df = pd.read_csv(args.input_data)
# remove missing values
df = df.dropna()
# normalize the data
scaler = MinMaxScaler()
num_cols = ['feature1','feature2','feature3','feature4']
df[num_cols] = scaler.fit_transform(df[num_cols])
# save the data as a csv
output_df = df.to_csv(
(Path(args.output_data) / "prepped-data.csv"),
index = False
)
prep.py 스크립트에 대한 구성 요소를 만들려면 prep.yml YAML 파일이 필요합니다.
$schema: https://azuremlschemas.azureedge.net/latest/commandComponent.schema.json
name: prep_data
display_name: Prepare training data
version: 1
type: command
inputs:
input_data:
type: uri_file
outputs:
output_data:
type: uri_file
code: ./src
environment: azureml:AzureML-sklearn-0.24-ubuntu18.04-py37-cpu@latest
command: >-
python prep.py
--input_data ${{inputs.input_data}}
--output_data ${{outputs.output_data}}
YAML 파일은 prep.py 폴더에 저장된 src 스크립트를 참조합니다. 다음 코드를 사용하여 구성 요소를 로드할 수 있습니다.
from azure.ai.ml import load_component
parent_dir = ""
loaded_component_prep = load_component(source=parent_dir + "./prep.yml")
구성 요소를 로드한 경우 파이프라인에서 사용하거나 구성 요소를 등록할 수 있습니다.
구성 요소 등록
파이프라인에서 구성 요소를 사용하려면 스크립트와 YAML 파일이 필요합니다. 작업 영역의 다른 사용자가 구성 요소에 액세스할 수 있도록 하려면 Azure Machine Learning 작업 영역에 구성 요소를 등록할 수도 있습니다.
다음 코드를 사용하여 구성 요소를 등록할 수 있습니다.
prep = ml_client.components.create_or_update(prepare_data_component)