Slide 1

Slide 1 text

Tensor and
 Apache Arrow Kenta Murata Speee, Inc.

Slide 2

Slide 2 text

Apache Arrow Tokyo Meetup 2018.12.08 self.introduction • Kenta Murata (mrkn) • Full-time CRuby committer at Speee, Inc. • Ruby, C/C++, Python, Julia, etc. • pycall.rb, mxnet.rb, enumerable-statistics, etc.

Slide 3

Slide 3 text

Apache Arrow Tokyo Meetup 2018.12.08 ⽬次 • テンソルについて • Apache Arrow とテンソルの関係 • 私がいまやっていること • 未来の展望

Slide 4

Slide 4 text

Apache Arrow Tokyo Meetup 2018.12.08 テンソル • 多次元の数値配列 • 0次元 (0階): スカラー • 1次元 (1階): ベクトル • 2次元 (2階): ⾏列 • それ以上: テンソル x = 1 + 2i AAAB7XicbZDNSgMxFIXv1L9a/6ou3QSLIAhlpgi6EYpuXFaw00I7lEyaaWMzyZBkxDL0Hdy4UMSt7+POtzFtZ6GtBwIf595L7j1hwpk2rvvtFFZW19Y3ipulre2d3b3y/oGvZaoIbRLJpWqHWFPOBG0aZjhtJ4riOOS0FY5upvXWI1WaSXFvxgkNYjwQLGIEG2v5T1feWY31yhW36s6ElsHLoQK5Gr3yV7cvSRpTYQjHWnc8NzFBhpVhhNNJqZtqmmAywgPasShwTHWQzbadoBPr9FEklX3CoJn7eyLDsdbjOLSdMTZDvVibmv/VOqmJLoOMiSQ1VJD5R1HKkZFoejrqM0WJ4WMLmChmd0VkiBUmxgZUsiF4iycvg1+repbvziv16zyOIhzBMZyCBxdQh1toQBMIPMAzvMKbI50X5935mLcWnHzmEP7I+fwBdieOYg== AAAB7XicbZDNSgMxFIXv1L9a/6ou3QSLIAhlpgi6EYpuXFaw00I7lEyaaWMzyZBkxDL0Hdy4UMSt7+POtzFtZ6GtBwIf595L7j1hwpk2rvvtFFZW19Y3ipulre2d3b3y/oGvZaoIbRLJpWqHWFPOBG0aZjhtJ4riOOS0FY5upvXWI1WaSXFvxgkNYjwQLGIEG2v5T1feWY31yhW36s6ElsHLoQK5Gr3yV7cvSRpTYQjHWnc8NzFBhpVhhNNJqZtqmmAywgPasShwTHWQzbadoBPr9FEklX3CoJn7eyLDsdbjOLSdMTZDvVibmv/VOqmJLoOMiSQ1VJD5R1HKkZFoejrqM0WJ4WMLmChmd0VkiBUmxgZUsiF4iycvg1+repbvziv16zyOIhzBMZyCBxdQh1toQBMIPMAzvMKbI50X5935mLcWnHzmEP7I+fwBdieOYg== AAAB7XicbZDNSgMxFIXv1L9a/6ou3QSLIAhlpgi6EYpuXFaw00I7lEyaaWMzyZBkxDL0Hdy4UMSt7+POtzFtZ6GtBwIf595L7j1hwpk2rvvtFFZW19Y3ipulre2d3b3y/oGvZaoIbRLJpWqHWFPOBG0aZjhtJ4riOOS0FY5upvXWI1WaSXFvxgkNYjwQLGIEG2v5T1feWY31yhW36s6ElsHLoQK5Gr3yV7cvSRpTYQjHWnc8NzFBhpVhhNNJqZtqmmAywgPasShwTHWQzbadoBPr9FEklX3CoJn7eyLDsdbjOLSdMTZDvVibmv/VOqmJLoOMiSQ1VJD5R1HKkZFoejrqM0WJ4WMLmChmd0VkiBUmxgZUsiF4iycvg1+repbvziv16zyOIhzBMZyCBxdQh1toQBMIPMAzvMKbI50X5935mLcWnHzmEP7I+fwBdieOYg== AAAB7XicbZDNSgMxFIXv1L9a/6ou3QSLIAhlpgi6EYpuXFaw00I7lEyaaWMzyZBkxDL0Hdy4UMSt7+POtzFtZ6GtBwIf595L7j1hwpk2rvvtFFZW19Y3ipulre2d3b3y/oGvZaoIbRLJpWqHWFPOBG0aZjhtJ4riOOS0FY5upvXWI1WaSXFvxgkNYjwQLGIEG2v5T1feWY31yhW36s6ElsHLoQK5Gr3yV7cvSRpTYQjHWnc8NzFBhpVhhNNJqZtqmmAywgPasShwTHWQzbadoBPr9FEklX3CoJn7eyLDsdbjOLSdMTZDvVibmv/VOqmJLoOMiSQ1VJD5R1HKkZFoejrqM0WJ4WMLmChmd0VkiBUmxgZUsiF4iycvg1+repbvziv16zyOIhzBMZyCBxdQh1toQBMIPMAzvMKbI50X5935mLcWnHzmEP7I+fwBdieOYg== X =  1 2 3 4 5 6 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 x = ⇥ 1 2 3 ⇤T AAACI3icbVDLSgMxFM34rOOr6tJNsCiuykwVFEEounFZoS/o1JLJ3LahmcyQZKRl6L+48VfcuFCKGxf+i+kD0dYLlxzOuZfcc/yYM6Ud59NaWl5ZXVvPbNibW9s7u9m9/aqKEkmhQiMeybpPFHAmoKKZ5lCPJZDQ51Dze7djvfYIUrFIlPUghmZIOoK1GSXaUK3sledHPFCD0Dxpf4ivsedDh4nUD4mWrD+0XXyCC6bPbA9E8MM/lFvZnJN3JoUXgTsDOTSrUis78oKIJiEITTlRquE6sW6mRGpGOQxtL1EQE9ojHWgYKEgIqplOPA7xsWEC3I6kaaHxhP29kZJQjW2YSXNhV81rY/I/rZHo9mUzZSJONAg6/aidcKwjPA4MB0wC1XxgAKGSmVsx7RJJqDax2iYEd97yIqgW8q7B9+e54s0sjgw6REfoFLnoAhXRHSqhCqLoCb2gN/RuPVuv1sj6mI4uWbOdA/SnrK9vVZWjaQ== AAACI3icbVDLSgMxFM34rOOr6tJNsCiuykwVFEEounFZoS/o1JLJ3LahmcyQZKRl6L+48VfcuFCKGxf+i+kD0dYLlxzOuZfcc/yYM6Ud59NaWl5ZXVvPbNibW9s7u9m9/aqKEkmhQiMeybpPFHAmoKKZ5lCPJZDQ51Dze7djvfYIUrFIlPUghmZIOoK1GSXaUK3sledHPFCD0Dxpf4ivsedDh4nUD4mWrD+0XXyCC6bPbA9E8MM/lFvZnJN3JoUXgTsDOTSrUis78oKIJiEITTlRquE6sW6mRGpGOQxtL1EQE9ojHWgYKEgIqplOPA7xsWEC3I6kaaHxhP29kZJQjW2YSXNhV81rY/I/rZHo9mUzZSJONAg6/aidcKwjPA4MB0wC1XxgAKGSmVsx7RJJqDax2iYEd97yIqgW8q7B9+e54s0sjgw6REfoFLnoAhXRHSqhCqLoCb2gN/RuPVuv1sj6mI4uWbOdA/SnrK9vVZWjaQ== AAACI3icbVDLSgMxFM34rOOr6tJNsCiuykwVFEEounFZoS/o1JLJ3LahmcyQZKRl6L+48VfcuFCKGxf+i+kD0dYLlxzOuZfcc/yYM6Ud59NaWl5ZXVvPbNibW9s7u9m9/aqKEkmhQiMeybpPFHAmoKKZ5lCPJZDQ51Dze7djvfYIUrFIlPUghmZIOoK1GSXaUK3sledHPFCD0Dxpf4ivsedDh4nUD4mWrD+0XXyCC6bPbA9E8MM/lFvZnJN3JoUXgTsDOTSrUis78oKIJiEITTlRquE6sW6mRGpGOQxtL1EQE9ojHWgYKEgIqplOPA7xsWEC3I6kaaHxhP29kZJQjW2YSXNhV81rY/I/rZHo9mUzZSJONAg6/aidcKwjPA4MB0wC1XxgAKGSmVsx7RJJqDax2iYEd97yIqgW8q7B9+e54s0sjgw6REfoFLnoAhXRHSqhCqLoCb2gN/RuPVuv1sj6mI4uWbOdA/SnrK9vVZWjaQ== AAACI3icbVDLSgMxFM34rOOr6tJNsCiuykwVFEEounFZoS/o1JLJ3LahmcyQZKRl6L+48VfcuFCKGxf+i+kD0dYLlxzOuZfcc/yYM6Ud59NaWl5ZXVvPbNibW9s7u9m9/aqKEkmhQiMeybpPFHAmoKKZ5lCPJZDQ51Dze7djvfYIUrFIlPUghmZIOoK1GSXaUK3sledHPFCD0Dxpf4ivsedDh4nUD4mWrD+0XXyCC6bPbA9E8MM/lFvZnJN3JoUXgTsDOTSrUis78oKIJiEITTlRquE6sW6mRGpGOQxtL1EQE9ojHWgYKEgIqplOPA7xsWEC3I6kaaHxhP29kZJQjW2YSXNhV81rY/I/rZHo9mUzZSJONAg6/aidcKwjPA4MB0wC1XxgAKGSmVsx7RJJqDax2iYEd97yIqgW8q7B9+e54s0sjgw6REfoFLnoAhXRHSqhCqLoCb2gN/RuPVuv1sj6mI4uWbOdA/SnrK9vVZWjaQ==

