デューク大学: 効率的な人工知能システムのソフトウェアとハ​​ードウェアの共同設計

デューク大学: 効率的な人工知能システムのソフトウェアとハ​​ードウェアの共同設計

少し前に、機械知能 AI テクノロジー年次会議がオンラインで開催されました。デューク大学電気・コンピュータ工学部の教授である Yiran Chen 氏は、「効率的な人工知能システムのソフトウェアとハ​​ードウェアの共同設計」と題する基調講演を行いました。

スピーチのビデオレビュー:

https://www.bilibili.com/video/BV1yP4y1T7hq?spm_id_from=333.999.0.0

以下はSynced AIテクノロジー年次大会における陳一然氏の講演内容です。Syncedは原文の意味を変えずに編集しました。

私がよく使うこの図は、将来の人工知能に必要な計算能力の発達を予測したカーツワイル博士が約 32 年前に書いた本「インテリジェント マシンの時代」に出てくるものです。この図を少し拡張して、単一のデバイスにどれだけの計算能力を統合できるかを確認しました。過去 100 年間、コンピューティング能力はほぼ指数関数的に成長してきました。現在までに、たとえば、NVIDIA が本日リリースした最新の GPU や、Apple が先週リリースした GPU チップのコンピューティング能力は、基本的に人間の脳のレベルを超えるコンピューティング能力をもたらすことができ、非常に大きな可能性をもたらしています。

人工知能コンピューティング プラットフォームには、より馴染みのある GPU、FPGA、ASIC から新しいアーキテクチャまで、さまざまな種類がありますが、それらはすべて、より効率的、より専門的で時間がかかる、またはより柔軟という原則に従っています。複数の次元で統一を達成することは不可能であり、常に設計上の矛盾が生じます。

たとえば、GPU は計算能力が最も高く、消費電力も最も高くなります。非常に簡単に再構成できる計算の一部を FPGA に実装できますが、エネルギー効率はそれほど良くない可能性があります。 ASIC はエネルギー効率が非常に優れていますが、開発サイクルが長く、基本的に特定のアプリケーション向けに設計されているため、出荷量が比較的少ない場合には特に効果的ではありません。

誰もがフォン・ノイマン・ボトルネックについてよく知っていますが、これは実際には、コンピューティング・ユニットを継続的に増やすことによってコンピューティング能力を達成できるが、最終的なボトルネックは、データがタイムリーにコンピューティング・ユニットに配信できるかどうかにあることを意味します。過去 40 年から 50 年の間に、オンチップのコンピューティング能力と、ストレージ帯域幅を通じてチップに提供されるオフチップ データの能力との間のギャップはますます大きくなり、「メモリ ウォール」という概念も生まれました。もちろん、実際の具体的な設計では、発生した熱を時間内に除去できないことや、使用頻度を無制限に増やすことができないことなど、新しいコンピューティング設計を見つける必要が生じます。

現在、より普及しているのは、ニアメモリまたはインメモリ コンピューティング設計であり、その考え方は非常にシンプルです。ボトルネックはデータの流れ、特にストレージ スペースからコンピューティング スペースへの流れから生じるため、コンピューティングとストレージを同じ場所で実行する方法を考えることはできないでしょうか。これは実際には、フォン・ノイマン・システムとは正反対で、フォン・ノイマン・システムは 2 つを分離しますが、これは 2 つを組み合わせます。

なぜこれが可能なのでしょうか?ニューラル ネットワークやグラフ コンピューティングなどの新しいタイプのコンピューティングでは、多くの場合、1 つの要素は変化せず、もう 1 つの要素は常に変化します。例えば、A と B を掛け合わせると、A は変化し続けますが、B は変化しません。この場合、データを移動させることなく、B が格納されている場所で計算を実行できます。

ストレージにDRAMを使用するなど、さまざまな試みを行ってきました。最近、アリババはメモリ内にコンピューティングユニットを配置し、その中で直接対応する計算を実行するように設計するインメモリコンピューティングについての記事を書いたようです。これらはすべて有益な試みです。この方法は、外部から取得したデータに基づいて計算する場合と比較して、エネルギー効率が数千倍も高く、将来の開発方向として非常に有望です。

