關於 Vertex AI 類神經架構搜尋

有了 Vertex AI Neural Architecture Search,您就能找到在準確率、延遲、記憶體、前述三者的組合或自訂指標方面,表現最佳的類神經架構。

判斷 Vertex AI 類神經架構搜尋是否為最佳工具

  • Vertex AI Neural Architecture Search 是一項高階最佳化工具,可根據準確率找出最佳類神經架構,並可選擇是否加入延遲、記憶體或自訂指標等限制。可能的神經架構選擇搜尋空間可能高達 10^20。這項技術已成功生成多個頂尖的電腦視覺模型,包括 NasnetMNasnetEfficientNetNAS-FPNSpineNet
  • 類神經架構搜尋並非解決方案,您無法直接匯入資料,就期望能獲得良好結果,而不進行實驗。這是實驗工具。
  • 神經架構搜尋不適用於超參數調整,例如調整學習率或最佳化工具設定。僅適用於架構搜尋。請勿將超參數調整與類神經架構搜尋功能合併使用。
  • 如果訓練資料有限,或資料集極度不平衡 (某些類別非常罕見),則不建議使用神經架構搜尋。如果資料不足,您已在基準訓練中使用大量擴增功能,則不建議使用類神經架構搜尋。
  • 您應先嘗試其他傳統和常見的機器學習方法和技術,例如超參數調整。只有在傳統方法無法帶來進一步的效益時,才建議使用類神經架構搜尋。
  • 您應有內部團隊負責模型微調,並對要修改和嘗試的架構參數有基本概念。這些架構參數可能包括核心大小、通道數量或連線,以及許多其他可能性。如果您想探索特定搜尋空間,神經架構搜尋就非常實用,可減少至少約六個月的工程時間,探索多達 10^20 種架構選擇的大型搜尋空間。
  • 類神經架構搜尋適用於企業客戶,他們可花費數千美元進行實驗。
  • 類神經架構搜尋不只適用於視覺用途。目前僅提供以視覺為基礎的預先建構搜尋空間和預先建構訓練器,但客戶也可以自備非視覺搜尋空間和訓練器。
  • 神經架構搜尋不會使用超網路(一次性 NAS 或以權重共用為基礎的 NAS) 方法,您只需自備資料,即可做為解決方案使用。自訂超級網路並非易事,需要耗費數月心力。與超網路不同,神經架構搜尋可高度自訂,以定義自訂搜尋空間和獎勵。自訂作業大約需要一到兩天。
  • 全球有 8 個區域支援類神經架構搜尋。查看所在地區的供應情形

使用神經架構搜尋前,請先閱讀下節內容,瞭解預期費用、結果增益和 GPU 配額需求。

預期費用、成效提升幅度和 GPU 配額需求

NAS 搜尋。

圖中顯示典型的類神經架構搜尋曲線。Y-axis 顯示試用獎勵,X-axis 則顯示啟動的試用次數。隨著試驗次數增加,控制器會開始尋找更優質的模型。因此,獎勵會開始增加,之後獎勵變異數和獎勵成長會開始減少,並顯示收斂。在收斂點,試驗次數會因搜尋空間大小而異,但約為 2000 次。每項試驗都是完整訓練的較小版本,稱為代理工作,會在兩個 Nvidia V100 GPU 上執行約一到兩小時。顧客隨時可以手動停止搜尋,且可能會在收斂點出現前,找到比基準更高的獎勵模型。建議等到收斂點出現後,再選擇較好的結果。搜尋完成後,下一個階段是挑選前 10 項試驗 (模型),並對這些試驗執行完整訓練。

(選用) 試用預先建立的 MNasNet 搜尋空間和訓練程式

在這個模式中,請觀察搜尋曲線或幾次試驗 (約 25 次),並使用預先建立的 MNasNet 搜尋空間和訓練程式進行試駕。

MnasNet 玩具執行作業。