Slide 5

Slide 5 text

Apache Arrow Tokyo Meetup 2018.12.08 テンソルの⽤途 • 元々は物理学で多重線形性を持つ量を表現するために作られた概念 例) 応⼒テンソル、弾性率テンソル、エネルギー運動量テンソル、 計量テンソル、etc. • すべての観測値はテンソルで表現できる • ⾳声、株価の履歴、画像、映像、テキスト、etc. • 機械学習モデルへの⼊⼒と出⼒はテンソル • 密なテンソルと疎なテンソルがある

Slide 6

Slide 6 text

Apache Arrow Tokyo Meetup 2018.12.08 密なテンソル • ほぼ全ての要素が⾮ゼロ • 2次元以上のテンソルの場合、値の並べ⽅は C ⾔語⽅式 (row- major) と Fortran ⽅式 (column-major) の2種類ある • 密なテンソルの例: • 画像 (特に写真) • 複数銘柄の株価履歴

Slide 7

Slide 7 text

Apache Arrow Tokyo Meetup 2018.12.08 疎なテンソル • ゼロの要素が⾮常に多いテンソル • ⾮ゼロの要素だけを効率よく保持する形式がある • 疎なテンソルが適しているものの例: • 購買履歴によるユーザの特徴づけ • BOW による⽂書の特徴量

