shimopino / papers-challenge

Paper Reading List I have already read
30 stars 2 forks source link

Once-for-All: Train One Network and Specialize it for Efficient Deployment on Diverse Hardware Platforms #49

Open shimopino opened 4 years ago

shimopino commented 4 years ago

論文へのリンク

[arXiv:1908.09791] Once-for-All: Train One Network and Specialize it for Efficient Deployment on Diverse Hardware Platforms

著者・所属機関

Han Cai, Chuang Gan, Tianzhe Wang, Zhekai Zhang, Song Han

投稿日時(YYYY-MM-DD)

2019-08-26

1. どんなもの?

対象のハードウェア制約に合わせたモデルの探索が一度の学習で可能なOFAを提案。初期段階は最も計算コストの高いモデルを学習させ、徐々にモデルのサイズを落としていく学習戦略を採用している。MobileNetV3よりも性能の高い精度とLatencyのトレードオフを実現した。

image

2. 先行研究と比べてどこがすごいの?

モバイル端末で動作可能なモデルの従来の探索手法は、予め設定した探索空間からモデルを構築した後にそれぞれのモデルを再学習させる必要があり、非常に計算コストが高かった。

本研究では一度の学習でモデルの探索が可能なOnce-for-All(OFA)ネットワークを提案した。またsub-networkが精度を保つようなモデルを学習させるために、progressive shrinkingアルゴリズムを提案した。

3. 技術や手法の"キモ"はどこにある?

3.1 Problem Formulation

問題設定としては、まずモデル全体のパラメータをWoとしたときに、このモデルからsub-networkであるarchiを抽出し、Validationデータに対する損失関数を全体のパラメータWoで最適化していく形になる。

3.2 Architecture Space

image

CNNの設計からKernel SizeやDepth、Width、入力サイズなどを探索していく。探索する際の単位は、1つ1つの層ではなく、ResNetのように複数のCNNが組み合わさったボトルネックとなる。入力となるCNNはストライドが2であり、他のCNNはストライドを1としている。

探索する際のCNNの選択肢は以下になる。

つまり学習させるネットワークには、上記の選択肢を考慮すると10の19乗程度のネットワークが含まれていることになる。

3.3 Training the Once-for-All Network

直接損失関数を最適化させてしまうと、サブネットワークの数だけ計算コストが線形に増加してしまう。少数のサブネットワークのみを最適化させた場合でも、全てのサブネットワークは干渉してしまうため精度が悪化してしまう。

本論文で提案しているProgressive Shrinkingでは、探索空間の中から最も計算コストが高いモデルから順番にモデルのサイズを落としていく。

例えばKernel Sizeを7、depthを4、widthを6に設定し、depthとwidthは最大値を保ったまま、Kernel Sizeを7,5,3と変化させていく。

こうすることでサイズの大きいサブネットワークは既に学習したことになるため、サイズの小さいサブネットワークが干渉することがなくなる。また小さなサブネットワークの初期値として大きなネットワークのパラメータを使用することが可能となる。

image

Kernel Sizeを変化させる場合、それぞれ中心部分の重みを共通してしまうことが問題になる。kernel sizeが異なる場合にはそれぞれが異なる効果を持ち、分布や大きさが異なっている。そこでkernelのパラメータを共有させるために、kernelを変換する行列をを導入し、この行列をそれぞれの層で定義した上でそれぞれの層の全チャンネルに適用する。

Depthを変化させる場合、最終層から順番に計算を省いていき、最初の数層ではパラメータを共有する。

image

チャンネル数に該当するWithを変化させる場合、それぞれのチャンネルにL1ノルムの重みをつけることでモデルを小さくしていく。例えばチャンネル数を4から3に変更するときは、4チャンネルから重要度度の高い3つを選択し、これらをサブネットワークの初期値としている。

image

3.4 Specialized Model Deployment with Once-for-All Network

一度OFAネットワークを学習させたあとは、デバイスに合わせてサブネットワークを抽出していく。この際にデバイスに必要とされる精度やLatencyを予測するネットワークを構築することで探索コストを低減している。

具体的には、まず異なるネットワーク構造と入力サイズのモデルを16K個用意し、検証データで精度を計算する。この[architecuture, accuracy]をペアとして、モデルが達成可能な精度を予測するネットワークを学習させる。

後はハードウェアのLatencyを定義したテーブルを使用して進化探索を行い、サブネットワークを探索していく。

4. どうやって有効だと検証した?

MobileNetV3と同様の探索空間を採用し、ImageNetを使用して複数のハードウェアに最適化させたネットワークを探索した。

学習結果を見ると、ランダムにサブネットワークを抽出した結果よりもた高い精度を達成していることがわかる。

image

次にPexel1のハードウェアを想定した探索結果を比較する。特徴的なものはOFAでは学習コストが少なく、はじめに1200GPU時間を使用した後は、各サブネットワークをチューニングする時間として25GPU時間しか使用しない。

またMobileNetV3-Largeよりも高い精度を保ちながら、Latencyを向上できていることがわかる。

image

Pixel1のLatency制約でEfficientNet-B0と比較すると、同じFLOPsでより高い精度を達成sていることがわかる。

image

OFAとMobileNetV3を5個のデバイスで比較した結果、OFAはたった一度の学習でLatencyとより高い精度のトレードオフが可能であることがわかる。

image

異なるハードウェアの制約で獲得したネットワークの構造を比較してみると、GPUではより多くのチャンネル数を採用していることがわかる。

image

5. 議論はあるか?

6. 次に読むべき論文はあるか?

ProxylessNAS: Direct Neural Architecture Search on Target Task and Hardware

Regularized Evolution for Image Classifier Architecture Search

Distilling the Knowledge in a Neural Network

論文情報・リンク

shimopino commented 4 years ago

https://github.com/mit-han-lab/once-for-all

shimopino commented 4 years ago