本日お話しする内容の一部は、インメモリ コンピューティング ディープラーニング アクセラレータ、モデル最適化、分散トレーニング システム、自動化されたニューラル ネットワーク アーキテクチャ設計に関わる操作など、これらに関連しています。

インメモリ コンピューティングを見ると、まずニューラル ネットワーク パラメータを 1 か所に保存し、データがこの場所に入った直後に計算を実行してデータの移動を回避することが考えられます。一般的なシナリオは、これらのパラメータを特殊なナノチップに保存することです。このナノチップでは、パラメータを表す電流または電圧を変更することで、一部のデバイスの抵抗をプログラムできます。

より大きなマトリックス形式になると、すべての入力とすべての出力を特定のクロス ノードで接続できます。これは、ニューラル ネットワークのマトリックスの状態に非常に似ています。すべての入力はベクトルに相当し、マトリックスに掛けられたベクトルは、入力されるすべての電圧と見なすことができます。電圧は電流を通過して、すべての統計の合計である合成電流を生成します。これはベクトルと行列の乗算を非常に効率的に実装します。

過去 10 年ほどにわたり、デュークでは関連する多くの試みを行い、いくつかのチップを設計してきました。

2019年に、私たちはVLSIに論文を発表し、新しいメモリを従来のCMOSに接続できることを示しました。統合後、畳み込みニューラルネットワーク全体をこのようなマトリックス状態にマッピングできます。同時に、精度を選択でき、精度とエネルギー効率の間でトレードオフを行うことができます。従来の CMOS 設計と比較すると、最終的にはパフォーマンスが数十倍向上します。

今年の ISSCC では、北京大学の研究グループに所属する大学院生 Yan Bonan が中心となって、別の研究も行っています。この設計コンセプトは、従来の SRAM にも適用できます。この設計の特別な点は、従来の設計では抵抗器を使用してパラメータを表現していたが、これは実際にはアナログ計算方法であるということです。言い換えれば、組織の連続的な状態はパラメータを表現しますが、これには非常にコストのかかるアナログからデジタルへの変換が必要です。 ISSCC での私たちの取り組み: ADC レス SRAM は、実際には 0 と 1 などの 2 進整数表現であり、これによりデジタルからアナログへの変換を排除し、デジタル状態で直接計算を実装することが可能になります。これは当時達成された技術的な進歩でした。

以下のデジタル CIM の画像 (右端、This Work) からわかるように、エネルギー効率は約 27.4 (TOPS/W、8 ビット状態) に達し、これまでのすべての設計を上回っています。全体的な密度は非常に高く、28 ナノメートル プロセスでは、1 平方ミリメートルあたりほぼ数兆個のトランジスタが存在します。

コンピューティング システム全体の設計を実現するには、回路に加えて、アーキテクチャとコンパイラ間のサポートも必要です。 2014~2015年より前に、コンパイラの設計、高速化に使用できるプログラムの部分の発見、チップ上のさまざまな配列を何らかの方法で接続すること、大規模なネットワークを小さなネットワークに分割すること、異なるネットワーク層間で値を変換することなど、関連する設計を開始しました。

大規模なネットワークでは、多くの配列に遭遇することがよくあります。ネットワーク並列コンピューティングには、デジタル並列処理とモデル並列処理という少なくとも 2 つの方法があります。いわゆるデジタル並列処理とは、入力が多数あり、一部のデータを異なる処理ユニット (PE) に並列に分割できることを意味します。同じことがモデルの並列処理にも当てはまり、大規模なモデルをチャンク単位で計算できます。

ただし、これら 2 つの並行したアプローチは排他的ではありません。レイヤーの場合でも、このレイヤーを異なる PE にマップすると、各 PE で異なる並列メソッドが使用される場合があります。たとえば、下の図では、大部分の並列処理がモデル並列処理によって実行され、ごく一部がデジタル並列処理によって実行されていることを白黒のドットで表現しています。

なぜこのようなことが起こるのでしょうか?異なる並列分散方式を統合することによってのみ、全体の計算能力が最大限に発揮され、全体的なエネルギー効率が最大化されたときに、すべての数値が定常状態のバランスに達することができるからです。単一の式の場合、一部の場所が空になったり、計算が遅くなったりして、全体の計算速度が低下します。これはHyParが2019年に公開した記事です。