如圖所示,最佳第 1 階段獎勵從試驗 1 的 ~0.30 開始攀升,到試驗 17 時達到 ~0.37。由於取樣隨機性,實際執行結果可能略有不同,但最佳獎勵應該會小幅增加。請注意,這仍是玩具執行,不代表任何概念驗證或公開基準驗證。

這項執行的費用明細如下:

  • 第 1 階段:
    • 試驗次數:25
    • 每個試驗的 GPU 數量:2
    • GPU 類型:TESLA_T4
    • 每個試驗的 CPU 數量:1
    • CPU 類型:n1-highmem-16
    • 單次試驗的平均訓練時間:3 小時
    • 平行測試數量:6
    • 已使用的 GPU 配額:(每次試驗的 GPU 數量 * 平行試驗數量) = 12 個 GPU。 測試車輛時請使用 us-central1 地區,並將訓練資料存放在同一地區。不需要額外配額。
    • 執行時間:(總試驗次數 * 每次試驗的訓練時間)/(平行試驗次數) = 12 小時
    • GPU 時數:(總試驗次數 * 每次試驗的訓練時間 * 每次試驗的 GPU 數量) = 150 個 T4 GPU 時數
    • CPU 時數:(試驗總數 * 每次試驗的訓練時間 * 每次試驗的 CPU 數量) = 75 個 n1-highmem-16 時數
    • 費用:約 $185 美元。您可以提早停止工作,以降低費用。 如要計算確切價格,請參閱定價頁面

由於這是玩具執行項目,因此不需要為第 1 階段的模型執行完整的第 2 階段訓練。如要進一步瞭解如何執行第 2 階段,請參閱教學課程 3

本次執行作業使用 MnasNet 筆記本

(選用) 預先建立的 MNasNet 搜尋空間和訓練程式概念驗證 (POC) 執行

如果您有興趣幾乎完全複製已發布的 MNasnet 結果,可以使用這個模式。根據論文,MnasNet 在 Pixel 手機上可達到 75.2% 的最高準確率,延遲時間為 78 毫秒,比 MobileNetV2 快 1.8 倍,準確率高出 0.5%,比 NASNet 快 2.3 倍,準確率高出 1.2%。不過,這個範例使用 GPU 進行訓練,並使用 Cloud CPU (n1-highmem-8) 評估延遲時間,而非使用 TPU。以這個範例來說,MNasNet 的 Stage2 最高準確率預期為 75.2%,在 Cloud CPU (n1-highmem-8) 上的延遲時間為 50 毫秒。

這項執行的費用明細如下:

  • 第 1 階段搜尋:

    • 試驗次數:2000
    • 每個試驗的 GPU 數量:2
    • GPU 類型:TESLA_T4
    • 單次試驗的平均訓練時間:3 小時
    • 平行測試數量:10
    • 使用的 GPU 配額:(每次試驗的 GPU 數量 * 並行試驗數量) = 20 個 T4 GPU。 由於這個數字高於預設配額,請從專案 UI 建立配額要求。詳情請參閱 setting_up_path
    • 執行時間:(總試驗次數 * 每次試驗的訓練時間)/(平行試驗次數)/24 = 25 天。 注意:這項工作會在 14 天後終止。之後,您只要執行一個指令,即可輕鬆繼續搜尋工作,效期為 14 天。如果 GPU 配額較高,執行時間就會成比例縮短。
    • GPU 時數:(總試驗次數 * 每次試驗的訓練時間 * 每次試驗的 GPU 數量) = 12000 個 T4 GPU 時數。
    • 費用:約$15,000 美元
  • 第 2 階段:使用前 10 個模型進行完整訓練:

    • 試驗次數:10
    • 每個試驗的 GPU 數量:4
    • GPU 類型:TESLA_T4
    • 單次試驗訓練的平均時間:約 9 天
    • 平行測試數量:10
    • 使用的 GPU 配額:(每次試驗的 GPU 數量 * 並行試驗數量) = 40 個 T4 GPU。 由於這個數字高於預設配額,請從專案 UI 建立配額要求。詳情請參閱 setting_up_path 您也可以執行這項作業兩次,每次執行五個模型,而非平行執行全部 10 個模型,這樣就能使用 20 個 T4 GPU 執行作業。
    • 執行時間:(總試驗次數 * 每次試驗的訓練時間)/(平行試驗次數)/24 = 約 9 天
    • GPU 時數:(總試驗次數 * 每次試驗的訓練時間 * 每次試驗的 GPU 數量) = 8960 個 T4 GPU 時數。
    • 費用:約$8,000 美元