Slide 8

Slide 8 text

RubyData Tokyo Meetup 2018 購買履歴によるユーザの特徴づけ ঎඼ Ϣʔβ 1 … 1 2 … 2 3 1 … 3 4 4 4 2 … 2 4 … 2 … 3 … 1 … 3 2 4 … 1 3 2 2 … 2 1 … 1 1 1 … 2 1 3 5 3 … ộ ộ ộ ộ ộ ộ ộ ộ ộ ộ ộ ộ ộ …

Slide 9

Slide 9 text

Apache Arrow Tokyo Meetup 2018.12.08 Apache Arrow が 解決しようとしていること • 異なるプログラミング⾔語、異なるシステム間の分断 • 各⾔語にデータフレームライブラリが存在して、それぞれ 独⽴にデータ構造と機能を実装している • テンソルでもデータフレームのように複数システム間の 分断が起きている❗

Slide 10

Slide 10 text

Apache Arrow Tokyo Meetup 2018.12.08 テンソルの分断 • 論理的なデータ構造は同じだが、物理的な実装がシステム間で 異なる • システム間で対応している機能が微妙に異なる • システム間でデータ交換する仕組みが存在しない • 現状でも密なテンソルは交換しやすい • 疎なテンソルは複雑なデータ構造を持っているため難しい • etc.

