다음을 통해 공유


작업 디버그 및 학습 진행 상황 모니터링

기계 학습 모델 학습은 반복적인 프로세스이며 상당한 실험이 필요합니다. Azure Machine Learning 대화형 작업 환경을 통해 데이터 과학자는 Azure Machine Learning Python SDK, Azure Machine Learning CLI 또는 Azure Studio를 사용하여 작업이 실행 중인 컨테이너에 액세스할 수 있습니다. 작업 컨테이너에 액세스하면 사용자는 학습 스크립트를 반복하거나, 학습 진행률을 모니터링하거나, 로컬 컴퓨터에서 일반적으로 수행하는 것처럼 원격으로 작업을 디버그할 수 있습니다. 작업은 JupyterLab, TensorBoard, VS Code를 비롯한 다양한 학습 애플리케이션을 통해 또는 SSH를 통해 작업 컨테이너에 직접 연결하여 상호 작용할 수 있습니다.

대화형 학습은 Azure Machine Learning 컴퓨팅 클러스터Azure Arc 지원 Kubernetes 클러스터에서 지원됩니다.

필수 조건

  • Azure Machine Learning에서 학습 시작을 검토합니다.
  • 자세한 내용은 Azure Machine Learning 확장 설정에 대한 VS Code 링크를 참조하세요.
  • 작업 환경에 openssh-serveripykernel ~=6.0 패키지가 설치되어 있는지 확인합니다(모든 Azure Machine Learning 큐레이팅 학습 환경에는 기본적으로 이러한 패키지가 설치되어 있음).
  • 배포 유형이 PyTorch, TensorFlow 또는 MPI 이외의 경우에는 분산 학습 실행에서 대화형 애플리케이션을 사용하도록 설정할 수 없습니다. 사용자 지정 분산 학습 설정(위의 배포 프레임워크를 사용하지 않고 다중 노드 학습 구성)은 현재 지원되지 않습니다.
  • SSH를 사용하려면 SSH 키 쌍이 필요합니다. ssh-keygen -f "<filepath>" 명령을 사용하여 공용 및 프라이빗 키 쌍을 생성할 수 있습니다.

작업 컨테이너와 상호 작용

작업을 만들 때 대화형 애플리케이션을 지정하면 작업이 실행 중인 컴퓨팅 노드의 컨테이너에 직접 연결할 수 있습니다. 작업 컨테이너에 대한 액세스 권한이 있으면 작업이 실행되는 동일한 환경에서 작업을 테스트하거나 디버그할 수 있습니다. VS Code를 사용하여 실행 중인 프로세스에 연결하고 로컬로 디버그할 수도 있습니다.

작업 제출 중에 사용

  1. 스튜디오 포털의 왼쪽 탐색 창에서 새 작업을 만듭니다.

  2. 컴퓨팅 형식으로 컴퓨팅 클러스터 또는 연결된 컴퓨팅(Kubernetes)을 선택하고 컴퓨팅 대상을 선택한 다음 Instance count에 필요한 노드 수를 지정합니다.

작업에 대한 컴퓨팅 위치를 선택하는 스크린샷.

  1. 마법사에 따라 작업을 시작할 환경을 선택합니다.

  2. 학습 스크립트 단계에서 학습 코드(및 입출력 데이터)를 추가하고 명령에서 참조하여 작업에 탑재되었는지 확인합니다.

초안 작업을 검토하고 만들기를 완료하는 스크린샷.

명령의 끝에 sleep <specific time>을 배치하여 컴퓨팅 리소스를 예약할 시간을 지정할 수 있습니다. 다음 형식을 따릅니다.

  • sleep 1s
  • sleep 1m
  • sleep 1h
  • sleep 1d

작업을 무기한으로 유지하는 sleep infinity 명령을 사용할 수도 있습니다.

참고 항목

sleep infinity를 사용하는 경우 컴퓨팅 리소스를 삭제하고 청구를 중지하려면 작업을 수동으로 취소해야 합니다.

  1. 컴퓨팅 설정에서 학습 애플리케이션 옵션을 확장합니다. 작업과 상호 작용하는 데 사용할 학습 애플리케이션을 하나 이상 선택합니다. 애플리케이션을 선택하지 않으면 디버그 기능을 사용할 수 없습니다.

사용자가 작업에 사용할 학습 애플리케이션을 선택하는 스크린샷.

  1. 작업을 검토하고 만듭니다.

엔드포인트에 연결

실행 중인 작업과 상호 작용하려면 작업 세부 정보 페이지에서 디버그 및 모니터링 단추를 선택합니다.

대화형 작업 디버그 및 모니터 패널 위치의 스크린샷.