總費用:約 $23,000 美元。如要計算確切價格,請參閱定價頁面。注意:這個範例並非一般的訓練工作。在四個 TESLA_T4 GPU 上,完整的訓練作業大約需要九天。

本次執行作業使用 MnasNet 筆記本

使用搜尋空間和訓練程式

我們會提供平均自訂使用者的預估費用。 視訓練工作、GPU 和 CPU 而定,您的需求可能有所不同。如要執行端對端作業,至少需要 20 個 GPU 配額,詳情請參閱這篇文章。注意:效能提升幅度完全取決於工作。 我們只能提供 MNasnet 等範例,做為提升效能的參考範例。

假設自訂執行作業的費用明細如下:

  • 第 1 階段搜尋:

    • 試驗次數:2,000 次
    • 每個試驗的 GPU 數量:2
    • GPU 類型:TESLA_T4
    • 單一試驗的平均訓練時間:1.5 小時
    • 平行測試數量:10
    • 使用的 GPU 配額:(每次試驗的 GPU 數量 * 並行試驗數量) = 20 個 T4 GPU。 由於這個數字高於預設配額,您需要從專案 UI 建立配額要求。詳情請參閱「要求專案的額外裝置配額」。
    • 執行時間:(總試驗次數 * 每次試驗的訓練時間)/(平行試驗次數)/24 = 12.5 天
    • GPU 時數:(總試驗次數 * 每次試驗的訓練時間 * 每次試驗的 GPU 數量) = 6000 個 T4 GPU 時數。
    • 費用:約 $7,400 美元
  • 第 2 階段:使用前 10 個模型進行完整訓練:

    • 試驗次數:10
    • 每個試驗的 GPU 數量:2
    • GPU 類型:TESLA_T4
    • 單次試驗訓練的平均時間:約 4 天
    • 平行測試數量:10
    • 使用的 GPU 配額:(每次試驗的 GPU 數量 * 並行試驗數量) = 20 個 T4 GPU。 **由於這個數字高於預設配額,您需要從專案 UI 建立配額要求。詳情請參閱「要求專案的額外裝置配額」。如需自訂配額,請參閱同一份文件。
    • 執行時間:(總試驗次數 * 每次試驗的訓練時間)/(平行試驗次數)/24 = 約 4 天
    • GPU 時數:(總試驗次數 * 每次試驗的訓練時間 * 每次試驗的 GPU 數量) = 1920 個 T4 GPU 時數。
    • 費用:約 $2,400 美元
  • 如要進一步瞭解 Proxy 工作設計費用,請參閱「Proxy 工作設計」。 費用與訓練 12 個模型類似 (圖中的第 2 階段使用 10 個模型):

    • 使用的 GPU 配額:與圖中的第 2 階段執行相同。
    • 費用:(12/10) * 10 個模型的第 2 階段費用 = 約$2,880 美元

總費用:約 $12,680 美元。如要計算確切價格,請參閱定價頁面

這些第 1 階段的搜尋費用,是指達到收斂點前的搜尋費用,以及爭取最高成效的費用。不過,請勿等到搜尋結果趨於一致。 如果搜尋獎勵曲線已開始成長,使用目前最佳模型執行第 2 階段完整訓練時,搜尋費用較低,成效增幅也會較小。舉例來說,對於先前顯示的搜尋繪圖,請勿等到達到 2,000 次收斂試驗。您可能在 700 或 1,200 次試驗中找到更合適的模型,並可針對這些模型執行第 2 階段的完整訓練。您隨時可以提早停止搜尋,以降低費用。您也可以在搜尋執行期間,並行執行第 2 階段的完整訓練,但請確保您有足夠的 GPU 配額,可支援額外的平行工作。

