@Vengineerの戯言 : Twitter
SystemVerilogの世界へようこそ、すべては、SystemC v0.9公開から始まった
PyTorch 1.3 にて、PyTorch Mobileが入ったみたい
PyTorchのモデルを量子化し、JITコンパイルしてファイルに書き出し、そのファイルをAndroid(MAVEN)、iOS(COCOAPADS)で読み込んで使うみたい。
TensorFlowでは、TensorFlow Liteにて、AndroidとiOS だけでなく、Linux環境でも利用できるようにしています。また、TensorFlow Lite for Microcontroller なるマイコンにも対応しているのに、PyTorch では、PyTorch Mobile つまり、スマホ(Android/iOS)だけに限定しているんでしょうかね。たぶん、Facebookのサービスである Facebook、InstagramなどはスマホとPCがターゲットだからなんでしょうね。そうじゃない環境では、Caffe2を利用するのかな?PyTorch Mobileが出る前は、Caffe2がその役割をしていたようだが、今後はどうなるのだろうか?
Caffe2のサイトに行くと、
This website is being deprecated - Caffe2 is now a part of PyTorch.
While the APIs will continue to work, we encourage you to use the PyTorch APIs.
ということで、いろいろと考えてみました。その時のツイート。
結果的には、このツイートに落ち着きました。
これでCaffe2が捨てられる。Caffe2が必要だったのは、当初、PyTorchでのモデルが少なく、Caffeからの移行が必要だったから。しかしながら、PyTorchは、ディープラーニングフレームワークの 2トップになったので、Caffe を取り込む必要がなくなり、独自に開発できるようになった。という感じですかね。
— Hatenaブログに移行したよ (@Vengineer) October 14, 2019
以下、ツイートの記録
PyTorch 1.3の発表にあったPyTorch Mobile対応が気になる。Caffe2をPyTorch 1.0にて取り込み、推論ではCaffe2を利用するということになったようなんだが、今回(1.3)ではPyTorch Mobile。つまり、Caffe2じゃなくて、PyTorchをMobile用に。https://t.co/avdLp5MAsA
— Hatenaブログに移行したよ (@Vengineer) October 14, 2019
にて、PyTorch 1.0は、2018年5月。
Caffe2 and PyTorch projects are merging. Over the next few months, we’re planning to deeply integrate components of the frameworks and effectively unite them as a single package.
— Hatenaブログに移行したよ (@Vengineer) October 14, 2019
と、Caffe2とPyTorchは統合するとあるんだよね。https://t.co/pTxsZtLPXz
ということは、Caffe2には力を入れないのかな。。。
— Hatenaブログに移行したよ (@Vengineer) October 14, 2019
This currently experimental feature includes support for post-training quantization, dynamic quantization, and quantization-aware training.
とありますね。
これ、完全に、TensorFlow Lite 対抗ですね。
いや、違う。。。その後に、
— Hatenaブログに移行したよ (@Vengineer) October 14, 2019
PYTORCH MOBILE (EXPERIMENTAL)
があるので、QUANTIZATION (EXPERIMENTAL)は量子化。PyTorch Mobileは別か。。。
QNNPACKは、Pytorch内に取り込まれていますね。https://t.co/AtAYDEF3XH
— Hatenaブログに移行したよ (@Vengineer) October 14, 2019
Forkされています。https://t.co/gPJ1l64LUW
The goal of the project is to integrate QNNPACK library with PyTorch to achieve good performance for quantized mobile models.
— Hatenaブログに移行したよ (@Vengineer) October 14, 2019
とありますね。https://t.co/AqYzs3CcRf
Quantizedの中を見ると、
— Hatenaブログに移行したよ (@Vengineer) October 14, 2019
・CPU
・CUDA
しかないね。
Mobile用のGPU対応はまだなのかな?https://t.co/VzfOQSNePO
STATIC QUANTIZATION WITH EAGER MODE IN PYTORCHhttps://t.co/mCZNjI5kCv
— Hatenaブログに移行したよ (@Vengineer) October 14, 2019
というのがあるね。
TensorFlow LiteでもEager Modeはサポートしているようなので、PyTorchでもサポートしたって感じなのかな?
といっても、Eager ModeはPyTorchの方が先だけどね。
Googleの中の人の論文(White Paper)、知らなかった。
— Hatenaブログに移行したよ (@Vengineer) October 14, 2019
Quantizing deep convolutional networks for efficient inference: A whitepaperhttps://t.co/9v5Z3ZlbnU
GoogleのKeras/TensorFlow/TensorFlow Lite
— Hatenaブログに移行したよ (@Vengineer) October 14, 2019
の対抗として、
FacebookのPyTorch/Caffe2をPyTorch/PyTorch Mobileに移行してきた感じですが、どうなんでしょうね?
推論用にGlowを開発していますが、
GlowはEdge側ではなく、Cloud側なんですよね。
とはいっても、Facebook は PC と スマホへの広告ビジネスで収益を上げているので、Edge / IoT をやる意味はないんだよね。Googleのように、Facebook はクラウドビジネスをやっていないんだから。
— Hatenaブログに移行したよ (@Vengineer) October 14, 2019
となると、広告ビジネスが成り立たないときが、Facebookの終了の時となっちゃうね。
これ、Mobileじゃなくて、たぶん、PCだよね。
— Hatenaブログに移行したよ (@Vengineer) October 14, 2019
Mobileなら、OpenGLESになるので。
つまり、PyTorch Mobile では、CPUがメイン。
GPUはこれからだね。
ただし、Android では、OpenGLES 2.x/3.x, Vulkan, OpenCLといろいろあるし、iOS も対応しないといけない。
これをやるかどうかかな。
STATIC QUANTIZATION WITH EAGER MODE IN PYTORCH
— Hatenaブログに移行したよ (@Vengineer) October 14, 2019
・Dynamic quantization
・Post-training static quantization
・Quantization-aware traininghttps://t.co/fXUJQVIJgY
2番目と3番目については、下記のGoogleの中の人の論文(White Paper)に詳しく書いてありますね。https://t.co/noQ1VlAGae