使用指令碼自訂計算執行個體

使用安裝腳本進行自動化的方式,在布建時自定義和設定計算實例。

使用計算實例作為雲端中完整設定和管理的開發環境。 針對開發和測試,您也可以使用 實例作為 定型計算目標推斷目標。 計算實例可以平行執行多個作業,並具有作業佇列。 身為開發環境,計算實例無法與工作區中的其他用戶共用。

您作為系統管理員可以撰寫自訂指令碼,以根據需求佈建工作區中所有計算執行個體。 您可以將安裝文稿設定為建立腳本,此腳本會在建立計算實例時執行一次。 或者,您可以將它設定為啟動腳本,這會在每次啟動計算實例時執行(包括初始建立)。

以下是您可以在安裝指令碼中執行的一些範例:

  • 安裝套件、工具和軟體
  • 裝載資料
  • 建立自訂 Conda 環境和 Jupyter 核心
  • 複製 Git 儲存機制並設定 Git 設定
  • 設定網路 Proxy
  • 設定環境變數
  • 安裝 JupyterLab 擴充功能

建立安裝指令碼

安裝程式腳本是殼層腳本,其會以的形式 rootuser執行。 建立或上傳腳本到 Notebooks 檔案:

  1. 登入 Studio選取您的工作區。
  2. 選取左側的 [筆記本]
  3. 使用 [ 新增檔案 ] 工具來建立或上傳您的安裝殼層腳本。 請確定文稿檔名結尾為 「.sh」。 當您建立新的檔案時,也會將 [文件類型] 變更為bash(.sh)。

Create or upload your setup script to Notebooks file in studio

當文稿執行時,腳本的目前工作目錄就是上傳腳本的目錄。 例如,如果您將腳本上傳至用戶系統管理員,當腳本執行時,腳本在計算實例和目前工作目錄的位置是 /home/azureuser/cloudfiles/code/Users/admin。>此位置可讓您在文稿中使用相對路徑。

腳本自變數可以在腳本中稱為 $1、$2 等。

如果您的腳本正在執行 azureuser 的特定作業,例如安裝 conda 環境或 Jupyter 核心,請將它放在區塊中 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 原則,針對每個計算實例建立強制執行或預設安裝腳本。 安裝程式腳本逾時的預設值為15分鐘。 時間可以在 Studio 中變更,或是透過使用 參數的 DURATION ARM 範本來變更。 DURATION 是具有選擇性後綴的浮點數: 's' 秒(預設值)、 'm' 分鐘、 'h' 小時或 'd' 天數。

在 Studio 中使用腳本

儲存文稿之後,請在建立計算實例期間指定它:

  1. 登入 Studio 並選取您的工作區。
  2. 在左側,選取 [計算]
  3. 選取 [+新增 ] 以建立新的計算實例。
  4. 填寫表單
  5. 在表單的 [ 應用程式 ] 頁面上,切換您想要使用的腳本類型、建立腳本(在建立計算實例時執行一次)或啟動腳本(每次啟動計算實例時執行)。
  6. 流覽至您儲存的殼層腳本。 或從您的電腦上傳腳本。
  7. 視需要新增命令自變數。

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

提示

如果工作區記憶體連結至虛擬網路,除非您從虛擬網路中存取 Studio,否則可能無法存取設定腳本檔案。

在 Resource Manager 範本中使用腳本

在 Resource Manager 範本中,新增 setupScripts 以在布建計算實例時叫用安裝腳本。 例如:

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

scriptData 此會指定筆記本檔案分享中建立文稿的位置,例如 Users/admin/testscript.shscriptArguments 在上方是選擇性的,並指定建立腳本的自變數。

您可以改為提供 Resource Manager 樣本的內嵌腳本。 Shell 命令可以參考上傳至筆記本檔案共用的任何相依性。 當您使用內嵌字串時,文稿的工作目錄是 /mnt/batch/tasks/shared/LS_root/mounts/clusters/**\<ciname\>**/code/Users

例如,針對 指定base64編碼的命令字串 scriptData

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

安裝文本記錄

安裝指令碼執行中的記錄,會出現在計算執行個體詳細資料頁面的 [記錄] 資料夾中。 記錄會儲存回 Logs\<compute instance name> 資料夾下的筆記本檔案共用。 特定計算實例的腳本檔案和命令自變數會顯示在詳細數據頁面中。