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

2021-01-07 機器之心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

相關焦點

  • 基於飛槳PaddlePaddle的多種圖像分類預訓練模型強勢發布
    在計算機視覺領域,圖像分類是非常重要的基本問題,是圖像目標檢測、圖像分割、圖像檢索、視頻理解、物體跟蹤、行為分析等其他高層視覺任務的基礎,在實際場景中,有著廣泛應用。飛槳(PaddlePaddle)視覺模型庫圖像分類持續提供業內領先的分類網絡結構訓練方法以及在imagenet 1000分類任務上的預訓練模型。
  • RestNet50預訓練模型top1近80%,基於飛槳PaddlePaddle的多種圖像...
    在計算機視覺領域,圖像分類是非常重要的基本問題,是圖像目標檢測、圖像分割、圖像檢索、視頻理解、物體跟蹤、行為分析等其他高層視覺任務的基礎,在實際場景中,有著廣泛應用。飛槳(PaddlePaddle)視覺模型庫圖像分類持續提供業內領先的分類網絡結構訓練方法以及在imagenet 1000分類任務上的預訓練模型。
  • 讓AI去訓練AI,autoML、autoKeras、auto-sklearn了解一波
    /automl在機器學習自動化方面,谷歌的 AutoML 無疑地位穩固。AutoML 基於谷歌最新的圖像識別技術神經架構搜索( Neural Architecture Search ,NAS)。NAS 是一種算法,會根據特定數據集搜索最佳神經網絡架構,以在該數據集上執行特定任務。
  • 獨家 | kaggle季軍新手筆記:利用fast.ai對油棕人工林圖像進行快速分類(附代碼)
    數據集是稱為「行星」的人造衛星新近拍攝的經加注後的衛星圖像數據集,該圖像數據集具有3米的空間解析度,每幅圖像都是基於圖像中是否存在油棕種植園進行標記的(0表示沒有油棕種植園,1表示有油棕種植園)。任務是需要訓練一個模型,該模型以衛星圖像為輸入,並輸出對油棕種植園的圖像預測的概率。競賽創建者為模型開發提供了經過標記後的訓練和測試數據集。
  • 快速訓練殘差網絡 ResNet-101,完成圖像分類與預測,精度高達 98%|...
    但是很快發現,雖然只有18層,傳統的訓練方法仍然很耗時,甚至難以完成對101層的ResNet-101的訓練。出於這個原因,這一次,我將採用一種巧妙的方法——遷移學習來實現。即在預訓練模型的基礎上,採用101層的深度殘差網絡ResNet-101,對如下圖所示的花數據集進行訓練,快速實現了對原始圖像的分類和預測,最終預測精確度達到了驚人的98%。
  • 如何高效快速準確地完成ML任務,這4個AutoML庫了解一下
    只需要很少的工作,AutoML 就能通過快速有效的方式,為你的 ML 任務構建好網絡模型,並實現高準確率。簡單有效!數據預處理、特徵工程、特徵提取和特徵選擇等任務皆可通過 AutoML 自動構建。圖源:《Efficient and Robust Automated Machine Learning》在高效實現方面,auto-sklearn 需要的用戶交互最少。使用 pip install auto-sklearn 即可安裝庫。
  • 1500萬個標記圖像、2萬多個分類!如今的AI圖像分類器還是「睜眼瞎」
    但在過去的十年中,ImageNet一直都是人工智慧研究人員所依賴著名的訓練數據集,ImageNet有一個「對象識別集」:對「人物」的分類——即著名的ImageNet分類實驗,這其下包含了達2833個子類別且各個子類別下都包含了上百張圖像,每個子類別都在試圖幫助軟體完成看似不可能的人類分類任務。
  • 【學術論文】基於深度學習的圖像分類搜索系統
    深度學習是機器學習研究中的一個新的領域,其動機在於建立、模擬人腦進行分析學習的神經網絡,它模仿人腦的機制來解釋數據,例如圖像、聲音和文本。該系統基於Caffe深度學習框架,首先對數據集進行訓練分析構建深度學習網絡,提取數據集圖像特徵信息,得到數據對應的分類模型,然後以bvlc-imagenet訓練集模型為基礎,對目標圖像進行擴展應用,實現「以圖搜圖」Web應用。
  • 如何高效、快速、準確地完成ML任務,這4個AutoML庫了解一下
    只需要很少的工作,AutoML 就能通過快速有效的方式,為你的 ML 任務構建好網絡模型,並實現高準確率。簡單有效!數據預處理、特徵工程、特徵提取和特徵選擇等任務皆可通過 AutoML 自動構建。AutoKeras 支持文本、圖像和結構化數據,為初學者和尋求更多參與技術知識的人提供界面。AutoKeras 使用進化神經網絡架構搜索方法來減輕研究人員的繁重和模稜兩可的工作。儘管 AutoKeras 的運行需要很長時間,但用戶可以指定參數來控制運行時間、探索模型的數量以及搜索空間大小等。
  • R語言基於Keras的小數據集深度學習圖像分類
    p=6714 必須使用非常少的數據訓練圖像分類模型是一種常見情況,如果您在專業環境中進行計算機視覺,則在實踐中可能會遇到這種情況。「少數」樣本可以表示從幾百到幾萬個圖像的任何地方。作為一個實際例子,我們將重點放在將圖像分類為狗或貓的數據集中,其中包含4,000張貓狗圖片(2,000隻貓,2,000隻狗)。
  • AutoML:機器學習的下一波浪潮
    更多優質內容請關注微信公眾號「AI 前線」(ID:ai-front) Mercari 是一款在日本很受歡迎的購物應用程式,它一直使用 AutoML Vision(谷歌的 AutoML 解決方案)對圖像進行分類。根據 Mercari 的說法,他們一直在「開發自己的 ML 模型,在照片上傳的用戶界面上推薦 12 個主要品牌的品牌名稱。」
  • 使用卷積神經網絡進行圖像分類
    卷積神經網絡屬於深度學習的子域。
  • 當神經網絡遇上量子計算:谷歌證明量子神經網絡可訓練圖像分類
    谷歌已經證明了量子計算也能解決傳統機器學習中的圖像分類問題,而且隨著技術發展,量子計算機將在在學習能力上超越經典的神經網絡。另外量子計算還能解決經典網絡中一些棘手問題,比如預防出現模型訓練中的梯度消失問題。量子神經網絡在第一篇論文中,谷歌構建一個神經網絡的量子模型,研究如何在量子處理器上執行神經網絡的分類任務。
  • 如何用PyTorch訓練圖像分類器
    它將介紹如何組織訓練數據,使用預訓練神經網絡訓練模型,然後預測其他圖像。為此,我將使用由Google地圖中的地圖圖塊組成的數據集,並根據它們包含的地形特徵對它們進行分類。我會在另一篇文章中介紹如何使用它(簡而言之:為了識別無人機起飛或降落的安全區域)。但是現在,我只想使用一些訓練數據來對這些地圖圖塊進行分類。下面的代碼片段來自Jupyter Notebook。
  • 帶你少走彎路:強烈推薦的Keras快速入門資料和翻譯(可下載)
    datasets(在小型數據集上從頭開始訓練一個卷積5.3: Using a pre-trained convnet(使用預訓練的卷積神經網絡)5.4: Visualizing what convnets learn(卷積神經網絡的可視化)6.1: One-hot encoding of words or characters(單詞和字符的 one-hot
  • 為什麼說圖像記憶是高效,快速的記憶方法?
    圖像記憶概念: 將抽像的信息轉換成具像從而達到快速記住的目的(我們個人都有體驗圖像比抽象的文字、數字更容易記住且保持長久)圖像記憶分為四步驟:圖像轉換、圖像聯結、圖像簡化、圖像定樁。想像圖像記憶是一項艱辛的腦力勞動,是勞動!是勞動就必須訓練必須辛苦勞作收穫腦力、記憶力、智力。我們的身體長期不鍛練會挎下,會喪失體力;我們的大腦也是,長期不運作使我們的智力、腦力、記憶力等等降低,辦事效率也變低。
  • 無需預訓練分類器,清華&曠視提出專用於目標檢測的骨幹網絡DetNet
    DetNet 可在保持高解析度特徵圖和大感受野的同時,高效地執行目標檢測任務,並可以自然地擴展到實例分割任務上。在 MSCOCO 數據集的目標檢測和實例分割任務上,DetNet 都取得了當前最佳的結果。目標檢測是計算機視覺中最基礎的任務之一。由於深度卷積神經網絡(CNN)的快速發展,目標檢測的性能也隨著顯著提升。
  • 23個系列分類網絡,10萬分類預訓練模型,這是飛槳PaddleClas百寶箱
    對於其它視覺任務,像圖像目標檢測、圖像分割、圖像檢索、自然場景文字檢測和識別、人臉檢測和識別等等,常常將圖像分類的網絡結構作為骨幹網絡。例如使用基於 ImageNet1K 分類數據集訓練的模型作為特徵提取器,來提升目標任務的組網效率和效果。如果把某個視覺任務看成是建造一棟大樓,圖像分類的網絡結構和預訓練模型則可以看成是這棟大樓牢固的地基和穩定的骨架。
  • 高效快速閱讀訓練-眼睛訓練
    它幫助人看到和識別物體、圖像和文字等信息,人的眼睛沒有若正常的「視點」就表現為視力欠佳。視幅一般是指人的眼睛視點在閱讀書籍或觀看物體、圖像時其眼睛停頓一次所能看清內容的一個有效幅面,即閱讀時其眼睛停頓一次所能看清的文字、詞組和句子最大限量,或指在閱讀時的一個視點所能感知的文字範圍。在相同時間裡,視幅越寬,獲取的信息量就越大。
  • 2分31秒,騰訊雲創造128卡訓練ImageNet新記錄
    刷新世界紀錄:2分31秒完成 ImageNet訓練 基於騰訊公有雲25Gbps的VPC網絡環境,使用128塊V100,藉助Light大規模分布式多機多卡訓練框架,在2分31秒內訓練 ImageNet 28個epoch,TOP5精度達到93%,創造128卡訓練imagenet 業界新記錄。