成效和費用摘要

下表摘要說明一些資料點,以及相關的成效和費用。

摘要。

用途和功能

類神經架構搜尋功能彈性十足,而且簡單易用。新手使用者可以運用預先建立的搜尋空間、預先建立的訓練程式和筆記本,不必進行任何進一步設定,即可開始探索 Vertex AI 類神經架構搜尋的資料集。同時,專家使用者可以搭配自訂訓練器、自訂搜尋空間和自訂推論裝置使用神經架構搜尋,甚至將架構搜尋擴展至非視覺用途。

類神經架構搜尋提供預先建立的訓練程式和搜尋空間,可在 GPU 上執行,適用於下列用途:

  • Tensorflow 訓練器,結果以公開資料集為準,並發布在筆記本中
    • 使用端對端 (SpineNet) 搜尋空間偵測圖片物件
    • 使用預先建構的骨幹 (MnasNet) 搜尋空間進行分類
    • 使用預先建構的端對端搜尋空間,透過 LiDAR 3D 點雲偵測物件
    • 針對目標裝置進行延遲和記憶體受限的搜尋
  • PyTorch 訓練師僅做為教學課程範例使用
    • PyTorch 3D 醫療影像區隔搜尋空間範例
    • 以 PyTorch 為基礎的 MNasNet 分類
    • 針對目標裝置進行延遲和記憶體受限的搜尋
  • 其他以 TensorFlow 為基礎的預先建構最先進搜尋空間,並提供程式碼
    • 模型縮放
    • 資料擴增

您也可以輕鬆使用類神經架構搜尋提供的全套功能,自訂架構和應用情境:

  • 類神經架構搜尋語言,可定義可能類神經架構的自訂搜尋空間,並將這個搜尋空間與自訂訓練器程式碼整合。
  • 預先建立的先進搜尋空間,可直接使用程式碼。
  • 預先建構的 Trainer 隨時可用,並附上可在 GPU 上執行的程式碼。
  • 架構搜尋的代管服務,包括:
    • 神經架構搜尋控制器,可對搜尋空間取樣,找出最佳架構。
    • 預先建構的 Docker/程式庫,附有程式碼,可計算自訂硬體上的延遲時間/FLOP/記憶體。
  • 教學課程,教導如何使用 NAS。
  • 一組設計 Proxy 工作的工具。
  • 提供指引和範例,說明如何使用 Vertex AI 有效率地訓練 PyTorch。
  • 程式庫支援自訂指標報表和分析。
  • Google Cloud 主控台 UI 來監控及管理工作。
  • 輕鬆使用筆記本,快速啟動搜尋。
  • 程式庫支援以專案或工作為單位,精細管理 GPU/CPU 資源用量。
  • 以 Python 為基礎的 Nas-client,可建構 Docker、啟動 NAS 工作,以及繼續先前的搜尋工作。
  • Google Cloud 以控制台 UI 為基礎的客戶支援服務。

背景

神經架構搜尋是一種技術,可自動設計類神經網路。過去幾年,該團隊已成功生成多個最先進的電腦視覺模型,包括:

這些模型在電腦視覺問題的 3 個主要類別中,都處於領先地位:圖像分類、物件偵測和區隔。

工程師可透過神經架構搜尋,在同一次試驗中針對準確率延遲記憶體最佳化模型,縮短模型部署時間。神經架構搜尋會探索多種模型:控制器會提議機器學習模型,然後訓練及評估模型,並重複執行 1, 000 多次,以找出目標裝置延遲和/或記憶體限制的最佳解決方案。下圖顯示架構搜尋架構的主要元件:

類神經架構搜尋架構的元件。

  • 模型:具有運算和連結的神經架構。
  • 搜尋空間:可設計及最佳化的可能模型 (作業和連線) 空間。
  • 訓練器 Docker:使用者可自訂訓練器程式碼,訓練及評估模型,並計算模型準確度。
  • 推論裝置:硬體裝置,例如 CPU/GPU,用於計算模型延遲和記憶體用量。
  • 獎勵:模型指標的組合,例如準確率、延遲和記憶體用量,用於將模型評為較好或較差。
  • 神經架構搜尋控制器:協調演算法,負責 (a) 從搜尋空間取樣模型、(b) 接收模型獎勵,以及 (c) 提供下一組要評估的模型建議,找出最理想的模型。

