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
宇宙ベンチャーにおける最近の情シス取り組みについて
axelmizu
0
110
オプトインカメラ:UWB測位を応用したオプトイン型のカメラ計測
matthewlujp
0
170
AWS re:Invent 2024 ふりかえり
kongmingstrap
0
130
DevOps視点でAWS re:invent2024の新サービス・アプデを振り返ってみた
oshanqq
0
180
Amazon Kendra GenAI Index 登場でどう変わる? 評価から学ぶ最適なRAG構成
naoki_0531
0
100
OpenAIの蒸留機能(Model Distillation)を使用して運用中のLLMのコストを削減する取り組み
pharma_x_tech
4
550
re:Invent 2024 Innovation Talks(NET201)で語られた大切なこと
shotashiratori
0
300
TSKaigi 2024 の登壇から広がったコミュニティ活動について
tsukuha
0
160
社外コミュニティで学び社内に活かす共に学ぶプロジェクトの実践/backlogworld2024
nishiuma
0
260
LINE Developersプロダクト(LIFF/LINE Login)におけるフロントエンド開発
lycorptech_jp
PRO
0
120
10分で学ぶKubernetesコンテナセキュリティ/10min-k8s-container-sec
mochizuki875
3
330
Microsoft Azure全冠になってみた ~アレを使い倒した者が試験を制す!?~/Obtained all Microsoft Azure certifications Those who use "that" to the full will win the exam! ?
yuj1osm
2
110
Featured
See All Featured
Speed Design
sergeychernyshev
25
670
Fontdeck: Realign not Redesign
paulrobertlloyd
82
5.3k
Designing Experiences People Love
moore
138
23k
XXLCSS - How to scale CSS and keep your sanity
sugarenia
247
1.3M
Templates, Plugins, & Blocks: Oh My! Creating the theme that thinks of everything
marktimemedia
28
2.1k
What's in a price? How to price your products and services
michaelherold
243
12k
Measuring & Analyzing Core Web Vitals
bluesmoon
4
170
A designer walks into a library…
pauljervisheath
204
24k
Raft: Consensus for Rubyists
vanstee
137
6.7k
The Psychology of Web Performance [Beyond Tellerrand 2023]
tammyeverts
45
2.2k
StorybookのUI Testing Handbookを読んだ
zakiyama
27
5.3k
ReactJS: Keep Simple. Everything can be a component!
pedronauck
665
120k
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