다음을 통해 공유


Python용 Azure Machine Learning SDK란?

데이터 과학자 및 AI 개발자는 Python용 Azure Machine Learning SDK를 사용하여 Azure Machine Learning Service에서 기계 학습 워크플로를 빌드 및 실행합니다. Jupyter Notebook, Visual Studio Code 또는 즐겨 사용하는 Python IDE를 포함하여 모든 Python 환경에서 서비스와 상호 작용할 수 있습니다.

SDK의 주요 영역은 다음과 같습니다.

  • 기계 학습 실험에서 사용되는 데이터 세트의 수명 주기를 검색, 준비 및 관리합니다.
  • 기계 학습 실험을 모니터링, 로깅 및 구성하는 클라우드 리소스를 관리합니다.
  • GPU 가속 모델 학습을 포함하여 로컬로 또는 클라우드 리소스를 사용하여 모델을 학습시킵니다.
  • 구성 매개 변수와 학습 데이터를 허용하는 자동화된 기계 학습을 사용합니다. 알고리즘과 하이퍼 매개 변수 설정을 통해 자동으로 반복하여 예측을 실행하는 데 가장 적합한 모델을 찾습니다.
  • 웹 서비스를 배포하여 학습된 모델을 모든 애플리케이션에서 사용할 수 있는 RESTful 서비스로 변환합니다.

시작하는 방법을 단계별로 연습하려면 이 자습서를 사용해 보세요.

다음 섹션에서는 SDK에서 가장 중요한 클래스 중 일부와 이를 사용하는 일반적인 디자인 패턴에 대해 간략하게 설명합니다. SDK를 가져오려면 설치 가이드를 참조하세요.

안정성 vs 실험성

Python용 Azure Machine Learning SDK는 동일한 SDK에서 안정적 기능과 실험적 기능을 모두 제공합니다.

특징/기능 상태 Description
안정적 기능 프로덕션 준비

이러한 기능은 대부분의 사용 사례 및 프로덕션 환경에 권장됩니다. 이는 실험적 기능보다 자주 업데이트되지 않습니다.
실험적 기능 개발용

이러한 기능은 프로덕션 사용에 대해 준비되거나 완전히 테스트되지 않은 업데이트에 & 새로 개발된 기능입니다. 이 기능은 일반적으로 작동하지만 몇 가지 호환성이 손상되는 변경을 포함할 수 있습니다. 실험적 기능은 SDK의 주요 버그를 처리하는 데 사용되며 테스트 기간 동안만 업데이트를 받습니다. 실험 기능은 미리 보기에 있는 기능이라고도 합니다.

이름에서 알 수 있듯이 실험적(미리 보기) 기능은 실험용이며 버그가 없거나 안정적인 것으로 간주되지 않습니다. 따라서 이전 버전의 기능 및 업데이트를 사용해보고 버그 및 결함에 대한 보고에 참여하려는 고급 사용자에게만 실험적 기능을 권장합니다.

실험 기능은 SDK 참조의 참고 섹션으로 레이블이 지정되고 Azure Machine Learning 설명서 전체에서 (미리 보기)와 같은 텍스트로 표시됩니다.

작업 영역

네임스페이스: azureml.core.workspace.Workspace

Workspace 클래스는 기계 학습 모델을 실험하고, 학습시키고, 배포하는 데 사용하는 클라우드의 기본 리소스입니다. Azure 구독 및 리소스 그룹을 쉽게 사용되는 개체에 연결합니다.

create Workspace 메서드의 모든 매개 변수를 확인하여 기존 인스턴스(Storage, Key Vault, App-Insights 및 Azure Container Registry-ACR)를 재사용하고 프라이빗 엔드포인트 구성 및 컴퓨팅 대상과 같은 추가 설정을 수정합니다.

다음 코드를 사용하여 클래스를 가져오고 새 작업 영역을 만듭니다. 작업 영역에 사용하려는 기존 Azure 리소스 그룹이 있는 경우 create_resource_groupFalse로 설정합니다. 일부 함수는 Azure 인증 자격 증명을 묻는 메시지를 표시할 수 있습니다.