使用者設定工作

類神經架構搜尋提供預先建構的訓練程式,並整合預先建構的搜尋空間,可搭配提供的筆記本輕鬆使用,無需進一步設定。

不過,大多數使用者都需要使用自訂訓練程式、自訂搜尋空間、自訂指標 (例如記憶體、延遲和訓練時間) 和自訂獎勵 (準確度和延遲等項目的組合)。如要這麼做,請按照下列步驟操作:

  • 使用提供的神經架構搜尋語言定義自訂搜尋空間。
  • 將搜尋空間定義整合至訓練師程式碼。
  • 在訓練師程式碼中新增自訂指標報表。
  • 在訓練家代碼中新增自訂獎勵。
  • 建構訓練容器,並用來啟動類神經架構搜尋工作。

下圖說明瞭這點:

在使用者環境中設定 Neural Architecture Search。

運作中的神經架構搜尋服務

設定要使用的訓練容器後,神經架構搜尋服務就會在多個 GPU 裝置上平行啟動多個訓練容器。您可以控管訓練時要並行執行的測試數量,以及要啟動的測試總數。每個訓練容器都會從搜尋空間取得建議架構。訓練容器會建構建議模型、執行訓練/評估,然後將獎勵回報給神經架構搜尋服務。隨著這個程序進行,神經架構搜尋服務會使用獎勵回饋,找出越來越好的模型架構。搜尋完成後,您就能存取相關指標,以供進一步分析。

運作中的神經架構搜尋服務。

神經架構搜尋的使用者歷程總覽

執行神經架構搜尋實驗的大致步驟如下:

  • 設定和定義:

    • 找出標籤資料集,並指定工作類型 (例如偵測或區隔)。
    • 自訂訓練家代碼:
      • 使用預先建立的搜尋空間,或使用類神經架構搜尋語言定義自訂搜尋空間。
      • 將搜尋空間定義整合至訓練師程式碼。
      • 在訓練師程式碼中新增自訂指標報表。
      • 在訓練家代碼中新增自訂獎勵。
    • 建構訓練師容器。
    • 為部分訓練 (Proxy 工作) 設定搜尋試驗參數。搜尋訓練應盡快完成 (例如 30 至 60 分鐘),以便部分訓練模型:
      • 取樣模型收集獎勵所需的最低訓練週期數 (最低訓練週期數需確保模型收斂)。
      • 超參數 (例如學習率)。
  • 在本機執行搜尋,確保搜尋空間整合容器可正常運作。

  • 以五次測試試驗啟動 Google Cloud 搜尋 (第 1 階段) 工作,並確認搜尋試驗符合執行階段和準確度目標。

  • 以 +1k 試驗啟動 Google Cloud 搜尋 (第 1 階段) 工作。

    • 在搜尋過程中,也請設定定期間隔,訓練前 N 個模型 (第 2 階段):

      • 超參數和超參數搜尋演算法。第 2 階段通常會使用與第 1 階段類似的設定,但某些參數的設定會較高,例如訓練步驟/訓練週期和通道數。
      • 停止條件 (訓練週期數)。
  • 分析所回報的指標和/或架構,以取得洞察資訊。

架構搜尋實驗後,可以接續進行擴展搜尋實驗,然後再進行擴增搜尋實驗。

說明文件閱讀順序

  1. (必要) 設定環境
  2. (必填) 教學課程
  3. (僅適用於 PyTorch 客戶) 使用雲端資料進行 PyTorch 高效率訓練
  4. (必要) 最佳做法和建議工作流程
  5. (必要) Proxy 工作設計
  6. (僅在使用預先建立的訓練程式時為必要) 如何使用預先建立的搜尋空間和預先建立的訓練程式

參考資料