謎の AI ハードウェア「Versal」


![xdf2018-DAY02-16.jpg](https://qiita-image-store.s3.amazonaws.com/0/166931/88bd7089-9a0f-f605-777d-62ec6b4d4631.jpeg)

2018年10月、FPGAメーカのXilinx社が従来のハードウェアとは異なる革新的なプラットフォーム「ACAP」を発表した。この記事ではその製品群である「**Versal**」についてまとめる。

## はじめに
NTTドコモサービスイノベーション部　AdventCalendar2018の24日目の記事です。


### ざっくり言うと
- 「ACAP」と呼ばれるCPUとFPGAとASICの集合体のようなハードウェアが発表された
- 「Versal」という製品シリーズとして2019年以降販売が開始される
- 　機械学習、自動運転、5G通信など様々な用途に向いている

### 対象とする人
- GPU,TPUなど機械学習関連のプロセッサ技術に興味がある
- 2020年以降のコンピュータに興味がある
- クリスマスイブ暇すぎてQiitaに来てしまった意識高いマン

### やること
- ACAP、Versalの紹介
- 従来のFPGAとの比較
- TPU/GPUとの比較


## ACAPとは何か

>FPGA およびハードウェア プログラマブル SoC を発明してきたザイリンクスが新たに ACAP (Adaptive Compute Acceleration Platform) という製品カテゴリを打ち出しました。適応性を備えたザイリンクスのシリコンは、高度なソフトウェアとツールを利用することで、民生機器から自動車、クラウドに至るまで幅広い業界および技術にイノベーションをもたらします。
[ザイリンクス - Adaptable. Intelligent.](https://japan.xilinx.com/)

CPU、GPUといった従来のハードウェアのカテゴリに対して、新たにACAP（エーキャップ）というハードウェアが加わった。ACAPのアーキテクチャ概観はコチラ。

![versal-1.png](https://qiita-image-store.s3.amazonaws.com/0/166931/0fbb2fe3-72da-4241-ff68-924766ce53b7.png)


### ３つのエンジン

ACAPは下記の３つのエンジンがNoCを経由して接続される。

- Scalar Engines 
    - ARMプロセッサで構成される

- Adaptable Engines
    - 最新のプログラマブルロジックとメモリセルで構成される
        - プログラマブルロジック：ユーザが設計可能な集積回路
        - 従来の設計との互換性もサポート
    - タスクによって動的にメモリ構成を最適化可能
- Intelligent Engines
    - [VLIW](https://ja.wikipedia.org/wiki/VLIW)・[SIMD](https://ja.wikipedia.org/wiki/SIMD)プロセッサ、メモリから構成される
    - 行列演算向けにあらかじめ最適化されたAIエンジンをもつ


![versal-2.png](https://qiita-image-store.s3.amazonaws.com/0/166931/3197318f-f038-8982-8448-3eb304e6e2ec.png)

まとめると下記の通り

種別|構成要素|回路設計|用途|処理単位
---|---|---|---|---
Scalar Engines|ARMプロセッサ|固定|汎用|逐次処理
Adaptable Engines|プログラマブルロジック、メモリセル|再構成可能|ドメイン特化|並列処理
Intelligent Engines|VLIW/SIMDプロセッサ、メモリ|固定|ドメイン特化|並列処理


CPUの汎用性、FPGAの柔軟性、ASICの専門性。

ACAPはこれらを併せ持つハードウェアである。



## Versalとは何か
>業界初のACAP(Adaptive Compute Acceleration Platform)であるVersalデバイスは、適応性のあるプロセッシングおよびアクセラレータエンジンとプログラマブルロジック、コンフィギュレーション可能なコネクティビティを兼ね備え、データセンター、オートモーティブ、5G無線通信、有線通信、防衛分野の幅広いアプリケーション向けにカスタマイズされたヘテロジニアスハードソリューションを可能にします。ACAPデバイスは、1つの統合されたシリコンホストインターコネクトシェルと、AIおよびDSPインテリジェントエンジン、適応型エンジン、そしてスカラーエンジンといった大きく様変わりした機能を特長とし、従来のFPGAおよびGPUを上回るワットあたり性能を提供します。
[Versal](https://japan.xilinx.com/products/silicon-devices/acap/versal.html)
![](https://japan.xilinx.com/content/dam/xilinx/imgs/products/versal/versal-platform.png)

VersalとはACAPというデバイスの製品シリーズ[^example]であり、その名は「Versatile（多用途）＋Universal（普遍的）」に由来する。

[^example]: CPUで言えばIntelのXeonみたいな対応関係。

下記の6シリーズが展開される予定であり、エッジからクラウドまであらゆる用途をカバーする。


|シリーズ名|主な用途|特徴|
|------:|------:|------:|
|Versal AI Core|データセンター、無線通信|最高性能の演算処理エンジン|
|Versal AI Edge|自動車(ADAS)、無線通信、<br>放送、航空宇宙・防衛|省エネ演算処理エンジン（5W以下）|
|Versal AI RF|無線通信、航空宇宙・防衛、有線通信|ダイレクト無線変換器と<br>ソフトウェア定義の誤り訂正|
|Versal Prime|データセンター、有線通信|シェル付属の基本的プラットフォーム|
|Versal Premium|有線通信、試験測定|112Gシャード、600GのIP付属の<br>プレミアムプラットフォーム|
|Versal HBM|データセンター、有線通信、試験測定|HBM付属のプレミアムプラットフォーム|

その名の通り、自動車などのエッジからクラウドデータセンターまで幅広い用途で用いられるようだ。

2018年時点ではまだ一般向けに提供されておらず、2019年後半から順次販売を始めるとのこと。



### 開発環境
Versalの開発環境・開発フローは下記の通り。

![](https://japan.xilinx.com/content/dam/xilinx/imgs/press/media-kits/platform-stack.jpg)
![](https://www.xilinx.com/content/dam/xilinx/imgs/press/media-kits/design-flow.jpg)

開発言語としてPythonが挙げられているが、Pythonで記述したTensorflowやMxnetのモデルをVersal用に変換できるだけであり、Pythonで自由自在に回路を設計できるということではない。

高位合成（C/C++）やVerilogHDL/VHDLが分かる人は今まで通りVivadoで開発できそうである。



## 比較① 従来のFPGAとの違い

ACAPはFPGAの上位互換である。下記スライド[^xdf]からわかる通り、FPGA→SoCファミリと進化して2018年のACAPに至る。

[^xdf]: Xilinx社の開発者向けフォーラム「XDF2018」の資料より引用


<img width="1161" alt="スクリーンショット 2018-11-22 2.15.25.png" src="https://qiita-image-store.s3.amazonaws.com/0/166931/8b6094ab-6b51-7710-c58b-c97e22d37e48.png">


年代|デバイス|主な機能・アップデート
---|---|---
1980's|FPGA|[FPGA の歴史](https://japan.xilinx.com/japan/fpga-koza/chapter01.html)　
2011[^zynq]|SoC（**S**ystem **o**n **C**hip）[^socsoc]|ARMプロセッサ統合
2015|MPSoC(Multi Proccessing SoC)|リアルタイム処理・グラフィックス機能
2017|RFSoC(Radio Frequency　SoC)|高周波データコンバータ統合
2019|ACAP|AIエンジン統合

[^zynq]: Zynq-7000の発表年[ザイリンクス、業界初のエクステンシブルプロセッシングプラットフォームとなるZynq-7000ファミリを発表 - CNET Japan](https://japan.cnet.com/release/30000324/)

ARMプロセッサが統合されたのはZynqなどのSoCデバイスからであり、ネットワークや画像処理向けの機能追加が続く。このように進化をたどるとACAPのAdaptable、Scalarの二つのエンジンの機能は、2018年時点で既に存在していたことがわかる。

ACAPが従来と大きく違うのは **Inteligent Engines**にある。

[^socsoc]: CPU+GPUの組み合わせのJetsonなどもSoCデバイスと呼ばれる。




## 比較② 他のハードウェアとの違い

2018年はNVIDIA「Turing」、Google「TPU3.0」 など新しいHWが登場した。
これらを横並びで比較してみる。

| | Versal | TPU3.0 | Turing/Volta |
|:-----------|:------------:|:------------:|:------------:|
|種類| ACAP       | ASIC        | GPU         |
|発表|2018/10|2018/5|2018/8|
|概観図|![xilinx.png](https://qiita-image-store.s3.amazonaws.com/0/166931/827369ce-c2f8-aaff-246b-8f355714df81.png)|![tpu.png](https://qiita-image-store.s3.amazonaws.com/0/319677/9b7ab5f2-a515-9dbf-dbce-8ac7ad074a8a.png)|![nvidia.png](https://qiita-image-store.s3.amazonaws.com/0/166931/396f3643-e992-5d1c-f638-cc07da863946.png)|
|コンパイラ・ライブラリ|Vivado|TensorFlow XLA|CUDA|
|開発言語|C/C++,HDL...|Python,C++,Go...|C/C++...|
|クラウドプロバイダ|未定|GCP|AWS/GCP/Azure/…|
|クラウド|Versal AI Core|Cloud TPU|Tesla T4|
|エッジ|Versal AI Edge|Edge TPU|Jetson Xavier|


こうして比較してみると

- どのデバイスもArray状の行列演算に特化した部分を持つ
- TPUはTensorFlowからそのまま呼び出せるため開発がラク
    - VersalもTuringもDeepLearningのフレームワークが対応すれば[^ex]Pythonで利用することが可能
- クラウド、エッジの２つの戦場がある
    - Versalがクラウドで提供されるとしたらAWSやAlibaba Cloudなどが有力
        - [Amazon EC2 F1 インスタンス](https://aws.amazon.com/jp/ec2/instance-types/f1/)など既にFPGAが導入されている
    - GoogleはGCP/TensorFlow/TPUとソフトからハードまで一気通貫にサービス提供している
    - NVIDIAはコンテナを活かした[NVIDIA GPU CLOUD](https://www.nvidia.com/ja-jp/gpu-cloud/)というフレームワークを提供している


といったことがわかる。



[^ex]: 私のような一般庶民でもPythonでサクッとGPUを利用することができるのは、TensorFlowがCUDAに対応してくれているからである。いとありがたし。




## The DeepLearning Hardware Battle

クラウド上のDeepLearningの世界では特に競争が激しい。

特に推論用途[^learn]ではCPU・TPU・GPU・FPGAなど様々なプロセッサの導入が進み、各企業がしのぎを削っている。

[^learn]: 学習はGPUで行うのが主流。TPUも学習に対応している。

ここでは行列演算に特化したユニットを見比べてみる。

### 📌Versalの「AIエンジン」
詳細は不明だが多数のAIエンジン(2個で1セット)を並べることで行列演算を高速化するようだ。

![aiengines.png](https://qiita-image-store.s3.amazonaws.com/0/319677/0e41960c-9527-a16d-90b2-16413eb06e37.png)

現在のところデータセンターで使われるFPGA「Virtex」ではxDNNと呼ばれるTPUと同様な機能が提供されている。

![](https://3s81si1s5ygj3mzby34dq6qf-wpengine.netdna-ssl.com/wp-content/uploads/2018/08/Xilinx3.png)

[Xilinx/ml-suite: Getting Started with Xilinx ML Suite](https://github.com/Xilinx/ml-suite)

### 📌TPUの心臓「シストリックアレイ」
TPUはGoogleのハードウェアエンジニアが独自に開発したASICである。TPUの行列演算は下記のシストリックアレイと呼ばれる演算器で実行される。データが流れるように処理されるのが一目でわかる。

![sa](https://storage.googleapis.com/gweb-cloudblog-publish/images/tpu-131a5h.max-1000x1000.PNG)

ちなみにTPUの解説は[tpudemo.com](https://tpudemo.com/)のアニメーションがわかりやすいので必見。


[Google Cloud Platform Japan 公式ブログ: Google の Tensor Processing Unit (TPU) で機械学習が 30 倍速くなるメカニズム](https://cloudplatform-jp.googleblog.com/2017/05/an-in-depth-look-at-googles-first-tensor-processing-unit-tpu.html)

### 📌Turing「Tensor Cores」

Turing/Voltaの目玉はTensorCoreと呼ばれる独自の行列演算器である。TensorCoreは4×4の行列演算(FP16)を1サイクルで実行する。TPUやVersalでも言えることだが、データ型の精度をINT8やINT4にすればさらに高速化が可能である。


![](https://www.nvidia.com/content/dam/en-zz/Solutions/Data-Center/tesla-t4/Turing-Tensor-Core_30fps_FINAL_736x414.gif)

NVIDIAのGPUもエッジデバイスからクラウドデータセンターまで幅広くシリーズ展開している。

![](https://docs.nvidia.com/cuda/cuda-c-programming-guide/graphics/gpu-computing-applications.png)

### 📌AWSのASIC「Inferentia」
記事を書いている途中でこんなニュースが飛び込んできた。

<blockquote class="twitter-tweet" data-lang="ja"><p lang="ja" dir="ltr">ご参考までに<br>▼［速報］AWS、独自の機械学習用プロセッサ「AWS Inferentia」発表。高速な推論処理に特化。A…<a href="https://t.co/5g6hJveYOJ">https://t.co/5g6hJveYOJ</a><a href="https://twitter.com/hashtag/deeplearning?src=hash&amp;ref_src=twsrc%5Etfw">#deeplearning</a></p>&mdash; 人工知能,機械学習関係ニュース研究所 (@AI_m_lab) <a href="https://twitter.com/AI_m_lab/status/1067925363026616320?ref_src=twsrc%5Etfw">2018年11月28日</a></blockquote>
<script async src="https://platform.twitter.com/widgets.js" charset="utf-8"></script>

AWSは2015年にAnnapurna Labsと呼ばれるイスラエルの企業を買収し、ネットワーク向けのASICを独自に設計していた。その開発力を活かして、2018年のre:InventではARMベースの自社製CPU「AWS Graviton Proccessor」とディープラーニング推論向けASIC「Inferentia」を発表した。

AWSのデータセンターの凄いエンジニアのJames Hamilton氏のブログにはこう記述されている。

>We support the frameworks customers are using, and have AWS hardware-optimized versions of the important ML frameworks including MxNet, PyTorch, and TensorFlow. **In fact, 85% of cloud-hosted TensorFlow workloads are running on AWS.**

>[AWS Inferentia Machine Learning Processor – Perspectives](https://perspectives.mvdirona.com/2018/11/aws-inferentia-machine-learning-processor/)

TensorFlowが圧倒的に重要なのはAWSも把握している。今回の「Graviton」と「Inferentia」の発表はTPUをかなり強く意識しているのは間違いない。


Versal AI Coreはデータセンター向けであるが、果たしてAWSで導入されるのだろうか？


[AWS Inferentia - Amazon Web Services (AWS)](https://aws.amazon.com/jp/machine-learning/inferentia/)

## 個人的な所感
- Turingはどちらかというと画像処理で進化した部分が大きい。今後GPUはVR分野で力を発揮しそう。
- DeepLearningのフレームワークではTensorFlowの力が強く、その影響はハードウェアの世界にも及ぶ
    - GoogleColaboratoryでいつでもTPUが使えるのも強い
- ACAPはネットワーク処理まで統合している点、回路をカスタマイズできる点が他との大きく違う。
    - 特にIoTデバイスでは省エネ、ストリーミング処理など力を発揮できそう。
- AWSが自社開発のInferentiaを発表したことで、クラウド推論はTPUなどのASICがメインになりそう。



## 参考
- [NVIDIA-Turing-Architecture-Whitepaper.pdf](https://www.nvidia.com/content/dam/en-zz/Solutions/design-visualization/technologies/turing-architecture/NVIDIA-Turing-Architecture-Whitepaper.pdf)
- [Tearing Apart Google’s TPU 3.0 AI Coprocessor](https://www.nextplatform.com/2018/05/10/tearing-apart-googles-tpu-3-0-ai-coprocessor/)
- [Versal ACAP メディアプレゼンテーション（日本語版）](https://japan.xilinx.com/content/dam/xilinx/imgs/press/media-kits/j_XDF_VERSAL_Press_Presentation_FINAL_lowres_Final.pdf)