IT/기초 지식

[Azure] Azure Machine Learning Compute이란?

개발자 두더지 2022. 4. 15. 21:30
728x90

Azure Machine Learning


 머신러닝 모델의 개발/디플로이를 지원하는 Azure 서비스 "Azure Machine Learning"에는 크게 세 가지 서비스가 존재한다.

 하나는 "Azure Machine Learning Studio"로, Azure Machine Learning Studio는 Web 브라우저에서 동작하는 GUI 베이스의 개발환경으로 기계학습 모델의 생성, 학습, Web 서비스로 디플로이 등을 가능하게 한다. 

 또 하나의 서비스는 "Azure Machine Learning Service" 이다. Azure Machine Learning Service는 머신러닝의 구축, 학습, 디플로이를 지원하는 Python을 사용한 데이터 사이언티스트용 서비스이다.  

 마지막은 "Azure Machine Learning Computing"이다. 이 서비스의 전신이 되는 서비스는 Azuer Batch AI로 2019년 3월에 서비스를 종료하였다. Azure Machine Learning Computing은 머신러닝을 실행하는 VM풀을 제공한다. 

 

 

Azure Machine Learning Computing 간단한 이용 방법


Azure Machine Learning 서비스에서의 Azure Machine Learning Computing 이용 방법은 간단히 살펴보자. Azure Machine Learning Computing는 학습을 실행하는 "컴퓨팅 타겟"의 하나 이다.

 Azure Machine Learning 서비스의 구조 : 아키텍처와 개념

 학습의 컴퓨팅 타겟으로 다른 Python SDK를 실행하고 있는 로컬 머신, Azure상의 Linux VM, Azure Databricks 등의 선택지가 있다. Azure Machine Learning Computing은 Python SDK을 사용하여 작성한다. 학습의 실행마다 Azure Machine Learning Computing을 생성하는 것도 가능하고, 사전에 생성한 Azure Machine Learning Computing을 학습 때에 참고하여 이용하는 것도 가능하다.

 다음의 Python 코드에서는 Azure Machine Learning Computing(AmlCompute)를 생성하고 있다. 최소 필요한 옵션은 VM 사이즈(vm_size), 최대 노드 수(max_nodes)이다.

from azureml.core.compute import ComputeTarget, AmlCompute
from azureml.core.compute_target import ComputeTargetException

# Choose a name for your CPU cluster
cpu_cluster_name = "cpucluster"

# Verify that cluster does not exist already
try:
  cpu_cluster = ComputeTarget(workspace=ws, name=cpu_cluster_name)
  print('Found existing cluster, use it.')
except ComputeTargetException:
  compute_config = AmlCompute.provisioning_configuration(vm_size='STANDARD_D2_V2',
                                                         max_nodes=4)
  cpu_cluster = ComputeTarget.create(ws, cpu_cluster_name, compute_config)

cpu_cluster.wait_for_completion(show_output=True)

 VM사이즈이란 CPU에 추가된 GPU도 서포트하고 있다. Azure Machine Learning Computing이 동작하고 있는 Azure 리전에서 사용하고 싶은 GPU가 서포트되고 있는지, 쿼터를 초과하지 않은지를 미리 확인하자.

 최소 노드 수(min_nodes)는 디폴트로 0이므로, 최소 노드 수를 지정하지 않는 경우나 사용하지 않을 때에는 0으로 스케줄링되어 요금이 발생하지 않게 된다. 

VM우선도(vm_priority)를 디폴트값인 deficated에서 lowpriority로 변경하는 것으로, 우선도가 낮은 VM를 사용하는 것이 가능하다. 저우선도 VM은 VM가 사용할 수 없거나 혹은 할당되지 않을 가능성이 있는 대신 보통의 VM(dedicated)와 비교해서 대폭 요금이 저렴해진다. 그 외에 스케줄링관련된 시간, 가상 네트워크 등의 옵션도 존재한다.

 Azure Machine Learning 컴퓨팅을 만들었다면, 학습을 위한 Python 스크립트를 준비하여 "Estimator"를 생성시, 학습 Job을 송신한다. 다음의 예는 Azuer Machine Learning 컴퓨팅 상 단일 노드에 학습을 실행하고 있다.

from azureml.train.estimator import Estimator

script_params = {
  '--data-folder': ds.as_mount(),
  '--regularization': 0.8
}

est = Estimator(source_directory=script_folder,
                script_params=script_params,
                compute_target=compute_target,
                entry_script='train.py',
                conda_packages=['scikit-learn'])

 PyTorch, TensorFlow에서는 Azure Machine Learning 컴퓨팅 상의 여러 개의 노드에 걸친 분산 트레이닝도 지원하고 있다. 예를 들어, Horovod 프레임워크를 사용한 PyTorch의 MPI 베이스의 분산 트레이닝을 실행하는 방법은 다음과 같다.

from azureml.train.dnn import PyTorch

pt_est = PyTorch(source_directory='./my-pytorch-project',
                 script_params={},
                 compute_target=compute_target,
                 entry_script='train.py',
                 node_count=2,
                 process_count_per_node=1,
                 distributed_backend='mpi',
                 use_gpu=True)

 

 

Azure Machine Learning 서비스의 시작법


 여기서 부터는 Azure Machine Learning 서비스의 시작법에 대해서 간단히 소개하도록 하겠다. Azure 서브 스크립션이 필요하다. Azure 서브 스크립션이 없는 경우 계정 등록부터 할 필요가 있으며, 전화나 SMS 인증 등의 과정을 거쳐야 한다.

 Azure Machine Learning 서비스를 사용하기 위해서는 Python 베이지의 개발 환경이 필수이다. 로컬 머신에 환경을 구축하는 것도 가능하고, VM 이미지 "Data Science Virtual Machine(DSVM)"를 사용하는 것도 가능하다. 자세한 사항은 아래의 공식 문서를 참고하길 바란다.

 

Python 개발 환경 설정 - Azure Machine Learning

Jupyter Notebook, Visual Studio Code, Azure Databricks 및 Data Science Virtual Machines에서 Azure Machine Learning Python 개발 환경을 설정합니다.

docs.microsoft.com

 간단한 방법으로는 무료로 제공하는 Azure Note books를 사용하여 주피터 노트북 실행환경을 만드는 방법도 있다.

 다음의 퀵 스타트 방법에 따르면, Azure 포털에서 Azure Machine Learning 워크 스페이스를 만들어, Azure Notebooks에 Azure Machine Learning 워크 스페이스용 구성이 끝난 노트북 샘플을 클론하는 것도 가능한 것 같다. 

 

빠른 시작: 작업 영역 리소스 만들기 - Azure Machine Learning

기계 학습 모델을 학습하는 데 사용할 수 있는 Azure Machine Learning 작업 영역 및 클라우드 리소스를 만듭니다.

docs.microsoft.com


참고자료

https://qiita.com/gnbrganchan/items/43e6c44754cb83220db5

https://qiita.com/satonaoki/items/a02ce1fe04356ceaf758

728x90