from azureml.core import Workspace
ws = Workspace.create(name='myworkspace',
                      subscription_id='<azure-subscription-id>',
                      resource_group='myresourcegroup',
                      create_resource_group=True,
                      location='eastus2'
                     )

먼저 구성 JSON 파일에 기록하여 여러 환경에서 동일한 작업 영역을 사용합니다. 그러면 구독, 리소스 및 작업 영역 이름 데이터가 저장됩니다.

ws.write_config(path="./file-path", file_name="ws_config.json")

구성 파일을 읽어 작업 영역을 로드합니다.

from azureml.core import Workspace
ws_other_environment = Workspace.from_config(path="./file-path/ws_config.json")

또는 정적 get() 메서드를 사용하여 구성 파일을 사용하지 않고 기존 작업 영역을 로드합니다.

from azureml.core import Workspace
ws = Workspace.get(name="myworkspace", subscription_id='<azure-subscription-id>', resource_group='myresourcegroup')

ws 변수는 다음 코드 예제에서 Workspace 개체를 나타냅니다.

실험

네임스페이스: azureml.core.experiment.Experiment

Experiment 클래스는 시도(개별 모델 실행)의 컬렉션을 나타내는 또 다른 기본 클라우드 리소스입니다. 다음 코드에서는 Workspace 내에서 이름을 기준으로 Experiment 개체를 가져오거나 이름이 없는 경우 Experiment 개체를 새로 만듭니다.

from azureml.core.experiment import Experiment
experiment = Experiment(workspace=ws, name='test-experiment')

다음 코드를 실행하여 Workspace에 포함된 모든 Experiment 개체의 목록을 가져옵니다.

list_experiments = Experiment.list(ws)

get_runs 함수를 사용하여 Experiment에서 Run 개체(시도)의 목록을 검색합니다. 다음 코드에서는 실행을 검색하고 각 실행 ID를 출력합니다.

list_runs = experiment.get_runs()
for run in list_runs:
    print(run.id)

실험 시도를 실행하는 방법에는 두 가지가 있습니다. Jupyter Notebook에서 대화형으로 실험하는 경우 start_logging 함수를 사용합니다. 표준 Python 환경에서 실험을 제출하는 경우 submit 함수를 사용합니다. 두 함수는 모두 Run 개체를 반환합니다. experiment 변수는 다음 코드 예제에서 Experiment 개체를 나타냅니다.

다음을 실행합니다.

네임스페이스: azureml.core.run.Run

실행은 실험의 단일 시도를 나타냅니다. Run은 시도의 비동기 실행을 모니터링하고, 시도의 출력을 저장하고, 결과를 분석하고, 생성된 아티팩트에 액세스하는 데 사용하는 개체입니다. 실험 코드 내에서 Run을 사용하여 메트릭과 아티팩트를 실행 기록 서비스에 기록합니다. 기능은 다음과 같습니다.

  • 메트릭과 데이터를 저장하고 검색합니다.
  • 태그 및 자식 계층 구조를 사용하여 이전 실행을 쉽게 조회할 수 있습니다.
  • 배포할 저장된 모델 파일을 등록합니다.
  • 실행의 속성을 저장, 수정 및 검색합니다.

실행 구성 개체가 포함된 Experiment 개체를 제출하여 Run 개체를 만듭니다. tags 매개 변수를 사용하여 사용자 지정 범주 및 레이블을 실행에 연결합니다. 나중에 Experiment에서 쉽게 찾고 검색할 수 있습니다.

tags = {"prod": "phase-1-model-tests"}
run = experiment.submit(config=your_config_object, tags=tags)

정적 list 함수를 사용하여 Experiment에서 모든 Run 개체의 목록을 가져옵니다. 이전에 만든 태그를 기준으로 필터링하는 tags 매개 변수를 지정합니다.

