行列の棚がちょっと…まばらに見えますか?この美味しいタコスをどうぞ

Table of Contents

行列の棚がちょっと…まばらに見えますか?この美味しいタコスをどうぞ

賢い人たちが、Taco と呼ばれるオープンソース コンパイラを作成しました。これは、コンピューター サイエンスでは便利だが難しい概念である疎行列の計算を実行するために最適化されたコードを生成します。

素粒子物理学における相互作用の研究から検索エンジンの検索結果のランキング、人工知能システムのトレーニングに至るまで、私たちは様々な場面で行列に遭遇するでしょう。大規模なプロジェクトやアプリケーションでは、これらのデータ構造は多くの空白(通常はゼロ)で埋め尽くされるため、メモリを節約し、計算を最適化するために、疎行列に簡略化されることがよくあります。結局のところ、配列のほとんどがゼロであれば、ほとんどの要素をスキップできるのです。

ただし、これらの圧縮された行列に対して効率的に操作を実行するのは、想像するよりも少し複雑です。

様々な解決策が存在します。しかし今回、MIT、Adobe Research、French Alternative Energies、そして米国原子力委員会のコンピュータ科学者からなるチームが、疎行列における数値計算を効率的に自動化する方法を考案しました。このアプローチにより、現在のソフトウェアに比べて100倍の高速化が期待できるとのことです。

先週の SPLASH (システム、プログラミング、言語、アプリケーション: 人類のためのソフトウェア) カンファレンスで発表された論文では、前述のテンソル代数コンパイラである Taco について説明されていました。

ベクトルと行列はテンソルのカテゴリに分類されます。テンソルは数値の多次元配列です。ベクトルは平面的で1次元ですが、行列は2次元です。

論文の上級著者であり、MITのコンピュータサイエンス教授であるサマン・アマラシンゲ氏は、次のように述べています。「スパース表現は60年以上前から存在していました。しかし、それらのコードを自動的に生成する方法を誰も知りませんでした。人々は、スパース行列とベクトルの乗算、スパース行列とベクトルの乗算とベクトルの加算、スパース行列と行列の乗算、スパース行列と行列と行列の乗算といった、ごく限られた特定の演算を解明しました。私たちの最大の貢献は、行列がスパースである場合に、あらゆるテンソル代数式のコードを生成できるようになったことです。」

小さな女の子が読んでいる本に集中している

AIは学ぶ価値があり、それほど難しくはありません。ただし、主要なフレームワークを理解できればの話です。

続きを読む

様々なテンソル演算のための関数は「カーネル」と呼ばれます。例えば、AIにおける数百万ものトレーニング例を含む大規模データセットでは、様々なテンソル演算のシーケンスが含まれる可能性があり、それぞれの演算ごとに固有のカーネルが必要になります。

Tacoはカーネルコードを自動的に生成します。「プログラマーはTacoに、興味のあるテンソルのサイズと、それがスパースかデンスかを伝えるだけで、TacoがC言語でカーネルを生成してくれます」と、論文の共著者でMITの博士課程学生であるフレドリック・キョルスタッド氏は今週、 The Register紙に説明しました。キョルスタッド氏の意図を汲むために、Tacoのオンラインデモをご覧ください。

Tacoは、テンソル間のどの計算ペアにゼロが含まれるかを計算し、それらを破棄します。Amazonの顧客ID番号のデータセットを、購入された商品とレビューで使用された商品の説明にマッピングするテンソルは、なんと107エクサバイト(10の18乗)にもなります。これは、Googleの全サーバーの推定ストレージ容量の約10倍に相当します。Tacoは、これをわずか13ギガバイトにまで削減できると聞いています。

研究者らは、Taco をいくつかのよく知られたハンドコードカーネルに対してもテストし、同等かそれ以上の性能を発揮することを発見したと Kjolstad 氏は述べた。

これまでのところ、チームはCPUコア上で最適化されたコードを実行する実験のみを行ってきました。しかし、TacoがAIにおいて最も大きなインパクトを与える可能性があるのは、GPU上で実行されるニューラルネットワークにおける多数の行列計算の処理です。

これは将来の研究分野であり、研究者たちはその取り組みに協力することについてNvidiaと話し合っている。

Tacoは、人工知能ソフトウェアの動作速度を向上させ、トレーニングの効率とコストを削減する可能性があります。また、コードの一部が自動化されることで、システム開発が容易になるかどうかも興味深いところです。®

MIT ライセンスのコードは、GitHub またはブラウザで試すことができます。

Discover More