TPU加AutoML:50美元快速訓練高效的ImageNet圖像分類網絡

2021-01-12 機器之心Pro

昨日,Jeff Dean 在推特上表示他們在 ImageNet 圖像分類上發布了新的 DAWNBench 結果,新型 AmoebaNet-D 網絡在 TPU 上實現了最低的訓練時間和最少的訓練成本。在這一個基準測試上,基於進化策略的 DAWNBench 要比殘差網絡效果更好,且訓練成本降低了一倍。機器之心簡要介紹了該基準測試和 AmoebaNet 網絡架構,並提供了使用 TPU 進行 AmoebaNet 試驗的項目地址。

Jeff Dean 展示的兩個基準測試都是 DAWNBench 上的結果,DAWNBench 是斯坦福發布的一套基準測試,主要關注於端到端的深度學習訓練和推斷過程。雖然目前很多基準僅關注於模型精度,但 DAWNBench 格外關注計算時間和成本,它們是深度模型所需的關鍵資源。DAWNBench 提供了一套通用的深度學習工作負載參考集,因此能量化不同優化策略、模型架構、軟體框架、雲計算和硬體中的訓練時間、訓練成本、推斷延遲和推斷成本等重點指標。

DAWNBench 基準結果提交地址:https://github.com/stanford-futuredata/dawn-bench-entries

如下是各網絡架構在圖像分類 Top-5 驗證準確率(ImageNet 數據集上)達到 93% 所需要的時間。Jeff Dean 所展示的 AmoebaNet-D 在同等的硬體條件下要比 50 層的殘差網絡要快很多,它們所使用的框架也都展示在下圖。此外,DAWNBench 上所有的基準測試都需要提供測試原始碼。

下圖展示了不同模型 Top-5 準確率達到 93% 所需要的成本,因為 AmoebaNet-D 和 ResNet-50 使用相同的硬體,所以減少一半時間也就意味著成本減少了一半。

ResNet-50 已經是非常經典且成功的架構,即使我們將層級數增加到 100 至 150 層,網絡的最終準確度也不會有一個質的提高。但新型的 AmoebaNet-D 大大減少了計算時間,這種網絡基於進化策略能高效搜索神經網絡架構並實現快速的訓練。谷歌上個月其實已經介紹了這種網絡,詳細內容前查看:進化算法 + AutoML,谷歌提出新型神經網絡架構搜索方法。

AmoebaNet

在 ICML 2017 大會中展示的論文《Large-Scale Evolution of Image Classifiers》中,谷歌用簡單的構建模塊和常用的初始條件設置了一個進化過程。其主要思想是讓人「袖手旁觀」,讓進化算法大規模構建網絡架構。當時,從非常簡單的網絡開始,該過程可以找到與手動設計模型性能相當的分類器。這個結果振奮人心,因為很多應用可能需要較少的用戶參與。例如,一些用戶可能需要更好的模型,但沒有足夠的時間成為機器學習專家。

接下來要考慮的問題自然就是手動設計和進化的組合能不能獲得比單獨使用一個方法更好的結果。因此,在近期論文《Regularized Evolution for Image Classifier Architecture Search》(即 AmoebaNet)中,谷歌通過提供複雜的構建模塊和較好的初始條件來參與進化過程。此外,谷歌還使用其新型 TPUv2 晶片來擴大計算規模。通過現代硬體、專家知識和進化過程的組合,谷歌獲得了在兩個流行的圖像分類基準 CIFAR-10 和 ImageNet 上的當前最優模型。

AmoebaNet 論文:Regularized Evolution for Image Classifier Architecture Search論文地址:https://arxiv.org/pdf/1802.01548.pdf

該論文中,群體中初始化的模型必須遵從 cell 外部堆疊(由專家設計)。這類似於 Zoph et al. (2017) 論文中的架構設計思想(如下圖)。儘管這些種子模型中的 cell 是隨機的,但是我們不再從簡單模型開始,這樣更易獲得高質量模型。

Zoph et al. (2017) 論文中提到的構建模塊。左側是完整神經網絡的外部結構,自下而上地通過一串堆疊的重複 cell 解析輸入數據。右側是 cell 的內部結構。算法旨在尋找能夠獲取準確網絡的 cell。

