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
Sponsored
·
Your Podcast. Everywhere. Effortlessly.
Share. Educate. Inspire. Entertain. You do you. We'll handle the rest.
→
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
2.1k
大規模データの機械学習における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
Claude Code全社展開のためにやったことn選~プラグイン302個・コミッター271人を支えるために~
kenchan
5
1.5k
TSX の <Hoge<Fuga>> という構文に驚いた話 / tsx-type-argument-syntax
kanaru0928
0
230
SlackアプリとLambdaの 連携を構築した話
pawn_4_s
1
120
生成AI導入の「期待外れ」を乗り越える ー 開発フロー改革が目指す、真の組織変革
starfish719
0
4.4k
Detecting Compromised CI with eBPF and Cilium Tetragon
lizrice
0
180
Go言語とトイモデルで学ぶTransformerの気持ち / fukuokago23-transformer
monochromegane
0
170
Foundation Models frameworkで画像分析
ryodeveloper
1
610
Flow は今どうなっているか
mizdra
PRO
0
450
PostgreSQL 18で考えるUUID主キー
kazuhiro1982
0
470
今さら聞けない .NET CLI
htkym
0
190
自動化したのに回らないテスト運用の壁ーAI時代の品質責任と生産性
mfunaki
0
130
わからない話を追いかけたら、プログラミング言語を作る側にいた
ydah
3
500
Featured
See All Featured
エンジニアに許された特別な時間の終わり
watany
108
250k
Design and Strategy: How to Deal with People Who Don’t "Get" Design
morganepeng
133
19k
職位にかかわらず全員がリーダーシップを発揮するチーム作り / Building a team where everyone can demonstrate leadership regardless of position
madoxten
64
56k
A Soul's Torment
seathinner
6
3.4k
Making the Leap to Tech Lead
cromwellryan
135
10k
Fireside Chat
paigeccino
42
4k
The SEO Collaboration Effect
kristinabergwall1
1
520
Public Speaking Without Barfing On Your Shoes - THAT 2023
reverentgeek
1
520
Accessibility Awareness
sabderemane
1
180
Agile Leadership in an Agile Organization
kimpetersen
PRO
0
200
How to Create Impact in a Changing Tech Landscape [PerfNow 2023]
tammyeverts
56
3.4k
VelocityConf: Rendering Performance Case Studies
addyosmani
332
25k
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 Λ ར༻ͯ͠ฒྻܭࢉ͕Ͱ͖Δ