設定環境

啟動 Vertex AI 類神經架構搜尋實驗前,請先設定環境。

事前準備

  1. Sign in to your Google Cloud account. If you're new to Google Cloud, create an account to evaluate how our products perform in real-world scenarios. New customers also get $300 in free credits to run, test, and deploy workloads.
  2. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Go to project selector

  3. Verify that billing is enabled for your Google Cloud project.

  4. Enable the Vertex AI API.

    Enable the API

  5. Install the Google Cloud CLI.

  6. 如果您使用外部識別資訊提供者 (IdP),請先 使用聯合身分登入 gcloud CLI

  7. 如要初始化 gcloud CLI,請執行下列指令:

    gcloud init
  8. 初始化 gcloud CLI 後,請更新並安裝必要元件:

    gcloud components update
    gcloud components install beta
  9. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Go to project selector

  10. Verify that billing is enabled for your Google Cloud project.

  11. Enable the Vertex AI API.

    Enable the API

  12. Install the Google Cloud CLI.

  13. 如果您使用外部識別資訊提供者 (IdP),請先 使用聯合身分登入 gcloud CLI

  14. 如要初始化 gcloud CLI,請執行下列指令:

    gcloud init
  15. 初始化 gcloud CLI 後,請更新並安裝必要元件:

    gcloud components update
    gcloud components install beta
  16. 如要授予所有類神經架構搜尋使用者「Vertex AI 使用者」角色 (roles/aiplatform.user),請與專案管理員聯絡。
  17. 安裝 Docker

    如果您使用的是 Ubuntu、Debian 等以 Linux 為基礎的作業系統,請將您的使用者名稱加入 docker 群組,這樣就能在不使用 sudo 的情況下執行 Docker:

    sudo usermod -a -G docker ${USER}
    

    將自己加入 docker 群組後,您可能需要重新啟動系統。

  18. 開啟 Docker。如要確認 Docker 正在運作,請執行下列 Docker 指令,這個指令會傳回目前的時間和日期:
    docker run busybox date
  19. 使用 gcloud 做為 Docker 的憑證輔助程式:
    gcloud auth configure-docker
  20. (選用) 如要在本機環境中使用 GPU 來執行容器,請安裝 nvidia-docker
  21. 設定 Cloud Storage 值區

    本節說明如何建立新值區。您可以使用現有值區,但該值區的所在地區,必須與您執行 AI Platform 工作的地區相同。此外,如果該值區不屬於您用來執行類神經架構搜尋的專案,您就必須明確地將該值區的存取權授予類神經架構搜尋服務帳戶。

    1. 指定新值區的名稱。Cloud Storage 中所有值區的名稱皆不得重複。

      BUCKET_NAME="YOUR_BUCKET_NAME"

      舉例來說,請使用您的專案名稱,並在後面附加 -vertexai-nas

      PROJECT_ID="YOUR_PROJECT_ID"
      BUCKET_NAME=${PROJECT_ID}-vertexai-nas
    2. 檢查您建立的值區名稱。

      echo $BUCKET_NAME
    3. 選取值區的地區,然後設定 REGION 環境變數。

      使用的地區必須與您預計要執行類神經架構搜尋工作的地區相同。

      例如,下列程式碼會建立 REGION 並設為 us-central1

      REGION=us-central1
    4. 建立新值區:

      gcloud storage buckets create gs://$BUCKET_NAME --location=$REGION

    為專案申請更多裝置配額

    教學課程會使用約五部 CPU 機器,不需要任何額外配額。執行教學課程後,請執行類神經架構搜尋工作。

    類神經架構搜尋作業會平行訓練一批模型。每個訓練好的模型都對應一項試驗。 請參閱設定 number-of-parallel-trials 一節,估算搜尋工作所需的 CPU 和 GPU 數量。舉例來說,如果每個試驗使用 2 個 T4 GPU,且您將 number-of-parallel-trials 設為 20,則搜尋工作需要 40 個 T4 GPU 的總配額。此外,如果每個試驗都使用 highmem-16 CPU,則每個試驗需要 16 個 CPU 單位,20 個平行試驗則需要 320 個 CPU 單位。不過,我們要求至少要有 10 個平行試用配額 (或 20 個 GPU 配額)。GPU 的預設初始配額會因區域和 GPU 類型而異,通常 Tesla_T4 的配額為 0、6 或 12,Tesla_V100 的配額為 0 或 6。CPU 的預設初始配額因地區而異,通常為 20、450 或 2,200。

    選用:如果您打算平行執行多個搜尋工作,請擴充配額需求。要求配額不會立即產生費用。 執行工作後,系統就會向您收費。

    如果配額不足,且您嘗試啟動的工作需要的資源超出配額,工作將無法啟動,並顯示類似下列內容的錯誤訊息:

    Exception: Starting job failed: {'code': 429, 'message': 'The following quota metrics exceed quota limits: aiplatform.googleapis.com/custom_model_training_cpus,aiplatform.googleapis.com/custom_model_training_nvidia_v100_gpus,aiplatform.googleapis.com/custom_model_training_pd_ssd', 'status': 'RESOURCE_EXHAUSTED', 'details': [{'@type': 'type.googleapis.com/google.rpc.DebugInfo', 'detail': '[ORIGINAL ERROR] generic::resource_exhausted: com.google.cloud.ai.platform.common.errors.AiPlatformException: code=RESOURCE_EXHAUSTED, message=The following quota metrics exceed quota limits: aiplatform.googleapis.com/custom_model_training_cpus,aiplatform.googleapis.com/custom_model_training_nvidia_v100_gpus,aiplatform.googleapis.com/custom_model_training_pd_ssd, cause=null [google.rpc.error_details_ext] { code: 8 message: "The following quota metrics exceed quota limits: aiplatform.googleapis.com/custom_model_training_cpus,aiplatform.googleapis.com/custom_model_training_nvidia_v100_gpus,aiplatform.googleapis.com/custom_model_training_pd_ssd" }'}]}
    

    在某些情況下,如果同一個專案的多個工作同時啟動,但配額不足以支援所有工作,其中一個工作就會處於佇列狀態,無法開始訓練。在這種情況下,請取消排入佇列的工作,並要求更多配額,或等待前一個工作完成。

    您可以透過「配額」頁面申請額外裝置配額。您可以套用篩選器,找出要編輯的配額: 篩選配額

    1. 在「服務」部分,選取「Vertex AI API」
    2. 在「區域」中,選取要篩選的區域。
    3. 在「配額」部分,選取前置字串為「自訂模型訓練」的加速器名稱。
      • 如果是 V100 GPU,值為「每個區域的自訂模型訓練 Nvidia V100 GPU」。
      • CPU 的值可以是每個區域的 N1/E2 機器類型自訂模型訓練 CPU。CPU 數量代表 CPU 單位。如要使用 8 個 highmem-16 CPU,請申請 8 * 16 = 128 個 CPU 單位。同時輸入「region」的所需值。

    建立配額要求後,您會收到 Case number 和後續電子郵件,瞭解要求的狀態。GPU 配額申請大約需要兩到五個工作天才能獲得核准。一般而言,申請約 20 到 30 個 GPU 的配額,大約兩到三天內就能獲得核准;申請約 100 個 GPU 的配額,則可能需要五個工作天。CPU 配額申請最多可能需要兩個工作天才能獲得核准。不過,如果某個區域的 GPU 類型嚴重短缺,即使配額要求很小,也無法保證能取得配額。在這種情況下,系統可能會要求您改用其他區域或 GPU 類型。一般來說,T4 GPU 比 V100 GPU 更容易取得。T4 GPU 需要更多實際時間,但成本效益較高。

    詳情請參閱「要求調整配額」。

    為專案設定構件登錄檔

    您必須為專案和推送 Docker 映像檔的區域設定 Artifact Registry

    前往專案的「Artifact Registry」頁面。 如果尚未啟用,請先為專案啟用 Artifact Registry API:

    啟用 Artifact Registry

    啟用後,按一下「建立存放區」,即可開始建立新存放區:

    建立構件登錄檔

    選擇「名稱」做為 nas、「格式」做為「Docker」,以及「位置類型」做為「區域」。在「區域」中,選取您執行作業的位置,然後按一下「建立」

    Artifact Registry 設定

    這應該會建立您想要的 Docker 存放區,如下所示:

    已建立 Artifact Registry

    您也需要設定驗證機制,才能將 Docker 推送至這個存放區。下方的本機環境設定部分包含這個步驟。

    設定本機環境

    您可以使用本機環境中的 Bash 殼層執行這些步驟,也可以從 Vertex AI Workbench 執行個體的筆記本執行這些步驟。

    1. 設定基本環境變數:

      gcloud config set project PROJECT_ID
      gcloud auth login
      gcloud auth application-default login
      
    2. 為構件登錄檔設定 Docker 驗證

      # example: REGION=europe-west4
      gcloud auth configure-docker REGION-docker.pkg.dev
      
    3. (選用) 設定 Python 3 虛擬環境。建議使用 Python 3,但並非必要:

      sudo apt install python3-pip && \
      pip3 install virtualenv && \
      python3 -m venv --system-site-packages ~/./nas_venv && \
      source ~/./nas_venv/bin/activate
      
    4. 安裝其他程式庫:

      pip install google-cloud-storage==2.6.0
      pip install pyglove==0.1.0
      

    設定服務帳戶

    您必須先設定服務帳戶,才能執行 NAS 工作。您可以在本機環境的 Bash 殼層中執行這些步驟,也可以在 Vertex AI Workbench 執行個體的筆記本中執行。

    1. 建立服務帳戶:

      gcloud iam service-accounts create NAME \
          --description=DESCRIPTION \
          --display-name=DISPLAY_NAME
      
    2. aiplatform.userstorage.objectAdmin 角色指派給服務帳戶:

      gcloud projects add-iam-policy-binding PROJECT_ID \
          --member=serviceAccount:NAME@PROJECT_ID.iam.gserviceaccount.com \
          --role=roles/aiplatform.user
      gcloud projects add-iam-policy-binding PROJECT_ID \
          --member=serviceAccount:NAME@PROJECT_ID.iam.gserviceaccount.com \
          --role=roles/storage.objectAdmin
      

    舉例來說,下列指令會在專案 my-nas-project 下建立名為 my-nas-sa 的服務帳戶,並指派 aiplatform.userstorage.objectAdmin 角色:

      gcloud iam service-accounts create my-nas-sa \
          --description="Service account for NAS" \
          --display-name="NAS service account"
      gcloud projects add-iam-policy-binding my-nas-project \
          --member=serviceAccount:my-nas-sa@my-nas-project.iam.gserviceaccount.com \
          --role=roles/aiplatform.user
      gcloud projects add-iam-policy-binding my-nas-project \
          --member=serviceAccount:my-nas-sa@my-nas-project.iam.gserviceaccount.com \
          --role=roles/storage.objectAdmin
    

    下載程式碼

    如要開始進行 Neural Architecture Search 實驗,請下載範例 Python 程式碼,其中包含預先建構的訓練器、搜尋空間定義和相關聯的用戶端程式庫。

    請按照下列步驟下載原始碼。

    1. 開啟新的 Shell 終端機。

    2. 執行 Git clone 指令:

      git clone https://github.com/google/vertex-ai-nas.git