・新しい機械学習ツールは、特定のコンピューターチップが、特定のコードを実行するのにかかる時間を予測します。
・これは、Intelの予測モデルよりも正確です。
プロセッサが、定常状態でアセンブリ命令のブロックを実行するのに要するクロックサイクル数を決定することは、パフォーマンスエンジニアと、コンパイラ設計者の両方にとって重要です。
そのための分析モデルの開発は、非常に複雑なタスクです。特に、タスクがエラーを起こしやすくなり、各世代のプロセッサで最初から実行する必要がある、最新のプロセッサアーキテクチャでは特にそうと言えます。
現在、MITの研究者は、このプロセスを自動化する機械学習ツールを構築し、静的マシンコードアナライザーとコンパイラバックエンドで、現在使用されている最先端の手書きツールよりも高速、簡単、正確にしました。
彼らは、3つのカンファレンスの論文で、新規の機械学習パイプラインを記述しました。
1.Ithemal:ニューラルネットワークモデルは、ラベル付きデータの基本ブロック(計算命令のブロック)でトレーニングされます。次に、特定のマイクロプロセッサが、未処理の基本ブロックを実行するのにかかる時間を予測します。
2.BHive:Ithemalを検証するために、研究者は、暗号化、コンパイラ、機械学習、グラフィックスなどのさまざまな分野から、基本ブロックのベンチマークスイートを作成しました。また、300,000ブロック以上を集め、オープンソースのデータセットであるBHiveに入れました。
テストにより、IthemalはIntelプロセッサがコードを実行する速度を、Intel自身が開発したパフォーマンスモデルよりも正確に予測できることを示しました。
3.Vemal:研究員は、特定のコードをベクトルに変換する、Vemalという名前のアルゴリズムを自動を作る方法を構築しました。これによって、パラレルコンピューティング要素に訴えることができます。
Vemalは、LLVMコンパイラを含む産業用コンパイラで使用される手作りのベクトル化アルゴリズムよりも、優れたパフォーマンスを発揮することが可能です。
チップのドキュメントの代わりにデータを使用しましょう
Intelは、チップのアーキテクチャを説明する、詳細なドキュメントを提供しました。しかし、特定の開発エキスパートのみが、これらのアーキテクチャでのコード実行をシミュレートする、パフォーマンスモデルを作りました。また、これらのチップは所有権があるであるため、Intelはドキュメントの特定の情報を省略しています。
研究者は、ニューラルネットワークを使用して、チップが基本的なブロック命令(特定のコマンドの実行、シャットダウン、再起動など)を実行するために要する、平均サイクル数の記録を行いました。
ニューラルネットワークは、何百万ものブロックを自動的にプロファイリングし、さまざまなプロセッサアーキテクチャがコードを実行する方法を徐々に学んでいきます。
研究者はシンプルな方法で人工知能を使用し、チップのドキュメントに集中せずにデータを分析しています。
Ithemalは、見えない基本ブロックを入力として受け取り、特定のプロセッサがそのコードを実行するのにかかる時間を示す、単一の数値を生成します。
研究員は2つめの論文で、Ithemalが従来の手動モデルよりも良い働きをすることを実証しています。Intelの予測モデルのエラー率が20%の時には、Ithemalのエラー率は、異なるドメインにわたるさまざまな基本ブロックにおいてわずか10%ほどでした。
モデルは、新しいアーキテクチャで簡単にトレーニングできます。そのチップからより多くのデータを収集し、プロファイラーで実行し、その情報を利用してIthemalをトレーニングするだけです。これでおしまいです。モデルが、パフォーマンスを見積もる準備ができました。また、こでにより、Googleの新しいTensor Processing Unitなどの、あらゆるプロセッサアーキテクチャのパフォーマンス速度を学ぶことができます。
しかし、機械が学習することについての多くはブラックボックスであるため、研究者は、このモデルがどのように予測を行うかは、まだ分かりません。次の研究で、これらのモデルを解釈できる技術を、探っていくことでしょう。