from azureml.core.run import Run
filtered_list_runs = Run.list(experiment, tags=tags)

get_details 함수를 사용하여 실행에 대한 자세한 출력을 검색합니다.

run_details = run.get_details()

이 함수의 출력은 다음 항목을 포함하는 사전입니다.

  • 실행 ID
  • 상태
  • 시작 및 종료 시간
  • 컴퓨팅 대상(로컬 및 클라우드)
  • 실행에 사용되는 종속성 및 버전
  • 학습 관련 데이터(모델 유형에 따라 다름)

실행을 구성하고 모니터링하는 방법에 대한 자세한 예제는 이 방법을 참조하세요.

모델

네임스페이스: azureml.core.model.Model

Model 클래스는 기계 학습 모델의 클라우드 표현 작업에 사용됩니다. 메서드는 로컬 개발 환경과 클라우드의 Workspace 개체 간에 모델을 전송하는 데 도움이 됩니다.

모델 등록을 사용하여 Azure 클라우드에서 모델을 작업 영역에 저장하고 버전을 지정할 수 있습니다. 등록된 모델은 이름 및 버전으로 식별됩니다. 모델을 기존 이름과 동일한 이름으로 등록할 때마다 레지스트리에서 버전을 증가시킵니다. Azure Machine Learning은 Azure Machine Learning 모델뿐만 아니라 Python 3을 통해 로드할 수 있는 모든 모델을 지원합니다.

다음 예제에서는 scikit-learn을 사용하여 간단한 로컬 분류 모델을 작성하고, 모델을 Workspace에 등록하고, 클라우드에서 모델을 다운로드하는 방법을 보여 줍니다.

나이를 기준으로 고객 이탈을 예측하는 간단한 clf 분류자를 만듭니다. 그런 다음, 모델을 동일한 디렉터리에 있는 .pkl 파일에 덤프합니다.

from sklearn import svm
import joblib
import numpy as np

# customer ages
X_train = np.array([50, 17, 35, 23, 28, 40, 31, 29, 19, 62])
X_train = X_train.reshape(-1, 1)
# churn y/n
y_train = ["yes", "no", "no", "no", "yes", "yes", "yes", "no", "no", "yes"]

clf = svm.SVC(gamma=0.001, C=100.)
clf.fit(X_train, y_train)

joblib.dump(value=clf, filename="churn-model.pkl")

register 함수를 사용하여 모델을 작업 영역에 등록합니다. 로컬 모델 경로와 모델 이름을 지정합니다. 동일한 이름을 두 번 이상 등록하면 새 버전이 만들어집니다.

from azureml.core.model import Model

model = Model.register(workspace=ws, model_path="churn-model.pkl", model_name="churn-model-test")

이제 모델이 작업 영역에 등록되었으므로 모델을 쉽게 관리, 다운로드 및 구성할 수 있습니다. Workspace에서 모델(예: 다른 환경에 있는 모델) 개체를 검색하려면 클래스 생성자를 사용하고 모델 이름과 선택적 매개 변수를 지정합니다. 그런 다음, download 함수를 사용하여 클라우드 폴더 구조를 포함하여 모델을 다운로드합니다.

from azureml.core.model import Model
import os

model = Model(workspace=ws, name="churn-model-test")
model.download(target_dir=os.getcwd())

delete 함수를 사용하여 Workspace에서 모델을 제거합니다.

model.delete()

등록 모델이 있으면 웹 서비스로 배포하는 프로세스가 간단합니다. 먼저 이미지를 만들고 등록합니다. 이 단계에서는 웹 서비스 요청 및 응답 형식을 정의하는 스크립트와 함께 Python 환경 및 해당 종속성을 구성합니다. 이미지가 만들어지면 컴퓨팅 대상의 CPU 코어 및 메모리 매개 변수를 설정하는 배포 구성을 빌드합니다. 그런 다음, 이미지를 연결합니다.

ComputeTarget, RunConfiguration 및 ScriptRunConfig