2020年に新たな問題が発見されました。畳み込みネットワーク自体の表現についてはあまり考慮していませんでした。畳み込み層では層ごとに計算することが多く、最後まで使われない中間結果がいくつか出てきます。これにより、3 番目のタイプの並列処理、つまり Tensor 並列処理が実現します。たとえば、下の図に示すように、入力と出力には 3 つの並列処理が可能です。 3 を 3 倍する表現方法は 9 通りあります。

各 PE が 9 通りの表現方法があることを考えると、手動で最適化する方法はなく、システム全体を自動化 (線形計画法など) で表現する必要があります。同時に、これらの表現を一つずつ見つけることは不可能であり、何らかの階層的なアプローチが必要になります。

たとえば、最初に大きな違いがいくつかあり、次に小さな違いがあり、最後に単一の表現があります。 3 つの色を使用して表現すると、同じレベルのマッピングであっても、全体的な最適なデータ フローを満たすために、異なる PE には異なる操作式があることがわかります。このようにして、エネルギー効率を 2 倍にすることができます。

同じ考え方はディープラーニングに限らず使用できます。ディープラーニングはグラフコンピューティングの特殊なケースにすぎません。データフローをグラフ形式で表現できる計算はすべてグラフコンピューティングです。ディープラーニングは非常に豊富ですが、それでもグラフコンピューティングの特殊な表現にすぎません。したがって、インメモリ コンピューティングを使用してグラフ計算を実行できます。

これはHPCA 2018での私たちのもう一つの作品です。グラフコンピューティング、特に深さ優先探索やネットワーク優先探索などのアルゴリズムは、行列上で表現することでグラフコンピューティングを使用して実装できることがわかりました。従来の CPU プラットフォームでのコンピューティングと比較すると、エネルギー効率が数百倍向上します。

アーキテクチャ設計全体を説明した後、アルゴリズムの観点からコンピューティングのエネルギー効率を最適化し続けるにはどうすればよいでしょうか。次の例は構造化スパース化です。スパース化は昔から知られています。ニューラル ネットワークの一部の重みが非常に小さいかゼロに近い場合、入力がどれだけ大きくても出力には影響しません。このとき、結果を計算する必要はまったくなく、結果 (実際にはゼロ) を破棄するだけで済みます。

2016 年以前は、ニューラル ネットワークのすべてのスパース化操作は基本的に非構造化スパース化であり、ゼロを見つけた場合はそれを削除していました。これにより、問題が起こります。時間領域と空間領域の局所性のため、すべてのデータはコンピューターに保存されるときに局所性を持ちます。数字が使用される場合、基本的に、この数字が継続的に使用されるか、またはその周囲に保存されている数字も将来継続的に使用されることが期待されます。ゼロをたくさん削除すると、たくさんの穴が残ります。数字を見つけたら、次の数字を楽しみにしますが、それを保存することはありません。キャッシュ全体が次のような状態に陥ります。つまり、番号を取得するために遠く離れた場所まで移動し続け、それが必要な番号ではないことがわかり、さらに番号を探し続けるという状態です。

この問題を解決するにはどうすればいいでしょうか?スパース化を行う際には、行全体または列全体を削除するなど、特定の場所での削除されたゼロまたは計算を表現することが期待されます。このようにして、ストレージの局所性を満たしながらコンピューティングの最適化を実現できます。

言うのは簡単ですが、実行するのは難しいです。重要なのは、どうやってそれを実行するかです。 2016 年に NeurIPS で構造化スパース性に関する論文を発表し、それが後に非常に有名になりました。 (記事では) 基本的に、特定のストレージ構造に対応するこれらのパラメータを見つけることができ、それによってこれらの数値をブロックに格納できるようになることについて説明しています。このように、クリアするときに行全体または列全体をクリアすることができ、最適化条件を満たしながら局所性も満たすことができます。これは、CNN、LSTM、RNN、さらにはより複雑な計算にも使用できます。この技術は現在、ニューラル ネットワークの最適化における基本的に標準となっています。

よく使用されるもう 1 つのニューラル ネットワーク最適化は量子化です。ネットワークのトレーニングには高い精度が必要ですが、推論には必要ありません。これによって、非常に興味深い疑問が生じます。どのような最適化精度が最適であり、この精度をどのように表現すればよいのでしょうか。