Slide 11

Slide 11 text

RubyData Tokyo Meetup 2018 Apache Arrow で 解決できそう

Slide 12

Slide 12 text

Apache Arrow Tokyo Meetup 2018.12.08 Apache Arrow による解決 • Apache Arrow が代表的なテンソルのフォーマットを扱 えるようになる • 既存のシステムを Apache Arrow が対応しているフォー マットに対応させる • Apache Arrow を仲介してデータを交換する

Slide 13

Slide 13 text

Apache Arrow Tokyo Meetup 2018.12.08 データフレームとテンソル • Apache Arrow はデータフレームのライブラリなのに、 テンソルってどうなの? • カラムを独⽴に利⽤するときはデータフレームが便利 • ⼀⽅で、複数のカラムをまとめて処理するとき、(疎な) テ ンソルに変換して処理する場合がある 例) データフレーム → 疎なテンソル
 → PCA → 次元削減 → 密なテンソル

Slide 14

Slide 14 text

Apache Arrow Tokyo Meetup 2018.12.08 私が今やっていること • Apache Arrow への疎なテンソルの導⼊ • https://github.com/apache/arrow/pull/2546 • 昨⽇やっと first step の実装が完了 • 対応フォーマット: COO (多次元), CSR (2次元) • 密なテンソルからの変換 • ⼊出⼒

Slide 15

Slide 15 text

Apache Arrow Tokyo Meetup 2018.12.08 まだやれてないこと • まだマージされてない! • 疎なテンソルの対応フォーマットを増やす • 疎なテンソルから密なテンソルへの変換 • C++ 以外の⾔語のバインディングでの対応 • 既存システムとの交換への対応 • scipy.sparse や tensorflow など • Apache Arrow の対応フォーマットを多くのシステムに対応させる • 例) Tensorflow は COO フォーマットのみ対応 → 増やす • テンソルの操作、テンソルを⽤いた計算は?

Slide 16

Slide 16 text

Apache Arrow Tokyo Meetup 2018.12.08 Plures (XND) • https://xnd.io/ • NumPy の構成要素をきれいに分離して gumath, xnd, ndtypes の3つのライブラリを作る • NumPy が Python で果たしたハブの役割を、⾔語中⽴的 に担当することで、複数のシステム間のハブとして働く • テンソルの操作・計算はこれらのライブラリが担当する ようになる (はず!)

Slide 17

Slide 17 text

Apache Arrow Tokyo Meetup 2018.12.08 テンソル利⽤の未来予想図 • システム間でのテンソルの交換 ⇒ Apache Arrow • テンソルの操作 ⇒ Apache Arrow & XND • テンソルを⽤いた計算 ⇒ XND

Slide 18

Slide 18 text

Apache Arrow Tokyo Meetup 2018.12.08 私の次の予定 (優先度順) • #2546 をマージさせる (クリティカルパス) • scipy.sparse と pydata.sparse との交換処理を実装 • CSC フォーマットの実装 • CSF フォーマットの実装 • Python, Ruby, Julia バインディング