네임스페이스: azureml.core.compute.ComputeTarget
네임스페이스: azureml.core.runconfig.RunConfiguration
네임스페이스: azureml.core.script_run_config.ScriptRunConfig

ComputeTarget 클래스는 컴퓨팅 대상을 만들고 관리하는 추상 부모 클래스입니다. 컴퓨팅 대상은 기계 학습 모델을 학습시킬 수 있는 다양한 리소스를 나타냅니다. 컴퓨팅 대상은 로컬 머신 또는 클라우드 리소스(예: Azure Machine Learning 컴퓨팅, Azure HDInsight 또는 원격 가상 머신)일 수 있습니다.

컴퓨팅 대상을 사용하여 강력한 가상 머신을 모델 학습에 활용하고, 영구 컴퓨팅 대상 또는 임시 런타임 호출 대상을 설정합니다. 컴퓨팅 대상을 설정하고 관리하는 방법에 대한 포괄적인 지침은 이 방법을 참조하세요.

다음 코드에서는 AmlCompute(ComputeTarget의 자식 클래스) 대상을 설정하는 간단한 예제를 보여 줍니다. 이 대상은 런타임 원격 컴퓨팅 리소스를 Workspace 개체에 만듭니다. 작업이 제출되면 리소스가 자동으로 크기 조정됩니다. 실행이 완료되면 자동으로 삭제됩니다.

간단한 scikit-learn 변동 모델을 다시 사용하고, 현재 디렉터리에 있는 자체의 train.py 파일에 빌드합니다. 파일의 끝에 outputs라는 디렉터리를 새로 만듭니다. 이 단계에서는 joblib.dump()가 직렬화된 학습된 모델을 저장하기 위한 디렉터리를 클라우드(작업 영역)에 만듭니다.

# train.py

from sklearn import svm
import numpy as np
import joblib
import os

# customer ages
X_train = np.array([50, 17, 35, 23, 28, 40, 31, 29, 19, 62])
X_train = X_train.reshape(-1, 1)
# churn y/n
y_train = ["yes", "no", "no", "no", "yes", "yes", "yes", "no", "no", "yes"]

clf = svm.SVC(gamma=0.001, C=100.)
clf.fit(X_train, y_train)

os.makedirs("outputs", exist_ok=True)
joblib.dump(value=clf, filename="outputs/churn-model.pkl")

다음으로 RunConfiguration 개체를 인스턴스화하고 유형과 크기를 설정하여 컴퓨팅 대상을 만듭니다. 다음 예제에서는 가장 작은 리소스 크기(1개 CPU 코어, 3.5GB 메모리)를 사용합니다. list_vms 변수에는 지원되는 가상 머신과 해당 크기의 목록이 포함됩니다.

from azureml.core.runconfig import RunConfiguration
from azureml.core.compute import AmlCompute
list_vms = AmlCompute.supported_vmsizes(workspace=ws)

compute_config = RunConfiguration()
compute_config.target = "amlcompute"
compute_config.amlcompute.vm_size = "STANDARD_D1_V2"

CondaDependencies 클래스를 사용하여 원격 컴퓨팅 리소스의 Python 환경에 대한 종속성을 만듭니다. train.py 파일은 환경에 설치해야 하는 scikit-learnnumpy를 사용합니다. 또한 종속성의 버전을 지정할 수 있습니다. dependencies 개체를 사용하여 compute_config에서 환경을 설정합니다.

from azureml.core.conda_dependencies import CondaDependencies

dependencies = CondaDependencies()
dependencies.add_pip_package("scikit-learn")
dependencies.add_pip_package("numpy==1.15.4")
compute_config.environment.python.conda_dependencies = dependencies

이제 실험을 제출할 준비가 되었습니다. ScriptRunConfig 클래스를 사용하여 컴퓨팅 대상 구성을 연결하고 train.py 학습 스크립트에 대한 경로/파일을 지정합니다. submit() 함수의 config 매개 변수를 지정하여 실험을 제출합니다. 환경이 초기화되고 모델이 학습될 때 결과 실행에서 wait_for_completion을 호출하여 비동기 실행 출력을 확인합니다.

