Vengineerの妄想(準備期間)

人生は短いけど、長いです。人生を楽しみましょう!

Cloud TPU Driver APIとは?

@Vengineerの戯言 : Twitter
SystemVerilogの世界へようこそすべては、SystemC v0.9公開から始まった

最近、おさぼりしている、Cloud TPU関連で、TLに流れてきたこのツイート

 気になったので、サクッと調べてみました。

 Driver APIオープンソース化したんですね。

追加されたコードは、compiler/xla/python の下にあるんですよ。

TPU Driver API
This repository contains the TPU driver API and network (gRPC) transport implementation for high-performance access to TPU hardware.

Cloud TPUは、gRPCにて呼び出されるということは、ここ に載っています。

Cloud TPUのボードは、Hosts と PCIe で接続されていて、Hostsは、Google Compute Engine VM から Computational Graph を gRPC で貰ってきて、Hostsの中のTensorFlow ServerがXLA(JIT)でTPU Binaryに変換して、それをPCIe経由でCloud TPUに流し込む感じです。

今回公開されてたコードは、Google Compute Engine VM側が gRPC経由で呼び出すためのコードなんでしょうかね。

ソースコード解析職人の出番ですかね。

Twitterで以下のように聞いてみたのですが、0じゃないので、調べてみようかと思っています。

ということで、先週の土曜日に定例の作業が終わった後に、ソースコード解析をしました。

 この時点では、46頁でしたが、その後、いろいろと追加して50頁超えになりました。

次回の TFUG (TensorFlow User Group)に LT (5分枠) にでも発表したいと思います。 

 

Gyrfalcon社の5801は、LGのスマホにも搭載されていた

@Vengineerの戯言 : Twitter
SystemVerilogの世界へようこそすべては、SystemC v0.9公開から始まった

Orange Pi AI Stick Liteが19.9ドルで売り出すという価格破壊

 gyrfalcon社のLigtspeeur SPR2801S搭載

 でツイートしたように、Linaroでの発表資料には、

  • 2017年:2801S
  • 2018年:2803S
  • 2018年:2802M

そして、2019年に 3チップ出すとあったので、

gyrfalcon社のチップの特徴は、動作周波数で50MHzで0.3Wぐらい。

2801Sは28mnで製造。

 

そして、今回、発表された 5801は、2.8 TOPSを224mW(12.6 TOPS/W)

www.gyrfalcontech.ai

この5801も50~200MHzで動作し、4msでLatencyになる(モデルは書いていませんが)

チップサイズは、6mm x 6mm。このサイズならシリコンも小っちゃくてコストも下げられる。

そして、もう一つ重要なのは、LGがこのチップを搭載したQ70(Snapdragon 675なので、Qualcomm® Hexagon™ 685 DSP搭載)というスマホを10月に出していたということ。

 

開発キット(5801 Plai Plug)は、USB Stickベースで、お値段が39.99ドルと。

Google Edge TPUのM.2やMiniPCIeの34.99ドルには及ばないもののUSB Stickでこのお値段はある意味価格破壊。他のUSB Stickの半額ですからね。

 

そして、これからは、こんな感じになると思いますよ。

 

やっぱり入っていた Pixel 4に、Edge TPUが

@Vengineerの戯言 : Twitter
SystemVerilogの世界へようこそすべては、SystemC v0.9公開から始まった

Google AI Blogにて、Pixel 4のPixel Neural Coreには、Edge TPU architetureのインスタンスが入っていると。Edge TPU Chipではなく、ASICの中の一部として。

ai.googleblog.com

その前の Pixel Video Core の時は、PCIe Gen3 x4 + LPDDR4 + カメラ入力・出力だったので、その中に、Edge TPUを入れた感じですかね。

en.wikichip.org

今、上記のWikiChipの図を見て気が付いたんですが、Pixel Visual Coreって、MIPIは入力が2つで、出力が3つあったんですね。てっきり入力だけだと思っていましたが、これって、カメラ画像を入力してそのデータを画像処理した後、MIPI出力でSnapdragonのMIPI入力に繋げているんじゃないですかね。

Pixel 2 (Snapdragon 835)、Pixel 3 (Snapdragon 845)はともに、MIPIは3入力になっているので、ビンゴですね。Snapdragon 855もMIPIは3入力なので、Piixel Neural Coreも同じように、MIPIは3出力なんでしょ。Pixel 4は背面カメラがPixel 2/3の1つから2つになったので、MIPI入力は2から3になったんでしょうね。きっと。

そして、Pixel Visual Coreを使ったアプリケーションのソースコードも2年前に公開されていたんですね。

github.com

おまけとして、こんなのもあります。

vengineer.hatenablog.com

Groqがチップを公開

@Vengineerの戯言 : Twitter
SystemVerilogの世界へようこそすべては、SystemC v0.9公開から始まった

AI Hardware Summitのスポンサーの1社であったGroqが下記のようにキャンセルしてから2か月

vengineer.hatenablog.com

その途中でも、下記のブログにも書きましたが、Groqの元COOもSiMi.aiに動いちゃっているし。

vengineer.hatenablog.com

で、今秋のSC19にあわせて、(この記事がアップする頃にも新しい情報も公開されているかも)、チップ情報を公開しましたね。

ひとつ目は、fudZillaのこの記事

www.fudzilla.com

写真にもありますが、チップにはDRAMらしきものが載っていません。

基板の上には、3つのコネクタが。。これはチップ間接続のためのものでしょうかね。

性能は、1チップで、1 PetaOp/s になると。

この記事にコメントしている Chief ArchitectのDennis Abtsさんって、Cray =. Google で今年の5月に Groq に移った模様。

