11/17(土)は「RubyData Tokyo Meetup」というミートアップに参加してきました。
会場は株式会社Speeeさんのラウンジ。写真を見てもらえばわかりますが、メチャ広くて図書館みたいなスペースです。
六本木一丁目駅から5分位の場所なのですが、静かで良い場所ですね。こんな場所で仕事してみたい(笑)
美味しいコーヒーも提供され、リラックスして参加できました。
コーヒー☕、頂きました。美味しい。😀 #RubyData_tokyo pic.twitter.com/wXTCpeGaTE
— kabukawa (@kabukawa) November 17, 2018
RubyData Tokyo Meetupとは
RubyData Tokyo Meetupについてはイベントページの説明を引用すると
データサイエンスの分野でRubyが無力な状態を変えるため、環境整備に尽力している開発者に現在までの取り組みの状況と、 現時点でRubyでできることを紹介いただくことで、Rubyの可能性を知って貰う機会にしたいと思います。
Rubyで機械学習などをできるようにする意欲的な取り組みなのですが、こういうことをされているというのは確か今年の3月に行われたRuby 25というイベントでのブースだった気がします(確か)。当時は「大変なことをしているんだな」という感覚しかありませんでした。しかしその後、Red Data Toolsという名前でConnpass上でも勉強会が継続的に行われていることを知って、こういう活動が続いていることもすごいと思うし、こうやってその成果の紹介をするイベントまで開かれるということで、これは面白そうと思って参加しました。
尚、Red Data Toolsの方は2週間おきくらいにミートアップを開かれているようです。
OSS Gate東京ミートアップ for Red Data Tools in Speee speee.connpass.com
開発に興味のある方は参加してみてはいかがでしょうか!
スケジュール
1セッション25分ずつで内容盛りだくさんでしたが、どのセッションもオンスケで進んでいました。
時間 | 内容 |
---|---|
13:00 | 受付開始 |
13:30 | オープニング、運営よりご連絡 |
13:35 | 村田 賢太「Rubyのデータサイエンス対応への取り組みの現状と将来の展望について」 |
14:00 | 須藤 功平「Apache Arrow」 |
14:25 | 5分休憩 |
14:30 | 城 陽介「Apache Arrowコミッタになるまでの軌跡」 |
14:55 | 畑中 悠作「Red Chainerをなぜ作って今後どうするのか」 |
15:20 | 10分休憩 |
15:30 | 瀬尾 直利「Introduction to Cumo, a CUDA aware numerical library for Ruby」 |
15:55 | Sameer Deshmukh「XND and rubyplot - future of typed arrays and visualization in Ruby.」 |
16:20 | 5分休憩 |
16:25 | 三好 邦彦「Menoh-Rubyで始めるお手軽簡単なDNN推論アプリ」 |
16:50 | 内藤 淳「Usability of Numo::NArray in Numerical Computing of Ruby.」 |
17:15 | 10分休憩(場面転換) |
17:25 | コード懇親会 |
19:00 | 解散 |
参加してみて
初めて聞く話が多かったのですが、皆さんスムーズに話を進められており、とても聞きやすかったです。
はじまりました!
— kabukawa (@kabukawa) November 17, 2018
#RubyData_tokyo pic.twitter.com/Zc9s8f7Vhk
RubyData Current and Future
村田 賢太(@mrkn) さんの発表。「Rubyのデータサイエンス対応への取り組みの現状と将来の展望について」
RubyData Tokyo Meetup が始まりました(^^)/ #RubyData_tokyo #speee_lounge pic.twitter.com/tvMWaodnRh
— Speee Developer team (@speee_pr) November 17, 2018
全体の状況を分かりやすくまとめて紹介している内容でした。初めて参加したので、こうやって状況を始めに話してもらえると
- 現状
- キーコンポーネント
- 将来像
が非常によく分かって、その後のセッションの内容が頭に入りやすかったのでありがたかったです。
Apache Arrow
須藤 功平(@ktou) さんの発表。
「Apache Arrow」コミッターでもある須藤さんの講演中! #RubyData_tokyo #speee_lounge pic.twitter.com/NxzhRPDDwG
— Speee Developer team (@speee_pr) November 17, 2018
Apache Arrowは今注目されているインメモリー データ処理 プラットフォームで、様々な言語から呼び出して使えるように開発が続けられています。 最初にApache Arrowの事を知ったのは、1年くらい前に Pythonの勉強会で聞いたSparkを呼び出すためのPySparkというライブラリの説明の中でです。
データ連携時には
という手順を踏むことになるのですが、この過程でフォーマット変換やデータコピー、復元のためのパース処理などが行われ、これが特に大量データの処理においてパフォーマンスの劣化を引き起こしていました。これを解決するための生まれたのがApache Arrowで、以下の3点を目標に開発が進められています。
- 効率的なデータ交換
- 各種言語で使えること
- 速いこと
現代のアプリケーションは1つの言語でモノリシックに作られていることは無いですから、こういうコンポーネントが使えるようになると各機能をつなぐパイプのようなものとして非常に大事な機能になってくると思います。その話をコミッタの方から直接伺えるというのは、とてもありがたいことですし非常に面白かったです。
Arrowがシェルのパイプみたいな位置づけになってくれるといいなぁ。
— kabukawa (@kabukawa) November 17, 2018
#RubyData_tokyo
非常に興味深い話がたくさんありますので、詳しくは資料を読んでみてください。
Apache ArrowについてはSpeeeさんで来月Meetupも開かれる予定のようですので、興味のある方は是非。(まだ空きがあるようです) speee.connpass.com
Apache Arrowコミッタになるまでの軌跡
城 陽介(@shiro615) さんによる発表。
[資料がアップロードされたら追加]
城 陽介さんがApache Arrowのコミッターになるまでの軌跡についてお話しています #RubyData_tokyo #speee_lounge pic.twitter.com/seFar1tmX5
— Speee Developer team (@speee_pr) November 17, 2018
Red Data Toolsに参加してApache Arrowコミッタになるまでのお話。OSS活動はどうやって始めればいいかとかよく分からないので躊躇してしまうのですが、一歩前に踏み出してみることでApache Arrowコミッタにまでなれるというのは、すごいなぁと思います。実際にどういった事をしているかも話されていて、興味深く聞きました。
Red Chainerをなぜ作って今後どうするのか
畑中 悠作(@hatappi) さんの発表。
既にご本人がブログを書かれていますので、リンクを貼っておきます。 blog.hatappi.me
機械学習のフレームワークであるChainerをRubyで再実装しているお話。
- Red Chainerの特徴
- Red Chainerの歴史
- 今後やりたいこと
という流れでお話を聞いたのですが、なぜRed Data Toolsに参加しようと思ったか、なぜRed Chainerを作ろうと思ったのかというところと
なぜ参加しようと思ったかは覚えていない
— kabukawa (@kabukawa) November 17, 2018
たしか面白そう!と思ったから。
なぜ作ろうと思ったかは覚えていない
たしか面白そう!と思ったから。
面白そう、と思ってできるのが凄い。
#rubydata_tokyo
まとめに出てきた
「今後もおもしろドリブンで開発していきたい」
— kabukawa (@kabukawa) November 17, 2018
「楽しい」を成果に変えていくの、素晴らしい!
#rubydata_tokyo
という言葉が印象的でした。楽しみながら開発をしているというのが良いですよね!
Red Chainerhttps://t.co/UKIQvuEEF9
— kabukawa (@kabukawa) November 17, 2018
#rubydata_tokyo
ONNXhttps://t.co/vY0SvR5T5M
— kabukawa (@kabukawa) November 17, 2018
#rubydata_tokyo
Introduction to Cumo and integration to Red Chainet
瀬尾 直利(@sonots) さんの発表。
@sonots さんが今日のために @hatappi が作成しているRed Chainer への Cumo のインテグレーションを作成してきたようです!@hatappi はPRのレビュー頑張ってください!#RubyData_tokyo #speee_lounge pic.twitter.com/t6gk0mjjdx
— Speee Developer team (@speee_pr) November 17, 2018
CumoというのはRuby/Numo(NUmerical MOdule)のGPU(NVIDIAのCUDA)対応版の実装です。NUMOとインターフェースを合わせることでNumoのコードを簡単にCumo対応にできるような設計になっているとのことです。元々はCumo自体についてのお話をされる予定だったようですが、Red Chainerの話に合わせて、Red Chainerとの連携という内容に変更されたということでした。
Red Chainerの数値計算部分の処理を NumoからCumoに変更するだけで75倍(!?)高速化されるらしいです。すごい。
その後は、Red Chainerから使いやすくするためのインターフェース設計やバックエンドの実装と、実装予定の機能などについてお話を伺いました。 ちょっと実装寄りの話が多かったですが、ライブラリの設計や実装の話を聞く機会があまりないので、とても楽しく聞くことができました。
コードを見ながら相談中? #RubyData_tokyo pic.twitter.com/L93JmnckkW
— kabukawa (@kabukawa) November 17, 2018
CUMOhttps://t.co/UaZVppHC8R
— kabukawa (@kabukawa) November 17, 2018
#rubydata_tokyo
XND and rubyplot - future of typed arrays and visualization in Ruby.
Sameer Deshmukh(@v0dro)さんの発表。
[資料がアップロードされたら追加]
@v0dro さんがXNDとRubyplotについてお話ししています #RubyData_tokyo #speee_lounge pic.twitter.com/25fmMTBWIm
— Speee Developer team (@speee_pr) November 17, 2018
XNDとRubyplotについてのお話。英語でのセッションでしたが、とても聞き取りやすくなんとかついていくことができました(汗)
はじめに、低レベルのライブラリと高水準インターフェースへのNumPy機能のリファクタリングであるPlures (Xnd)と、そのRubyラッパーであるplures-rubyのお話。
続いては、可視化のためのプロットライブラリであるRubyplotの話。
RubyPlothttps://t.co/UmMtLQnraU
— kabukawa (@kabukawa) November 17, 2018
#rubydata_tokyo
どちらもデータ処理をする上での基本的な機能を提供するものであり、こういったものを作られているSameer Deshmukh(@v0dro)はすごいですし、ありがたいと思います。 実際に使うデモとか、見てみたかったなぁ。。
Menoh-Rubyで始めるお手軽簡単なDNN推論アプリ
三好 邦彦(@colspan) さんの発表。
www.slideshare.net
#RubyData_tokyo
— kabukawa (@kabukawa) November 17, 2018
「Menoh-Rubyで始めるお手軽簡単なDNN推論アプリ」
三好 邦彦さん
はじまりました! pic.twitter.com/1hOx009UX2
複数のプログラミング言語をサポートする高速DNN推論ライブラリであるmenohと、そのRubyラッパーであるmenoh-rubyについてのお話。
DLにおける推論とは何か
- 学習済みのモデルを使ってForwardの計算を行うこと
学習とやることが似ているように見えるが, 実際は推論と学習はかなり別モノ • 人間は学校を背負って会社に行かない
いま推論がアツい
- DeepLearningの知見が十分溜まってきた
- これからはいかに学習させるかだけではなく,
- どうやって推論させて
- どのようにサービスに結びつけるか
が重要になってきている。
ということで、推論ライブラリであるmenohが開発され、注目されているということでした。
面白いのは、ONNXをサポートすることで様々なDLの学習結果をインポートして推論ができるということ。
オープン・ニューラル・ネットワーク・エクスチェンジ(ONNX)は、オープンエコシステムを目指す第一歩です.AI開発者がプロジェクトの進化に合わせて適切なツールを選択できるようにします。 ONNXは、AIモデル用のオープンソース形式を提供します。 これは、拡張可能な計算グラフモデルと、組み込み演算子と標準データ型の定義を定義します。 最初は、推論(評価)に必要な機能に焦点を当てます。
DLは学習には大量のデータと計算リソースが必要ですが、その結果を使った推論にはあまり負荷がかからないので、menohを使うと推論機能をアプリケーションに組み込むことが比較的かんたんに行えるようになる、ということでした。実際に組み込んだデモも行われていて、カメラからの画像(動画)から認識されたものを画面に表示する処理が1台のPCで非常に軽快に行われていたのが印象的でした。(仕組みはスライドを参照してください)
Usability of Numo::NArray in Numerical Computing of Ruby.
内藤 淳(@naitoh) さんの発表。 内藤さんはRedmine.Tokyoという別のコミュニティでお見かけしていたのですが、こういう活動もされていたとは。
www.slideshare.net
@naitoh さんがNumo/NArrayについて講演中! #RubyData_tokyo #speee_lounge pic.twitter.com/of8qNNr2AW
— Speee Developer team (@speee_pr) November 17, 2018
Numo/NArrayについての発表。
Numo :: NArrayは、numpy.ndarayと同様に、多次元の数値データを高速に処理して操作するための数値N次元配列クラスです。このプロジェクトはRuby / NArrayの後継です。
Numo :: NArrayの機能や特徴、使い方とNumPyと比較した性能などについてお話をしていただきました。
一部の機能についてはNumPyより高速であるという測定結果が示されてちょっと驚き。
.@naitoh さんのベンチマークで加算と減算は numo-narray の方が numpy より速い事が判明した!! #RubyData_tokyo pic.twitter.com/2sYW6klF4G
— みょうが (@mrkn) November 17, 2018
今後改善して欲しい/したい点として
- 演算処理の高速化・最適化
- Arrayとの操作性の違いの改善
- メソッド別のドキュメント不足解消
ということを挙げられていました。
コード懇親会
初めてコード懇親会というものにも参加しました。コード懇親会って何よ?という方はこちらを参照してみてください。
コードで懇親する、ということでちょっとドキドキしたのですが、コードを書くというよりはコードを肴に飲んだりして懇親する、というイメージですかね。 実は僕の参加したテーブルではコードと言うよりは話された内容について発表者の方とワイワイ話したりしていたのですが、普通のネットワーキングタイムとしての懇親会より楽しかったです。
発表のあとはコードで懇親会!! #RubyData_tokyo pic.twitter.com/vK9fPKLrxy
— Speee Developer team (@speee_pr) November 17, 2018
まとめ
今回初めてRubyData Tokyo Meetupに参加しました。 RubyData Tokyo Meetup自体が1回目なのでみんな初めてだったんじゃないか、というツッコミは無しの方向で。 機械学習などの分野ではRubyが最近元気ないなという印象でしたが、実際にはそんなことはなくて、こうして新しい取り組みもたくさん行われています。 色々な勉強会に行っていて思うのは「単に知らないだけ」というのは結構多いなぁということです。 そんな中で、こうして実際に活動をされている方が発表する話を聞けるのは素晴らしいですし、非常に有意義な時間を過ごすことができました。
今日はとても有意義な時間を過ごすことができました。どの発表者の方も(本当は大変なことが多いと思いますが)楽しそうに語られていて、すごく良かったな、と思いました。参加できて良かったです。
— kabukawa (@kabukawa) November 17, 2018
登壇者、スタッフ、参加者の皆様、ありがとうこいました、! #RubyData_tokyo
こういう場を提供されているSpeeeさんにも感謝したいと思います。 本当にありがとうございました。
休憩時間中。 #RubyData_tokyo pic.twitter.com/NfOCzwoVij
— kabukawa (@kabukawa) November 17, 2018