경고

다음은 ScriptRunConfig 매개 변수에 사용되는 특정 문자에 대한 제한 사항입니다.

  • ", $, ;\ 문자는 bash 명령을 분리하기 위한 예약 문자로 간주되므로 백 엔드에서 이스케이프됩니다.
  • (, ), %, !, ^, <, >, &| 문자는 Windows에서 로컬 실행을 위해 이스케이프됩니다.
from azureml.core.experiment import Experiment
from azureml.core import ScriptRunConfig

script_run_config = ScriptRunConfig(source_directory=os.getcwd(), script="train.py", run_config=compute_config)
experiment = Experiment(workspace=ws, name="compute_target_test")
run = experiment.submit(config=script_run_config)
run.wait_for_completion(show_output=True)

실행이 완료되면 작업 영역에서 학습된 churn-model.pkl 모델 파일을 사용할 수 있습니다.

Environment

네임스페이스: azureml.core.environment

Azure Machine Learning 환경에서는 학습 및 채점 스크립트와 관련된 Python 패키지, 환경 변수 및 소프트웨어 설정을 지정합니다. 환경에 대해 Python 외에도 PySpark, Docker 및 R을 구성할 수 있습니다. 내부적으로 환경은 컴퓨팅 대상에서 학습 및 채점 프로세스를 실행하는 데 사용되는 Docker 이미지를 생성합니다. 환경은 Machine Learning 작업 영역 내에서 관리 및 버전이 지정된 엔터티로, 다양한 컴퓨팅 대상과 컴퓨팅 형식에 걸쳐 재현 가능하고, 감사 가능하고, 이식 가능한 기계 학습 워크플로를 사용할 수 있습니다.

Environment 개체를 사용하여 다음을 수행할 수 있습니다.

  • 학습 스크립트를 개발합니다.
  • 대규모 모델 학습을 위한 Azure Machine Learning 컴퓨팅에서 동일한 환경을 재사용합니다.
  • 특정 컴퓨팅 형식에 종속되지 않고 동일한 환경을 사용하여 모델을 배포합니다.

다음 코드는 SDK에서 Environment 클래스를 가져와서 환경 개체를 인스턴스화합니다.

from azureml.core.environment import Environment
Environment(name="myenv")

Conda, pip 또는 private wheel 파일을 사용하여 환경에 패키지를 추가합니다. CondaDependency 클래스로 각 패키지 종속성을 지정하여 환경의 PythonSection에 추가합니다.

다음은 환경에 추가하는 예제입니다. 이 예제에서는 numpy 1.17.0 버전을 추가합니다. 또한 환경 myenvpillow 패키지를 추가합니다. 이 예제에서는 각각 add_conda_package() 메서드 및 add_pip_package() 메서드를 사용합니다.

from azureml.core.environment import Environment
from azureml.core.conda_dependencies import CondaDependencies

myenv = Environment(name="myenv")
conda_dep = CondaDependencies()

# Installs numpy version 1.17.0 conda package
conda_dep.add_conda_package("numpy==1.17.0")

# Installs pillow package
conda_dep.add_pip_package("pillow")

# Adds dependencies to PythonSection of myenv
myenv.python.conda_dependencies=conda_dep

학습 실행을 제출하려면 환경, 컴퓨팅 대상, 학습 Python 스크립트를 실행 구성으로 결합해야 합니다. 이 구성은 실행을 전송하는 데 사용되는 래퍼 개체입니다.

학습 실행을 제출하면 새 환경을 빌드하는 데 몇 분 정도 걸릴 수 있습니다. 시간은 필요한 종속성의 크기에 따라 달라집니다. 환경은 서비스에서 캐시됩니다. 환경 정의가 변경되지 않는 한, 전체 설정을 한 번만 하면 됩니다.

다음 예제에서는 ScriptRunConfig를 래퍼 개체로 사용하는 경우를 보여줍니다.

