E資格学習 深層学習 Day4 ③ 軽量化・高速化の技術について

高速化の技術

要点まとめ

  • データ量は毎年10倍ずつ増加し計算量も増えていると言われている中で、PCの性能は18ヶ月で2倍になると言われている。その中で、複数の計算資源を並列的に分散させて学習させる工夫がとられている。
  • モデルが大きい場合はモデル並列化、データが大きい場合はデータ並列化をすると良い。
  • 分散学習においては、最終的にデータやモデルを統合する部分における通信コストが大きくなる。

データ並列化

  • ワーカー(CPU/GPU等の演算機)を複数用意し、共通のモデルを各ワーカーにコピー。データを分割して各ワーカーで学習させる。同期型と非同期型の2形態がある。
  • 同期型:各ワーカーの学習が終わるのを待ち、勾配を一旦まとめて平均を算出し、それを親モデルに反映→ワーカーの子モデルに反映... を繰り返す。
  • 非同期型:ワーカーは互いの計算を待たずバラバラに学習し、順次パラメータがpushされ保存されていく。ワーカーは一番新しい学習済み子モデルを使って学習を繰り返す。処理は非同期型の方が早いが、精度は同期型の方がよくなる。(PCを分けて学習させることが多い)

モデル並列化

  • 巨大なニューラルネットワークのモデル(枝分かれが多用されている等)について、モデルの分割し、ワーカー毎に学習させる。(1台のPC上でGPUを分割して学習させることが多い)
  • 大きなモデル(学習パラメータが膨大)であればあるほど効果は大きい。

GPU

  • GPGPU(グラフィック以外の用途で使用されるGPUの総称:General-purpose on GPU
  • GPGPUの環境:CUDA or OpenCL。CUDAはNVIDIAGPUのみで使用可。OpenCLAMDやARM等のGPUでも使用可。主流はCUDA。
  • CPU:高性能なコアが少数。複雑で連続的な処理が得意
  • GPU:低性能なコアが多数。簡単な並列的な処理が得意(行列演算など)

軽量化の技術

要点まとめ

  • GPUサーバのような高度な演算機でなくても、スマホのような端末でも機械学習の恩恵を受けるようにするにはどうすればよいか、というモチベーション。

量子化

  • そもそもなぜ演算処理が増えるかというと、深層学習における大量のパラメータを保存するためのメモリ消費が要因。そこで、パラメータを64bit浮動小数点ではなく、32bitなど下位にに落とすことで省メモリ化により演算処理の削減を行える。

蒸留

  • 規模の大きなニューラルネットワークの既存モデルから、知識を継承しながら軽量なモデルをつくること。
  • 教師モデル(複雑なモデルor アンサンブルなモデル)と生徒モデル(シンプルかつ軽量)の2つのモデルで構成される。両方のモデルにデータを入力し学習を進めていくが、教師モデル側の重みは固定しつつ、生徒モデル側の重みのみを更新することで、生徒モデルが教師モデル並みにアップデートされていく。

プルーニング