패널에서 애플리케이션을 클릭하면 애플리케이션에 대한 새 탭이 열립니다. 애플리케이션이 실행 중 상태이고 작업 소유자만 애플리케이션에 액세스할 수 있는 권한이 있는 경우에만 애플리케이션에 액세스할 수 있습니다. 여러 노드에서 학습하는 경우 상호 작용하려는 특정 노드를 선택할 수 있습니다.

대화형 작업 오른쪽 패널 정보의 스크린샷. 정보 콘텐츠는 사용자 데이터에 따라 다릅니다.

작업을 만드는 동안 지정된 작업 및 학습 애플리케이션을 시작하는 데 몇 분 정도 걸릴 수 있습니다.

애플리케이션과 상호 작용

작업할 때 상호 작용할 엔드포인트를 선택하면 작업 디렉터리 아래의 사용자 컨테이너로 이동하여 코드, 입력, 출력 및 로그에 액세스할 수 있습니다. 애플리케이션에 연결하는 동안 문제가 발생하면 출력 + 로그 탭의 system_logs->interactive_capability 대화형 기능 및 애플리케이션 로그를 찾을 수 있습니다.

대화형 작업 대화형 로그 패널 위치의 스크린샷.

  • Jupyter Lab에서 터미널을 열고 작업 컨테이너 내에서 상호 작용을 시작할 수 있습니다. Jupyter Lab을 사용하여 학습 스크립트를 직접 반복할 수도 있습니다.

    대화형 작업 Jupyter 랩 콘텐츠 패널의 스크린샷.

  • VS Code 내에서 작업 컨테이너와 상호 작용할 수도 있습니다. 작업 제출 중에 작업에 디버거를 연결하고 실행을 일시 중지하려면 여기로 이동합니다.

    참고 항목

    VS Code를 사용하여 작업 컨테이너와 상호 작용하는 경우 프라이빗 링크 사용 작업 영역은 현재 지원되지 않습니다.

    처음 열 때 대화형 작업 VS Code 패널의 스크린샷. 두 줄을 인쇄하기 위해 만든 샘플 Python 파일을 보여 줍니다.

  • 작업에 대한 텐서플로 이벤트를 로그한 경우 TensorBoard를 사용하여 작업이 실행될 때 메트릭을 모니터링할 수 있습니다.

    처음 열었을 때의 대화형 작업 텐서보드 패널 스크린샷. 이 정보는 고객 데이터에 따라 다릅니다.

작업 종료

대화형 학습이 완료되면 작업 세부 정보 페이지로 이동하여 컴퓨팅 리소스를 해제할 작업을 취소할 수도 있습니다. 또는 CLI에서 az ml job cancel -n <your job name>을 사용하거나 SDK에서 ml_client.job.cancel("<job name>")을 사용합니다.

대화형 작업 취소 작업 옵션 및 사용자 선택 위치 스크린샷.

작업에 디버거 연결

디버거가 연결되어 있고 실행이 일시 중지된 작업을 제출하려면 debugpy 및 VS Code(debugpy를 작업 환경에 설치해야 함)를 사용할 수 있습니다.

참고 항목

VS Code의 작업에 디버거를 연결할 때 프라이빗 링크 사용 작업 영역은 현재 지원되지 않습니다.

  1. 작업 제출 중에(UI, CLI 또는 SDK를 통해) debugpy 명령을 사용하여 Python 스크립트를 실행합니다. 예를 들어 다음 스크린샷은 debugpy를 사용하여 텐서플로 스크립트에 대한 디버거를 연결하는 샘플 명령을 보여 줍니다(tfevents.py를 학습 스크립트의 이름으로 바꿀 수 있습니다).

debugpy의 대화형 작업 구성 스크린샷

  1. 작업이 제출되면 VS Code에 연결하고 내장된 디버거를 선택합니다.

    왼쪽 패널에서 열린 디버거의 대화형 작업 위치 스크린샷

  2. "원격 연결" 디버그 구성을 사용하여 제출된 작업에 연결하고 작업 제출 명령에서 구성한 경로 및 포트에서 전달합니다. 작업 세부 정보 페이지에서 이 정보를 찾을 수도 있습니다.

    대화형 작업 완료 작업의 스크린샷

    대화형 작업 원격 연결 단추 추가 스크린샷

  3. 중단점을 설정하고 로컬 디버깅 워크플로에서와 마찬가지로 작업 실행을 연습합니다.

    Visual Studio Code 편집기에 설정된 예제 중단점의 위치 스크린샷

참고 항목

debugpy를 사용하여 작업을 시작하는 경우 VS Code에서 디버거를 연결하고 스크립트를 실행하지 않으면 작업이 실행되지 않습니다. 이 작업이 수행되지 않으면 작업이 취소될 때까지 컴퓨팅이 예약됩니다.

다음 단계