在 AmoebaNet 中,谷歌所用進化算法的一大重要特徵是採用了一種正則化形式:相比於移除最差的神經網絡,他們移除了最老的神經網絡(無論它有多好)。這提升了對任務優化時所發生變化的穩健性,並最終更可能得到更加準確的網絡。

TPU 實現

項目地址:https://github.com/tensorflow/tpu/tree/master/models/experimental/amoeba_net

這些代碼是基於 AmoebaNet 論文的結果實現的,代碼的起始點來自 NASNet 實現和圖像處理代碼的分支。

預準備

1.建立一個谷歌雲項目

跟隨谷歌雲官網的 Quickstart Guide 中的指示來獲取 GCE VM(虛擬機)以訪問 Cloud TPU。

為了運行該模型,你需要:

一個 GCE VM 實例和相關的 Cloud TPU 資源;一個 GCE bucket 來保存你的訓練檢查點;ImageNet 訓練和驗證數據預處理為 TFRecord 格式,並保存在 GCS(可選項)。

2.格式化數據

數據應該被格式化為 TFRecord 格式,可通過以下腳本完成:

https://github.com/tensorflow/tpu/blob/master/tools/datasets/imagenet_to_gcs.py

如果你沒有準備好的 ImageNet 數據集,你可以用一個隨機生成的偽造數據集來測試模型。該數據集位於 Cloud Storage 的這個位置:gs://cloud-tpu-test-datasets/fake_imagenet。

訓練模型

通過執行以下命令來訓練模型(代入合適的值):

python amoeba_net.py

--tpu_name=$TPU_NAME

--data_dir=$DATA_DIR

--model_dir=$MODEL_DIR

如果你沒有在相同的項目和 zone 中的 GCE VM 上運行這個腳本,你需要加上——project 和——zone 的 Flag 來為 Cloud TPU 指定你希望使用的值。

這將用單塊 Cloud TPU 在 ImageNet 數據集上以 256 的批量大小訓練一個 AMoebaNet-D 模型。通過默認的 Flag,模型應該能在 48 小時內(包括每經過幾個 epoch 之後的評估時間)達到超過 80% 的準確率。

你可以運行 TensorBoard(例如 tensorboard -logdir=$MODEL_DIR)來查看損失曲線和其它關於訓練過程的元數據。(注意:如果你在 VM 上運行,請確保恰當地配置 ssh 埠轉送或 GCE 防火牆規則。)

你也可以使用以下代碼在 7.5 小時內將 AmoebaNet-D 模型訓練到 93% 的 top-5 準確率。

python amoeba_net.py --tpu_name=$TPU_NAME

--data_dir=$DATA_DIR

--model_dir=$MODEL_DIR

--num_cells=6

--image_size=224

--num_epochs=35

--train_batch_size=1024

--eval_batch_size=1024

--lr=2.56

--lr_decay_value=0.88

--mode=train

--iterations_per_loop=1152

