SE Can't Code

A Tokyo based Software Engineer. Not System Engineer :(

TensorFlow whitepaper、読んだ.

一応仕事で機械学習を扱ってるエンジニアなんだけど、TensorFlowについては全く触っていなくて、なんとなく去年あたりから世間が騒いでいたのと、機械学習の分野でトップに君臨している(と思われる)Googleが作ったということで、かなり凄いんだな、という印象だけを持っていた。普段から職場で「エンジニアたるもの最新の技術は追うべし」とか周りの同僚に言ってたりする手前、TensorFlow知らないのはダサいなと思い、ようやくwhitepaperを読んだ。

http://download.tensorflow.org/paper/whitepaper2015.pdf

TensorFlow、こいつの正体を一言で表すとテンソルに特化したデータフロー・プログラミングの分散実行処理系だった。扱うデータはオンメモリで、グラフ上で隣接するノードを同じプロセスの中で計算し、あふれた部分は別プロセスや別マシンに移してしまう、というところとかが、MapReduceとかとは大きく違う。DeepLearnigのデータフローを分散処理系で扱いたい、というのがモチベーションみたいで、それを実現するための工夫が施されている。たとえば、バイナリをクラスタに配布する必要はなく、そこはTensorFlowがよろしくやってくれたりする、とかね。


うん、なんとなくだが、Googleぐらいのインフラ環境、大規模データが必要条件な気がする。処理速度のベンチマークを見る限り、それ以外はあまり使っても旨みがないんじゃないか。だから機械学習、というよりデータフロー・プログラミングの特色が強い気がしていて、どちらかというと、インフラエンジニアリング寄りの分野じゃないのかな、と個人的に思った。僕はまだDeepLearnigを触ったことがないので、いまいちここら辺の機械学習のデータフローはイメージ出来ないが、機械学習周りの分散実行処理系って凄まじく複雑な領域なんだろうな、と勝手に想像している。そしてTensorFlowはその複雑性を抽象化することが主目的なんじゃないのかとこれもまた勝手に想像した。

今後の話で、個人的にどこに力を入れて勉強していくかを悩んでいたけれど、機械学習系のデータフロー・プログラミングをやっていくのは面白そう。これから先、機械学習アルゴリズムをプロダクトに取り込むぜ、ってなるとこの分野の需要ってかなりあるんじゃないか、とかとか思ったりして、また興味の範囲が広がっていてヤバい。いやー面白いなぁ。

Remove all ads