자습서: Azure Machine Learning에서 Python 스크립트 시작(SDK v1, 1/3부)
적용 대상: Python SDK azureml v1
이 자습서에서는 Azure Machine Learning을 사용하여 클라우드에서 첫 번째 Python 스크립트를 실행합니다. 이 자습서는 2부로 구성된 자습서 시리즈 중 제1부입니다.
이 자습서는 기계 학습 모델 학습처럼 복잡하지 않습니다. 클라우드에서 ‘Hello World’ Python 스크립트를 실행합니다. 제어 스크립트를 사용하여 Azure Machine Learning에서 실행을 구성하고 만드는 방법을 알아봅니다.
이 자습서에서는 다음을 수행합니다.
- "Hello world!" Python 스크립트를 만들고 실행합니다.
- "Hello world!"를 Azure Machine Learning에 제출하는 Python 제어 스크립트를 만듭니다.
- 제어 스크립트에서 Azure Machine Learning 개념을 이해합니다.
- "Hello world!" 스크립트를 제출하고 실행합니다.
- 클라우드에서 코드 출력 보기
필수 조건
- 이 자습서 시리즈에서 사용할 작업 영역과 컴퓨팅 인스턴스를 만들려면 시작하는 데 필요한 리소스 만들기를 완료합니다.
-
- 클라우드 기반 컴퓨팅 클러스터를 만듭니다. 이 자습서의 코드와 일치하도록 이름을 'cpu-cluster'로 지정합니다.
Python 스크립트 만들기 및 실행
이 자습서에서는 컴퓨팅 인스턴스를 개발 컴퓨터로 사용합니다. 먼저 몇 개의 폴더와 스크립트를 만듭니다.
- Azure Machine Learning 스튜디오에 로그인하고 메시지가 나타나면 작업 영역을 선택합니다.
- 왼쪽에서 Notebooks를 선택합니다.
- 파일 도구 모음에서 +를 선택한 다음 새 폴더 만들기를 선택합니다.
- 폴더의 이름을 get-started로 지정합니다.
- 폴더 이름의 오른쪽에 ...를 사용하여 get-started 아래 다른 폴더를 만듭니다.
- 새 폴더 이름을 src로 지정합니다. 파일 위치가 올바르지 않은 경우 위치 편집 링크를 사용합니다.
- src 폴더의 오른쪽에 ...을 사용하여 src 폴더에 새 파일을 만듭니다.
- 파일 이름을 hello.py로 지정합니다. 파일 형식을 Python(.py)*으로 전환합니다.
이 코드를 파일에 복사합니다.
# src/hello.py
print("Hello world!")
이제 프로젝트 폴더 구조가 다음과 같이 됩니다.
스크립트 테스트
코드를 로컬로 실행할 수 있습니다. 이 경우 컴퓨팅 인스턴스에서 실행한다는 의미입니다. 코드를 로컬로 실행하면 코드의 대화형 디버깅을 활용할 수 있습니다.
이전에 컴퓨팅 인스턴스를 중지한 경우 컴퓨팅 드롭다운 오른쪽의 컴퓨팅 시작 도구로 시작합니다. 상태가 실행 중으로 변경될 때까지 잠시 기다립니다.
스크립트를 실행하려면 터미널에서 스크립트 저장 및 실행을 선택합니다.
열린 터미널 창에서 스크립트의 출력을 볼 수 있습니다. 탭을 닫고 종료를 선택하여 세션을 닫습니다.
제어 스크립트 만들기
제어 스크립트를 사용하면 서로 다른 컴퓨팅 리소스에서 hello.py
스크립트를 실행할 수 있습니다. 제어 스크립트를 사용하여 기계 학습 코드가 실행되는 방법과 위치를 제어합니다.
get-started 폴더 끝의 ...을 선택하여 새 파일을 만듭니다. run-hello.py라는 Python 파일을 작성하고 다음 코드를 해당 파일에 복사하고 붙여넣습니다.
# get-started/run-hello.py
from azureml.core import Workspace, Experiment, Environment, ScriptRunConfig
ws = Workspace.from_config()
experiment = Experiment(workspace=ws, name='day1-experiment-hello')
config = ScriptRunConfig(source_directory='./src', script='hello.py', compute_target='cpu-cluster')
run = experiment.submit(config)
aml_url = run.get_portal_url()
print(aml_url)
팁
컴퓨팅 클러스터를 만들 때 다른 이름을 사용한 경우 코드 compute_target='cpu-cluster'
의 이름도 조정합니다.
코드 이해
제어 스크립트의 작동 방식은 다음과 같이 설명됩니다.
ws = Workspace.from_config()
작업 영역은 Azure Machine Learning 작업 영역에 연결되므로 Azure Machine Learning 리소스와 통신할 수 있습니다.
experiment = Experiment( ... )
실험은 여러 작업을 단일 이름으로 구성하는 간단한 방법을 제공합니다. 나중에 실험을 통해 수십 개의 작업 간에 메트릭을 쉽게 비교할 수 있는 방법을 확인할 수 있습니다.
config = ScriptRunConfig( ... )
ScriptRunConfig에서 hello.py
코드를 래핑하고 작업 영역에 전달합니다. 이름에서 알 수 있듯이 이 클래스를 사용하여 Azure Machine Learning에서 스크립트를 실행하는 방법을 구성할 수 있습니다. 또한 스크립트가 실행되는 컴퓨팅 대상을 지정합니다. 이 코드에서 대상은 설정 자습서에서 만든 컴퓨팅 클러스터입니다.
run = experiment.submit(config)
스크립트를 제출합니다. 이 제출을 실행이라고 합니다. v2에서는 작업으로 이름이 변경되었습니다. 실행/작업은 코드의 단일 실행을 캡슐화합니다. 작업을 사용하여 스크립트 진행률을 모니터링하고, 출력을 캡처하고, 결과를 분석하고, 메트릭을 시각화하는 등의 작업을 수행합니다.
aml_url = run.get_portal_url()
run
개체에서 코드 실행에 대한 핸들을 제공합니다. Python 스크립트에서 출력되는 URL을 사용하여 Azure Machine Learning 스튜디오에서 진행률을 모니터링합니다.
클라우드에서 코드 제출 및 실행
터미널에서 스크립트 저장 및 실행을 선택하여 컨트롤 스크립트를 실행합니다. 이어서 컴퓨팅 클러스터에서 설정 자습서에 따라 만든
hello.py
을 실행합니다.터미널에서 인증하려면 로그인하라는 메시지가 표시될 수 있습니다. 코드를 복사하고 링크를 따라 이 단계를 완료합니다.
인증이 완료되면 터미널에 링크가 표시됩니다. 작업을 보려면 링크를 선택합니다.
스튜디오의 클라우드에서 코드 모니터링
스크립트의 출력에는 다음과 같은 스튜디오에 대한 링크(https://ml.azure.com/experiments/hello-world/runs/<run-id>?wsid=/subscriptions/<subscription-id>/resourcegroups/<resource-group>/workspaces/<workspace-name>
)가 포함됩니다.
링크를 따릅니다. 처음에는 큐 대기 또는 준비 중 상태가 표시됩니다. 첫 번째 실행을 완료하는 데 5~10분이 걸립니다. 다음과 같은 경우에 발생합니다.
- Docker 이미지가 클라우드에 빌드됩니다.
- 컴퓨팅 클러스터의 크기가 0에서 1 노드로 조정됩니다.
- Docker 이미지가 컴퓨팅에 다운로드됩니다.
후속 작업은 Docker 이미지가 컴퓨팅에 캐시되므로 더 빠릅니다(15초 이내). 첫 번째 작업이 완료된 후 아래 코드를 다시 전송하여 테스트할 수 있습니다.
10분 정도 기다립니다. 작업이 완료되었음을 알리는 메시지가 표시됩니다. 그런 다음 새로 고침을 사용하여 상태가 완료됨으로 변경되었음을 확인합니다. 작업이 완료되면 출력 + 로그 탭으로 이동합니다. user_logs
폴더에서 std_log.txt
파일을 볼 수 있습니다. 스크립트의 출력은 이 파일에 있습니다.
azureml-logs
및 system-logs
폴더에는 클라우드에서 원격 작업을 디버그할 때 유용할 수 있는 파일이 포함되어 있습니다.
다음 단계
이 자습서에서는 간단한 "Hello world!" 스크립트를 사용하여 Azure에서 실행했습니다. Azure Machine Learning 작업 영역에 연결하고, 실험을 만들고, hello.py
코드를 클라우드에 제출하는 방법을 확인했습니다.
다음 자습서에서는 print("Hello world!")
보다 더 흥미로운 항목을 실행하여 이러한 학습을 기반으로 합니다.
참고 항목
여기서 자습서 시리즈를 완료하고 다음 단계로 진행하지 않으려면 리소스를 정리하세요.