相關焦點

  • PyTorch終於能用上谷歌雲TPU,推理性能提升4倍,該如何薅羊毛?
    現在PyTorch官方已經在Github上給出示例代碼,教你如何免費使用谷歌雲TPU訓練模型,然後在Colab中進行推理。訓練ResNet-50PyTorch先介紹了在雲TPU設備上訓練ResNet-50模型的案例。如果你要用雲TPU訓練其他的圖像分類模型,操作方式也是類似的。
  • 輕鬆學Pytorch-使用ResNet50實現圖像分類
    Hello大家好,這篇文章給大家詳細介紹一下pytorch中最重要的組件torchvision,它包含了常見的數據集、模型架構與預訓練模型權重文件、常見圖像變換、計算機視覺任務訓練。可以是說是pytorch中非常有用的模型遷移學習神器。本文將會介紹如何使用torchvison的預訓練模型ResNet50實現圖像分類。
  • 如何高效快速準確地完成ML任務,這4個AutoML庫了解一下
    只需要很少的工作,AutoML 就能通過快速有效的方式,為你的 ML 任務構建好網絡模型,並實現高準確率。簡單有效!數據預處理、特徵工程、特徵提取和特徵選擇等任務皆可通過 AutoML 自動構建。該庫可以使用的兩個主要類是 AutoSklearnClassifier 和 AutoSklearnRegressor,它們分別用來做分類和回歸任務。兩者具有相同的用戶指定參數,其中最重要的是時間約束和集合大小。更多 AutoSklearn 相關文檔請查閱:https://automl.github.io/auto-sklearn/master/。
  • 1500萬個標記圖像、2萬多個分類!如今的AI圖像分類器還是「睜眼瞎」
    但在過去的十年中,ImageNet一直都是人工智慧研究人員所依賴著名的訓練數據集,ImageNet有一個「對象識別集」:對「人物」的分類——即著名的ImageNet分類實驗,這其下包含了達2833個子類別且各個子類別下都包含了上百張圖像,每個子類別都在試圖幫助軟體完成看似不可能的人類分類任務。但這其中卻存在明顯的短板:它通常很難去識別人。
  • 如何可視化卷積網絡分類圖像時關注的焦點
    在我們使用 CNN 進行圖片分類時,模型到底關注的是圖像的哪個區域?Grad-CAM 利用卷積網絡最後一個特徵圖的信息,並加權對應的梯度而構建模型分類的熱力圖,通過該熱力圖,我們可以清楚地了解哪一塊區域對於類別是最重要的。你在訓練神經網絡進行圖片分類時,有沒有想過網絡是否就是像人類感知信息一樣去理解圖像?
  • 如何用PyTorch訓練圖像分類器
    它將介紹如何組織訓練數據,使用預訓練神經網絡訓練模型,然後預測其他圖像。為此,我將使用由Google地圖中的地圖圖塊組成的數據集,並根據它們包含的地形特徵對它們進行分類。我會在另一篇文章中介紹如何使用它(簡而言之:為了識別無人機起飛或降落的安全區域)。但是現在,我只想使用一些訓練數據來對這些地圖圖塊進行分類。下面的代碼片段來自Jupyter Notebook。
  • 語音識別 AI 挑戰賽上線:用深度學習三種結構,對 50 種環境聲音分類!
    它通過模仿人腦結構,建立起了一個深層神經網絡;通過輸入層輸入數據,由低到高逐層提取特徵,建立起低級特徵到高級語義之間複雜的映射關係。從而實現對輸入的複雜數據的高效處理,使機器可以像人一樣智能地學習不同的知識,並且有效地解決多類複雜的智能問題;例如:語音識別、圖像視頻識別、語言處理和信息檢索等領域。
  • 卷積網絡訓練太慢?Yann LeCun:已解決CIFAR-10,目標 ImageNet
    硬體/軟體基礎架構越來越好,在幾個小時或者幾天裡進行大型網絡的訓練逐漸變為可能,因此人們可以進行更多想法的嘗試。我十分感興趣的一個idea是「光譜卷積網絡」。這是在ICLR 2014上我在紐約大學實驗室的同儕發布的一篇論文,課題是廣義化的卷積網絡可以適用於任意圖像(規則的卷積網絡可以適用於1D,2D或3D數組,按圖像可以被看成規則網格)。
  • 23個系列分類網絡,10萬分類預訓練模型,這是飛槳PaddleClas百寶箱
    對於其它視覺任務,像圖像目標檢測、圖像分割、圖像檢索、自然場景文字檢測和識別、人臉檢測和識別等等,常常將圖像分類的網絡結構作為骨幹網絡。例如使用基於 ImageNet1K 分類數據集訓練的模型作為特徵提取器,來提升目標任務的組網效率和效果。如果把某個視覺任務看成是建造一棟大樓,圖像分類的網絡結構和預訓練模型則可以看成是這棟大樓牢固的地基和穩定的骨架。
  • 如何在PyTorch和TensorFlow中訓練圖像分類模型
    介紹圖像分類是計算機視覺的最重要應用之一。它的應用範圍包括從自動駕駛汽車中的物體分類到醫療行業中的血細胞識別,從製造業中的缺陷物品識別到建立可以對戴口罩與否的人進行分類的系統。在所有這些行業中,圖像分類都以一種或另一種方式使用。他們是如何做到的呢?他們使用哪個框架?
  • 解讀谷歌全面重磅開放的雲TPU
    這款由谷歌去年公開的晶片專門致力於加快AI的計算性能,谷歌利用64塊TPU晶片在短短的半小時內完成了對ResNet-50神經網絡的培訓,這款晶片有助於吸引用戶從亞馬遜AWS和微軟Azure服務轉向谷歌的雲平臺,加快電腦學習計算性能和執行速度,將大力幫助數據科學家利用實驗結果促進未來AI模型的迭代發展。
  • 40納秒完成圖像分類,圖像傳感器自帶神經網絡登上Nature
    把權重放在傳感器上與其他神經不同的是,這套系統的權重不是存在計算機的內存和硬碟裡,而是直接集成在圖像傳感器上。實驗中使用的有硒化鎢光電二極體製成的特殊門電路。它的特殊就在於可以調製,相當於神經網絡的訓練。
  • Facebook技術分享:如何在PyTorch中訓練圖像分類模型
    圖像分類是計算機視覺的最重要應用之一。它的應用範圍包括從自動駕駛汽車中的物體分類到醫療行業中的血細胞識別,從製造業中的缺陷項目到建立可以對戴口罩的人進行分類的系統。在所有這些行業中,圖像分類都以一種或另一種方式使用。他們是如何做到的呢?他們使用哪個框架?
  • 使用神經網絡為圖像生成標題
    圖像特徵提取器為了從圖像中生成特徵,我們將使用卷積神經網絡,只需稍加修改。讓我們來看看一個用於圖像識別的卷積神經網絡。一般的CNN分類模型有兩個子網絡Feature Learning Network—負責從圖像中生成Feature map的網絡(多卷積和池化層的網絡)。
  • 圖像傳感器運行神經網絡!實現納秒級時間內圖像分類,或將推進邊緣...
    但機器視覺並非只是人眼的簡單延伸,它還有人腦的一部分功能一一從圖像中提取、處理、理解信息,從而用於實際的測量和控制。就機器視覺技術本身而言,其主要流程是——相機逐行掃描像素,然後將視頻幀轉換為數位訊號,再將其傳輸到計算機中進行分析。不過其中存在的問題是,由於傳感器與處理單元之間大量數據的移動,信息往往無法得到快速的處理、決策,這也就是機器視覺經常面臨的延遲。
  • OpenCV+深度學習預訓練模型,簡單搞定圖像識別 | 教程
    Android、Mac OS等作業系統上運行,以輕量級、高效著稱,且提供多種語言接口。當然,我們不能、也不該用OpenCV訓練深度學習模型,但這個新版本讓我們能把用深度學習框架訓練好了的模型拿來,高效地用在OpenCV之中。這篇文章就展示了如何用ImageNet上預訓練的深度學習模型來識別圖像。
  • 谷歌AutoML新進展,進化算法加持,僅用數學運算自動找出ML算法
    在一些小的圖像分類問題上,AutoML-Zero 方法重新發現了一些基本的 ML 技巧,如具備反向傳播的雙層神經網絡和線性回歸等,而這些是之前的研究人員經過數年時間才發現的。這一結果表明,自動發現更新穎的 ML 算法以解決更棘手的問題,這一想法在未來是可行的。
  • 語音識別 AI 挑戰賽上線:用深度學習三種結構,對 50 種環境聲音...
    它通過模仿人腦結構,建立起了一個深層神經網絡;通過輸入層輸入數據,由低到高逐層提取特徵,建立起低級特徵到高級語義之間複雜的映射關係。從而實現對輸入的複雜數據的高效處理,使機器可以像人一樣智能地學習不同的知識,並且有效地解決多類複雜的智能問題;例如:語音識別、圖像視頻識別、語言處理和信息檢索等領域。
  • 結合神經網絡,提升ImageNet分類準確率且可解釋
    他們提出了一種神經支持決策樹「Neural-backed decision trees」,在 ImageNet 上取得了 75.30% 的 top-1 分類準確率,在保留決策樹可解釋性的同時取得了當前神經網絡才能達到的準確率,比其他基於決策樹的圖像分類方法高出了大約 14%。
  • 機器不學習:用CNN分100000類圖像
    [論文名稱]:Dual-Path Convolutional Image-Text Embedding[來源]:http://cn.arxiv.org/abs/1711.05535在這篇文章中我們嘗試了 用CNN分類113,287類圖像。實際上我們將每張訓練集中的圖像認為成一類。(當然如果只用一張圖像一類,CNN肯定會過擬合)。