자습서: Azure Machine Learning에서 Python 스크립트 시작(1/3부)

적용 대상: Python SDK azure-ai-ml v2(미리 보기)

이 자습서에서는 Azure Machine Learning을 사용하여 클라우드에서 첫 번째 Python 스크립트를 실행합니다. 이 자습서는 ‘3부로 구성된 자습서 시리즈 중 1부’입니다.

이 자습서는 기계 학습 모델 학습처럼 복잡하지 않습니다. 클라우드에서 “Hello World” Python 스크립트를 실행합니다. 제어 스크립트를 사용하여 Azure Machine Learning에서 실행을 구성하고 만드는 방법을 알아봅니다.

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

  • "Hello world!" Python 스크립트를 만들고 실행합니다.
  • "Hello world!"를 Azure Machine Learning에 제출하는 Python 제어 스크립트를 만듭니다.
  • 제어 스크립트에서 Azure Machine Learning 개념을 이해합니다.
  • "Hello world!" 스크립트를 제출하고 실행합니다.
  • 클라우드에서 코드 출력 보기

사전 요구 사항

  • 빠른 시작: 작업 영역을 설정하여 Azure Machine Learning 시작을 완료하여 이 자습서 시리즈에서 사용할 작업 영역, 컴퓨팅 인스턴스 및 컴퓨팅 클러스터를 만듭니다.

  • Azure Machine Learning Python SDK v2(미리 보기)가 설치됩니다.

    SDK를 설치하려면 다음 중 하나를 수행할 수 있습니다.

    • SDK를 자동으로 설치하고 ML 워크플로에 대해 미리 구성된 컴퓨팅 인스턴스를 만듭니다. 자세한 내용은 Azure Machine Learning 컴퓨팅 인스턴스 만들기 및 관리를 참조하세요.

    • 다음 명령을 사용하여 Azure ML Python SDK v2를 설치합니다.

      • 이전 미리 보기 버전을 제거합니다.
      pip uninstall azure-ai-ml
      
      • Azure ML Python SDK v2를 설치합니다.
      pip install azure-ai-ml
      

Python 스크립트 만들기 및 실행

이 자습서에서는 컴퓨팅 인스턴스를 개발 컴퓨터로 사용합니다. 먼저 몇 개의 폴더와 스크립트를 만듭니다.

  1. Azure Machine Learning 스튜디오에 로그인하고 메시지가 나타나면 작업 영역을 선택합니다.
  2. 왼쪽에서 Notebooks를 선택합니다.
  3. 파일 도구 모음에서 + 를 선택한 다음 새 폴더 만들기를 선택합니다. 도구 모음의 새 폴더 만들기 도구를 보여 주는 스크린샷
  4. 폴더의 이름을 get-started로 지정합니다.
  5. 폴더 이름의 오른쪽에 ... 를 사용하여 get-started 아래 다른 폴더를 만듭니다. 하위 폴더 만들기 메뉴를 보여 주는 스크린샷
  6. 새 폴더 이름을 src로 지정합니다. 파일 위치가 올바르지 않은 경우 위치 편집 링크를 사용합니다.
  7. src 폴더의 오른쪽에 ... 을 사용하여 src 폴더에 새 파일을 만듭니다.
  8. 파일 이름을 hello.py로 지정합니다. 파일 형식Python( .py)*으로 전환합니다.

이 코드를 파일에 복사합니다.

# src/hello.py
print("Hello world!")

이제 프로젝트 폴더 구조가 다음과 같이 됩니다.

src 하위 폴더에서 hello.py를 보여 주는 폴더 구조.

스크립트 테스트

코드를 로컬로 실행할 수 있습니다. 이 경우 컴퓨팅 인스턴스에서 실행한다는 의미입니다. 코드를 로컬로 실행하면 코드의 대화형 디버깅을 활용할 수 있습니다.

이전에 컴퓨팅 인스턴스를 중지한 경우 컴퓨팅 드롭다운 오른쪽의 컴퓨팅 시작 도구로 시작합니다. 상태가 실행 중으로 변경될 때까지 잠시 기다립니다.

중지된 컴퓨팅 인스턴스를 시작하는 것을 보여 주는 스크린샷

스크립트를 실행하려면 터미널에서 스크립트 저장 및 실행을 선택합니다.

도구 모음의 터미널 도구에서 스크립트를 저장하고 실행하는 것을 보여 주는 스크린샷

열린 터미널 창에서 스크립트의 출력을 볼 수 있습니다. 탭을 닫고 종료를 선택하여 세션을 닫습니다.

제어 스크립트 만들기

제어 스크립트를 사용하면 서로 다른 컴퓨팅 리소스에서 hello.py 스크립트를 실행할 수 있습니다. 제어 스크립트를 사용하여 기계 학습 코드가 실행되는 방법과 위치를 제어합니다.

get-started 폴더 끝의 ... 을 선택하여 새 파일을 만듭니다. run-hello.py라는 Python 파일을 작성하고 다음 코드를 해당 파일에 복사하고 붙여넣습니다.

# get-started/run-hello.py
from azure.ai.ml import MLClient, command, Input
from azure.identity import DefaultAzureCredential
from azureml.core import Workspace

# get details of the current Azure ML workspace
ws = Workspace.from_config()