from azureml.core import ScriptRunConfig, Experiment
from azureml.core.environment import Environment

exp = Experiment(name="myexp", workspace = ws)
# Instantiate environment
myenv = Environment(name="myenv")

# Add training script to run config
runconfig = ScriptRunConfig(source_directory=".", script="train.py")

# Attach compute target to run config
runconfig.run_config.target = "local"

# Attach environment to run config
runconfig.run_config.environment = myenv

# Submit run 
run = exp.submit(runconfig)

실행을 제출하기 전에 실행 구성에서 환경을 지정하지 않으면 자동으로 기본 환경이 만들어집니다.

환경을 사용하여 웹 서비스를 배포하려면 모델 배포 섹션을 참조하세요.

Pipeline, PythonScriptStep

네임스페이스: azureml.pipeline.core.pipeline.Pipeline
네임스페이스: azureml.pipeline.steps.python_script_step.PythonScriptStep

Azure Machine Learning 파이프라인은 기계 학습 작업 전체에 대한 자동화된 워크플로입니다. 하위 작업은 파이프라인 내에서 일련의 단계로 캡슐화됩니다. Azure Machine Learning 파이프라인은 Python 스크립트를 호출하는 하나의 단계만큼 간단할 수 있습니다. 파이프라인에는 다음과 같은 기능이 포함됩니다.

  • 데이터 준비(가져오기, 유효성 검사 및 정리, 마이닝/변환, 정규화 및 준비 포함)
  • 학습 구성(인수 매개 변수화, 파일 경로 및 구성 로깅/보고 포함)
  • 효율적이고 반복적인 학습 및 유효성 검사(특정 데이터 하위 세트, 다른 하드웨어 컴퓨팅 리소스, 분산 처리 및 진행 상황 모니터링 지정 포함 가능)
  • 배포(버전 관리, 크기 조정, 프로비저닝 및 액세스 제어 포함)
  • HTTP 라이브러리에서 다시 실행하기 위해 REST 엔드포인트에 파이프라인 게시

PythonScriptStep은 컴퓨팅 대상에서 Python 스크립트를 실행하는 기본 제공 단계입니다. 스크립트 이름과 기타 선택적 매개 변수(예: 스크립트, 컴퓨팅 대상, 입력 및 출력에 대한 인수)를 사용합니다. 다음 코드는 PythonScriptStep에 대한 간단한 예제입니다. train.py 스크립트의 예제는 이 자습서의 하위 섹션을 참조하세요.

from azureml.pipeline.steps import PythonScriptStep

train_step = PythonScriptStep(
    script_name="train.py",
    arguments=["--input", blob_input_data, "--output", output_data1],
    inputs=[blob_input_data],
    outputs=[output_data1],
    compute_target=compute_target,
    source_directory=project_folder
)

하나 이상의 단계가 만들어지면 이러한 단계를 서로 연결하여 간단한 자동화된 파이프라인으로 게시할 수 있습니다.

from azureml.pipeline.core import Pipeline

pipeline = Pipeline(workspace=ws, steps=[train_step])
pipeline_run = experiment.submit(pipeline)

파이프라인 워크플로를 빌드하는 포괄적인 예제는 고급 자습서를 따르세요.

파이프라인을 만들고 사용하는 패턴

Azure Machine Learning 파이프라인은 Azure Machine Learning 작업 영역과 연결되고, 파이프라인 단계는 해당 작업 영역 내에서 사용할 수 있는 컴퓨팅 대상과 연결됩니다. 자세한 내용은 작업 영역에 대한 이 문서 또는 컴퓨팅 대상에 대한 이 설명을 참조하세요.

