Vengineerの戯言

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

Intel® Agilex™ FPGAsは、凄いね

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

Intelの新しいFPGA AgileXは、EMIBを使っているでも書いた Intel の新しいFPGA AgileX 

OGAWAさんのこのツイートにある「FPGAs for Deep Leaning」の中に、Agilexのことがいろいろ書かれています。

 AgileX

  • 10nm Process
  • Memory-Coherent Intel Xeon Processor Acceleration (CXL:Compute Express Link)
  • Massive Bandwidth (DDR5 & HBM2をEMIBで接続)
  • 3D Integration
  • EMIB経由でIntelのeASICを接続
  • (IntelのeASICって、ASICと何が違う?)
  • 112G/PCIe GEN4
  • DSP(FP32、BFLOAT16、FP16、INT8~INT2)
  • Software Developers (VTune Amplifier & Intel Advisor)

Xeonとの接続は、CXL or PCIe Gen5 

XilinxのACAPとの違いは、IntelはなんといってもXeon(x86)をもっていること!

Intelの強みであり、弱みでもある x86 と一緒に使ってなんぼもののなんだろうか?

 

Software Developers (VTune Amplifier と Intel Advisior)は、x86用なんだけど、

どの部分に利用するのだろうか?

かなり、気になります。 

 

 

How to train new TensorFlow Lite micro speech models

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

 

TensorFlow Lite for Micro Controller がどんどん盛り上がっていますね。

 

Twitterで知った、How to train new TensorFlow Lite micro speech models

Dockerを使って、TensorFlowにて学習して、マイコン(だいたい、Arm Cortex-Mシリーズ搭載)用のTensorFlow Liteのオブジェクト等を生成するまでのステップ。

 

学習は、TensorFlow 1.15 を使っていますね。

tf_nightly-1.15.0.dev20190703-cp27-cp27mu-linux_x86_64.whl

 AVX2を利用できるようにビルドしたものは、

pip install https://tensorflow-ci.intel.com/job/tensorflow-mkl-build-whl-nightly/lastSuccessfulBuild/artifact/tensorflow-1.14.0-cp27-cp27mu-linux_x86_64.whl

を使っていますね。

どうして、Pythonは2.7なんでしょうかね。

 

同じことを Google Colab でできないのでしょうかね?

【機械学習】Tensorflow の学習環境には Colab が便利

に書いてある内容でとりあえず、学習までようですが、bazel は使えるのかな?
インストールすればいいのかな?

 

TensorFlow Lite + Androidで、人のポーズをリアルタイムでトラックできるって。

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

Android + TensorFlow Liteにて、リアルタイムの人のポーズをトラックできるって。

Googleインターンさんがやっているようです。

medium.com

ソースコードも公開されています。

github.com

TensorFlow Liteのモデルは、ここに書いてありますね。

https://storage.googleapis.com/download.tensorflow.org/models/tflite/posenet_mobilenet_v1_100_513x513_multi_kpt_stripped.tflite

 

この記事の最後にある、

On the roadmap
In the future, we hope to explore more features for this sample app, including:
Multi-pose estimation
GPU acceleration with the GPU delegate
NNAPI acceleration with the NNAPI delegate
Post-training quantization of the model to decrease latency
Additional model options, such as the ResNet PoseNet model

 が気になりますね。これ全部できれば、いい感じの教科書って感じに。

 

TensorFlowで学習済みモデル(32ビット)の16ビット量子化をサポート

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

medium.com

にて、TensorFlowの学習済み32ビットモデルを16ビットに量子化できるようになったようですね。TensorFlow Liteのロードマップには、16ビット量子化については書いてないのですがね。

モデルサイズが半分になるのは当たり前だけど、精度劣化も MobileNet V1/V2、MobileNet SSDでは、0.03 %以下だと。このレベルじゃ、誤差範囲じゃないんでしょうか?

16ビット量子化しても残念ながら、Google Edge TPUでは使えません。何故なら、Google Edge TPUは8ビットのみサポートしているので。

16ビット量子化をサポートしているのは、GPU。そう、GPUです。

TensorFlow Liteでは、GPU DeleGate をサポートしたので、その GPU DeleGate で動作するようです。

TensorFlow Lite の GPU DeleGate については、このブログでは下記のように4回書いています。

2019年1月21日のブログ、

vengineer.hatenablog.com

2019年4月2日のブログ、

vengineer.hatenablog.com

2019年4月8日のブログ、

vengineer.hatenablog.com

2019年7月9日のブログ、

vengineer.hatenablog.com

 

TensorFlowのモデルを TensorFlow Lite に変換するとき、

import tensorflow as tf
converter = tf.lite.TFLiteConverter.from_saved_model(saved_model_dir)
converter.optimizations = [tf.lite.Optimize.DEFAULT]
converter.target_spec.supported_types = [tf.lite.constants.FLOAT16]
Tflite_quanit_model = converter.convert()

のようにして、

GPU DeleGate を使うときに、

