Above & Beyond

日々のアウトプット記録

RubyData Tokyo Meetup

11/17(土)は「RubyData Tokyo Meetup」というミートアップに参加してきました。

speee.connpass.com

f:id:kabukawa:20181118002632p:plain

会場は株式会社Speeeさんのラウンジ。写真を見てもらえばわかりますが、メチャ広くて図書館みたいなスペースです。

f:id:kabukawa:20181117130329j:plain f:id:kabukawa:20181117130341j:plain

六本木一丁目駅から5分位の場所なのですが、静かで良い場所ですね。こんな場所で仕事してみたい(笑)

美味しいコーヒーも提供され、リラックスして参加できました。

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 解散

参加してみて

初めて聞く話が多かったのですが、皆さんスムーズに話を進められており、とても聞きやすかったです。


RubyData Current and Future

村田 賢太(@mrkn) さんの発表。「Rubyのデータサイエンス対応への取り組みの現状と将来の展望について」

speakerdeck.com

全体の状況を分かりやすくまとめて紹介している内容でした。初めて参加したので、こうやって状況を始めに話してもらえると

が非常によく分かって、その後のセッションの内容が頭に入りやすかったのでありがたかったです。

f:id:kabukawa:20181119092333j:plain


Apache Arrow

須藤 功平(@ktou) さんの発表。

www.slideshare.net slide.rabbit-shocker.org

Apache Arrowは今注目されているインメモリー データ処理 プラットフォームで、様々な言語から呼び出して使えるように開発が続けられています。 最初にApache Arrowの事を知ったのは、1年くらい前に Pythonの勉強会で聞いたSparkを呼び出すためのPySparkというライブラリの説明の中でです。

github.com

データ連携時には

という手順を踏むことになるのですが、この過程でフォーマット変換やデータコピー、復元のためのパース処理などが行われ、これが特に大量データの処理においてパフォーマンスの劣化を引き起こしていました。これを解決するための生まれたのがApache Arrowで、以下の3点を目標に開発が進められています。

  1. 効率的なデータ交換
  2. 各種言語で使えること
  3. 速いこと

現代のアプリケーションは1つの言語でモノリシックに作られていることは無いですから、こういうコンポーネントが使えるようになると各機能をつなぐパイプのようなものとして非常に大事な機能になってくると思います。その話をコミッタの方から直接伺えるというのは、とてもありがたいことですし非常に面白かったです。

f:id:kabukawa:20181119092836j:plain

非常に興味深い話がたくさんありますので、詳しくは資料を読んでみてください。

f:id:kabukawa:20181119093037j:plain

Apache ArrowについてはSpeeeさんで来月Meetupも開かれる予定のようですので、興味のある方は是非。(まだ空きがあるようです) speee.connpass.com


Apache Arrowコミッタになるまでの軌跡

城 陽介(@shiro615) さんによる発表。

[資料がアップロードされたら追加]

Red Data Toolsに参加してApache Arrowコミッタになるまでのお話。OSS活動はどうやって始めればいいかとかよく分からないので躊躇してしまうのですが、一歩前に踏み出してみることでApache Arrowコミッタにまでなれるというのは、すごいなぁと思います。実際にどういった事をしているかも話されていて、興味深く聞きました。

f:id:kabukawa:20181119091823p:plain


Red Chainerをなぜ作って今後どうするのか

畑中 悠作(@hatappi) さんの発表。

speakerdeck.com

既にご本人がブログを書かれていますので、リンクを貼っておきます。 blog.hatappi.me

機械学習フレームワークであるChainerをRubyで再実装しているお話。

  • Red Chainerの特徴
  • Red Chainerの歴史
  • 今後やりたいこと

という流れでお話を聞いたのですが、なぜRed Data Toolsに参加しようと思ったか、なぜRed Chainerを作ろうと思ったのかというところと

まとめに出てきた

という言葉が印象的でした。楽しみながら開発をしているというのが良いですよね!


Introduction to Cumo and integration to Red Chainet

瀬尾 直利(@sonots) さんの発表。

speakerdeck.com

CumoというのはRuby/Numo(NUmerical MOdule)のGPU(NVIDIAのCUDA)対応版の実装です。NUMOとインターフェースを合わせることでNumoのコードを簡単にCumo対応にできるような設計になっているとのことです。元々はCumo自体についてのお話をされる予定だったようですが、Red Chainerの話に合わせて、Red Chainerとの連携という内容に変更されたということでした。

Red Chainerの数値計算部分の処理を NumoからCumoに変更するだけで75倍(!?)高速化されるらしいです。すごい。 f:id:kabukawa:20181119095835j:plain

その後は、Red Chainerから使いやすくするためのインターフェース設計やバックエンドの実装と、実装予定の機能などについてお話を伺いました。 ちょっと実装寄りの話が多かったですが、ライブラリの設計や実装の話を聞く機会があまりないので、とても楽しく聞くことができました。


