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
PyConJP 2015: Dask: 軽量並列計算フレームワーク (Lightning ta...
Search
Sinhrks
October 10, 2015
Programming
16k
3
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
PyConJP 2015: Dask: 軽量並列計算フレームワーク (Lightning talks)
Sinhrks
October 10, 2015
More Decks by Sinhrks
See All by Sinhrks
daskperiment: Reproducibility for Humans
sinhrks
1
450
PythonとApache Arrow
sinhrks
6
2k
大規模データの機械学習におけるDaskの活用
sinhrks
10
3.3k
機械学習と解釈可能性
sinhrks
7
5.8k
LIME
sinhrks
2
1.5k
データ分析言語R 1年の振り返り
sinhrks
5
2.6k
pandasでのOSS活動事例と最初の一歩
sinhrks
2
20k
Dask Distributedによる分散機械学習
sinhrks
4
1.6k
Data processing using pandas and Dask
sinhrks
1
300
Other Decks in Programming
See All in Programming
継続モナドとリアクティブプログラミング
yukikurage
3
680
The Past, Present, and Future of Enterprise Java
ivargrimstad
0
520
Lean は証明の正しさを確認するためだけのツールって思ってませんか?
inoueasei
1
140
TSX の <Hoge<Fuga>> という構文に驚いた話 / tsx-type-argument-syntax
kanaru0928
0
200
【やさしく解説 設計編・中級 #1】一つの車に、運転手は一人 ~ある倉庫システムの事例から~
panda728
PRO
0
200
Embedded SREと共に達成した会員管理システムのAWS移行 - SRE NEXT 2026 ランチスポンサーセッション
niftycorp
PRO
1
3.4k
言語を使う側から、作る側へ。 自作 Lisp で得た新たな気づき。
andpad
0
150
AI時代のPHPer生存戦略 ~「言語、もうなんでもよくない?」に本気で向き合う~
vivion
0
240
『コードを書く以外の』エンジニアリング〜課金基盤移行プロジェクト推進のためのTips4選
yuriko1211
0
570
ビデオ通話が繋がる0.2秒で何が起きているのか
supurazako
2
170
AIが無かった頃の素敵な出会いの話
codmoninc
1
380
2年かけて Deno に DOMMatrix を実装した話 / How I implemented DOMMatrix in Deno over two years
petamoriken
0
200
Featured
See All Featured
Prompt Engineering for Job Search
mfonobong
0
390
A Soul's Torment
seathinner
6
3.3k
Darren the Foodie - Storyboard
khoart
PRO
3
3.5k
How to Ace a Technical Interview
jacobian
281
24k
Thoughts on Productivity
jonyablonski
76
5.3k
Introduction to Domain-Driven Design and Collaborative software design
baasie
1
920
The Cost Of JavaScript in 2023
addyosmani
55
10k
CSS Pre-Processors: Stylus, Less & Sass
bermonpainter
360
30k
Templates, Plugins, & Blocks: Oh My! Creating the theme that thinks of everything
marktimemedia
31
2.8k
New Earth Scene 8
popppiees
3
2.5k
Sharpening the Axe: The Primacy of Toolmaking
bcantrill
46
2.9k
Music & Morning Musume
bryan
47
7.3k
Transcript
Dask ܰྔฒྻܭࢉϑϨʔϜϫʔΫ
ࣗݾհ • Data Analyst • OSS ׆ಈ: • PyData Development
Team (pandasίϛολ) • Blaze Development Team (Daskίϛολ) • GitHub: https://github.com/sinhrks
Dask • ܰྔฒྻࢄϑϨʔϜϫʔΫ (ϊʔυฒྻ͕ओ) • NumPy, PyToolz, pandasͷAPI (αϒηοτ) Λ
ͭσʔλߏΛఏڙ αϒϞδϡʔϧ ϕʔεύοέʔδ EBTLBSSBZ /VN1ZOEBSSBZ EBTLCBH 1Z5PPM[ MJTU TFU EJDUʹର͢Δॲཧ EBTLEBUBGSBNF QBOEBT%BUB'SBNF
DataFrame • pandas.DataFrame: ϥϕϧ͖ͷ2࣍ݩσʔλ • Dask.DataFrame: pandas.DataFrame Λׂͯ͠ ॲཧ QBOEBT%BUB'SBNF
%BTL%BUB'SBNF
Dask DataFrame import pandas as pd df = pd.DataFrame({'X': np.arange(10),
'Y': np.arange(10, 20), 'Z': np.arange(20, 30)}, index=list('abcdefghij')) df import dask.dataframe as dd ddf = dd.from_pandas(df, 2) ddf dd.DataFrame<from_pandas-…, divisions=('a', 'f', 'j')> ߦྻͷ QBOEBT%BUB'SBNFΛ࡞ σʔλΛ෦తʹͭʹׂ͠ɺ %BTL%BUB'SBNFΛ࡞
DaskͰͷܭࢉॲཧ ddf + 1 dd.DataFrame<elemwise-…, divisions=('a', 'f', 'j')> (ddf +
1).compute() EG EEG DPNQVUF EEG શମʹΛՃࢉɻ ࣮ࡍͷܭࢉॲཧ·࣮ͩߦ͞Εͳ͍ ܭࢉΛ࣮ߦ
Blocked Algorithm (Ճࢉ) $PODBU (ddf + 1).compute() ॲཧલͷ
QBOEBT%BUB'SBNF %BTL%BUB'SBNF ʹม ׂ͞Εͨσʔλʹରͯ͠ ܭࢉ࣮ߦ݁ՌΛ݁߹ ॲཧޙͷ QBOEBT%BUB'SBNF
Blocked Algorithm (߹ܭ) ddf.sum().compute() 4VN 4VN $PODBU 4VN TVN ճ
DPODBU TVN ճ
Blocked Algorithm (߹ܭ) ddf.sum().visualize() TVN ճ DPODBU TVN ճ ॲཧલͷ
%BTL%BUB'SBNF
Blocked Algorithm (ฏۉ) ddf.mean().visualize() TVN DPVOU NFBOTVNDPVOU
Blocked Algorithm (ཁ౷ܭྔ) ddf.describe().visualize() ݁Ռ
Dask DataFrameͷػೳ • ࢛ଇԋࢉ/ൺֱԋࢉ • ౷ܭྔ • ϥϕϧʹΑΔσʔλબ • άϧʔϓԽ
/ ू • ࿈݁/݁߹ (merge, join, concat…)
ύϑΥʔϚϯεൺֱ • AWS EC2: c4.2xlarge (vCPU: 8, ϝϞϦ: 15 GiB)
n = 100000000 df = pd.DataFrame({'a': np.random.randint(1, 100, n), 'b': np.random.randn(n)}) df ddf = dd.from_pandas(df, 5) ddf dd.DataFrame<from_pandas-…, divisions=(0, 20000000, 40000000, 60000000, 80000000, 99999999)> ԯߦྻͷ QBOEBT%BUB'SBNFΛ࡞ σʔλΛ෦తʹͭʹׂ͠ɺ %BTL%BUB'SBNFΛ࡞
ύϑΥʔϚϯεൺֱ %timeit df.describe() 1 loops, best of 3: 25.3 s
per loop %timeit ddf.describe().compute() 1 loops, best of 3: 3.87 s per loop QBOEBT %BTL
݁Ռ • ※ percentile ۙࣅΞϧΰϦζϜΛར༻͢ΔͨΊɺ ʹࠩҟ͕ग़Δ߹͕͋Δ () df.describe() ddf.describe().compute() QBOEBT
%BTL
݁Ռ ddf.describe().visualize()
·ͱΊ • Dask: ܰྔฒྻࢄϑϨʔϜϫʔΫ • NumPy, PyToolz, pandas ͷAPIͷαϒηοτΛ ఏڙ
• Ϣʔβ NumPy / PyToolz / pandas ͷ API Λ ར༻ͯ͠ฒྻܭࢉ͕Ͱ͖Δ