このページの本文へ

ロードマップでわかる!当世プロセッサー事情 第595回

嗚呼憧れのReconfigurable Processor AIプロセッサーの昨今

2020年12月28日 12時00分更新

文● 大原雄介(http://www.yusuke-ohara.com/) 編集●北村/ASCII

  • この記事をはてなブックマークに追加
  • 本文印刷

Dataflowにすることで
生産性が大幅に改善

 もう1つ厄介なのは、MLではしばしば疎行列(要素の値が0の項目)が非常に多いことで、これをうまく計算から省ければ、実効パラメーターの数を減らして性能を高められるという話である。

この話はこれまでも何度か触れたことがある。DataFlowを利用する動機の1つが、この疎行列(というかパラメータの値が0の場合)の扱いである。もっともDataFlow「だけ」ではうまく扱えないのだが

 一般的な解決策はグラフをきちんと認識して処理することという話であって、前回紹介したGSPもこうしたことに着目したプロセッサーである。

さりげなくGPUを侮辱しているが、そもそもGPUはグラフ処理をするような構造になっていないから仕方ないといえば仕方ない

 ではRDUはこれをどうやって解決するか。まず先ほども出てきたSoftware 2.0なる話。Olukotun博士によれば、Dataflowにすることで、生産性が大幅に改善するとする。

Googleの50万行のコードがDataflowだと500行になった、というのはTensorFlowをDataflowで書き換えたら500行で収まったという話だそうだ。もっともこれ、Googleの元文献が見つけられなかったので、これだけではなんとも言えない

 これは前提として、さらに内部構造をDomain Specific Languageで記述できるようにすることで効率をさらに上げよう、というのが基本的な発想である。

ここで言えば汎用のロジックを組み合わせて畳み込みを実行するのではなく、それぞれの用途に適した処理ロジックを使うことで効率を上げるわけだが、専用ユニットを実装するのは実装効率に劣る。だったらReconfigure Processorを入れてしまえ、というのはあまりにも無茶な気がする

 このDomain Specific Languageの実装がRDAにつながるというところが、RDUのブッ飛んだところである。

演算ユニット(PCU)とメモリーユニット(PMU)が格子状に配され、間にスイッチが入るというすさまじい構造。別にこの3×3で終わりではない模様

 PCUの内部はSIMDのフローティングユニットと中間レジスター(PR)を挟む多重構造になっており、このPRで処理内容を柔軟に変更できる。

ここで言うパターンとは、上の画像の左側に出てくるさまざまな処理のパターンを意味する。要するにPRの内容を細かく変化させることで処理の内容を変更できるというもので、構造は違うが基本的な発想はGF11のMemphis Switchを思い出すものがある

 一方のPMUの方だが、こちらはPRUに似ているものの、最終出力をScratchpadに書き込める点が異なる。

PCUは処理結果をそのままスイッチ経由で(バッファリングせずに)次のユニットに流し込むだけ。一方PMUは処理結果を保持できる点が異なる

 ただ純粋にメモリーユニットではなくフローティングユニットも内蔵しているあたりがやや毛色の変わったところだ。

 例えば畳み込みで言えば、最後に総和を求めるところでは一時的にバッファがどうしても欲しいところで、そうしたケースはPMUを、その前段階の掛け算はPCUを使うといった使い分けを想定していると思われる。これらを利用して、例えば単純な畳み込み2層の処理なら下の画像のように実行できるわけだ。

畳み込み2層の処理。Weightデータをどこで保持するのか? という疑問はあるが、例えばもう1つPMUを使って、そこにWeightを保持することもできるだろう

カテゴリートップへ

この連載の記事

注目ニュース

ASCII倶楽部

プレミアムPC試用レポート

ピックアップ

ASCII.jp RSS2.0 配信中

ASCII.jpメール デジタルMac/iPodマガジン