伝統的に、私たちは最良の結果を一つずつ探すことができます。たとえば、1 ビット、2 ビット、4 ビット... 探してみてください。しかし、このビットがどのように保存され、表現されるかについても考慮する必要があることがわかります。たとえば、このレイヤーでは、すべての数値のビットがゼロの場合、ビット全体を保存する必要はありません。たとえば、すべてのビットを要求するのではなく、4 つのビットのうち 2 番目と 4 番目のビットだけが存在するようにすれば、全体的な精度の最適化が向上します。また、構造化スパース化をビットレベルのスパース化研究に適用するのは今回が初めてです。

グループ LASSO を使用して、データ式の列全体または構造内のゼロのビットをすべて削除し、ストレージ コストを大幅に削減します。これは2021年の記事の1つです。

次はトレーニングですが、これは非常に複雑な問題です。私たちは学生たちに、損失関数は飽和に近づくべきだとよく教えます。しかし、会社では、飽和状態になるほどの十分なコンピューティングパワーは決してありません。基本的に、24 時間トレーニングするためのマシンが 100 台与えられ、どのようなトレーニングであっても完了する必要があります。これにより、トレーニング自体が非常に効率的になります。

従来、モデルを何度も複製するために分散サーバー アプローチを使用していましたが、複製された各モデルはトレーニングにデータの一部のみを使用します。では、最終結果にすべてのデータが考慮されていることをどのように確認するのでしょうか?トレーニング中にこれらのニューラル ネットワークの勾配をパラメーター サーバーに送信し、平均化してから、それを送り返してローカル ニューラル ネットワークを更新する必要があります。これにより問題が発生します。ノード サーバーの数が多すぎると、最終的にはシステム全体が勾配伝送によって生成されたデータ フローによって完全に占有されてしまいます。

何をするか?その後、十分なパラメータがある場合、生成された勾配は特定の分布を満たすことがわかりました。元のデータを転送する必要はまったくありません。分布のいくつかのパラメータと、データが大量にあるかどうかなどのいくつかのことを計算して渡すだけで済みます。その後、反対側で分布を完全にコピーして、対応する結果を得ることができます。

私たちは、このような操作を携帯電話上で実現し、多数の携帯電話を組み合わせてトレーニングを行い、同時に推論も実行しました。

推論を行う際には、クラスタリング手法を採用し、行と列の変換によって非ゼロの数字を可能な限りまとめて調整し、それらを携帯電話に送信して集中計算することで、携帯電話間の通信を減らし、計算効率を向上させました。

私たちはかつてある企業とテストを行いました。世界中の何千もの CDN ネットワーク サーバーを探し出し、スタイル転送アプリケーションを開発しました。分散コンピューティングと表現を通じて計算全体を完了し、効果は非常に良好でした。基本的に、携帯電話とサーバーの連携により、トレーニングと推論全体が瞬時に完了します。

ここまで述べてきましたが、実際には問題があります。これらすべてに対応するニューラル ネットワークを設計するには、非常に経験豊富で非常に高価なエンジニアが必要です。これは、ニューラル ネットワークを実装するための現在のコストの非常に大きな部分を占めています。強化学習や最適化などの自動化された方法を通じて、特定の最適化プロセスをシミュレートできるため、ニューラル ネットワーク全体を最適化できますが、これらの従来の最適化プロセスは非常に高価です。

私たちはかつて、これをグラフィカルな表現で実現することを考えました。ディープ ニューラル ネットワーク アーキテクチャは、ループのない有向グラフで表現されます。多数のセルがあり、異なるセルが重ね合わされて、ニューラル ネットワーク アーキテクチャ全体が完成します。私たちが探しているのは、最終的なニューラル ネットワーク設計が要件を満たしているかどうかを確認するための、このセル内のトポロジ構造です。これは位相構造に敏感な研究です。

また、これらのことをやっていくと、似たようなトポロジー構造を持つニューラルネットワークの精度も似ており、相関関係があることがわかります。相関係数は1ではありませんが、基本的には比較的高い数値です。したがって、このアーキテクチャを使用して、そのようなアーキテクチャがパフォーマンス要件を満たすかどうかを予測できます。この予測は、ニューラル ネットワーク アーキテクチャ全体の検索を導くことができます。

具体的な結果は次のとおりです。いくつかの離散的なアーキテクチャや位相構造を連続した空間にマッピングし、生成されたベクトル間の角度(類似性)をパフォーマンスのキー表現として使用します。このようにして、最適化がどのようになるかを予測し、最適化結果に継続的に近づくことができます。

