機械学習システムにより、開発者はさまざまなアプリケーションにおけるコンピューティング効率を改善できるようになるはずだ。
MIT の研究者は、さまざまなアプリケーションのコードがコンピューターチップ上でどれだけ速く実行されるかを予測する機械学習ツールを考案した。
コードを可能な限り高速に実行させるため、開発者やコンパイラー(プログラミング言語を機械可読なコードに変換するプログラム)は一般に、与えられたチップアーキテクチャーのシミュレーションにコードを通すパフォーマンスモデルを使用している。
コンパイラーはその情報を用いてコードを自動的に最適化し、開発者は、コードを実行するマイクロプロセッサー上のパフォーマンスのボトルネックに取り組むためにその情報を使用する。しかし、機械語のパフォーマンスモデルは比較的少数の専門家が手作業で作成しており、適切に検証されていない。その結果、シミュレーションによるパフォーマンス測定値は、実際の結果と乖離することが多い。
一連の学会論文において、研究者らは、このプロセスを自動化する新たな機械学習パイプラインについて説明しており、これにより、プロセスはより容易に、より迅速に、より正確になる。ある論文(6月の国際機械学習会議で発表)において、研究者らは、「基本ブロック」(コンピューティング命令の基本的な断片)という形式のラベル付きデータで学習し、与えられたチップが未見の基本ブロックを実行するのにかかる時間を自動的に予測するニューラルネットワークモデルである Ithemal を発表した。結果から、Ithemal は従来の手作業で調整されたモデルよりもはるかに正確に予測することが示唆されている。
その後、11月の IEEE International Symposium on Workload Characterization で、研究者らは発表した、機械学習、コンパイラー、暗号、グラフィックスなど、さまざまな分野の基本ブロックからなるベンチマークスイートであり、パフォーマンスモデルの検証に使用できる。研究者らは、プロファイリングされた30万以上のブロックをまとめ、BHive と呼ばれるオープンソースのデータセットとした。評価の過程で、Ithemal は、Intel 自身が構築したパフォーマンスモデルよりもさらに優れた精度で、Intel のチップがコードを実行する速度を予測した。
最終的に、開発者とコンパイラーは、このツールを使用して、ますます増加する多様な「ブラックボックス」チップ設計上でより高速かつ効率的に動作するコードを生成できる。「現代のコンピュータープロセッサーは不透明で、非常に複雑かつ理解が困難です。これらのプロセッサー向けに可能な限り高速に実行されるコンピューターコードを書くことも、極めて困難です」と、電気工学・コンピューターサイエンス学部(EECS)の助教授であり、コンピューターサイエンス・人工知能研究所(CSAIL)の研究者でもある共著者の Michael Carbin は述べる。「このツールは、効率向上のためにこれらのチップの性能を完全にモデル化する上での大きな前進です。」
最新の論文(12月のNeurIPS会議で発表)において、チームは、コンパイラー最適化を自動的に生成する新たな手法を提案した。具体的には、Vemal と呼ばれるアルゴリズムを自動生成した。これは特定のコードをベクトルに変換するもので、並列コンピューティングに利用できる。Vemal は、業界で広く使われているコンパイラーである LLVM コンパイラーで使用されている、手作業で作成されたベクトル化アルゴリズムよりも優れた性能を発揮する。
データからの学習
パフォーマンスモデルを手作業で設計することは、Carbin によれば「黒魔術」になりうるという。Intel は、チップのアーキテクチャーを説明する3,000ページを超える詳細なドキュメントを提供している。しかし現在、それらのアーキテクチャー上でのコード実行をシミュレートするパフォーマンスモデルを構築できる専門家は、ごく少数しか存在しない。
「Intel のドキュメントは、誤りがないわけでも完全なわけでもなく、Intel は独自技術であるため、特定の事項を省略しています」と Mendis は言う。「しかし、データを使用する場合、ドキュメントを知る必要はありません。隠れた事項があれば、データから直接学習できます。」
そのために研究者らは、人手を介さずに、マイクロプロセッサーが基本ブロック命令(基本的には、起動、実行、シャットダウンの一連の流れ)を計算するのにかかるサイクル数の平均を計測した。このプロセスを自動化することで、数十万から数百万のブロックを迅速にプロファイリングできる。
ドメイン固有アーキテクチャー
学習段階で、Ithemal モデルは、数百万のブロックを自動的にプロファイリングした基本ブロックを分析し、異なるチップアーキテクチャーが計算をどのように実行するかを正確に学習する。重要な点として、Ithemal は生のテキストを入力として受け取り、入力データに特徴量を手作業で追加する必要はない。テスト段階では、Ithemal に未見の基本ブロックと特定のチップを与えると、そのチップがそのコードを実行する速度を示す単一の数値を生成できる。
研究者らは、Ithemal が、予測速度と実際の速度との差を意味する精度の誤差率を、従来の手作業で作成されたモデルと比べて50%削減したことを確認した。さらに、次の論文では、複数の異なる分野にまたがるさまざまな基本ブロックにおいて、Ithemal の誤差率が10%であったのに対し、Intel のパフォーマンス予測モデルの誤差率は20%であったことを示した。
このツールにより、新しいチップアーキテクチャーのパフォーマンス速度を迅速に学習することが容易になったと Mendis は言う。例えば、Google が新たに開発したニューラルネットワーク専用の Tensor Processing Unit のようなドメイン固有アーキテクチャーは、現在構築されつつあるが、広くは理解されていない。「新しいアーキテクチャーでモデルを学習させたい場合は、そのアーキテクチャーからさらにデータを収集し、当社のプロファイラーで処理して、その情報を用いて Ithemal を学習させれば、パフォーマンスを予測するモデルが得られます」と Mendis は述べる。
次に、研究者らは、モデルを解釈可能にする手法の研究を進めている。機械学習の多くはブラックボックスであるため、特定のモデルがなぜその予測を行ったのかは、実際には明確ではない。「当社のモデルは、プロセッサーが基本ブロックを実行するのに例えだ10サイクルかかると示しています。現在、その理由を解明しようとしています」と Carbin は言う。「こうしたツールにとって、これは非常に細かい粒度の情報であり、素晴らしいものになるでしょう。」
また、Ithemal を用いて Vemal の性能をさらに向上させ、より優れた性能を自動的に達成することも期待している。


