스크립트를 사용하여 컴퓨팅 인스턴스 사용자 지정

자동화된 방법으로 설치 스크립트를 사용하여 프로비저닝 시 컴퓨팅 인스턴스를 사용자 지정하고 구성합니다.

클라우드에서 완전 구성 및 관리형 개발 환경으로 컴퓨팅 인스턴스를 사용합니다. 개발 및 테스트를 위해 인스턴스를 학습 컴퓨팅 대상 또는 유추 대상으로 사용할 수도 있습니다. 컴퓨팅 인스턴스는 여러 작업을 병렬로 실행할 수 있으며 1개의 작업 큐가 있습니다. 개발 환경에서는 컴퓨팅 인스턴스를 작업 영역에 있는 다른 사용자와 공유할 수 없습니다.

관리자는 요구 사항에 따라 작업 영역에서 모든 컴퓨팅 인스턴스를 프로비전하는 데 사용할 사용자 지정 스크립트를 작성할 수 있습니다. 설정 스크립트를 생성 스크립트로 구성할 수 있습니다. 생성 스크립트는 컴퓨팅 인스턴스를 만들 때 한 번 실행됩니다. 또는 컴퓨팅 인스턴스가 시작될 때마다(초기 생성 포함) 실행되는 시작 스크립트로 구성할 수 있습니다.

설치 스크립트에서 수행할 수 있는 작업에 대한 몇 가지 예제는 다음과 같습니다.

  • 패키지, 도구 및 소프트웨어 설치
  • 데이터 탑재
  • 사용자 지정 conda 환경 및 Jupyter 커널 만들기
  • git 리포지토리 복제 및 git 구성 설정
  • 네트워크 프록시 설정
  • 환경 변수 설정
  • JupyterLab 확장 설치

설치 스크립트 만들기

설정 스크립트는 rootuser로 실행되는 셸 스크립트입니다. Notebooks 파일에 스크립트를 만들거나 업로드합니다.

  1. 스튜디오에 로그인하고 작업 영역을 선택합니다.
  2. 왼쪽에서 Notebook을 선택합니다.
  3. 파일 추가 도구를 사용하여 설치 셸 스크립트를 만들거나 업로드합니다. 스크립트 파일 이름이 ".sh"로 끝나는지 확인합니다. 새 파일을 만들 때 파일 형식bash(.sh)로 변경합니다.

Create or upload your setup script to Notebooks file in studio

스크립트가 실행될 때 스크립트의 현재 작업 디렉터리는 파일이 업로드된 디렉터리입니다. 예를 들어 사용자>관리자에 스크립트를 업로드하는 경우 스크립트가 실행될 때 컴퓨팅 인스턴스 및 현재 작업 디렉터리에 대한 스크립트의 위치는 /home/azureuser/cloudfiles/code/Users/admin입니다. 이 위치에서 스크립트에서 상대 경로를 사용할 수 있습니다.

스크립트 인수를 스크립트에서 $1, $2 등으로 참조할 수 있습니다.

스크립트가 conda 환경 또는 Jupyter 커널 설치와 같은 azureuser와 관련된 작업을 수행하는 경우 다음과 같이 블록 내에 sudo -u azureuser 배치합니다.

#!/bin/bash

set -e

# This script installs a pip package in compute instance azureml_py38 environment.

sudo -u azureuser -i <<'EOF'

PACKAGE=numpy
ENVIRONMENT=azureml_py38 
conda activate "$ENVIRONMENT"
pip install "$PACKAGE"
conda deactivate
EOF

sudo -u azureuser 명령은 현재 작업 디렉터리를 /home/azureuser로 변경합니다. 또한 이 블록의 스크립트 인수에 액세스할 수 없습니다.

다른 예제 스크립트는 azureml-examples를 참조하세요.