明らかに、このアプローチは人間の設計に反しています。これは人間がニューラル ネットワークを設計する方法ではありません。人々は、自分の要件を満たす小型モデルがあるかどうかを確認し、ない場合はさらに追加します。私たちは、自動ネットワーク深度検出と呼ばれる、これに似たものも試しました。最小のネットワークから上に向かって追加し続けたり、各レイヤーに異なるレイヤーを追加したり、多くのレイヤーを追加したりして、最終的にどのようなアーキテクチャがこの要件を満たすかを確認できるように、いくつかのルールを設計しました。もちろん、特定のルールを設計したり、何らかの試みをしたりする必要があります。

こうした試みは非常に興味深いです。結局のところ、デザインバランスの境界上の特定のポイントに最適化することは常に可能ですが、固定されたポイントに最適化する方法はありません。この境界上の特定のポイントに到達し、ゆっくりと自由に流れるようにすることしかできません。最適化の方向と範囲を完全に制御するには、まだ十分な理解が得られていません。したがって、この研究にはさらなる研究が必要です。実現可能性は証明しただけで、ルールの完全性についてはさらに研究を行っていません。

最後に、ハードウェアとソフトウェアの共同設計では、ハードウェアとソフトウェアの連携、特定の回路とアーキテクチャの設計、アルゴリズム自体のハードウェア最適化など、考慮すべきパラメータが多数あります。

私たちのチームは長年にわたり経験を積んできました。2012年にさまざまなハードウェア上でのニューラルネットワークの表現の研究を開始し、その後、アーキテクチャ設計、分散設計、自動設計などを行い、多くの試みを行ってきました。最も単純な表現から最後のボタンの押下まで、AI ソフトウェアとハ​​ードウェアの統合の構築がどのように完了するかがわかるでしょう。

皆様ありがとうございました!

<<:  大連理工大学は、小規模サンプル認識にDeepBDCを提案し、6つのベンチマークで最高のパフォーマンスを達成した。

>>:  Andrew Ng 氏へのインタビュー: 今後 10 年間で人工知能はどこに向かうのでしょうか?

推薦する

...

デジタル外交はAI外交へと進化している。どのような課題に直面するのだろうか?

外交活動に関して、近年最も議論されている概念は「デジタル外交」であろう。 2010年には、当時米国務...

...

Java でアルゴリズムを実装する場合は、再帰に注意してください。

現象:再帰は、アルゴリズムの原理をうまく説明できる古典的なアルゴリズム実装です。再帰は、アルゴリズム...

考えてみると恐ろしいですね! 1億人のネットユーザーが騙された、AIは変装の技術を習得

最近、「射雁英雄伝」でアテナ・チュウが演じる「黄容」の顔をAI技術で楊冪の顔に差し替えた動画が、ネッ...

...

百度がスマートシティ向け「ACE計画」を発表、ロビン・リーはAI思考でインターネット思考に打ち勝ちたい

11月1日、北京で百度世界博覧会2018が開幕した。百度の創業者で会長兼CEOの李克強(ロビン・リー...

...

AIエンジニアリングについて知っておくべきこと

人工知能は、21 世紀の世界のテクノロジー主導型市場において最も注目されている破壊的テクノロジーです...

セキュリティ企業:ホワイトハットの60%以上が生成AIに興味を持っており、脆弱性を見つける最大の動機は金儲けである

セキュリティ企業であり脆弱性報奨金プラットフォームでもあるHackerOneは10月30日、先週20...

TigerGraph がトップ 10 のグラフ データベース アルゴリズム ライブラリをオープンソース化

最近、世界最速のエンタープライズ レベルのグラフ分析プラットフォームである TigerGraph は...

...

流行後、生体認証はどこに向かうのでしょうか? 焦点は「手」に移るのでしょうか、それとも「頭」に移るのでしょうか?

庚子年の初めに、突然の疫病が中国全土に広がり、人々は突然「2003年を夢見ている」ような気分になった...

プログラマーは30歳で転職すべきでしょうか?曲がるならどちらの方向がいいでしょうか?

最近、皆さんは次のような H5 に悩まされていると思います。広告ポスター500枚の予算は2,000元...

...