Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
Ruby のデータサイエンス事情
Search
Kenta Murata
December 10, 2017
Technology
2
550
Ruby のデータサイエンス事情
Dive into Code 「Ruby on Rails 最新動向と教え方のノウハウとキャリア」
Kenta Murata
December 10, 2017
Tweet
Share
More Decks by Kenta Murata
See All by Kenta Murata
waitany と waitall を作った話
mrkn
0
160
HolidayJp.jl を作りました
mrkn
0
170
Calling Julia functions from Streamlit applications
mrkn
1
390
Red Data Tools で切り開く Ruby の未来
mrkn
3
1.1k
Method-based JIT compilation by transpiling to Julia
mrkn
0
6.9k
Apache Arrow C++ Datasets
mrkn
4
1.5k
Reducing ActiveRecord memory consumption using Apache Arrow
mrkn
0
1.6k
RubyData and Rails
mrkn
0
3k
Tensor and Arrow
mrkn
0
910
Other Decks in Technology
See All in Technology
マイクロサービスにおける容易なトランザクション管理に向けて
scalar
0
130
alecthomas/kong はいいぞ / kamakura.go#7
fujiwara3
1
300
継続的にアウトカムを生み出し ビジネスにつなげる、 戦略と運営に対するタイミーのQUEST(探求)
zigorou
0
540
どちらを使う?GitHub or Azure DevOps Ver. 24H2
kkamegawa
0
790
AI時代のデータセンターネットワーク
lycorptech_jp
PRO
1
290
DUSt3R, MASt3R, MASt3R-SfM にみる3D基盤モデル
spatial_ai_network
2
120
Storage Browser for Amazon S3
miu_crescent
1
150
社内イベント管理システムを1週間でAKSからACAに移行した話し
shingo_kawahara
0
190
日本版とグローバル版のモバイルアプリ統合の開発の裏側と今後の展望
miichan
1
130
サーバレスアプリ開発者向けアップデートをキャッチアップしてきた #AWSreInvent #regrowth_fuk
drumnistnakano
0
190
Oracle Cloudの生成AIサービスって実際どこまで使えるの? エンジニア目線で試してみた
minorun365
PRO
4
280
レンジャーシステムズ | 会社紹介(採用ピッチ)
rssytems
0
150
Featured
See All Featured
Speed Design
sergeychernyshev
25
670
Build The Right Thing And Hit Your Dates
maggiecrowley
33
2.4k
Java REST API Framework Comparison - PWX 2021
mraible
28
8.3k
Adopting Sorbet at Scale
ufuk
73
9.1k
Writing Fast Ruby
sferik
628
61k
Bash Introduction
62gerente
608
210k
Put a Button on it: Removing Barriers to Going Fast.
kastner
59
3.6k
VelocityConf: Rendering Performance Case Studies
addyosmani
326
24k
Learning to Love Humans: Emotional Interface Design
aarron
273
40k
How STYLIGHT went responsive
nonsquared
95
5.2k
The MySQL Ecosystem @ GitHub 2015
samlambert
250
12k
We Have a Design System, Now What?
morganepeng
51
7.3k
Transcript
Ruby のデータサイエンス事情 Kenta Murata, Speee Inc. 開発部 R&D グループ Sun,
Dec 10, 2017 Dive into Code 「Ruby on Rails 最新動向と教え方のノウハウとキャリア」 1 / 43
self . introduction Kenta Murata (@mrkn) Full-time CRuby committer at
Speee Inc. CRuby The maintainer of bigdecimal Other OSS pycall.rb, mxnet.rb, enumerable-statistics, vim-cruby Hobby Playing with my daughter Studying Mathematics, Physics, Computer Science Reading SF novels 2 / 43
Contents はじめに データサイエンス Ruby のデータサイエンスへの対応状況 アプリケーションの構築パターン 将来の展望 まとめ 付録 3
/ 43
はじめに Introduction 4 / 43
現在、Ruby のデータサイエンス対応は過渡期です。 本日は、Ruby で書かれたアプリケーションでデータ活用技術 を利用するためのパターンを説明します。 また、データサイエンス分野において Ruby コミュニティー内 にどんなプロジェクトが存在し、それぞれどのような特徴があ るかを紹介します。
みなさんは、ぜひどこかのプロジェクトに参加していただき、 Ruby のデータサイエンス対応を加速する当事者になっていた だきたいです。 5 / 43
データサイエンス Data science 6 / 43
データサイエンス お仕事 における問題を解決するために 数学 と 統計学 を使うこと 7 / 43
データサイエンスのサイクル 何らかの取り組み ( 実験や事業など) からデータを収集する 蓄積されたデータから がんばって 知識を取り出す データから取り出した知識に基づいて、取り組みの内容を微調整する 取り組みが成功するまで上記を繰り返す
8 / 43
データサイエンスのための要素技術 数値配列、科学計算基盤 並列計算基盤、分散処理基盤、並列分散DB データフレーム、データ入出力、データ可視化 統計的モデリング、機械学習 9 / 43
データサイエンスにおけるプログラミ ング言語の役割 データ解析アルゴリズムの記述 データ解析作業時のプログラミング アプリケーションの記述 10 / 43
Ruby はアプリケーションの記述が得意 11 / 43
Python は データ解析作業時のプログラミングと アプリケーション記述の両方が得意 12 / 43
Ruby も Python のように データ解析作業時のプログラミング も得意になると嬉しい 13 / 43
Ruby のデータサイエンスへの 対応状況 14 / 43
3 つの主要プロジェクト SciRuby Ruby Numo Red Data Tools 他言語とのブリッジ pycall
15 / 43
SciRuby NMatrix を中心とする科学技術計算用 gem 群 海外で最も有名な Ruby の科学技術計算ライブラリ群 発起人たちは最近は全く開発しておらず、GSOC のプロジェクトで学生が
色々作っているものの寄せ集め状態になっている 一部の基本演算が遅いバグがある 16 / 43
Ruby Numo Numo::NArray を中心とする科学技術計算用 gem 群 元祖 NArray の作者である田中昌宏さんが発起人であり開発の中心にいる RubyKaigi
でも発表されていて、日本ではそこそこ知られていると思う 海外ではあまり知られていない (?) 17 / 43
SciRuby と Ruby Numo でできること データフレームライブラリ Daru が NMatrix に対応している
[HELP] 誰か Numo::NArray にも対応させてください 科学技術計算用の基礎関数群 GSL のバインディングが SciRuby と Ruby Numo のそれぞれに対して 存在する 可視化 Gnuplot を使うライブラリが SciRuby と Ruby Numo のそれぞれに対 して存在する rbplotly が両方に対応している ( はず) 18 / 43
Red Data Tools project Apache Arrow を中心としたデータツールエコシステムの Ruby 版 須藤さんが立ち上げた
須藤さんは Apache Arrow の PMC にもなった Red Chainer など、Apache Arrow とは直接関係ない派生プロダクトの開 発も始まっている おそらく関係者は全員が日本人である 毎月「OSS Gate 東京ミートアップ for Red Data Tools 」で開発が進められ ている 12/19 のミートアップの案内を後でします 19 / 43
主要プロジェクト間の関係 20 / 43
他言語とのブリッジ Ruby から他の言語のライブラリを呼び出す仕組み 現在 pycall が Python とのブリッジを提供している 今後は R,
Julia, Stan など対応言語を増やしていく計画がある 21 / 43
pycall Ruby から Python のライブラリを呼び出せる Ruby と同じプロセス内で Python インタープリタを初期化し呼び出す 一緒に開発してくれる、Ruby
と Python の両方に詳しい人も募集してます 22 / 43
RubyData Workshop in RubyKaigi 2017 RubyKaigi 2017 (2017 年9 月)
で開催したワークショップ pycall の仕組みと使い方のデモンストレーションを実施した Red Data Tools のデモンストレーションも実施した 当時使用した Jupyter notebook が github のリポジトリにある https://github.com/RubyData/rubykaigi2017 23 / 43
Docker image to try data tools for Ruby Ruby でデータを扱う最新の環境を簡単に試せる
Docker イメージを作ってあ る。 $ docker run -it --rm -p 8888:8888 -v $(pwd):/home/jovyan/work rubydata/notebooks 24 / 43
アプリケーション 構築パターン 25 / 43
Ruby とPython/R を同時に使う必要がある データサイエンティストの能力を最大限に発揮させるには Python や R が 現在の最良の選択肢である データサイエンティストは探索的データ解析のために、pandas
や scik- it-learn などの枯れた標準ツールの能力が必要になる ほぼすべてのデータサイエンティストは仕事で Ruby を使いたがらない ( ∵ 使い慣れてないから) 一方で、Ruby と Ruby on Rails はウェブアプリケーションを作る場合に最 良な選択肢である 26 / 43
3 種類の実装パターンがある Python で書かれたデータ処理系と Ruby で書かれたアプリケーションを統合 する3 つの実装パターン: 1. 同じデータベースを両方から直接参照する
2. データを JSON などで直列化して RPC ( 遠隔手続き呼び出し) する 3. pycall を利用してデータ処理系を直接呼び出す 27 / 43
1. 同じ DB を両方から参照する 28 / 43
2. JSON 直列化による RPC 29 / 43
3. pycall による直接的な呼び出し 30 / 43
状況に応じて適切なパターンを選択 1. 同じデータベースを両方から直接参照する 2. データを JSON などで直列化して RPC ( 遠隔手続き呼び出し)
する 3. pycall を利用してデータ処理系を直接呼び出す 組織の構造・規模、アプリケーションの立ち位置などの状況に 応じて適切な選択肢は変化する。 31 / 43
将来の展望 32 / 43
将来について3 点 Apache Arrow と Red Data Tools GPGPU Deep
Learning 33 / 43
Apache Arrow と Red Data Tools Apache Arrow は将来、ほとんどのデータツールのコアに採用される Pandas
2.0 のコアになることが決定済み (Apache Arrow の存在理由) PySpark が Spark (Scala) と Python 間のデータ交換に Apache Arrow を採用済み Red Data Tools は Ruby のデータ・エコシステムの将来にとって最重要で ある Apache Arrow に興味があるなら、Red Data Tools に参画すべし!! https://red-data-tools.github.io/ 34 / 43
GPGPU ArrayFire (@prasunanand 作) が既に GPGPU (CUDA と OpenCL) に対応
している @prasunanand さんが Ruby アソシエーションの今年の開発助成で RbCU- DA を開発中 CUDA のランタイムライブラリの Ruby バインディングを開発するプロ ジェクト @sonots さんが、同じ開発助成の別プロジェクトとして Cumo を開発中 Chainer が利用している CuPy を Numo NArray 向けに移植するプロジ ェクト 35 / 43
Deep Learning Tensorflow.rb (@Arafatk 作) が既にあって、Tensorflow を Ruby から直 接使える!
しかし Tensorflow の API は低レイヤーすぎて面倒なので Keras のよう な高レイヤー API も欲しい Red Data Tools 内で、@hatappi さん他が Red Chainer を開発中 Chainer の移植プロジェクト MXNet の Ruby バインディングを私が開発中 3 月の沖縄 Ruby 会議 02 で披露したい 36 / 43
まとめ 37 / 43
Conclusion Ruby でデータを扱う際に鍵となる 3 大プロジェクトを紹介した Ruby と他言語のブリッジとして pycall を紹介した Ruby
でデータサイエンスをするための最新環境を試せる Docker イメージ を紹介した Ruby で書かれたアプリケーションと Python で書かれたデータ処理系を統 合する3 つのパターンを紹介した Ruby のデータサイエンスにおける将来の展望について述べた 38 / 43
Docker image to try data tools for Ruby Ruby でデータを扱う最新の環境を簡単に試せる
Docker イメージを作ってあ る。 $ docker run -it --rm -p 8888:8888 -v $(pwd):/home/jovyan/work rubydata/notebooks 39 / 43
みなさんが今すぐできること 1. 使ってみてバグ報告 2. 利用者が増えるようなブログ記事を書く ( やってみた系) 3. 既存のライブラリにプルリクを送って自ら開発に参加する 4.
開発者が増えるようなブログ記事を書く ( 開発環境を作る、コードを読んで みた系) 5. 日本国内に閉じてるプロダクトを海外向けに英語で紹介する 6. OSS Gate for Red Data Tools に参加して他の開発者と交流する 7. RubyData の運営チームに入って得意なことをやる 40 / 43
RubyData organization SciRuby 、Ruby Numo 、Red Data Tools 、など複数のプロジェクトに人が 分散している現状は、純粋な利用者が戸惑いやすい
プロジェクトに関係なく、Ruby とデータツールを組み合わせて使おうとし ている人が集まって情報交換ができる場が必要だろう というわけで、私が作り始めました http://ruby-data.org/ まだランディングページしかない!! 41 / 43
RubyData needs helps!! 以下のような人を募集してます コミュニティ運営 ( 人の集まりを制御すること) が得意な人 ( 私
mrkn が 一番不得意なこと) AWS に詳しい人 (discourse の立ち上げと運営を手伝って欲しい) 自然言語での継続的な情報発信が得意な人 ( 「Ruby でデータサイエン ス」的な情報発信をスケールさせたい) 英語が得意な人 ( 僕たちの変な英語を直して欲しい) docker-stacks の維持と発展を積極的にやってくれる人 42 / 43
OSS Gate for Red Data Tools in Speee 2017.12.19 Red
Data Tools プロジェクトの開発者が集まります。 場所: 六本木4-1-4 黒崎ビル 5F Speee Inc. セミナールーム 時間: 2017 年12 月19 日 19:00 開場 19:30 開始 https://speee.connpass.com/event/72926/ 43 / 43