Groqの求人情報によると、Haskell Engineer を募集していますね。

無くなっちゃうんので、一部を引用します。

Essential Duties & Responsibilities
Deliver compiler features: Work within the compiler team to design, implement, and test new features for our compiler. Collaborate closely with hardware designers and machine learning experts to identify and deploy support for key hardware capabilities.

そして、WikiChipの記事。こちらは、かなり詳しく書いてありまっす。

fuse.wikichip.org

この記事の下の方に、ざっくりなFloorplanの図が載っていますが、真ん中にScratchpadを置いて、両側に大量のALUを置いている感じです。なので、ボード上にはDRAMが置いていないことが分かりました。

Graphcore、Cerebras Systems、そして、GroqがDRAM無しのソリューションなんですね。DRAMを搭載すると、コストが上がるので、SRAMだけでできるようになれば、ボードのコストはかなり安くなると思います。

現時点では、シングルチップ構成だけど、チップにはチップ間インターフェースがあって、大きなモデルを複数チップにて実行できると。

また、A0シリコンで量産に進んだ模様。パートナーにもわたっていると。

現在は、PCIeカードのみだけど、今後は違う形態もあると。

 

 

Graphcore、Microsoftとの協業を発表

@Vengineerの戯言 : Twitter
SystemVerilogの世界へようこそすべては、SystemC v0.9公開から始まった

 によると、MicrosoftのAzureにて、GraphcoreのIPUが使えるようになると。

今週のSC19にて、いろいろとあるそうな。

Graphcoreの性能は、あの BERT の BERT Baseなるモデルの学習を8枚の IPU PCIeカード(1枚のカードに2個のIPUが載っているので、システムでは16個のIPU)にて、56時間。GPU(PyTorch)との比較があったんだけど、時間的には同じぐらいだけど、20%省電力が売り。。。図にはGPU(TensorFlow)の学習時間も載っていますが、1.8倍ぐらいかかっているのは何故?

BERT Baseの推論では、LatencyはGPUより速く、スループットは3倍で。

RESNEXT-101の推論でもGPUよりはるかにいい成績を出していると。あれ、ResNet-50じゃないんだ、ResNext-101ぐらいにならないと、比較できないのかな?

それから、Group Convolution KernelsもGPUより速くなっているんだって。これって、Group Convolutionが得意なアーキテクチャになっているってことなんでしょうか?

Softwareとしては、Polarにて、TensorFlowとONNXをサポート。。。

ということは、学習はTensorFlowでONNXは推論と思っていたが、

Graphcore also delivers a full training runtime for ONNX and is working closely with the ONNX organisation to include this in the ONNX standard environment.

とあって、ONNXでも学習できるんだって。ここにあるように、将来的に普通にONNXで学習できるようになるんでしょうね。

 PyTorchのサポートは、2019年Q4で2020年の早い時期にはフルサポートに。

やっぱり、

  • TensorFlow
  • PyTorch
  • ONNX

なんだね。

ImaginationのGPUでは、SYCLが使えるよ

@Vengineerの戯言 : Twitter
SystemVerilogの世界へようこそすべては、SystemC v0.9公開から始まった

Phoronixのこの記事によると、ImaginationのGPUでもSYCL(このブログでもなんども取り上げている)でプログラムを書けるようになり、TensorFlowでもOKになった。

www.phoronix.com

Imaginationのプレスは、こちら。

www.imgtec.com

このプレスの中から下記の図を引用します。
CUDAが538個のOpをサポートしていて、その次がSYCLで417個、XLAは323個
それ以降は、TensorFlowのモデルをインポートして使うものね。。

https://www.imgtec.com/wp-content/uploads/2019/10/Codeplay.jpg

 

TensorFlowのSYCLのRuntimeのコードは、ここ にありますね。

その他にもいろいろなところにSYCLのコードがありますね。

 

TensorFlow LiteでもGPUとして、OpenCLをサポートしていますね。

github.com

MLPerf v0.5のInference版

@Vengineerの戯言 : Twitter
SystemVerilogの世界へようこそすべては、SystemC v0.9公開から始まった

宣言通り、11月になりましたので、MLPerf v0.5 の Inference 版が公開されましたね。

www.mlperf.org

MLPerf Inference BenchmarkなるPaperもアップされています。

このPaperによると、

  • ARM NN (CPU, GPU
  • FURIOSA-AI (FPGA)
  • HAILO SDK (ASIC)
  • HANGUANG-AI (ASIC)
  • ONNX (CPU)
  • OPENVINO (CPU)
  • PYTORCH (CPU)
  • SNPE (DSP)
  • SYNAPSE (CPU)
  • TensorFlow (ASIC, CPU, GPU)
  • TensorFlow Lite (CPU)
  • TensorRT (GPU)

での結果がありました。

Furiosaって何?

結果の Inf-0.5-36 と Inf-0.5-37 に、FuriosaAI/furiosa-single-fpga, furiosa-multi-fpga というのがあって、 furiosa-single-fpgaではホストはIntel(R) Core(TM) i3-7100、furiosa-multi-fpga ではホストはIntel(R) Xeon(R) CPU E5-2620 v4 @ 2.10GHzで、アクセラレータ名はRenegade、SoftwareはFuriosaRuntime/TensorflowLite とあります。

TensorFlow Liteなんですね。

Furiosaって、LinkedInによると韓国の会社なんですか?

 

そんでもって、32x Cloud TPU v3 の  ImageNet ( ResNet-50 v1.5 ) の Offline で、1,038,510.00 というのがあるんですが、これって、こんなに処理する必要あるのかな?ただの、凄いだろ?って感じ。。。