E資格受験に必要なJDLA認定講座の一つであるラビット・チャレンジ(https://ai999.careers/rabbit/)のレポート用ページです。
100文字以上要点まとめ
分散深層学習とは
複数の計算資源(ワーカー)を使用し、並列的にニューラルネットを構成することで、効率の良い学習を行う
データ並列化、モデル並列化、GPUによる高速技術は不可欠
データ並列化
【データ並列化とは】
親モデルを各ワーカーに子モデルとしてコピー
データを分割し、各ワーカーごとに計算させる
【同期型】
各ワーカーが計算が終わるのを待ち、全ワーカーの勾配が出たところで勾配の平均を計算し、親モデルのパラメータを更新
【非同期型】
各ワーカーはお互いの計算を待たず、各子モデルごとに更新を行う。
学習が終わった子モデルはパラメータサーバにPushされる。
新たに学習を始める時は、パラメータサーバからPopしたモデルに対して学習していく
【同期型と非同期型の違い】
処理のスピードは、お互いのワーカーの計算を待たない非同期型の方が早い
非同期型は最新のモデルのパラメータを利用できないので、学習が不安定になりやすい
現在は同期型の方が精度が良いことが多いので、主流
モデル並列化
【モデル並列化とは】
親モデルを各ワーカーに分割し、それぞれのモデルを学習させる
全てのデータで学習が終わった後で、一つのモデルに復元。
モデルが大きい時はモデル並列化を、データが大きい時はデータ並列化をすると良い。
モデル軽量化
【軽量化の手法】
量子化
蒸留
プルーニング
【量子化】
パラメータの64 bit 浮動小数点を32 bit など下位の精度に落とすことでメモリと演算処理の削減を行う
重みの精度を下げることにより計算の高速化と省メモリ化を行う技術
【蒸留】
規模の大きなモデルの知識を使い軽量なモデルの作成を行う
複雑で精度の良い教師モデルから軽量な生徒モデルを効率よく学習を行う技術
【プルーニング】
モデルの精度に寄与が少ないニューロンを削除する
寄与の少ないニューロンをモデルから削減し高速化と省メモリ化を行う技術
実装演習
関連記事レポート
高速化のアプローチ
モデルパラメータ数の削減
FLOPs数の削減
モデルファイルサイズの削減
推論時間の削減
訓練時間の削減
モデル高速化の方法
畳み込みの分解(Factorization)
枝刈り(pruning)
アーキテクチャ探索(Neural Architecture Search)
早期終了、動的計算グラフ(Early Termination, Dynamic Computation Graph)
蒸留(Distillation)
量子化(Quantization)
(https://www.slideshare.net/ren4yu/ss-149196060)
コメント