스크립트에서 다음 환경 변수를 사용할 수도 있습니다.

  • CI_RESOURCE_GROUP
  • CI_WORKSPACE
  • CI_NAME
  • CI_LOCAL_UBUNTU_USER - azureuser를 가리킵니다.

설정 스크립트를 Azure Policy와 함께 사용하여 모든 컴퓨팅 인스턴스 생성에 대해 설정 스크립트를 적용 또는 기본 설정합니다. 설정 스크립트 시간 제한의 기본값은 15분입니다. 시간은 스튜디오에서 변경하거나 DURATION 매개 변수를 사용하는 ARM 템플릿을 통해 변경할 수 있습니다. DURATION은 선택적 접미사가 있는 부동 소수점 숫자입니다. 초: 's'(기본값), 분: 'm', 시간: 'h' 또는 일: 'd'.

스튜디오에서 스크립트 사용

스크립트를 저장한 후 컴퓨팅 인스턴스를 만드는 동안 지정합니다.

  1. 스튜디오에 로그인하고 작업 영역을 선택합니다.
  2. 왼쪽에서 Compute를 선택합니다.
  3. 새 컴퓨팅 인스턴스를 만들려면 + 새로 만들기를 선택합니다.
  4. 양식을 작성합니다.
  5. 양식의 애플리케이션 페이지에서 사용하려는 스크립트 유형, 만들기 스크립트(컴퓨팅 인스턴스를 만들 때 한 번 실행) 또는 시작 스크립트(컴퓨팅 인스턴스가 시작될 때마다 실행)를 전환합니다.
  6. 저장한 셸 스크립트를 찾습니다. 또는 컴퓨터에서 스크립트를 업로드합니다.
  7. 필요에 따라 명령 인수를 추가합니다.

Screenshot of provision a compute instance with a setup script in the studio.

작업 영역 스토리지가 가상 네트워크에 연결된 경우 가상 네트워크 내에서 스튜디오에 액세스하지 않는 한 설치 스크립트 파일에 액세스할 수 없습니다.

Resource Manager 템플릿에서 스크립트 사용

Resource Manager 템플릿에서 setupScripts를 추가하여 컴퓨팅 인스턴스가 프로비전될 때 설치 스크립트를 호출합니다. 예시:

"setupScripts":{
    "scripts":{
        "creationScript":{
        "scriptSource":"workspaceStorage",
        "scriptData":"[parameters('creationScript.location')]",
        "scriptArguments":"[parameters('creationScript.cmdArguments')]"
        }
    }
}

위의 scriptDataUsers/admin/testscript.sh와 같은 Notebooks 파일 공유에서 생성 스크립트의 위치를 지정합니다. scriptArguments는 위에서 선택 사항이며 생성 스크립트에 대한 인수를 지정합니다.

대신 Resource Manager 템플릿에 대한 스크립트 인라인을 제공할 수 있습니다. 셸 명령은 Notebooks 파일 공유에 업로드된 종속성을 참조할 수 있습니다. 인라인 문자열을 사용하는 경우 스크립트의 작업 디렉터리는 /mnt/batch/tasks/shared/LS_root/mounts/clusters/**\<ciname\>**/code/Users입니다.

예를 들어 scriptData에 대한 base64 인코딩 명령 문자열을 지정합니다.

"setupScripts":{
    "scripts":{
        "creationScript":{
        "scriptSource":"inline",
        "scriptData":"[base64(parameters('inlineCommand'))]",
        "scriptArguments":"[parameters('creationScript.cmdArguments')]"
        }
    }
}

스크립트 로그 설정

설치 스크립트 실행의 로그는 컴퓨팅 인스턴스 세부 정보 페이지의 로그 폴더에 나타납니다. 로그는 Logs\<compute instance name> 폴더 아래의 Notebooks 파일 공유에 다시 저장됩니다. 특정 컴퓨팅 인스턴스에 대한 스크립트 파일 및 명령 인수가 세부 정보 페이지에 표시됩니다.