このページの本文へ

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

人間の脳のように動くTenstorrentのプロセッサーGrayskull AIプロセッサーの昨今

2021年01月25日 12時00分更新

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

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

混合精度の変換を自動化し
必要な箇所だけを計算する

 ではそのDynamic Executionとはなにか? というのが下の画像だ。ポイントはControl Flow(複数のサブセットを常に用意しておき、なにをどのタイミングで実行するかを自由に制御できる)と、Sparse Compute(疎のデータセットを与えられたときに、必要な箇所だけを計算する仕組み)が実装されることだ。

Dynamic PrecisionはともかくRuntime Compressionは(機能として便利なのはともかくとして)Dynamic Executionには関係ないだろう、という気もしなくはない

 またAIにおいては、必ずしも全ステージで同じ精度である必要はない。なので、混合精度での演算であることが多いのだが、既存のプロセッサーでは精度の変換を一度かける必要があるので、これを自動化できると効率があがる。

 そしてデータの自動圧縮/解凍は、そうした機能を持つプロセッサー(というかアクセラレーター)は実際に存在するが、これからはこうしたものが必要になるという話である。

 ここで2つ目のSparce Compute。密行列の処理の場合、処理回数は行列の大きさの3乗に比例する。ところが、どれか1つでも疎があった場合、「必要な箇所だけ計算する」機能があれば大幅に性能が上がる、とする。

これを実現するために、例えばDataFlowの実装にチャレンジするわけだ

 この「必要な箇所だけ計算する」機能は、さまざまなアプリケーションで利用可能である一方で、「どの程度の単位で必要/不要を見極めて判断するか」がアプリケーションによって異なるので、サイズも自動調整できることが望ましい。

 これらは当然ながらソフトウェアでやっていたらむしろオーバーヘッドが増えるので、全部ハードウェアで行なわないと意味がないことになる。

GPT3クラスの巨大なモデルも視野に入っているとする

パケットプロセッサーのTensixで
2Dトーラス構造のNoCを構成

 こうした目的に対してTenstorrentは、Tensixと呼ばれる演算エレメントを最小単位とし、これを複数個組み合わせる形である。

Tensixの内部構造は後述する

 このTensixは内部にConditional Executionの仕組みを持っているようで、BERT(Bidirectional Encoder Representations from Transformers:自然言語処理モデルにおける機械学習のトレーニング手法の1つ)のようなケースでも効率的に処理が可能としている。

従来のモデルでは、シーケンスの最大長一杯にデータを詰め込んで処理しないと効率が悪い(のでPaddingという処理が発生していた)が、Tensixでは最大長まで詰めなくても変わらないスピードで処理できるので、結果的に高速になる

 またこのBERTの場合、「どこから次の文節が始まるか」を予め分析して、分解して文節を与える必要があるが、これをTensixは動的に切り替えできるとする。

文節を動的に切り替えできるだけで、前段における処理(文節の切り出し)が省けることになる

 そのTensix、中身は一種のパケットプロセッサーである。入力されたパケットに対して所定の処理をして結果を送り出すだけという、ある意味これもDataflow的な動作をする。

一種のパケットプロセッサーであるTensix。図にはCompute Engineが4TOPSとあるのに、処理性能が~3TOPSというのは、カタログのピーク性能は4TOPS、実効3TOPSの意味だろうか?

 さらにその中身は、5つのRISCコアが制御用に動き、これが4TOPSで動くCompute Engine(これはいわばアクセラレーター的に動作するのだろう)とPacket Processing Engine(これはパケット処理のみ)をそれぞれ扱う形になるとする。

5つのRISCコアがそれぞれアプリケーションコードを1スレッドずつ動かす格好で、そこからPacket Processing EngineとCompute Engineを呼び出す格好になるのだろうか? このCompute Engineの詳細がもう少しわからないと今一つ中身ははっきりしない

 各々のTensixはネットワークで接続される格好になっている。

2Dトーラス構造のNoC(Network-on-Chip)というのはおもしろい。普通NoCではあまりトーラスを構成しない。NoCを構成している時点で経路の最適化が図れるし、トーラスだと自分の縦横以外に接続するのにはルーティングが必要になって1ホップ余分に時間がかかるからだ。このあたりの意図を知りたいところだ

カテゴリートップへ

この連載の記事

注目ニュース

ASCII倶楽部

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

ピックアップ

ASCII.jp RSS2.0 配信中

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