Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Ruby のデータサイエンス事情

7cca11c5257fda526eeb4b1ada28f904?s=47 Kenta Murata
December 10, 2017

Ruby のデータサイエンス事情

Dive into Code 「Ruby on Rails 最新動向と教え方のノウハウとキャリア」

7cca11c5257fda526eeb4b1ada28f904?s=128

Kenta Murata

December 10, 2017
Tweet

Transcript

  1. Ruby のデータサイエンス事情 Kenta Murata, Speee Inc. 開発部 R&D グループ Sun,

    Dec 10, 2017 Dive into Code 「Ruby on Rails 最新動向と教え方のノウハウとキャリア」 1 / 43
  2. 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
  3. Contents はじめに データサイエンス Ruby のデータサイエンスへの対応状況 アプリケーションの構築パターン 将来の展望 まとめ 付録 3

    / 43
  4. はじめに Introduction 4 / 43

  5. 現在、Ruby のデータサイエンス対応は過渡期です。 本日は、Ruby で書かれたアプリケーションでデータ活用技術 を利用するためのパターンを説明します。 また、データサイエンス分野において Ruby コミュニティー内 にどんなプロジェクトが存在し、それぞれどのような特徴があ るかを紹介します。

    みなさんは、ぜひどこかのプロジェクトに参加していただき、 Ruby のデータサイエンス対応を加速する当事者になっていた だきたいです。 5 / 43
  6. データサイエンス Data science 6 / 43

  7. データサイエンス お仕事 における問題を解決するために 数学 と 統計学 を使うこと 7 / 43

  8. データサイエンスのサイクル 何らかの取り組み ( 実験や事業など) からデータを収集する 蓄積されたデータから がんばって 知識を取り出す データから取り出した知識に基づいて、取り組みの内容を微調整する 取り組みが成功するまで上記を繰り返す

    8 / 43
  9. データサイエンスのための要素技術 数値配列、科学計算基盤 並列計算基盤、分散処理基盤、並列分散DB データフレーム、データ入出力、データ可視化 統計的モデリング、機械学習 9 / 43

  10. データサイエンスにおけるプログラミ ング言語の役割 データ解析アルゴリズムの記述 データ解析作業時のプログラミング アプリケーションの記述 10 / 43

  11. Ruby はアプリケーションの記述が得意 11 / 43

  12. Python は データ解析作業時のプログラミングと アプリケーション記述の両方が得意 12 / 43

  13. Ruby も Python のように データ解析作業時のプログラミング も得意になると嬉しい 13 / 43

  14. Ruby のデータサイエンスへの 対応状況 14 / 43

  15. 3 つの主要プロジェクト SciRuby Ruby Numo Red Data Tools 他言語とのブリッジ pycall

    15 / 43
  16. SciRuby NMatrix を中心とする科学技術計算用 gem 群 海外で最も有名な Ruby の科学技術計算ライブラリ群 発起人たちは最近は全く開発しておらず、GSOC のプロジェクトで学生が

    色々作っているものの寄せ集め状態になっている 一部の基本演算が遅いバグがある 16 / 43
  17. Ruby Numo Numo::NArray を中心とする科学技術計算用 gem 群 元祖 NArray の作者である田中昌宏さんが発起人であり開発の中心にいる RubyKaigi

    でも発表されていて、日本ではそこそこ知られていると思う 海外ではあまり知られていない (?) 17 / 43
  18. SciRuby と Ruby Numo でできること データフレームライブラリ Daru が NMatrix に対応している

    [HELP] 誰か Numo::NArray にも対応させてください 科学技術計算用の基礎関数群 GSL のバインディングが SciRuby と Ruby Numo のそれぞれに対して 存在する 可視化 Gnuplot を使うライブラリが SciRuby と Ruby Numo のそれぞれに対 して存在する rbplotly が両方に対応している ( はず) 18 / 43
  19. 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. 主要プロジェクト間の関係 20 / 43

  21. 他言語とのブリッジ Ruby から他の言語のライブラリを呼び出す仕組み 現在 pycall が Python とのブリッジを提供している 今後は R,

    Julia, Stan など対応言語を増やしていく計画がある 21 / 43
  22. pycall Ruby から Python のライブラリを呼び出せる Ruby と同じプロセス内で Python インタープリタを初期化し呼び出す 一緒に開発してくれる、Ruby

    と Python の両方に詳しい人も募集してます 22 / 43
  23. RubyData Workshop in RubyKaigi 2017 RubyKaigi 2017 (2017 年9 月)

    で開催したワークショップ pycall の仕組みと使い方のデモンストレーションを実施した Red Data Tools のデモンストレーションも実施した 当時使用した Jupyter notebook が github のリポジトリにある https://github.com/RubyData/rubykaigi2017 23 / 43
  24. 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. アプリケーション 構築パターン 25 / 43

  26. Ruby とPython/R を同時に使う必要がある データサイエンティストの能力を最大限に発揮させるには Python や R が 現在の最良の選択肢である データサイエンティストは探索的データ解析のために、pandas

    や scik- it-learn などの枯れた標準ツールの能力が必要になる ほぼすべてのデータサイエンティストは仕事で Ruby を使いたがらない ( ∵ 使い慣れてないから) 一方で、Ruby と Ruby on Rails はウェブアプリケーションを作る場合に最 良な選択肢である 26 / 43
  27. 3 種類の実装パターンがある Python で書かれたデータ処理系と Ruby で書かれたアプリケーションを統合 する3 つの実装パターン: 1. 同じデータベースを両方から直接参照する

    2. データを JSON などで直列化して RPC ( 遠隔手続き呼び出し) する 3. pycall を利用してデータ処理系を直接呼び出す 27 / 43
  28. 1. 同じ DB を両方から参照する 28 / 43

  29. 2. JSON 直列化による RPC 29 / 43

  30. 3. pycall による直接的な呼び出し 30 / 43

  31. 状況に応じて適切なパターンを選択 1. 同じデータベースを両方から直接参照する 2. データを JSON などで直列化して RPC ( 遠隔手続き呼び出し)

    する 3. pycall を利用してデータ処理系を直接呼び出す 組織の構造・規模、アプリケーションの立ち位置などの状況に 応じて適切な選択肢は変化する。 31 / 43
  32. 将来の展望 32 / 43

  33. 将来について3 点 Apache Arrow と Red Data Tools GPGPU Deep

    Learning 33 / 43
  34. 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
  35. GPGPU ArrayFire (@prasunanand 作) が既に GPGPU (CUDA と OpenCL) に対応

    している @prasunanand さんが Ruby アソシエーションの今年の開発助成で RbCU- DA を開発中 CUDA のランタイムライブラリの Ruby バインディングを開発するプロ ジェクト @sonots さんが、同じ開発助成の別プロジェクトとして Cumo を開発中 Chainer が利用している CuPy を Numo NArray 向けに移植するプロジ ェクト 35 / 43
  36. 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. まとめ 37 / 43

  38. Conclusion Ruby でデータを扱う際に鍵となる 3 大プロジェクトを紹介した Ruby と他言語のブリッジとして pycall を紹介した Ruby

    でデータサイエンスをするための最新環境を試せる Docker イメージ を紹介した Ruby で書かれたアプリケーションと Python で書かれたデータ処理系を統 合する3 つのパターンを紹介した Ruby のデータサイエンスにおける将来の展望について述べた 38 / 43
  39. 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
  40. みなさんが今すぐできること 1. 使ってみてバグ報告 2. 利用者が増えるようなブログ記事を書く ( やってみた系) 3. 既存のライブラリにプルリクを送って自ら開発に参加する 4.

    開発者が増えるようなブログ記事を書く ( 開発環境を作る、コードを読んで みた系) 5. 日本国内に閉じてるプロダクトを海外向けに英語で紹介する 6. OSS Gate for Red Data Tools に参加して他の開発者と交流する 7. RubyData の運営チームに入って得意なことをやる 40 / 43
  41. RubyData organization SciRuby 、Ruby Numo 、Red Data Tools 、など複数のプロジェクトに人が 分散している現状は、純粋な利用者が戸惑いやすい

    プロジェクトに関係なく、Ruby とデータツールを組み合わせて使おうとし ている人が集まって情報交換ができる場が必要だろう というわけで、私が作り始めました http://ruby-data.org/ まだランディングページしかない!! 41 / 43
  42. RubyData needs helps!! 以下のような人を募集してます コミュニティ運営 ( 人の集まりを制御すること) が得意な人 ( 私

    mrkn が 一番不得意なこと) AWS に詳しい人 (discourse の立ち上げと運営を手伝って欲しい) 自然言語での継続的な情報発信が得意な人 ( 「Ruby でデータサイエン ス」的な情報発信をスケールさせたい) 英語が得意な人 ( 僕たちの変な英語を直して欲しい) docker-stacks の維持と発展を積極的にやってくれる人 42 / 43
  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