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
Region based memory management for mini ML
Search
Sponsored
·
Your Podcast. Everywhere. Effortlessly.
Share. Educate. Inspire. Entertain. You do you. We'll handle the rest.
→
TAKAMASA Saichi
January 12, 2017
Programming
210
2
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
Region based memory management for mini ML
region推論の実装をMLのサブセットで行った際の発表資料
リポジトリはこちら:
https://github.com/Everysick/region_based_mini_ml
TAKAMASA Saichi
January 12, 2017
More Decks by TAKAMASA Saichi
See All by TAKAMASA Saichi
メトリクス可視化から始める Rails ウェブサーバーのチューニング- Kaigi On Rails 2021
s4ichi
3
2k
Cookpad 5day service dev internship 2017 teamC
s4ichi
0
920
主専攻実験(春) 巡回セールスマン問題
s4ichi
0
840
SantaFeTrail
s4ichi
2
150
Other Decks in Programming
See All in Programming
AI駆動開発で崩れていくコードベースを立て直す
kyoko_nr_nr
1
450
TypeScript+Orvalで実現する型安全かつ堅牢でスケーラブルなマルチチャネル通知基盤 / TSKaigi Night talks ~after conference~
d0riven
0
320
CSC307 Lecture 17
javiergs
PRO
0
320
並列実装の現場、2ヶ月間実務でAIを使い倒したAIもPCも私も限界が近い
ming_ayami
0
120
Observability in Practice:Grafana 與 Edge Device SRE 的那些事
blueswen
0
150
Old Dog, New Tricks: The Java 25 Reinvention - JNation
bazlur_rahman
0
150
LLM本来の能力を解き放つサンドボックス技術とAI民主化への適用
yukukotani
3
3.5k
AIチームを指揮するOSS「TAKT」活用術 / How to Use “TAKT,” an OSS Tool for Orchestrating AI Teams
nrslib
6
870
Technical Debt: Understanding it Rightly, Engaging it Rightly #LaravelLiveJP
shogogg
0
210
The ROI of Quarkus for Spring Boot Applications
hollycummins
0
100
Copilot CLI の継戦能力を高める コンテキスト管理
nozomutu
1
1.2k
Lemonade + Foundry Toolkit でお手軽アプリ開発
seosoft
1
320
Featured
See All Featured
AI Search: Implications for SEO and How to Move Forward - #ShenzhenSEOConference
aleyda
1
1.3k
Bootstrapping a Software Product
garrettdimon
PRO
307
120k
WCS-LA-2024
lcolladotor
0
620
How Fast Is Fast Enough? [PerfNow 2025]
tammyeverts
3
600
The MySQL Ecosystem @ GitHub 2015
samlambert
251
13k
Imperfection Machines: The Place of Print at Facebook
scottboms
270
14k
The SEO identity crisis: Don't let AI make you average
varn
0
490
Music & Morning Musume
bryan
47
7.2k
The Illustrated Children's Guide to Kubernetes
chrisshort
51
52k
Navigating Algorithm Shifts & AI Overviews - #SMXNext
aleyda
1
1.3k
Refactoring Trust on Your Teams (GOTO; Chicago 2020)
rmw
35
3.5k
Navigating the Design Leadership Dip - Product Design Week Design Leaders+ Conference 2024
apolaine
1
340
Transcript
RegionਪΞϧΰϦζϜͷ࣮ͱಈ Takamasa Sachi, a.k.a @everysick
1. ֓ཁ 2. Region ਪʹ͍ͭͯ • Region ͷΞΠσΞ • Region
ਪͷత • ਪΞϧΰϦζϜ 3. ࣮༻ྫ 4. ·ͱΊ, ՝ 5. ࢀߟจݙ
1. ֓ཁ 2. Region ਪʹ͍ͭͯ • Region ͷΞΠσΞ • Region
ਪͷత • ਪΞϧΰϦζϜ 3. ࣮༻ྫ 4. ·ͱΊ, ՝ 5. ࢀߟจݙ
֓ཁ • Regionਪ • Regionʹؔ͢ΔจݙΛಡΉ • Mads Tofte, Jean-Pierre Talpin
(1996) “Region-Based Memory Management” • RegionਪΞϧΰϦζϜͷ࣮ • ࣮ͷΞΠσΞൃݟͨ͠Λ·ͱΊΔ • ಈͷௐࠪ • ML kit Ͱͷ࣮༻ྫ • ͦͷ΄͔طଘݴޠͷԠ༻ྫ
1. ֓ཁ 2. Region ਪʹ͍ͭͯ • Region ͷΞΠσΞ • Region
ਪͷత • ਪΞϧΰϦζϜ 3. ࣮༻ྫ 4. ·ͱΊ, ՝ 5. ࢀߟจݙ
Regionਪʹ͍ͭͯ - RegionͷΞΠσΞ • ಈతʹϝϞϦ֬อ, ղ์͞ΕΔ"σʔλ"ʹ͍ͭͯɺ ͦͷ"σʔλ"͕ࢀর͞ΕΔྖҬΛRegionͱఆٛ • είʔϓ୯ҐͰRegionͷൣғܾఆ͞ΕΔ {
int y; { int x = 5; print (x); } print (y); } xͷείʔϓ xͷRegion yͷείʔϓ yͷRegion
Regionਪʹ͍ͭͯ - RegionͷΞΠσΞ • ಈతʹϝϞϦ֬อ, ղ์͞ΕΔ"σʔλ"ʹ͍ͭͯɺ ͦͷ"σʔλ"͕ࢀর͞ΕΔྖҬΛRegionͱఆٛ • είʔϓ୯ҐͰRegionͷൣғܾఆ͞ΕΔ {
int *ptr; { int x = 5; ptr = &x; } print (*ptr); } xͷείʔϓ(ෆਖ਼) είʔϓ୯ҐͷཧͰ ͜ͷΑ͏ͳྫʹରͯ͠ରԠͰ͖ͳ͍
Regionਪʹ͍ͭͯ - RegionͷΞΠσΞ • ಈతʹϝϞϦ֬อ, ղ์͞ΕΔ"σʔλ"ʹ͍ͭͯɺ ͦͷ"σʔλ"͕ࢀর͞ΕΔྖҬΛRegionͱఆٛ • είʔϓ୯ҐͰRegionͷൣғܾఆ͞ΕΔ {
int *ptr; { int x = 5; ptr = &x; } print (*ptr); } xͷRegion ɾptrͷείʔϓ͕xͷRegion ɾࢀরΛฦؔ͢ಉ༷
Regionਪʹ͍ͭͯ - Regionਪͷత • શͯͷRegionΛ࠷దʹਪͰ͖Ε, είʔϓΛ·͙ͨ "σʔλ"ͷཧΛશͯ੩తʹߦ͏͜ͱ͕Մೳ 㱺 Garbage Collection
͕ෆඞཁʹͳΔ 㱺 Stop the world ʹΑΔ࣮ߦ࣌ͷఀࢭ࣌ؒݮͳͲ 㱺 ࣮ߦ࣌εϧʔϓοτͷ্ʹܨ͕Δ • ͨͩ͠Regionͷਪ݁Ռʹྑ͠ѱ͕͋͠Δ • શͯάϩʔόϧͳRegionʹׂΓͯΔ͜ͱՄೳ
Regionਪʹ͍ͭͯ - ਪΞϧΰϦζϜ • "Regionਪ" "Regionऍ͖ܕͷܕਪ" • ਪʹΑͬͯRegionͷಋೖ, ඥ͚Λܾఆ͢Δ͜ͱ͕Մೳ
• RegionਪϓϩάϥϛϯάݴޠMLͷΞΠσΞ • આ໌ɺ࣮ͷλʔήοτʹMLΛ࠾༻ • ҎԼͷΑ͏ʹͯ͠MLͷߏจRegionΛఆٛ letregion r in … end 1 @ r (λ x. x) @ r ɾRegion "r" ͷಋೖ "r" ʹඥ͘ "σʔλ" ͜ͷείʔϓͰͷΈ༻͞ΕΔ ɾRegion "r" ͷඥ͚ "σʔλ"ΛͲͷRegion ඥ͚Δ͔Λ໌ࣔ
Regionਪʹ͍ͭͯ - ਪΞϧΰϦζϜ • Regionͷใ͕ແ͍ݴޠ͔ΒRegion͖ͷݴޠ • ݩʹͳΔݴޠ७ਮͳMLͰྑ͍ • نଇʹैͬͯܕਪͱஔ͖͑Λద༻͢Δ let
x = (2, 3) in (λ y. (#1 x, y) end 5 letregion r4, r5 in letregion r6 in let x = (2 @ r2, 3 @ r6) @ r4 in (λ y. (#1 x, y) @ r1) @ r5 end end 5 @ r3 end
Regionਪʹ͍ͭͯ - ਪΞϧΰϦζϜ • MLͷܕΛ֦ு • Regionͷࣝผࢠ, Regionͷ࡞༻ͳͲͷऍΛՃ • e.g.
(int) ! ((int, r1), {put(r1), get(r2)}) • ֦ு͞Εͨܕʹରͯ͠ܕਪΛߦ͏ • Damas and Milner (1982) ͷ MLtype, ML type scheme Λ֦ு • Regionਪͷੑೳܕͷ୯ҰԽʹؼண • ୯ҰԽͷΞϧΰϦζϜʹΑͬͯ ඇޮతͳRegionʹ"σʔλ"͕ஔ͞Εͯ͠·͏
1. ֓ཁ 2. Region ਪʹ͍ͭͯ • Region ͷΞΠσΞ • Region
ਪͷత • ਪΞϧΰϦζϜ 3. ࣮༻ྫ 4. ·ͱΊ, ՝ 5. ࢀߟจݙ
࣮༻ྫ • ML kit • Standard MLॲཧܥ • RegionਪΛಋೖ͠ϝϞϦཧΛ΄΅RegionͰߦ͑Δ •
શͳGC less ͍͠ • ୯ҰԽΞϧΰϦζϜRegionͷಉఆ͕Մೳͳ͜ͱ͕ূ໌͞Ε͍ͯΔ let fib n in if n < 2 then 1 else fib(n-1) + fib(n-2) end 10000…000 ɾ࠶ؼਂ͕ਂ͍ ɾRegionͷղ์ʹͨͲΓண͚ͳ͍ ɾෆཁͳϝϞϦ͕࠶ؼதʹΔ ɾղফͷͨΊGCΛಋೖ ɾRegionͷϝϞϦΛ࠶׆༻͢Δ
࣮༻ྫ • Rust (Cyclone) • CycloneCݴޠͷγϯλοΫεʹRegionͷ֓೦Λಋೖ • ಈతͳRegion, ੩తͳRegion, ώʔϓΛͬͨRegion
• RegionਪͱҟͳΔͷ • Cycloneͱͯ͠ͷ։ൃऴྃ • Cyclone͕Rustٵऩ͞Ε৽نݴޠͱͯ͠։ൃ͕ਐߦ • OwnershipLifetime(≒ Region)ͳͲͷ֓೦Λಋೖ • RegionਪͰͳ͘RegionΛಋೖͨ͠GC lessͷݴޠ
1. ֓ཁ 2. Region ਪʹ͍ͭͯ • Region ͷΞΠσΞ • Region
ਪͷత • ਪΞϧΰϦζϜ 3. ࣮༻ྫ 4. ·ͱΊ, ՝ 5. ࢀߟจݙ
·ͱΊ, ՝ • ·ͱΊ • RegionɺRegionਪʹֶ͍ͭͯΜͩ • Regionਪ ≒ ୯ҰԽʹґଘ͢Δ͜ͱΛཧղͨ͠
• Regionਪͷ࣮Λߦͬͨ • ਪ෦500ߦఔ, MLͷαϒηοτͰಈ࡞ • Region׆༻ྫʹ͍ͭͯͷαʔϕΠΛߦͬͨ • ՝ • ࣮ͨ͠ϓϩάϥϜͷվળ • ਪҎ֎ͷRegionͷѻ͍ʹ͍ͭͯͷௐࠪ
1. ֓ཁ 2. Region ਪʹ͍ͭͯ • Region ͷΞΠσΞ • Region
ਪͷత • ਪΞϧΰϦζϜ 3. ࣮༻ྫ 4. ·ͱΊ, ՝ 5. ࢀߟจݙ
ࢀߟจݙ • Mads Tofte, Jean-Pierre Talpin (1996) “Region-Based Memory Management”
• Mads Tofte, Lars Birkedal (1998) “A region inference algorithm” • Dan Grossman, Greg Morrisett, Trevor Jim, Michael Hicks, Yanling Wang, James Cheney(2002) “Region-based memory management in cyclone” • ถాڡ࢙, ӏ࢝ཅ, ՖҪ ྄, ീਿণ, ౬ᕆଠҰ(2005) ”ϦʔδϣϯมͷಈతͳΤΠϦΞεఆʹΑΔϝϞϦޮ্”