const TfLiteGpuDelegateOptions options = {
.metadata = NULL,
.compile_options = {
.precision_loss_allowed = 1, // FP16
.preferred_gl_object_type = TFLITE_GL_OBJECT_TYPE_FASTEST,
.dynamic_batch_enabled = 0, // Not fully functional yet
},
};

にオプションを設定すればいいのね。

 

TensorFlow Lite にどんどん機能追加されていきますね。

Intel、Ice Lakeの前に Cooper Lake (14nm)でBFLOAT16をサポート

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

昨日、Ice Lakeのことを書きましたが、今日は、サーバー用XeonのCooper Lake。Cooper Lake、14nmなので PCIe は 3.0 のまま。4.0 は、10nm の Ice Lakeから。

この Cooper Lake なんと、BFLOAT16 をサポート。8ビット量子化での推論用にAVX512_VNNI をサポートした Ice Lake、Cooper Lake では AVX512_BF16 をサポート。ともに、Xeon Phi の Knights Mill でサポートしていたのに何で Ice Lake ではサポートしなかったのだろうか?不思議だ。

www.anandtech.com

そして、リリース時期が Ice Lake の前。。。あれ、そうなると、Ice Lake は BFLOAT16サポートされないままリリースされちゃいますね。

www.anandtech.com

Intel、最近なんかロードマップが後付けって感じになっていますね。

今までは、x86 の上で動く OS (WindowsLinux) だけケアしていればよかったのが、

Deep Learning の世界では x86 は中心ではないですからね。。。

とは言っても、x86 は偉大なんですよ。

強豪のAMDx86互換CPU開発していますからね。

 

Ice Lakeの先の情報は、下記に書いてあって、

wccftech.com

  • Sapphire Rapids、10nm++、DDR5 + PCIe 5.0 (2021)
  • Granite Rapidsm、7nm+?、DDR5 + PCIe 5.0  (2022)

凄いなー。。。

 

Intel、Ice Lake を正式発表

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

Intelがやっと10nmの Ice Lake を正式にアナウンスしましたね。

www.eetimes.com

10nm は、Ice Lake が最初じゃなくて、Cannon Lake が最初なんですね。

ただし、Cannon Lake には GPU が搭載されていないので、外部GPUを付ける必要があります。Cannon Lake については、以下の Anandtech の記事が詳しいです。

www.anandtech.com

Anandtech では、Ice Lake の詳細の記事も書いています。

www.anandtech.com

Ice Lake に搭載されているCPUコア、Sunny Cove についても下記の記事に詳しく書かれています。

www.anandtech.com

Ice Lakeのポイントは、下記の3点かな。

GPUが Gen11 になり、32ユニット、48ユニット、64ユニット

 (48ユニットと64ユニットは、eDRAM付)

AVX-512をサポートして、DL Boost が有効に

CPU側に ThunderBolt ついている

あたしが使っているノートPCは、Core i3-7100U なので、2世代前。

次の買うときは、Ice Lake 搭載ノートPCになるのかな。。。

Ice Lakeは、CPU側とPCH(I/O)が1つのパッケージに載っているんだよね。

また、デスクトップ用が先じゃなくて、ノートPC用が先というのも時代なんだね。

Intelは、サーバー用XeonとノートPC用Core iシリーズ が儲けの源泉なのかしらね?

 

 

 

Intelは、何故?OpenVINO と nGraph をやっているのか?

 

あれ、今日で7月終わり。。。?

 

Intel、Nervana Systemsを買収して学習用チップの開発を進めていて、そのために、nGraph を開発しているんだけど、
一方で、OpenVINO で、CPU/GPU(Intel内蔵GPU)/VPU(Movidius)/FPGA で推論用ツールを提供している。

 

2種類のツールを開発するのって大変なんだろうけど、どうしてかなー、とずーと思っていましたが、

 

Twitterでいつもお世話になっているOGAWAさんのこのツイートにある nGraph のスライドを見て、納得しました。

 

スライドのタイトル:DISTRIBUTED TENSORFLOW TRAINING WITH INTEL NGRAPH LIBRARY ON INTEL XEON SCALABLE PROCESSORS

 

nGRAPHでは、ハードウェアとして、
 ・CPU        (x86-64)
 ・NNP-T     (ちょっと前までは、NNP-L でした)
 ・NNP-I      (Ice Lakeベース+アクセラレータ?)
 ・Intel GPU  (このGPUって、内蔵GPUなのだろうか?)
 ・NVIDIA GPU 
 ・AMD GPU
ただし、GPUに関しては、別途買収したPlaidML経由

 

現時点では、nGraph は、x86-64 CPU専用って感じです。

 

なので、今回のタイトルも XEON SCALABLE PROCESSORS になっているんだと思います。

 

そして、DISTRIBUTED TENSORFLOW TRAININGということで、AllReduce を速くすることについて書いてあります。

 

1つの2Sノード(Xeon Platinum 8180)の性能に対して、16個の2Sノードでは、15.4倍速くなったと。かなりスケールしている。。

 

ということで、OpenVINOはあくまでも推論用エンジンで、nGraphは学習用エンジン。。

 

となると、NNP-I はどうなる?となりますが、NNP-I は、Ice Lakeベースなので、CPUと同じ考えでOKでは?