使用開機後指令碼
本指南說明如何搭配 Colab Enterprise 使用啟動後指令碼。本指南也會說明如何設定環境變數,以搭配啟動後指令碼使用。
總覽
您可以使用開機後指令碼,在 Colab Enterprise 執行階段的啟動程序完成後執行工作。舉例來說,您可以使用啟動後指令碼安裝特定套件,或對執行階段的 VM 進行特定變更。
如要在 Colab Enterprise 中使用開機後指令碼,請在建立執行階段範本時指定開機後指令碼。接著,當您根據該執行階段範本建立執行階段時,開機後指令碼會在啟動程序結束時執行。
開機後指令碼位置
開機後指令碼 URI 可以是下列任一項目:
- Cloud Storage URI:例如
gs://BUCKET_NAME/SCRIPT_FILE_NAME
。如果開機後指令碼儲存在 Cloud Storage 中,您必須使用已啟用使用者憑證的執行階段。這是因為 Colab Enterprise 會使用您的使用者憑證存取 Cloud Storage bucket。 - HTTPS 網址:例如:
https://example.com/FOLDER_NAME/SCRIPT_FILE_NAME
。 使用 Google Cloud 控制台建立執行階段範本時,不支援使用 HTTPS 網址。
執行開機指令碼後的操作
您可以指定開機後指令碼的行為。請參閱下表:
行為 | 說明 |
---|---|
執行一次 (`RUN_ONCE`) |
預設值,Colab Enterprise 只會在建立執行階段時執行一次開機後指令碼。 |
每次啟動時執行 (`RUN_EVERY_START`) |
每次啟動後,Colab Enterprise 都會執行開機後指令碼。舉例來說,如果閒置關機功能停止執行階段,當執行階段重新啟動時,Colab Enterprise 會再次執行啟動後指令碼。 |
每次啟動時下載並執行 (`DOWNLOAD_AND_RUN_EVERY_START`) |
每次啟動後,Colab Enterprise 都會從來源重新下載開機後指令碼,然後執行該指令碼。 |
環境變數
您可以在執行階段範本中指定環境變數,並在啟動後指令碼中參照這些變數。
舉例來說,您可以使用環境變數設定配額專案。
您可以使用 GOOGLE_CLOUD_QUOTA_PROJECT
將配額專案設為特定專案 ID,這是用戶端程式庫中常用的變數。 Google Cloud
如要搭配環境變數使用開機後指令碼,請參閱「建立含有開機後指令碼和環境變數的執行階段範本」。
追蹤變更並復原開機後指令碼
如要追蹤開機後指令碼的變更,並還原特定版本的開機後指令碼,請將開機後指令碼儲存在已啟用物件版本管理的 Cloud Storage 值區中。物件版本管理功能會將刪除的物件保留為非現行版本,這些物件仍可存取,直到明確移除為止。
如要指定啟動後指令碼的版本,請在建立執行階段範本時,將 #GENERATION_NUMBER
新增至啟動後指令碼的 URI,例如 gs://BUCKET_NAME/FOLDER_NAME/FILE_NAME.py#GENERATION_NUMBER
。如要進一步瞭解物件版本管理和產生編號,請參閱「物件版本管理」一文。
使用 Google Cloud 控制台建立執行階段範本時,系統不支援為啟動後指令碼指定產生版本編號。
事前準備
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
Roles required to select or create a project
- Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
-
Create a project: To create a project, you need the Project Creator
(
roles/resourcemanager.projectCreator
), which contains theresourcemanager.projects.create
permission. Learn how to grant roles.
-
Verify that billing is enabled for your Google Cloud project.
-
Enable the Vertex AI, Dataform, and Compute Engine APIs.
Roles required to enable APIs
To enable APIs, you need the Service Usage Admin IAM role (
roles/serviceusage.serviceUsageAdmin
), which contains theserviceusage.services.enable
permission. Learn how to grant roles. -
前往 Google Cloud 控制台的 Colab Enterprise「執行階段範本」頁面。
-
按一下「新增範本」
。系統會顯示「建立新的執行階段範本」對話方塊。
-
在「Runtime basics」(執行階段基本設定) 部分,輸入「Display name」(顯示名稱)。
-
在「Region」(區域) 選單中,選取要建立執行階段範本的區域。
-
在「Environment」(環境) 區段的「Post-startup script」(開機後指令碼) 欄位中,按一下「Browse」(瀏覽),然後前往 Cloud Storage 中的開機後指令碼。詳情請參閱「啟動後指令碼位置」。
-
在開機後指令碼網址下方,選取開機後指令碼的行為。預設行為為「執行一次」。 詳情請參閱啟動後指令碼行為。
-
在「網路和安全性」部分,確認已選取「啟用使用者憑證」。
-
完成對話方塊的其餘部分,然後按一下「建立」。
執行階段範本會顯示在「執行階段範本」分頁的清單中。
DISPLAY_NAME
:執行階段範本的顯示名稱。PROJECT_ID
:您的專案 ID。REGION
:執行階段範本所在的區域。POST_STARTUP_SCRIPT_URI
:開機後指令碼的 URI。詳情請參閱「啟動後指令碼位置」。POST_STARTUP_SCRIPT_BEHAVIOR
:開機後指令碼的行為。請參閱「執行開機指令碼後的操作」。REGION
:執行階段範本所在的區域。PROJECT_ID
:您的專案 ID。DISPLAY_NAME
:執行階段範本的顯示名稱。POST_STARTUP_SCRIPT_URI
:開機後指令碼的 URI。詳情請參閱「啟動後指令碼位置」。POST_STARTUP_SCRIPT_BEHAVIOR
:開機後指令碼的行為。請參閱「執行開機指令碼後的操作」。-
前往 Google Cloud 控制台的 Colab Enterprise「執行階段範本」頁面。
-
按一下「新增範本」
。系統會顯示「建立新的執行階段範本」對話方塊。
-
在「Runtime basics」(執行階段基本設定) 部分,輸入「Display name」(顯示名稱)。
-
在「Region」(區域) 選單中,選取要建立執行階段範本的區域。
-
在「Environment」(環境) 區段的「Post-startup script」(開機後指令碼) 欄位中,按一下「Browse」(瀏覽),然後前往 Cloud Storage 中的開機後指令碼。詳情請參閱「啟動後指令碼位置」。
-
在開機後指令碼網址下方,選取開機後指令碼的行為。預設行為為「執行一次」。 詳情請參閱啟動後指令碼行為。
-
如要新增環境變數,請按一下「新增環境變數」
,然後輸入「鍵」和「值」配對。如要新增更多環境變數,請重複這個步驟。 -
在「網路和安全性」部分,確認已選取「啟用使用者憑證」。
-
完成對話方塊的其餘部分,然後按一下「建立」。
執行階段範本會顯示在「執行階段範本」分頁的清單中。
DISPLAY_NAME
:執行階段範本的顯示名稱。PROJECT_ID
:您的專案 ID。REGION
:執行階段範本所在的區域。POST_STARTUP_SCRIPT_URI
:開機後指令碼的 URI。詳情請參閱「啟動後指令碼位置」。POST_STARTUP_SCRIPT_BEHAVIOR
:開機後指令碼的行為。請參閱「執行開機指令碼後的操作」。ENV_VARIABLE_NAME
:要為執行階段設定的環境變數名稱。ENV_VARIABLE_VALUE
:要為執行階段設定的環境變數值。REGION
:執行階段範本所在的區域。PROJECT_ID
:您的專案 ID。DISPLAY_NAME
:執行階段範本的顯示名稱。POST_STARTUP_SCRIPT_URI
:開機後指令碼的 URI。詳情請參閱「啟動後指令碼位置」。POST_STARTUP_SCRIPT_BEHAVIOR
:開機後指令碼的行為。請參閱「執行開機指令碼後的操作」。ENV_VARIABLE_NAME
:要為執行階段設定的環境變數名稱。ENV_VARIABLE_VALUE
:要為執行階段設定的環境變數值。- 如要根據包含啟動後指令碼的執行階段範本建立執行階段,您必須是該執行階段範本的擁有者和建立者。
- 系統不支援透過啟動後指令碼傳遞環境變數。 您必須按照本指南所述,在軟體設定中指定環境變數。
- 如要使用 Cloud Storage 中的開機後指令碼,您必須使用已啟用使用者憑證的執行階段,且使用者憑證必須有權存取 Cloud Storage 值區。
- 如果您使用 Google Cloud 控制台建立執行階段範本,啟動後指令碼必須位於 Cloud Storage 中。使用 Google Cloud 控制台建立執行階段範本時,系統不支援其他位置的開機後指令碼。
- 使用 Google Cloud 控制台建立執行階段範本時,系統不支援為啟動後指令碼指定產生號碼。
- 建立執行階段並連線。
- 如要管理執行階段,請參閱「管理執行階段」。
- 進一步瞭解執行階段和執行階段範本。
必要的角色
如要取得在 Colab Enterprise 中建立執行階段範本所需的權限,請要求管理員授予您專案的 Colab Enterprise 管理員 (roles/aiplatform.colabEnterpriseAdmin
) IAM 角色。如要進一步瞭解如何授予角色,請參閱「管理專案、資料夾和機構的存取權」。
建立使用開機後指令碼的執行階段範本
如要建立使用開機後指令碼的執行階段範本,可以使用 Google Cloud 控制台、Google Cloud CLI 或 REST API。
控制台
如要建立使用開機後指令碼的執行階段範本,請執行下列步驟:
gcloud
使用下列任何指令資料之前,請先替換以下項目:
執行下列指令:
Linux、macOS 或 Cloud Shell
gcloud colab runtime-templates create --display-name="DISPLAY_NAME" \ --project=PROJECT_ID \ --region=REGION \ --machine-type=e2-standard-4 \ --post-startup-script-url=POST_STARTUP_SCRIPT_URI \ --post-startup-script-behavior=POST_STARTUP_SCRIPT_BEHAVIOR
Windows (PowerShell)
gcloud colab runtime-templates create --display-name="DISPLAY_NAME" ` --project=PROJECT_ID ` --region=REGION ` --machine-type=e2-standard-4 ` --post-startup-script-url=POST_STARTUP_SCRIPT_URI ` --post-startup-script-behavior=POST_STARTUP_SCRIPT_BEHAVIOR
Windows (cmd.exe)
gcloud colab runtime-templates create --display-name="DISPLAY_NAME" ^ --project=PROJECT_ID ^ --region=REGION ^ --machine-type=e2-standard-4 ^ --post-startup-script-url=POST_STARTUP_SCRIPT_URI ^ --post-startup-script-behavior=POST_STARTUP_SCRIPT_BEHAVIOR
如要進一步瞭解如何透過指令列建立執行階段範本,請參閱 gcloud CLI 說明文件。
REST
使用任何要求資料之前,請先替換以下項目:
HTTP 方法和網址:
POST https://REGION-aiplatform.googleapis.com/v1beta1/projects/PROJECT_ID/locations/REGION/notebookRuntimeTemplates
JSON 要求主體:
{ "displayName": "DISPLAY_NAME", "machineSpec": { "machineType": "e2-standard-4" }, softwareConfig: { postStartupScriptConfig: { postStartupScriptUrl: "POST_STARTUP_SCRIPT_URI", postStartupScriptBehavior: "POST_STARTUP_SCRIPT_BEHAVIOR" }, }, "networkSpec": { "enableInternetAccess": true } }
如要傳送要求,請選擇以下其中一個選項:
curl
將要求主體儲存在名為 request.json
的檔案中,然後執行下列指令:
curl -X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json; charset=utf-8" \
-d @request.json \
"https://REGION-aiplatform.googleapis.com/v1beta1/projects/PROJECT_ID/locations/REGION/notebookRuntimeTemplates"
PowerShell
將要求主體儲存在名為 request.json
的檔案中,然後執行下列指令:
$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }
Invoke-WebRequest `
-Method POST `
-Headers $headers `
-ContentType: "application/json; charset=utf-8" `
-InFile request.json `
-Uri "https://REGION-aiplatform.googleapis.com/v1beta1/projects/PROJECT_ID/locations/REGION/notebookRuntimeTemplates" | Select-Object -Expand Content
建立執行階段
建立使用開機後指令碼的執行階段範本後,請根據該範本建立執行階段。執行階段會啟動,並根據指定的行為執行開機後指令碼。請參閱「建立執行階段」。
建立含有開機後指令碼和環境變數的執行階段範本
如要建立使用開機後指令碼和環境變數的執行階段範本,可以使用 Google Cloud 控制台、Google Cloud CLI 或 REST API。
控制台
如要建立使用開機後指令碼和環境變數的執行階段範本,請按照下列步驟操作:
gcloud
使用下列任何指令資料之前,請先替換以下項目:
執行下列指令:
Linux、macOS 或 Cloud Shell
gcloud colab runtime-templates create --display-name="DISPLAY_NAME" \ --project=PROJECT_ID \ --region=REGION \ --machine-type=e2-standard-4 \ --post-startup-script-url=POST_STARTUP_SCRIPT_URI \ --post-startup-script-behavior=POST_STARTUP_SCRIPT_BEHAVIOR \ --set-env-vars=ENV_VARIABLE_NAME=ENV_VARIABLE_VALUE
Windows (PowerShell)
gcloud colab runtime-templates create --display-name="DISPLAY_NAME" ` --project=PROJECT_ID ` --region=REGION ` --machine-type=e2-standard-4 ` --post-startup-script-url=POST_STARTUP_SCRIPT_URI ` --post-startup-script-behavior=POST_STARTUP_SCRIPT_BEHAVIOR ` --set-env-vars=ENV_VARIABLE_NAME=ENV_VARIABLE_VALUE
Windows (cmd.exe)
gcloud colab runtime-templates create --display-name="DISPLAY_NAME" ^ --project=PROJECT_ID ^ --region=REGION ^ --machine-type=e2-standard-4 ^ --post-startup-script-url=POST_STARTUP_SCRIPT_URI ^ --post-startup-script-behavior=POST_STARTUP_SCRIPT_BEHAVIOR ^ --set-env-vars=ENV_VARIABLE_NAME=ENV_VARIABLE_VALUE
如要進一步瞭解如何透過指令列建立執行階段範本,請參閱 gcloud CLI 說明文件。
REST
使用任何要求資料之前,請先替換以下項目:
HTTP 方法和網址:
POST https://REGION-aiplatform.googleapis.com/v1beta1/projects/PROJECT_ID/locations/REGION/notebookRuntimeTemplates
JSON 要求主體:
{ "displayName": "DISPLAY_NAME", "machineSpec": { "machineType": "e2-standard-4" }, softwareConfig: { postStartupScriptConfig: { postStartupScriptUrl: "POST_STARTUP_SCRIPT_URI", postStartupScriptBehavior: "POST_STARTUP_SCRIPT_BEHAVIOR" }, "env": [ { "name": "ENV_VARIABLE_NAME", "value": "ENV_VARIABLE_VALUE" } ] }, "networkSpec": { "enableInternetAccess": true } }
如要傳送要求,請選擇以下其中一個選項:
curl
將要求主體儲存在名為 request.json
的檔案中,然後執行下列指令:
curl -X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json; charset=utf-8" \
-d @request.json \
"https://REGION-aiplatform.googleapis.com/v1beta1/projects/PROJECT_ID/locations/REGION/notebookRuntimeTemplates"
PowerShell
將要求主體儲存在名為 request.json
的檔案中,然後執行下列指令:
$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }
Invoke-WebRequest `
-Method POST `
-Headers $headers `
-ContentType: "application/json; charset=utf-8" `
-InFile request.json `
-Uri "https://REGION-aiplatform.googleapis.com/v1beta1/projects/PROJECT_ID/locations/REGION/notebookRuntimeTemplates" | Select-Object -Expand Content
建立執行階段
建立使用開機後指令碼的執行階段範本後,請根據該範本建立執行階段。執行階段會啟動,並根據指定的行為執行開機後指令碼。請參閱「建立執行階段」。
限制
使用 Colab Enterprise 的啟動後指令碼時,請注意下列限制: