【2022】ディープラーニングでビット数を制限する方法とは?

  • このエントリーをはてなブックマークに追加
ディープ ラーニングのビット数制限

ディープラーニングはAI開発において強力な学習効果をもたらす優れた技術である反面、活用に当たってはその負荷が懸念されることも少なくありません。AIは、今や人間のような判断力を持つことができるとされていますが、実のところ、優れたマシンや適切な学習方法を実現できなければ、AIの開発はスムーズには進まないものです。

今回は、そんなディープラーニング運用の課題解決につながるモデル圧縮について解説し、ビット数の制限がディープラーニングにどのような影響をもたらすのかについて紹介します。

ディープラーニングの仕組み

そもそもディープラーニングの最大の特徴は、「教師なし学習」と呼ばれる高度な機械学習を実行できる技術である点です。

従来の機械学習は「教師あり学習」と呼ばれ、学習データにタグ付けを行い、AIの学習を開発者がある程度アシストすることが一般的でした。ただ、教師あり学習は開発者のタグ付けの内容にAIの学習成果が依存しやすく、学習スピードこそ早いものの、人間の判断能力を超えるような成果を得ることが極めて難しい手法でもあったのです。そこで新たに登場したのが、ディープラーニングを使った「教師なし学習」です。

教師なし学習は「教師あり学習」とは異なり、開発者がタグ付けを行う必要がなく、AIはタスクに応じて自立的にデータから正解のヒントとなる特徴量を抽出し、開発者の手を借りることなく答えを導くことができます。

そんな自立的思考を支えているのが、ディープラーニングの「ニューラルネットワーク」と呼ばれるアルゴリズムです。ニューラルネットワークは人間の神経細胞をモデルにした仕組みで、多層化されたネットワーク上にデータを読み込ませ、層の間を何度も行き交いさせることで、データ内の特徴を特定し記憶します。

ディープラーニングを使って大量のデータを読み込ませることで、最終的には極めて精度の高い、判断能力に優れるAIを開発することができます。

ディープラーニングの課題

ディープラーニングはそんな高度な演算処理を行うことで、ときに人間のポテンシャルをはるかに超えるパフォーマンスを発揮する技術ですが、運用に当たっては課題もあります。

マシンへの負荷が大きい

まず、ディープラーニングは従来の機械学習手法に比べ、はるかにマシンへの負担が大きい手法であるため、生半可なPCなどではまともなディープラーニングを実行することも難しいのが現状です。そのため、ディープラーニングをビジネスや研究目的で活用する場合、巨大なGPUサーバーを自社で導入したり、クラウドGPUを使って不足するGPUリソースを穴埋めしたりしなければなりません。

ディープラーニングには相応のコストがかかるというのは、このマシンコストが大半を占めているといえるでしょう。

ディープラーニングは計算処理そのものが複雑であるだけでなく、この後も触れるようにとにかく大量のデータを扱う手法です。そのため、一般的なGPUではとてもビジネス用途に耐えうるほどの処理能力を持っていないことから、ディープラーニングの実行には途方もなく時間がかかってしまうことになります。

膨大なデータを確保する負担が発生する

ディープラーニングは膨大なデータを処理する必要があるので、大量のデータと日々向き合いながら学習を進めていくこととなります。

ディープラーニングを進めていくと問題になるのが、読み込む学習データの不足です。自社でデータベースを構築しており、AI学習に使えるデータを無制限に用意できる環境があるならこの限りではありませんが、多くの場合はデータをどこからか仕入れる必要があります。

データ活用が進んだ現代において、AI学習ができる要素を備えたデータの重要性は高まっており、データをセットで販売するサービスも普及しています。これらのサービスを利用する場合、データ獲得のために一定予算と時間を割かなければならないので、ディープラーニングを実行するためのマシン獲得にすべての予算を使えない問題があります。

ディープラーニングにおけるモデルの圧縮とは

このような問題に対応するべく、ディープラーニング領域で盛り上がっているのがモデルの圧縮と呼ばれる手法です。モデルの圧縮はモデルの軽量化とも呼ばれ、既存の学習モデルを何らかの方法でスケールダウンさせ、性能はそのままに、運用負担を軽くし、スペックが不足していても正しいAIの精度を得られるよう促す方法です。

モデル圧縮の需要は近年ますます高まっていますが、その背景にあるのがエッジコンピューティングの台頭です。エッジコンピューティングはIoTやセンサーの領域で注目されている技術で、センサーなどの現場で活躍するハードそのものがデータの取得と処理を両立するための技術です。

従来のセンシング技術は、あくまでセンサーを設置してデータを取得した後は、中央のサーバーにデータが集約され、まとめて計算することが一般的でした。しかし、扱えるデータ量が増加したことで、この方法では演算に多くの時間がかかるようになっています。

そこで普及しているのがエッジコンピューティングです。データを取得した現場でデータ処理までを終わらせ、その結果を中央のサーバーに連絡することで、計算負担を抑えることができるというものです。

エッジコンピューティングを実現するためには、小さなセンサーでも処理できるようなAI技術が必要ですが、ディープラーニングをこのような小型マシンで実行することは難しいとされてきました。しかし、マシン性能の進化やモデルの圧縮が実現したことで、こういった小さなマシンでも正しくAIによる分析が行えるよう進化しています。

ビット数を制限する「量子化」手法の概要

モデルの圧縮方法にはいくつかのアプローチがありますが、この記事では量子化と呼ばれる方法について詳しく解説します。量子化は、端的にいえばディープラーニングのパラメータをより小さいビット数で再現することにより、スケールを小さくして計算の負荷を減らそうという手法です。

量子化の仕組み

基本的に、多くの情報を扱おうとする場合は相応のビット数でなければそれを表現することはできません。ディープラーニングの負荷が大きいのも相応のビット数で計算を行うからであり、データを繊細に分析するためには大きなビット数で高い解像度を維持することが求められます。

一方で、量子化はそんなディープラーニングにおけるビット数をスケールダウンすることで、ネットワークの構造をそのままにしながら負荷を抑えて計算することができます。簡単にいえば、何十桁にものぼる複雑な計算を、2桁や1桁で再現しようという試みを量子化と呼びます。

量子化のメリット

量子化の最大のメリットは、計算に伴う負荷を圧倒的に軽くできる点が挙げられます。量子化によってモデルを軽量化し、マシンスペックが十分でなくともデータを処理できるように促せるので、エッジコンピュータのような小さなマシンでもAI活用を促進できます。

量子化のデメリット

量子化は計算負荷を軽くできる反面、精度面ではある程度の性能の低下は免れないデメリットを有しています。高精度な計算を優先したい場合は、量子化のようなスケールダウンの手法を選ぶべきではなく、本格的なマシンでの丁寧な計算が必要です。

量子化の2つの手法

計算スピードが早く、精度に劣るという量子化ですが、この手法はさらに2つの方法に分けることができます。

Dynamic Quantization(動的量子化)

Dynamic Quantizationは、AIの推論を実行する際に量子化を行う方法です。ディープラーニングは多層化されたニューラルネットワークを起用しますが、各層ごとに量子化パラメータを求め、量子化する層、しない層を細かく分類した上で量子化を実行します。

量子化手法の中でも精度を確保しやすいというメリットを持つ反面、計算負荷は大きくなってしまう点が課題です。

Static Quantization(静的量子化)

Static Quantizationは、ニューラルネットワークにおける中間層全体をあらかじめ量子化してしまう手法です。Dynamic Quantizationのように一つひとつの層を量子化するわけではないため、その計算スピードは非常に速い一方、精度面では劣ってしまう点が特徴です。

目的に応じて、2つの方法を使い分けられるのが理想です。

さらなる低ビットを実現する最新技術

量子化はディープラーニングのビット数を削減できる方法として注目を集めますが、運用課題とされてきたのがビット数の制限にも限界があったことです。一定のビット数を下回るとその精度が急激に低下してしまい、いくらモデルの軽量化につながるとはいえ、実用的な精度を維持することはできませんでした。

しかし、近年はそんな量子化技術も進化を遂げ、従来よりも小さなビット数での量子化にも成功しつつあります。ここでは、そんな最新の量子化技術について事例を紹介します。

NEDOと沖電気工業の低ビット量子化技術

NEDO(新エネルギー・産業総合開発機構)と沖電気工業株式会社(OKI)は、AIの学習時に量子化値を最適に割り当てる低ビット量子化技術「LCQ(Learnable Companding Quantization)」を開発したことを2021年6月に発表しました。

従来の量子化技術では、量子化を実行する前に量子化後の値(量子化値)をあらかじめ固定値として割り当てる必要があり、2ビットなどの超低ビットへ圧縮すると、固定値との誤差により認識精度が劣化するという問題を抱えていました。

しかし、今回発表されたLCQと呼ばれる技術を採用することで、画像認識で高精度モデルを32ビットから2ビットへと16分の1に圧縮した場合、従来では3.0%の劣化が見られたのに対し、LCQを採用した場合は世界トップクラスの1.7%に抑えることに成功しています。

今後はマシンスペックに制約のあるエッジAIなどへの適用を目指し、本格的な実用化に向けた開発が予定されています。

リープマインドの極小量子化技術

AIスタートアップのリープマインドは、量子化による精度の劣化を大幅に軽減する極小量子化技術を独自に開発し、わずか2ビットの計算でも精度に深刻な劣化が見られない技術を発表しています。

この技術開発にあたって、同社は学習の段階から量子化することで推論精度の低下を防ぐ「ストレート・スルー・エスティメータ」という手法を採用しています。パラメータの勾配をうまく調節できる仕組みを開発したことで、乗算器を省略して2ビットで計算することも可能にしています。

同社の極小量子化技術は異常検知や低解像度の画像の品質を高めるなど、画像認識分野での応用を想定しており、低消費電力や回路サイズが小さいことを活かした低価格AI半導体の提供に貢献することが期待されています。

量子化以外のモデル軽量化手法

最後に、量子化以外のモデル軽量化手法にも触れておきましょう。モデルの軽量化にはいくつかの方法があり、状況に応じた使い分けが重要です。

低ランク近似

低ランク近似は、サイズの大きな行列を低ランクに分解し近似することで、解析を簡単にする方法です。演算の量を削減する効果はあまり大きくはありませんが、メモリー量の削減効果に一定の期待ができるだけでなく、精度の影響が小さいこと、そして他のモデル軽量化手法との併用も可能である点が評価されています。

蒸留

蒸留は、巨大なディープラーニングモデルを教師モデルとして、そこで得られている知識を小さなモデルに適用し、最小限のエッセンスを用いて学習を行う手法です。大きいモデルから余分な要素を削ぎ落とすことで、小さくてコンパクトなモデルでもそれに匹敵する精度を実現しようという取り組みで、小さな負荷に抑えながらも、高い精度を実現できる手法です。

学習行為そのものに工夫を加え、量子化とは異なり情報量を増やしつつもモデルの軽量化を行える点が評価されています。

枝刈り

枝刈りはニューラルネットワークにおける余分なノードを刈り取り、ノード間の重みが小さい箇所の接続を削除したり、結果に与える影響の小さいノードを削除したりすることでパラメータを削減し、モデルの軽量化を実現する方法です。

マシンは記憶が必要なパラメータの総量が減少するため、必然的に計算に必要な負荷も小さくなります。メモリ使用量も枝刈り後のモデルは小さく抑えられるので、スペックが不足しているマシンへの適用には最適な手法です。

近年は枝刈りにおいて、どの接続を削除すれば良いのかの精度を高めることで、より枝刈りの効果を高めようとする研究が行われています。

まとめ

ディープラーニングが活躍する仕組みやその課題について触れつつ、ディープラーニングの運用負担を軽減するためのビット数削減手法などを解説しました。ディープラーニングの本格運用に際しては、一般的な家庭用のPCではスペックが不足してしまうため、何らかの対策を施す必要があります。

そこで活躍するのがモデルの軽量化と呼ばれる手法で、中でも安定したパフォーマンスを得やすいといわれているのが量子化です。

量子化は精度面での問題を抱えることもありますが、近年の技術開発の進展により、この問題も解消されつつあります。マシンの進化と並行してモデルの軽量化手法も進化し、いずれは極めて軽量なディープラーニングを実行できる日が来るでしょう。

当社モルゲンロットが提供する「M:CPP」は、そんなディープラーニング運用の際に発生する負担の大きさを、マシンスペックの拡充でカバーできるクラウドGPUを提供しています。クラウド経由でディープラーニングに不可欠なGPUリソースをクライアントへ豊富に提供し、AI開発の高速化をサポートしています。

MCPP

提供するGPUサーバーはAMD製の最新GPUであるだけでなく、専有サーバーのため他のユーザーの利用の影響を受ける心配はありません。サーバー導入に当たっては専門のエンジニアがユーザーにあったプランを提案するので、サーバー選定やプランの検討にかかる負担の削減にも努めます。

ディープラーニングに向けたGPUリソースの確保を検討の際には、お気軽に当社モルゲンロットまでご相談ください。

  • このエントリーをはてなブックマークに追加