파이프라인 단계의 일반적인 패턴은 다음과 같습니다.

  1. 작업 영역, 컴퓨팅 및 스토리지 지정
  2. 다음 클래스를 사용하여 입력 및 출력 데이터 구성
    1. Dataset - 기존 Azure 데이터 저장소를 사용할 수 있게 합니다.
    2. PipelineDataset - 형식화된 테이블 형식 데이터를 캡슐화합니다.
    3. PipelineData - 한 단계에서 작성하고 다른 단계에서 사용하기 위한 중간 파일 또는 디렉터리 데이터에 사용됩니다.
  3. 하나 이상의 파이프라인 단계 정의
  4. 작업 영역 및 단계를 사용하여 파이프라인 인스턴스화
  5. 파이프라인을 제출할 실험 만들기
  6. 실험 결과 모니터링

이 Notebook은 이 패턴에 적합한 예제입니다. 작업(job)

Azure Machine Learning 파이프라인 및 특히 다른 파이프라인 유형과의 차이점에 대한 자세한 내용은 이 문서를 참조하세요.

AutoMLConfig

네임스페이스: azureml.train.automl.automlconfig.AutoMLConfig

AutoMLConfig 클래스를 사용하여 자동화된 기계 학습에 대한 매개 변수를 구성합니다. 자동화된 기계 학습은 기계 학습 알고리즘과 하이퍼 매개 변수 설정의 다양한 조합을 반복합니다. 그런 다음, 선택한 정확도 메트릭에 따라 가장 적합한 모델을 찾습니다. 구성에서 지정할 수 있는 항목은 다음과 같습니다.

  • 작업 유형(분류, 회귀, 예측)
  • 알고리즘 반복 횟수 및 반복당 최대 시간
  • 최적화할 정확도 메트릭
  • 차단 목록/허용 목록에 대한 알고리즘
  • 교차 유효성 검사 수
  • 컴퓨팅 대상
  • 학습 데이터

참고

자동화된 기계 학습을 사용하려면 설치의 automl 추가 구성 요소를 사용합니다.

자동화된 기계 학습 실험을 설정하는 방법에 대한 자세한 지침과 예제는 이 자습서방법을 참조하세요.

다음 코드에서는 분류 모델에 대한 자동화된 기계 학습 구성 개체를 빌드하고, 실험을 제출할 때 이를 사용하는 방법을 보여 줍니다.

from azureml.train.automl import AutoMLConfig

automl_config = AutoMLConfig(task="classification",
                             X=your_training_features,
                             y=your_training_labels,
                             iterations=30,
                             iteration_timeout_minutes=5,
                             primary_metric="AUC_weighted",
                             n_cross_validations=5
                            )

automl_config 개체를 사용하여 실험을 제출합니다.

from azureml.core.experiment import Experiment

experiment = Experiment(ws, "automl_test_experiment")
run = experiment.submit(config=automl_config, show_output=True)

실험 결과가 제출되면 출력이 완료되는 대로 각 반복에 대한 학습 정확도가 표시됩니다. 실행이 완료되면 Run 클래스를 확장하는 AutoMLRun 개체가 반환됩니다. get_output() 함수를 통해 Model 개체를 반환하여 최적의 모델을 가져옵니다.

best_model = run.get_output()
y_predict = best_model.predict(X_test)

모델 배포

네임스페이스: azureml.core.model.InferenceConfig
네임스페이스: azureml.core.webservice.webservice.Webservice

InferenceConfig 클래스는 모델 및 웹 서비스를 호스트하는 데 필요한 환경을 설명하는 구성 설정과 관련되어 있습니다.

Webservice는 모델에 대한 웹 서비스를 만들고 배포하는 추상 부모 클래스입니다. 모델 배포를 준비하고 웹 서비스를 배포하는 방법에 대한 자세한 지침은 이 방법 문서를 참조하세요.

모델을 웹 서비스로 배포할 때 환경을 사용할 수 있습니다. 환경에서는 학습 컴퓨팅과 유추 컴퓨팅 둘 모두에 동일한 라이브러리를 사용하여 모델을 배포할 수 있는 재현 가능하고 연결된 워크플로를 사용할 수 있습니다. 내부적으로 환경은 Docker 이미지로 구현됩니다. Microsoft에서 제공하는 이미지를 사용해도 되고 자체적인 사용자 지정 Docker 이미지를 사용해도 됩니다. 이전에 ContainerImage 클래스를 배포에 사용한 경우 환경에서 유사한 워크플로를 수행할 수 있는 DockerSection 클래스를 참조하세요.

