「コードの実行速度」が分かるMLツールを開発、MIT研究チーム

2020/01/09 10:28

 マサチューセッツ工科大学(MIT)の研究チームは、プロセッサがさまざまなアプリケーションのコードを実行する速度を予測する機械学習(ML)ツールを開発した。Intelが自社開発したツールよりも約2倍高精度だと主張する。

従来の手法は正確性に問題あり

なぜこのようなツールが必要なのだろうか。コードをできるだけ高速に動作させるため、パフォーマンスエンジニアやコンパイラ開発者は通常、特定のプロセッサアーキテクチャをシミュレートしてコードを実行する「パフォーマンスモデル」を使用する。

するとプロセッサがアセンブリ言語による特定の命令ブロックを実行するのに要するクロックサイクル数(スループット)を予測できる。

コンパイラはシミュレーションで得られた情報を使ってコードを自動的に最適化し、パフォーマンスエンジニアはそれを使って、コードを実行するマイクロプロセッサのパフォーマンスボトルネックに対処する。

だがこのような手法には問題があるという。なぜなら、マシンコードのパフォーマンスモデルを開発しているのは、比較的小規模な専門家グループであり、人の手によって作成された後、適切に検証されていない。その結果、シミュレーションによるパフォーマンス測定が、実際の実行結果と食い違う場合が多いからだ。

モデル作成を自動化できないか

研究チームは複数のカンファレンスで発表したさまざまな論文で、このプロセスを自動化する手法を紹介している。目的はより簡単で高速、正確なものにする新しいMLパイプラインの導入だ。さらに2019年6月に開催された「International Conference on Machine Learning」では、ニューラルネットワークモデル「Ithemal」を発表した。

“基本ブロック”(演算命令の基本的な断片)という形でラベル付けされたデータを使ったトレーニングにより、Ithemalは特定のプロセッサが初めて扱うことになる基本ブロックを実行する際、どの程度の時間を必要とするか、自動的に予測する。

自動化後の精度はどうなっただろうか。予測結果を見る限り、手動でチューニングされていた従来モデルと比べて、Ithemalがはるかに正確なパフォーマンス予測を行うことが分かった。

機械学習や暗号化、グラフィックスなどの分野で役立つ

研究チームはIthemalをより有用にするため、大量の基本ブロックを作り出した。

2019年11月に開催された「IEEE International Symposium on Workload Characterization」では、パフォーマンスモデルの検証に使えるさまざまな分野の基本ブロックのベンチマークスイートを発表している。

このベンチマークスイートがカバーする分野は幅広い。MLやコンパイラ、暗号化、グラフィックス分野を含んでいる。研究チームは、プロファイリング済みの30万以上の基本ブロックを、「BHive」と呼ばれるオープンソースデータセットにプールした。

Intelのパフォーマンスモデルよりも高精度、LLVMでも高性能

研究チームの評価によれば、Ithemalが予測したIntelプロセッサ上のコード実行速度は、Intelが自社開発したパフォーマンスモデルよりも格段に精度が高かった。

パフォーマンスエンジニアはもちろん、コンパイラ自体もIthemalから多大な恩恵を受けることができる。増加の一途をたどる多様な“ブラックボックス設計の”プロセッサ上で、より高速かつ効率的に動作するコードを生み出せるからだ。

一連の論文で、共著者の1人であるマイケル・カービン氏は、次のように述べている。カービン氏は、MIT電気工学およびコンピュータサイエンス学部(EECS)の助教授で、コンピュータサイエンスおよび人工知能研究所(CSAIL)の研究員でもある。

「モダンなプロセッサは『不透明』であり、極めて複雑で、理解しにくい。こうしたプロセッサ向けに、可能な限り高速に実行されるようなコードを記述することは、至難の業だ。われわれのツールは、こうしたプロセッサの完全なパフォーマンスモデリングによる効率向上へと、大きな前進をもたらした」(カービン氏)

さらに、研究チームは2019年12月に開催された「NeurIPS」では、コンパイラを自動的に最適化する新技術を論文として発表した。これは特定のコードを、並列コンピューティングに使用可能なベクトルへと変換するアルゴリズム「Vemal」を自動的に生成するものだ。

Vemalは、業界に広く普及したLLVMコンパイラで使われている、手動で作成されたベクトル化アルゴリズムを上回るパフォーマンスを提供する。

Intelとは異なる手法を採用、データから学習する

「コードの実行速度」が分かるMLツールを開発、MIT研究チーム