# default authentication flow for Azure applications
default_azure_credential = DefaultAzureCredential()
subscription_id = ws.subscription_id
resource_group = ws.resource_group
workspace = ws.name

# client class to interact with Azure ML services and resources, e.g. workspaces, jobs, models and so on.
ml_client = MLClient(
   default_azure_credential,
   subscription_id,
   resource_group,
   workspace)

# target name of compute where job will be executed
computeName="cpu-cluster"
job = command(
    code="./src",
    command="python hello.py",
    environment="AzureML-sklearn-0.24-ubuntu18.04-py37-cpu@latest",
    compute=computeName,
    display_name="hello-world-example",
)

returned_job = ml_client.create_or_update(job)
aml_url = returned_job.studio_url
print("Monitor your job at", aml_url)

컴퓨팅 클러스터를 만들 때 다른 이름을 사용한 경우 코드 computeName='cpu-cluster'의 이름도 조정합니다.

코드 이해

제어 스크립트의 작동 방식은 다음과 같이 설명됩니다.

ml_client = MLClient(DefaultAzureCredential(), subscription_id, resource_group, workspace)

MLClient는 Azure Machine Learning 작업 영역과 해당 자산 및 리소스를 관리합니다.

job = command(...)

명령은 독립 실행형 명령 작업을 구성하거나 dsl.pipeline의 일부로 작업을 구성하는 간단한 방법을 제공합니다.

returned_job = ml_client.create_or_update(job)

스크립트를 제출합니다. 이 제출을 작업이라고 합니다. 작업은 코드의 단일 실행을 캡슐화합니다. 작업을 사용하여 스크립트 진행률을 모니터링하고, 출력을 캡처하고, 결과를 분석하고, 메트릭을 시각화하는 등의 작업을 수행합니다.

aml_url = returned_job.studio_url

job 개체에서 코드 실행에 대한 핸들을 제공합니다. Python 스크립트에서 출력되는 URL을 사용하여 Azure Machine Learning 스튜디오에서 진행률을 모니터링합니다.

클라우드에서 코드 제출 및 실행

  1. 터미널에서 스크립트 저장 및 실행을 선택하여 컨트롤 스크립트를 실행합니다. 이어서 컴퓨팅 클러스터에서 설정 자습서에 따라 만든 hello.py을 실행합니다.

  2. 터미널에서 인증하려면 로그인하라는 메시지가 표시될 수 있습니다. 코드를 복사하고 링크를 따라 이 단계를 완료합니다.

  3. 인증이 완료되면 터미널에 링크가 표시됩니다. 작업을 보려면 링크를 선택합니다.

    참고

    azureml_run_type_providers... 로드 중 실패로 시작하는 몇 가지 경고가 표시될 수 있습니다. 이러한 경고는 무시해도 됩니다. 이 경고의 맨 아래에 있는 링크를 사용하여 출력을 확인합니다.

출력 보기

  1. 열리는 페이지에서 작업 상태를 볼 수 있습니다.
  2. 작업 상태가 완료됨이면 페이지 상단에서 출력 + 로그를 선택합니다.
  3. 작업의 출력을 보려면 std_log.txt를 선택합니다.

스튜디오의 클라우드에서 코드 모니터링

스크립트의 출력에는 다음과 같은 스튜디오에 대한 링크(https://ml.azure.com/runs/<run-id>?wsid=/subscriptions/<subscription-id>/resourcegroups/<resource-group>/workspaces/<workspace-name>)가 포함됩니다.

링크를 따릅니다. 처음에는 큐 대기 또는 준비 중 상태가 표시됩니다. 첫 번째 실행은 완료하는 데 5~10분 정도 걸립니다. 다음과 같은 경우에 발생합니다.

  • Docker 이미지가 클라우드에 빌드됩니다.
  • 컴퓨팅 클러스터의 크기가 0에서 1 노드로 조정됩니다.
  • Docker 이미지가 컴퓨팅에 다운로드됩니다.

후속 작업은 Docker 이미지가 컴퓨팅에 캐시되므로 훨씬 더 빠릅니다(~15초). 첫 번째 작업이 완료된 후 아래 코드를 다시 전송하여 테스트할 수 있습니다.

10분 정도 기다립니다. 실행이 완료되었음을 알리는 메시지가 표시됩니다. 그런 다음 새로 고침을 사용하여 상태가 완료됨으로 변경되었음을 확인합니다. 작업이 완료되면 출력 + 로그 탭으로 이동합니다.

std_log.txt 파일에는 실행의 표준 출력이 포함됩니다. 이 파일은 클라우드에서 원격 실행을 디버그할 때 유용할 수 있습니다.

hello world

다음 단계

이 자습서에서는 간단한 "Hello world!" 스크립트를 사용하여 Azure에서 실행했습니다. Azure Machine Learning 작업 영역에 연결하고, 실험을 만들고, hello.py 코드를 클라우드에 제출하는 방법을 확인했습니다.

다음 자습서에서는 print("Hello world!")보다 더 흥미로운 항목을 실행하여 이러한 학습을 기반으로 합니다.

참고

여기서 자습서 시리즈를 완료하고 다음 단계로 진행하지 않으려면 리소스를 정리하세요.