@Scale 2017

IMG_20170831_094732

行ってきた。前は FB 社でやっていたのを今回は WWDC と同じ会場。こんなイベントをタダでやられてしまったら O'Reilly とか商売上がったりだね。Facebook の景気の良さを感じる。しかも最近は近隣の会社を巻き込んでいるらしく、他社の人が司会をしているトラックもあった。えらい。

おおむね ML track に張り付いていた。内容は hit and miss. Miss の方からいくと...

まず NVIDIA の talk はおおむね宣伝だった。ただ inference と training では違う GPU を使うといいよ、どうせ inference は batch size が小さいからね。などという話は、気にしたことがなかったけれど言われてみればそうだと思った。あと Volta はなかなか速そうだった。あと話しに来ていた NVIDIA の偉い人 Robert Ober が Volta の実物を片手に「こいつはまじ速いんだぜ」と語る様子は愛が伝わってきてよかった。

Qualcomm の talk は概ねどころか完全に宣伝。しかも hand waving の割合が高く残念だった。Neural Processing Engine というライブラリとツールをつくっていて Qualcomm チップ上で TF や Caffe のモデルを変換の上動かせるよ、というのが主題。でも Qualcomm 自体の宣伝が 8 割くらいで肝心なところがさっと流されておりいまいち。

Google の人による TensorFlow の talk. 知ってる話ばかりでいまいち。だけどまあ、もともとそれなりにフォローしてる話題なのでケチをつけるのはフェアではないと思う。ほんとは違うセッションを見る予定だったんだけど時間割を勘違いしてしまったのだった。

@Scale のようなカンファレンスではベンダーの話はダメという話でありましょう。そういえばそうだった。この文脈では上の TF の Google もライブラリベンダにカウントして良い気がする。

よかったやつら。

Salesforce の AI 部門の人の話。SparkML でクールなライブラリをつくった上に、feature seelction とか evaluation の cycle とかを自動化して datascientist-less な ML プラットホームを作るぜ! それが Einstein だぜ!という話。なんか話してた内容に比べてサイトにある商品はしょぼい気もするが、Salesforce が自社のプラットフォームに ML をつけるのはいい話だしアプローチもまともそうに思えた。Salesforce は PaaS/SaaS として顧客の CRM データなどを握ってしまっているから客が ML したいと思った時に使えるものを用意しておかないと都合が悪いというか、逃げられてしまうのだろうね。一方でデータが手元にある前提で色々なものをデザインできるからある種の serverless みたいのもやりやすいのだろう。いい話じゃん。

Facebook 360 のひと。この話この話のまとめ的な内容。ML ではなく Computer Vision が専門の人が DNN をどう捉えているのか垣間見えてよかった。

Facebook の NLP platform のはなし。まえに別の @Scale の talk で facebook.com に post された写真はすべて object recognition などの inference を適用されており production engineer はその結果をメタデータとして好きに使えるという話があった。その NLP 版。投稿テキストは色々解析されてるよ、自分のモデルもたせるよ、という。

Facebook の ML platform は製品にべたっとくっついており、なかの人には使いやすそう。投稿にある画像とかテキストを解析したうえで contextual  に発動する機能やシグナルをちまちま足していくのはまさにスケーラブルな問題だと思うのだよなあ。昨今の FB の異常な売上の伸びと照らしあわせ、ML 絡みでなにか金脈を引き当ててるとしか思えない。完全に conspiracy theory ですが。

微妙だったセッション.

Sandcastle という Facebook 内製 CI の話。その CI が遅かったりスケールしなかったりしたのをなんとかしたよという内容。話がどうこうではなくシステムのデザインが危なっかしい感じでそわそわした。CI なのになぜかクラスタマネージャみたいのを再発明していたり、コンテナとかを使えば良さそうな部分で謎のファイルシステムハックをしていたり。システムもおかしいけれど前提となる要件もおかしい。ビルドをするには 50GB ある monorepo を clone する必要があってそれが遅いだとか、ビルド対象によって必要な依存ツールが違うのでそれを揃えるのが大変とか、なんか前提が色々ヘン。必要なぶんだけ shallow checkout 出来たほうがよくね?ビルド環境もっと統一したほうがよくね?  iOS 向けビルド環境は別でよくね? てか monorepo やめたほうがよくね...? などと思ってしまう。

Google の monorepo も正直そんなによくないと個人的には思っているが、Facebook は使える言語とかの自由度が高いせいでより一層物事を難しくしている感がある。そういう autonomy を許すなら VCS も分けた方がいいのではないかな... 挙句の果てには CI だけでなく CD もしたい (のでクラスタマネージャには geolocational な条件も指定できる)とか CI 環境にログインしてコードをいじれるとか。完全に狂ってる。自分は FB テクノロジに憧れがある方だと自負しているけれども、これは近づきたくないなとおもいました。やはり monorepo 勢はなにかしら狂っているのでコードは git で扱える粒度くらいにしておくのが良いですよ。

Talk 以外に poster session のような展示もあり、そこで Caffe2 がモバイル版 (Caffe2go) のデモをしていた。あれ caffe2go ってオープンソースになってたの?と尋ねると、二週間前に公開したそうな。そして Android 版は OpenGL をバックエンドに使えるという。へー。ただし pixel shader なので matmul はできず  convolution だけのように見える。まあ GPU の conv で小さく畳み込んだ後に CPU で feedforward するのはアリなのかもしれない。とはいえ RNN とか GL じゃ無理そうじゃね?NLP の仲間には GPU は使わない割り切りでいくのだろうか。

あと Snapdragon NPE サポートのコードもあるが、いまいちアーキテクチャ的な整合性がわからん・・・。


そのほか。聴衆に Slack の普及が目についた、近隣の人々が開いている laptop の画面をチラっと見るとだいたい Slack を眺めている。流行ってるなあ。