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
grain - D Language for Deep Learning
Search
Sponsored
·
SiteGround - Reliable hosting with speed, security, and support you can count on.
→
Shigeki Karita
April 22, 2019
Programming
0
780
grain - D Language for Deep Learning
Statically typed deep learning framework for D language
https://github.com/ShigekiKarita/grain
Shigeki Karita
April 22, 2019
Tweet
Share
Other Decks in Programming
See All in Programming
Codex CLIのSubagentsによる並列API実装 / Parallel API Implementation with Codex CLI Subagents
takatty
2
570
守る「だけ」の優しいEMを抜けて、 事業とチームを両方見る視点を身につけた話
maroon8021
3
1.5k
Kubernetesでセルフホストが簡単なNewSQLを求めて / Seeking a NewSQL Database That's Simple to Self-Host on Kubernetes
nnaka2992
0
180
ネイティブアプリとWebフロントエンドのAPI通信ラッパーにおける共通化の勘所
suguruooki
0
190
車輪の再発明をしよう!PHP で実装して学ぶ、Web サーバーの仕組みと HTTP の正体
h1r0
2
420
Claude Codeログ基盤の構築
giginet
PRO
7
3.7k
GoのDB アクセスにおける 「型安全」と「柔軟性」の両立 - Bob という選択肢
tak848
0
280
エンジニアの「手元の自動化」を加速するn8n 2026.02.27
symy2co
0
180
存在論的プログラミング: 時間と存在を記述する
koriym
5
520
GC言語のWasm化とComponent Modelサポートの実践と課題 - Scalaの場合
tanishiking
0
130
Strategy for Finding a Problem for OSS: With Real Examples
kibitan
0
110
Codex CLI でつくる、Issue から merge までの開発フロー
amata1219
0
140
Featured
See All Featured
Sam Torres - BigQuery for SEOs
techseoconnect
PRO
0
230
Optimising Largest Contentful Paint
csswizardry
37
3.6k
Lightning Talk: Beautiful Slides for Beginners
inesmontani
PRO
1
490
Breaking role norms: Why Content Design is so much more than writing copy - Taylor Woolridge
uxyall
0
230
Believing is Seeing
oripsolob
1
97
16th Malabo Montpellier Forum Presentation
akademiya2063
PRO
0
81
Lessons Learnt from Crawling 1000+ Websites
charlesmeaden
PRO
1
1.2k
Six Lessons from altMBA
skipperchong
29
4.2k
Between Models and Reality
mayunak
2
240
Technical Leadership for Architectural Decision Making
baasie
3
300
Embracing the Ebb and Flow
colly
88
5k
ラッコキーワード サービス紹介資料
rakko
1
2.8M
Transcript
grain D Language for Deep Learning ML Meetup KANSAI #3
LT 4. Oct. 2018
D Language for Deep Learning language ▶ like C++: fast,
strongly typed, LLVM/GCC backend ▶ like Python: simple, lightweight, jupyter support libraries1 ▶ mir: N-dim fast algorithm, numpy-like APIs ▶ dcompute: CUDA kernel DSL 1https://github.com/libmir 2
grain deep learning framework for D ▶ https://github.com/ShigekiKarita/grain ▶ boost
software license 1.0 philosophy ▶ DYNAMIC: like chainer and pytorch ▶ SAFE: statically typed variable and function ▶ LIGHT: simple like Python, small like C++ ▶ FAST: mir and CUDA backend 3
grain documentation 2 2https://shigekikarita.github.io/grain/grain.html 4
grain is dynamic like chainer ... 1 foreach (epoch; 0
.. 10) { 2 foreach (i; niter.permutation) { 3 auto xs = inputs[i]. variable; 4 auto ts = targets[i]. variable; 5 auto ys = model(xs); 6 auto loss = crossEntropy(ys , ts); 7 auto acc = accuracy(ys , ts); 8 model.zeroGrad (); 9 loss.backward (); 10 optimizer.update (); 11 } 12 } 5
grain is safe but statically typed and optimized. 1 foreach
(epoch; 0 .. 10) { 2 foreach (i; niter.permutation) { 3 Variable !(float , 3, HostStorage) xs = inputs[i]. variable; 4 Variable !(int , 1, HostStorage) ts = targets[i]. variable; 5 Variable !(float , 2, HostStorage) ys = model(xs); 6 Variable !(float , 0, HostStorage)loss =crossEntropy(ys , ts); 7 float acc = accuracy(ys , ts); 8 model.zeroGrad (); 9 loss.backward (); 10 optimizer.update (); 11 } 12 } 6
grain is safe every function is statically typed and optimized.
1 struct Sigmoid(T, size_t dim) { 2 Variable !(T, dim , HostStorage) y; 3 4 nothrow forward(Variable !(T, dim , HostStorage) x) { 5 auto y = x.sliced.map!(a => tanh(a * 0.5) * 0.5 + 0.5) 6 .slice.variable(x.requiresGrad); 7 if (x.requiresGrad) this.y = y; 8 return y; 9 } 10 nothrow backward(Variable !(T, dim , HostStorage) gy) { 11 auto ys = this.y.sliced; 12 return slice ((1.0 - ys) * ys * gy.sliced).variable; 13 } 14 mixin FunctionCommon; // inject type checking 15 } 7
grain is safe Chainer/PyTorch issue 8
grain is safe Chainer/PyTorch issue ▶ runtime overhead ▶ for-loop,
dynamic dispatch, func call ▶ runtime error: ▶ type error, dim mismatch, exception, memory leak D solution ▶ template based compile-time code generation (static if/foreach) ▶ compile-time type/dim/exception checking 9
grain is a lightweight framework Jupyter notebook support 3 3https://github.com/ShigekiKarita/grain/blob/master/tutorial.ipynb
10
grain is a lightweight framework smaller code and footprint framework
code lines lib size [mb] lib type grain 12,431 0.6 static chainer 162,106 6 python code pytorch 193,754 911 dynamic tensorflow 130,475 285 dynamic smaller exe file (MNIST : 1.8MB, CIFAR: 2.3MB) 11
grain is as fast as other frameworks task backend framework
train iter/sec mnist CUDA grain 270 chainer 340 pytorch 200 CPU grain 160 chainer 95 pytorch 110 ▶ chainer 4.5.0, pytorch 0.4.1, MKL2018, CUDA9, CUDNN7 ▶ pytorch is built from source. modified official scripts to be fair. 12
grain is as fast as other frameworks task backend framework
train iter/sec ptb CUDA grain 3.1 chainer 3.4 pytorch 12 CPU grain 1.2 chainer 2.1 pytorch 2.4 ▶ chainer 4.5.0, pytorch 0.4.1, MKL2018, CUDA9, CUDNN7 ▶ pytorch is built from source. modified official scripts to be fair. 13
grain: summary deep learning framework for D language ▶ DYNAMIC:
like chainer and pytorch ▶ SAFE: statically typed variable and function ▶ LIGHT: simple like Python, small like C++ ▶ FAST: mir and CUDA backend 14
Thanks for your attention https://github.com/ShigekiKarita/grain 15
examples ▶ Image recognition (mnist, cifar) ▶ Language modeling (shakespere,
ptb) ▶ WIP ▶ Reinforcement learning (cartpole) ▶ Speech recognition (librispeech) ▶ Machine translation (anki) 16
future work ▶ probabilistic programming ▶ lazy evaluation mode ▶
low resource environment (RasberryPi) 17