Upload
Download free for 30 days
Login
Submit Search
明日使える超高速Ruby - RXbyak (Mitaka.rb #5)
3 likes
2,422 views
S
Shuyo Nakatani
Rubyのままで速くなる方法
Technology
Read more
1 of 34
Download now
Downloaded 14 times
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
More Related Content
PDF
Lisp meetup #29 cl-online-learningの紹介
Satoshi imai
PDF
Lispmeetup #45 Common Lispで音声合成
Satoshi imai
PDF
Lispmeetup #39 MGLの紹介: Common Lispによるディープラーニング
Satoshi imai
PDF
二階堂愛と二階堂藍の違いについて
show you
PDF
NetworkXによる語彙ネットワークの可視化
Shintaro Takemura
PPTX
ぼくの実装した最弱のディープラーニング
なおき きしだ
PPTX
クリスマス?
sasenomura
PDF
111015 tokyo scipy2_ディスカッション
Shohei Hido
Lisp meetup #29 cl-online-learningの紹介
Satoshi imai
Lispmeetup #45 Common Lispで音声合成
Satoshi imai
Lispmeetup #39 MGLの紹介: Common Lispによるディープラーニング
Satoshi imai
二階堂愛と二階堂藍の違いについて
show you
NetworkXによる語彙ネットワークの可視化
Shintaro Takemura
ぼくの実装した最弱のディープラーニング
なおき きしだ
クリスマス?
sasenomura
111015 tokyo scipy2_ディスカッション
Shohei Hido
What's hot
(20)
PDF
Kaggle の Titanic チュートリアルに挑戦した話
y-uti
PDF
Numpy scipy matplotlibの紹介
Tatsuro Yasukawa
PDF
Chainer入門と最近の機能
Yuya Unno
PPTX
Tfug#4
tak9029
PDF
Introduction to Chainer and CuPy
Kenta Oono
PDF
Immutable List Gem (KLab ALM版)
Sho Hosoda
PDF
Study session#2
恵太 水野
PDF
CVPR2015読み会 "Joint Tracking and Segmentation of Multiple Targets"
Yuki Nagai
PDF
詳解! Decimal
Tadashi Saito
PDF
量子コンピュータでニューラルネットワークな論文紹介
Takatomo Torigoe
PDF
TFUG_yuma_matsuoka__distributed_GPU
YumaMatsuoka
PDF
Kaggleのテクニック
Yasunori Ozaki
PDF
CuPy解説
Ryosuke Okuta
PDF
ICFP2009-いかにして我々は戦ったか
ina job
PDF
Python vs ruby
osamunmun
PDF
最適化超入門
Takami Sato
PDF
NumPyが物足りない人へのCython入門
Shiqiao Du
PDF
自作GPUへの道
Daisuke Kamikawa
PPTX
PythonとRによるデータ分析環境の構築と機械学習によるデータ認識
Katsuhiro Morishita
PDF
リテラル文字列型までの道
Satoshi Sato
Kaggle の Titanic チュートリアルに挑戦した話
y-uti
Numpy scipy matplotlibの紹介
Tatsuro Yasukawa
Chainer入門と最近の機能
Yuya Unno
Tfug#4
tak9029
Introduction to Chainer and CuPy
Kenta Oono
Immutable List Gem (KLab ALM版)
Sho Hosoda
Study session#2
恵太 水野
CVPR2015読み会 "Joint Tracking and Segmentation of Multiple Targets"
Yuki Nagai
詳解! Decimal
Tadashi Saito
量子コンピュータでニューラルネットワークな論文紹介
Takatomo Torigoe
TFUG_yuma_matsuoka__distributed_GPU
YumaMatsuoka
Kaggleのテクニック
Yasunori Ozaki
CuPy解説
Ryosuke Okuta
ICFP2009-いかにして我々は戦ったか
ina job
Python vs ruby
osamunmun
最適化超入門
Takami Sato
NumPyが物足りない人へのCython入門
Shiqiao Du
自作GPUへの道
Daisuke Kamikawa
PythonとRによるデータ分析環境の構築と機械学習によるデータ認識
Katsuhiro Morishita
リテラル文字列型までの道
Satoshi Sato
Ad
Viewers also liked
(7)
PDF
Rubyによるデータ解析
Shugo Maeda
PPTX
PRML第6章「カーネル法」
Keisuke Sugawara
PDF
パターン認識と機械学習6章(カーネル法)
Yukara Ikemiya
ZIP
今さら聞けないカーネル法とサポートベクターマシン
Shinya Shimizu
PDF
ロジスティック回帰の考え方・使い方 - TokyoR #33
horihorio
PDF
TensorFlow を使った機械学習ことはじめ (GDG京都 機械学習勉強会)
徹 上野山
PPTX
TensorFlowで会話AIを作ってみた。
tak9029
Rubyによるデータ解析
Shugo Maeda
PRML第6章「カーネル法」
Keisuke Sugawara
パターン認識と機械学習6章(カーネル法)
Yukara Ikemiya
今さら聞けないカーネル法とサポートベクターマシン
Shinya Shimizu
ロジスティック回帰の考え方・使い方 - TokyoR #33
horihorio
TensorFlow を使った機械学習ことはじめ (GDG京都 機械学習勉強会)
徹 上野山
TensorFlowで会話AIを作ってみた。
tak9029
Ad
Similar to 明日使える超高速Ruby - RXbyak (Mitaka.rb #5)
(20)
PDF
RubyKaigi2014: Just in Time compiler for CRuby
imasahiro
PDF
ET2014資料: mruby プログラム言語Rubyによる組込みソト開発
Kazuaki Tanaka
PDF
ET2017資料: 開発言語mruby・mruby/cが開く新たなIoTプラットフォーム
shimane-itoc
PDF
Ruby で高速なプログラムを書く
mametter
PDF
Ruby
Shintaro Abe
PDF
Ruby 2.5
Masahiro Tomita
PDF
組込み向けRuby処理系mrubyの可能性
Salesforce Developers Japan
ODP
kpfx07 LT ruby-processingでイケメンになりたい
koki_h
PDF
Ruby でつくる型付き Ruby
mametter
PDF
VimとRubyのアツい関係
Misao X
PDF
Summary of Ruby
Tamotsu Furuya
PDF
grep ruby
Kouhei Yamamoto
PDF
Cookpad 17 day Tech internship 2017 言語処理系入門 Rubyをコンパイルしよう
Koichi Sasada
PDF
組込み向けスクリプト言語mrubyをEV3で動かしてみよう
Takuya Azumi
PDF
MobiRubyでiOSアプリをつくろう
Junya Murabe
PDF
マニアックなRuby 2.7新機能紹介
mametter
PDF
RubyのGC改善による私のエコライフ
Narihiro Nakamura
PDF
Kanrk05 .Netでお仕事しているプログラマがスクリプト言語として使うRuby
Shinichi Okada
PPTX
Perlと出会い、Perlを作る
goccy
PPSX
ここまで来た開発言語 mruby・mruby/cの最新情報 “本当に使える”IoTプラットフォーム
shimane-itoc
RubyKaigi2014: Just in Time compiler for CRuby
imasahiro
ET2014資料: mruby プログラム言語Rubyによる組込みソト開発
Kazuaki Tanaka
ET2017資料: 開発言語mruby・mruby/cが開く新たなIoTプラットフォーム
shimane-itoc
Ruby で高速なプログラムを書く
mametter
Ruby
Shintaro Abe
Ruby 2.5
Masahiro Tomita
組込み向けRuby処理系mrubyの可能性
Salesforce Developers Japan
kpfx07 LT ruby-processingでイケメンになりたい
koki_h
Ruby でつくる型付き Ruby
mametter
VimとRubyのアツい関係
Misao X
Summary of Ruby
Tamotsu Furuya
grep ruby
Kouhei Yamamoto
Cookpad 17 day Tech internship 2017 言語処理系入門 Rubyをコンパイルしよう
Koichi Sasada
組込み向けスクリプト言語mrubyをEV3で動かしてみよう
Takuya Azumi
MobiRubyでiOSアプリをつくろう
Junya Murabe
マニアックなRuby 2.7新機能紹介
mametter
RubyのGC改善による私のエコライフ
Narihiro Nakamura
Kanrk05 .Netでお仕事しているプログラマがスクリプト言語として使うRuby
Shinichi Okada
Perlと出会い、Perlを作る
goccy
ここまで来た開発言語 mruby・mruby/cの最新情報 “本当に使える”IoTプラットフォーム
shimane-itoc
More from Shuyo Nakatani
(20)
PDF
画像をテキストで検索したい!(OpenAI CLIP) - VRC-LT #15
Shuyo Nakatani
PDF
Generative adversarial networks
Shuyo Nakatani
PDF
無限関係モデル (続・わかりやすいパターン認識 13章)
Shuyo Nakatani
PDF
Memory Networks (End-to-End Memory Networks の Chainer 実装)
Shuyo Nakatani
PDF
人工知能と機械学習の違いって?
Shuyo Nakatani
PDF
RとStanでクラウドセットアップ時間を分析してみたら #TokyoR
Shuyo Nakatani
PDF
ドラえもんでわかる統計的因果推論 #TokyoR
Shuyo Nakatani
PDF
[Yang, Downey and Boyd-Graber 2015] Efficient Methods for Incorporating Knowl...
Shuyo Nakatani
PDF
星野「調査観察データの統計科学」第3章
Shuyo Nakatani
PDF
星野「調査観察データの統計科学」第1&2章
Shuyo Nakatani
PDF
言語処理するのに Python でいいの? #PyDataTokyo
Shuyo Nakatani
PDF
Zipf? (ジップ則のひみつ?) #DSIRNLP
Shuyo Nakatani
PDF
ACL2014 Reading: [Zhang+] "Kneser-Ney Smoothing on Expected Count" and [Pickh...
Shuyo Nakatani
PDF
ソーシャルメディアの多言語判定 #SoC2014
Shuyo Nakatani
PDF
猫に教えてもらうルベーグ可測
Shuyo Nakatani
PDF
アラビア語とペルシャ語の見分け方 #DSIRNLP 5
Shuyo Nakatani
PDF
どの言語でつぶやかれたのか、機械が知る方法 #WebDBf2013
Shuyo Nakatani
PDF
Active Learning 入門
Shuyo Nakatani
PDF
数式を綺麗にプログラミングするコツ #spro2013
Shuyo Nakatani
PDF
ノンパラベイズ入門の入門
Shuyo Nakatani
画像をテキストで検索したい!(OpenAI CLIP) - VRC-LT #15
Shuyo Nakatani
Generative adversarial networks
Shuyo Nakatani
無限関係モデル (続・わかりやすいパターン認識 13章)
Shuyo Nakatani
Memory Networks (End-to-End Memory Networks の Chainer 実装)
Shuyo Nakatani
人工知能と機械学習の違いって?
Shuyo Nakatani
RとStanでクラウドセットアップ時間を分析してみたら #TokyoR
Shuyo Nakatani
ドラえもんでわかる統計的因果推論 #TokyoR
Shuyo Nakatani
[Yang, Downey and Boyd-Graber 2015] Efficient Methods for Incorporating Knowl...
Shuyo Nakatani
星野「調査観察データの統計科学」第3章
Shuyo Nakatani
星野「調査観察データの統計科学」第1&2章
Shuyo Nakatani
言語処理するのに Python でいいの? #PyDataTokyo
Shuyo Nakatani
Zipf? (ジップ則のひみつ?) #DSIRNLP
Shuyo Nakatani
ACL2014 Reading: [Zhang+] "Kneser-Ney Smoothing on Expected Count" and [Pickh...
Shuyo Nakatani
ソーシャルメディアの多言語判定 #SoC2014
Shuyo Nakatani
猫に教えてもらうルベーグ可測
Shuyo Nakatani
アラビア語とペルシャ語の見分け方 #DSIRNLP 5
Shuyo Nakatani
どの言語でつぶやかれたのか、機械が知る方法 #WebDBf2013
Shuyo Nakatani
Active Learning 入門
Shuyo Nakatani
数式を綺麗にプログラミングするコツ #spro2013
Shuyo Nakatani
ノンパラベイズ入門の入門
Shuyo Nakatani
明日使える超高速Ruby - RXbyak (Mitaka.rb #5)
1.
明日使える超高速 Ruby
~ Ruby で Xbyak ~ 2009/10/22 id:n_shuyo / @shuyo 中谷 秀洋@サイボウズ・ラボ
2.
最近のマイブーム
3.
機械学習 自然言語処理
4.
なんかこんな本 • Introduction to
Information Retreival(IIR) • パターン認識と機械学習(PRML, ぷるむる) • とか
5.
なんかこんなやつ •
ロジスティック回帰 • パーセプトロン • ニューラルネットワーク • サポートベクトルマシン(そのうち)
6.
読んでるだけではよくわからない • めっちゃ数式いっぱい –
関数解析/線形代数/確率分布 – 最適化(プログラムのそれとは違うよ!) – ラグランジュ未定乗数法 • よく知らない概念いっぱい – ベイズ理論 – 回帰分析 – 確率過程 – カーネル法
7.
実装してみると わかる(こともある)
8.
Rubyで実装 • これが間違い(><
9.
Rubyはつらいよ……
10.
MNISTデータセット(手書き数字) • ニューラルネットワークによる学習 –
入力 : 28x28(ピクセル) – 中間層 : 300 – 出力 : 10 (0~9 の判別) – 枝の本数 W = 27万 • 6万件の学習(一周)に24時間 – 計算量が O(W^2)! – Rubyの範囲での最適化はやりつくしたつもり • もちろん Ruby1.9
11.
Rubyにもいいところはある • ネットワーク構造をDSL で表現!
– ネットワークを変えての実験が容易 # units in_units = [Unit.new("x1"), Unit.new("x2")] hiddenunits = (1..6).map{|i| TanhUnit.new("z1#{i}")} out_unit = [SigUnit.new("y1")] # network network = Network.new(:error_func=>ErrorFunction::CrossEntropy) network.in = in_units # 入力 network.link in_units, hiddenunits # 入力 → 隠れユニット network.link hiddenunits, out_unit # 隠れユニット → 出力 network.out = out_unit # 出力
12.
そうは言っても、速さは正義 • 少なくとも何百回とか学習が必要 –
パラメータを変えながら交差検定とかしたい • やっぱりC++で実装するか…… – Rubyの100倍~1000倍違うし • 24時間/100 = 15分 – Rubyのお手軽さは捨てがたくもある • C++はいちいちコンパイル – C++に逃げたらなんか負けた気がする • naoya_tさん曰く「リニアに速くなるだけでしょ?」
13.
Rubyのままで 速くなる方法は ないのか?
14.
RubyでXbyak
15.
Xbyak(カイビャック) • 実行バイナリ(ネイティブコード)を動的に生
成するC++ライブラリ • つまり JIT (Just in Time compiler) • C++より速い – C++のライブラリなのに!? – もちろんRubyなんかメじゃない • 光成さん(サイボウズ・ラボ)開発 – http://homepage1.nifty.com/herumi/soft/xbyak.html
16.
JITってなんだ?
17.
JIT=MSXべーしっ君
18.
要するに 「めっっちゃ速い」
19.
Ruby で Xbyak が使えたら
いいんじゃね?
20.
RXbyak (Xbyak for
Ruby) • Xbyakを使えるRuby拡張 • Xbyak のネイティブコード生成機能を Ruby からそのまま利用可能に • 生成したコードをRubyから呼び出す – 実装率低め – 明日まだ使えない!(>< http://github.com/shuyo/cpp/tree/master/rxbyak/
21.
ひとことで いうと
22.
RXbyak とは
23.
Rubyで アセンブラが 書ける
24.
RXbyak サンプル • SIMDを使って倍精度の掛け算
– どこからどうみても Ruby のプログラム。 rx = RXbyak.new rx.mov :eax, [:esp, 8] # mov eax, (esp+8) // 第1引数のポインタ rx.movq :xmm0, [:eax] # movq xmm0, (eax) rx.mov :eax, [:esp, 12] # mov eax, (esp+12) // 第2引数のポインタ rx.movq :xmm1, [:eax] # movq xmm1, (eax) rx.mulsd :xmm0, :xmm1 # mulsd xmm0, xmm1 // かけ算 rx.mov :eax, [:esp, 4] # mov eax, (esp+4) // 返値のポインタ rx.movq [:eax], :xmm0 # movq (eax), xmm0 rx.ret # ret puts rx.call(256.0, 256.0) # => 65536.0 puts rx.call(123.45, 678.9) # => 83810.205 ※このサンプルに使われている命令しかまだ実装されていません。
25.
機械学習を RXbyak
で書いたら 「××倍速くなったよ!」
26.
まにあわんかった すまん(汗
27.
(参考) Python vs
Xbyak http://labs.cybozu.co.jp/blog/mitsunari/2007/08/ll2007.html
28.
何に使えるの?
29.
RXbyakの応用範囲 • 実行時に処理が決まる場合(JIT) –
ニューラルネットワークはグラフが与えられれば – URI Templates はテンプレートが与えられれば • 参考:URI Templates のC++(Xbyak)実装 • http://labs.cybozu.co.jp/blog/nakatani/2008/07/uri_template_c_xbyak_jit.html – 正規表現 • プロセッサを極限まで使い切る!(アセンブラ) – SIMD(SSE) で浮動小数演算 • 並列演算とか128bit精度とか。SSE4.1 なら内積も1命 令で! ※使用者の感想であり、 効用を約束するものではありません。
30.
本日Mitaka.rb に 参加した皆さんは
31.
これでもう
32.
「RXbyak で 高速Rubyコード 書いちゃうぞ~」
33.
明日から
ビュンビュン ですね! ※2009/10/22現在、 mov(代入) と mul(掛け算) と ret しか実装されていません。
34.
ありがとう ございました
Download