웹 서비스를 배포하려면 환경, 유추 컴퓨팅, 채점 스크립트 및 등록된 모델을 배포 개체 deploy()에 결합하세요.

다음 예제에서는 이미 myenv 환경을 사용하여 학습 실행을 완료했으며 Azure Container Instances에 해당 모델을 배포하려는 상황이라고 가정합니다.

from azureml.core.model import InferenceConfig, Model
from azureml.core.webservice import AciWebservice, Webservice

# Register the model to deploy
model = run.register_model(model_name = "mymodel", model_path = "outputs/model.pkl")

# Combine scoring script & environment in Inference configuration
inference_config = InferenceConfig(entry_script="score.py",
                                   environment=myenv)

# Set deployment configuration
deployment_config = AciWebservice.deploy_configuration(cpu_cores = 1,
                                                       memory_gb = 1)

# Define the model, inference, & deployment configuration and web service name and location to deploy
service = Model.deploy(workspace = ws,
                       name = "my_web_service",
                       models = [model],
                       inference_config = inference_config,
                       deployment_config = deployment_config)

이 예제에서는 소규모 테스트 및 빠른 배포에 가장 적합한 Azure Container Instances 웹 서비스를 만듭니다. 모델을 프로덕션 규모의 웹 서비스로 배포하려면 AKS(Azure Kubernetes Service)를 사용합니다. 자세한 내용은 AksCompute 클래스를 참조하세요.

데이터 세트

네임스페이스: azureml.core.dataset.Dataset
네임스페이스: azureml.data.file_dataset.FileDataset
네임스페이스: azureml.data.tabular_dataset.TabularDataset

Dataset 클래스는 Azure Machine Learning 내에서 데이터를 검색하고 관리하는 기본 리소스입니다. 요약 통계를 사용하여 데이터를 검색하고, 데이터 세트를 AML 작업 영역에 저장하여 버전 관리 및 재현 기능을 가져올 수 있습니다. 데이터 세트는 학습 중에 모델에서 쉽게 사용할 수 있습니다. 자세한 사용 예제는 이 방법 가이드를 참조하세요.

  • TabularDataset는 파일 또는 파일 목록을 구문 분석하여 만든 데이터를 테이블 형식으로 나타냅니다.
  • FileDataset는 데이터 저장소 또는 공개 URL에서 하나 또는 여러 파일을 참조합니다.

다음 예제에서는 데이터 저장소의 단일 경로를 가리키는 TabularDataset를 만드는 방법을 보여 줍니다.

from azureml.core import Dataset

dataset = Dataset.Tabular.from_delimited_files(path = [(datastore, 'train-dataset/tabular/iris.csv')])
dataset.take(3).to_pandas_dataframe()

다음 예제에서는 여러 파일 URL을 참조하는 FileDataset를 만드는 방법을 보여 줍니다.

from azureml.core.dataset import Dataset

url_paths = [
            'http://yann.lecun.com/exdb/mnist/train-images-idx3-ubyte.gz',
            'http://yann.lecun.com/exdb/mnist/train-labels-idx1-ubyte.gz',
            'http://yann.lecun.com/exdb/mnist/t10k-images-idx3-ubyte.gz',
            'http://yann.lecun.com/exdb/mnist/t10k-labels-idx1-ubyte.gz'
            ]
dataset = Dataset.File.from_files(path=url_paths)

다음 단계

다음 단계를 수행하여 Python용 Azure Machine Learning SDK를 사용하는 방법을 알아봅니다.

  • 자습서에 따라 Python에서 모델을 작성, 학습 및 배포하는 방법에 대해 알아봅니다.

  • 왼쪽의 목차를 사용하여 이 사이트의 참조 설명서에 있는 클래스와 모듈을 조회합니다.