XND and rubyplot - future of typed arrays and visualization in Ruby.

Sameer Deshmukh(@v0dro)さんの発表。

[資料がアップロードされたら追加]

XNDとRubyplotについてのお話。英語でのセッションでしたが、とても聞き取りやすくなんとかついていくことができました(汗)

はじめに、低レベルのライブラリと高水準インターフェースへのNumPy機能のリファクタリングであるPlures (Xnd)と、そのRubyラッパーであるplures-rubyのお話。

github.com github.com

続いては、可視化のためのプロットライブラリであるRubyplotの話。

どちらもデータ処理をする上での基本的な機能を提供するものであり、こういったものを作られているSameer Deshmukh(@v0dro)はすごいですし、ありがたいと思います。 実際に使うデモとか、見てみたかったなぁ。。


Menoh-Rubyで始めるお手軽簡単なDNN推論アプリ

三好 邦彦(@colspan) さんの発表。

www.slideshare.net

複数のプログラミング言語をサポートする高速DNN推論ライブラリであるmenohと、そのRubyラッパーであるmenoh-rubyについてのお話。

github.com github.com

DLにおける推論とは何か

  • 学習済みのモデルを使ってForwardの計算を行うこと

学習とやることが似ているように見えるが, 実際は推論と学習はかなり別モノ • 人間は学校を背負って会社に行かない

いま推論がアツい

  • DeepLearningの知見が十分溜まってきた
  • これからはいかに学習させるかだけではなく,
    • どうやって推論させて
    • どのようにサービスに結びつけるか

が重要になってきている。

ということで、推論ライブラリであるmenohが開発され、注目されているということでした。

面白いのは、ONNXをサポートすることで様々なDLの学習結果をインポートして推論ができるということ。

github.com

オープン・ニューラル・ネットワーク・エクスチェンジ(ONNX)は、オープンエコシステムを目指す第一歩です.AI開発者がプロジェクトの進化に合わせて適切なツールを選択できるようにします。 ONNXは、AIモデル用のオープンソース形式を提供します。 これは、拡張可能な計算グラフモデルと、組み込み演算子と標準データ型の定義を定義します。 最初は、推論(評価)に必要な機能に焦点を当てます。

DLは学習には大量のデータと計算リソースが必要ですが、その結果を使った推論にはあまり負荷がかからないので、menohを使うと推論機能をアプリケーションに組み込むことが比較的かんたんに行えるようになる、ということでした。実際に組み込んだデモも行われていて、カメラからの画像(動画)から認識されたものを画面に表示する処理が1台のPCで非常に軽快に行われていたのが印象的でした。(仕組みはスライドを参照してください)


Usability of Numo::NArray in Numerical Computing of Ruby.

内藤 淳(@naitoh) さんの発表。 内藤さんはRedmine.Tokyoという別のコミュニティでお見かけしていたのですが、こういう活動もされていたとは。

www.slideshare.net

Numo/NArrayについての発表。

Numo :: NArrayは、numpy.ndarayと同様に、多次元の数値データを高速に処理して操作するための数値N次元配列クラスです。このプロジェクトはRuby / NArrayの後継です。

Numo :: NArrayの機能や特徴、使い方とNumPyと比較した性能などについてお話をしていただきました。

f:id:kabukawa:20181119110607j:plain

一部の機能についてはNumPyより高速であるという測定結果が示されてちょっと驚き。

今後改善して欲しい/したい点として

  • 演算処理の高速化・最適化
  • Arrayとの操作性の違いの改善
  • メソッド別のドキュメント不足解消

ということを挙げられていました。


コード懇親会

初めてコード懇親会というものにも参加しました。コード懇親会って何よ?という方はこちらを参照してみてください。

tech.speee.jp

コードで懇親する、ということでちょっとドキドキしたのですが、コードを書くというよりはコードを肴に飲んだりして懇親する、というイメージですかね。 実は僕の参加したテーブルではコードと言うよりは話された内容について発表者の方とワイワイ話したりしていたのですが、普通のネットワーキングタイムとしての懇親会より楽しかったです。

f:id:kabukawa:20181117172833j:plain

まとめ

今回初めてRubyData Tokyo Meetupに参加しました。 RubyData Tokyo Meetup自体が1回目なのでみんな初めてだったんじゃないか、というツッコミは無しの方向で。 機械学習などの分野ではRubyが最近元気ないなという印象でしたが、実際にはそんなことはなくて、こうして新しい取り組みもたくさん行われています。 色々な勉強会に行っていて思うのは「単に知らないだけ」というのは結構多いなぁということです。 そんな中で、こうして実際に活動をされている方が発表する話を聞けるのは素晴らしいですし、非常に有意義な時間を過ごすことができました。

こういう場を提供されているSpeeeさんにも感謝したいと思います。 本当にありがとうございました。