關於 Vertex AI 類神經架構搜尋

有了 Vertex AI Neural Architecture Search,您就能搜尋準確度、延遲、記憶體、以上三者組合或自訂指標的最佳神經架構。

判斷 Vertex AI 神經架構搜尋是否最適合我

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

使用神經架構搜尋前,也請參閱下列有關預期成本、結果增益和 GPU 配額需求的部分。

預期成本、成效提升和 GPU 配額需求

NAS 搜尋。

圖表顯示典型的神經架構搜尋曲線。Y-axis 會顯示試用獎勵,X-axis 則會顯示啟動的試用次數。隨著試驗次數增加,控制器就會開始尋找更優質的模型。因此,獎勵會開始增加,接著獎勵變化和獎勵成長會開始減少,並顯示收斂。在收斂點,試驗次數可能會因搜尋空間大小而異,但大約為 2000 次試驗。每個測試都是較小版本的完整訓練,稱為「proxy-task」,在兩個 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 而非 TPU 進行訓練,並使用雲端 CPU (n1-highmem-8) 評估延遲時間。在這個範例中,在雲端 CPU (n1-highmem-8) 上,MNasNet 的 Stage2 最高準確率為 75.2%,延遲時間為 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 美元
  • 使用前 10 個模型進行第 2 階段完整訓練:

    • 試驗次數:10
    • 每個試用方案的 GPU 數量:4
    • GPU 類型:TESLA_T4
    • 單一試驗訓練的平均時間:約 9 天
    • 並行測試數量:10
    • 使用的 GPU 配額:(每個測試的 GPU 數量 * 並行測試數量) = 40 個 T4 GPU。由於這個數字高於預設配額,請透過專案 UI 建立配額要求。詳情請參閱 setting_up_path您也可以使用 20 個 T4 GPU 執行這項作業,方法是執行兩次工作,每次執行五個模型,而不是同時執行所有 10 個模型。
    • 執行時間:(總試驗次數 * 每個試驗的訓練時間)/(平行試驗次數)/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 美元
  • 使用前 10 個模型進行第 2 階段完整訓練:

    • 試驗次數: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 為基礎的預先建構先進搜尋空間,並附上程式碼
    • 模型縮放
    • 資料擴增

您可以輕鬆運用類神經架構搜尋提供的完整功能,針對自訂架構和用途進行調整:

  • 神經架構搜尋語言,可針對可能的神經架構定義自訂搜尋空間,並將此搜尋空間與自訂訓練器程式碼整合。
  • 可立即使用的預先建構先進搜尋空間,並附上程式碼。
  • 隨時可用的預先建構訓練器,內含可在 GPU 上執行的程式碼。
  • 這項代管服務可用於架構搜尋,包括
    • 神經架構搜尋控制器,可對搜尋空間取樣,找出最佳架構。
    • 預先建構的 Docker/程式庫,以及程式碼,可用於計算自訂硬體的延遲/FLOP/記憶體。
  • 教學課程,教導使用 NAS。
  • 一組設計 Proxy 工作所需的工具。
  • 使用 Vertex AI 訓練 PyTorch 的效率指南和範例。
  • 程式庫支援自訂指標報表和分析。
  • Google Cloud 主控台 UI,可用於監控及管理工作。
  • 輕鬆使用 Notebook 即可開始搜尋。
  • 程式庫支援以專案或工作層級精細度管理 GPU/CPU 資源使用情形。
  • 以 Python 為基礎的 Nas-client,可用於建構 Docker、啟動 NAS 工作,以及繼續執行先前的搜尋工作。
  • Google Cloud 以控制台 UI 為基礎的客戶服務。

背景

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

這些模型在所有 3 個主要類別的電腦視覺問題中都表現出色,包括圖片分類、物件偵測和區隔。

有了 Neural Architecture Search,工程師就能在同一個試驗中,針對準確度延遲記憶體最佳化模型,縮短部署模型所需的時間。神經架構搜尋會探索許多不同類型的模型:控制器會提出機器學習模型,然後訓練及評估模型,並重複執行 1, 000 次以上,以找出針對指定裝置的延遲和/或記憶體限制的最佳解決方案。下圖顯示架構搜尋架構的主要元件:

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

  • 模型:包含運算和連結的神經架構。
  • 搜尋空間:可設計及最佳化的可能模型 (作業和連結) 空間。
  • Trainer docker:使用者可自訂訓練程式碼,訓練及評估模型,並計算模型的準確度。
  • 推論裝置:CPU/GPU 等硬體裝置,用於計算模型的延遲時間和記憶體用量。
  • 獎勵:結合多項模型指標 (例如準確率、延遲和記憶體),用於將模型分為優良等級。
  • 神經架構搜尋控制器:這項協調演算法會 (a) 從搜尋空間中取樣模型、(b) 接收模型獎勵,以及 (c) 提供下一個模型建議集合,以便評估並找出最理想的模型。

使用者設定工作

類神經架構搜尋提供預先建立的訓練程式,可與預先建立的搜尋空間整合,方便您搭配提供的筆記本使用,無須額外設定。

不過,大多數使用者都需要使用自訂訓練程式、自訂搜尋空間、自訂指標 (例如記憶體、延遲和訓練時間),以及自訂獎勵 (準確度和延遲等項目的組合)。如要這樣做,您需要:

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

下圖說明瞭這項做法:

使用者環境中的類神經架構搜尋設定。

正在運作的神經架構搜尋服務

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

正在運作的類神經架構搜尋服務。

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

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

  • 設定和定義:

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

  • 啟動 Google Cloud 搜尋 (第 1 階段) 工作,並使用五個測試試驗,驗證搜尋試驗是否符合執行時間和準確度目標。

  • 啟動具有 1,000 次以上試驗的 Google Cloud search (第 1 階段) 工作。

    • 在搜尋過程中,請一併設定定期間隔,以便訓練 (第 2 階段) 前 N 大模型:

      • 超參數搜尋的超參數和演算法。第 2 階段通常會使用與第 1 階段相似的設定,但會針對特定參數 (例如訓練步驟/週期和管道數量) 設定更高的值。
      • 停止條件 (訓練週期數)。
  • 分析回報的指標和/或以視覺化方式呈現架構,以便取得洞察資訊。

架構搜尋實驗可搭配擴大搜尋實驗,並接著進行擴增搜尋實驗。

說明文件閱讀順序

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

參考資料