検索
ニュース

「コードの実行速度」が分かるMLツールを開発、MIT研究チームIntelの予測モデルより高精度

マサチューセッツ工科大学の研究チームは、プロセッサ上でのアプリケーションコードの実行速度を予測する機械学習(ML)ツールを開発した。Intelのツールよりも誤差が少なく、Googleの「Tensor Processing Unit」のような新しいプロセッサにも適用できる。

Share
Tweet
LINE
Hatena

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

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

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

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

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

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


MITの研究チームは、特定のコードをプロセッサ上で実行するのに必要な時間を正確に予測できる新しいベンチマークツールを開発した

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

 研究チームは複数のカンファレンスで発表したさまざまな論文で、このプロセスを自動化する手法を紹介している。目的はより簡単で高速、正確なものにする新しい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とは異なる手法を採用、データから学習する

 カービン氏によると、Intelは自社のプロセッサアーキテクチャを記述した3000ページ以上の膨大なドキュメントを提供している。だが、Intelアーキテクチャに対応したコードの実行をシミュレートするパフォーマンスモデルは、小さな専門家グループだけが作成している。

 「加えて、Intelのドキュメントには誤りがないわけではなく、完全でもない。さらにプロセッサのアーキテクチャはプロプライエタリな技術であるため、特定の事項はドキュメントに含まれていない」(EECSとCSAILに所属する博士課程の学生であるチャリス・メンディス氏)

 こうした隠された情報を含め、IthemalがIntelアーキテクチャをデータから直接学習できるようにするため、研究チームは所定のマイクロプロセッサが基本ブロックの命令を、人間の介在なしで処理するのに要する平均サイクル数をまず測定した。このプロセスを自動化することにより、基本ブロックの数がたとえ数十万や数百万という膨大な数になったとしても、高速なプロファイリングが可能になる。

Intelの「2倍」の性能をたたき出す

 Ithemalモデルはトレーニングの過程で、自動プロファイリングされた数百万の基本ブロックを分析し、さまざまなプロセッサアーキテクチャがどのように計算処理を実行するかを高い精度で学習する。ここで重要なのが、Ithemalが生のテキストを入力として受け入れ、入力データに手動で情報を追加する必要がないことだ。

 つまり、Ithemalでテストする際、これまで実行したことのない基本ブロックと特定のプロセッサ設計を与えればよいことになる。すると、そのプロセッサがそのコードを実行する速度を示すただ1つの数値をはじき出す。

 研究チームが実施したテストでは、Ithemalは予測精度のエラーレート(予測された速度と実際の速度の差)が、手動作成の従来モデルよりも50%低かった。研究論文によると、さまざまな分野のさまざまな基本ブロックを使ってテストしたところ、Ithemalのエラーレートは10%と優れていることが分かった。なお、Intelのパフォーマンス予測モデル「IACA」やLLVMの性能解析ツール「llvm-mca」のエラーレートは20%だった。

Tensor Processing Unitをより効率的に利用できる

 メンディス氏によれば、Ithemalの利点はまだある。新しく登場したプロセッサアーキテクチャのパフォーマンス傾向を素早く習得する手間が少なくなったことだ。例えば、特定用途アーキテクチャを備えたプロセッサだ。機械学習向けにGoogleが開発を続けている「Tensor Processing Unit」のようなアーキテクチャである。

 「新しいアーキテクチャでモデルを訓練したい場合は、そのアーキテクチャからより多くのデータを収集し、それをプロファイラで実行し、その情報を使ってIthemalを訓練すれば、パフォーマンスを予測するモデルが得られる」(メンディス氏)

 研究チームは今後、Ithemalモデルを「解釈可能」にするよう取り組む。機械学習の大部分はブラックボックスなので、特定のモデルがなぜ、特定の予測をしたのかは、はっきりしない。

 「Ithemalが、ある基本的なブロックを実行するには特定のプロセッサで例えば10サイクルが必要だと予測したとしよう。そのような結論を導き出した理由を解明したい」(カービン氏)

 さらに、Ithemalを使ってVemalのパフォーマンスをさらに高め、パフォーマンスの向上をも自動化することを目指している。

Copyright © ITmedia, Inc. All Rights Reserved.

ページトップに戻る