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
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
3Dシーンの圧縮
fadis
1
690
過去最大のMCPアップデート! 2026-07-28 RC版の謎に迫る
licux
6
230
AI 時代のソフトウェア設計の学び方
masuda220
PRO
29
12k
TypeScript+Orvalで実現する型安全かつ堅牢でスケーラブルなマルチチャネル通知基盤 / TSKaigi Night talks ~after conference~
d0riven
0
320
Make SRE Operations Easier with Azure SRE Agent
kkamegawa
0
5.2k
エージェンティックRAGにAWSで入門しよう!
har1101
8
1.4k
Observability in Practice:Grafana 與 Edge Device SRE 的那些事
blueswen
0
160
JJUG CCC 2026 Spring: JSpecify で実現する Kotlin フレンドリーな Java API 設計
ternbusty
1
160
Spec Driven Development | AI Summit Lisbon
danielsogl
PRO
0
180
Lessons from Spec-Driven Development
simas
PRO
0
150
「AIで開発し、AIを届ける」をEvalでつなぐ 〜AIネイティブに始めるプロダクト開発の実践〜 / Connecting "Develop with AI, deliver AI" with Eval
rkaga
4
4.9k
ユニットテストの先へ:テスト技法で要求・仕様を整理するJava開発実践 / Beyond_Unit_Testing_Practical_Java_Development_Techniques_for_Organizing_Requirements_and_Specifications
shimashima35
0
380
Featured
See All Featured
svc-hook: hooking system calls on ARM64 by binary rewriting
retrage
2
290
CoffeeScript is Beautiful & I Never Want to Write Plain JavaScript Again
sstephenson
162
16k
Chrome DevTools: State of the Union 2024 - Debugging React & Beyond
addyosmani
10
1.2k
Abbi's Birthday
coloredviolet
2
8k
Marketing Yourself as an Engineer | Alaka | Gurzu
gurzu
0
220
Building a A Zero-Code AI SEO Workflow
portentint
PRO
0
570
The Organizational Zoo: Understanding Human Behavior Agility Through Metaphoric Constructive Conversations (based on the works of Arthur Shelley, Ph.D)
kimpetersen
PRO
0
360
Build your cross-platform service in a week with App Engine
jlugia
234
18k
Put a Button on it: Removing Barriers to Going Fast.
kastner
60
4.3k
CSS Pre-Processors: Stylus, Less & Sass
bermonpainter
360
30k
The Director’s Chair: Orchestrating AI for Truly Effective Learning
tmiket
1
190
How to Grow Your eCommerce with AI & Automation
katarinadahlin
PRO
1
200
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) ”ϦʔδϣϯมͷಈతͳΤΠϦΞεఆʹΑΔϝϞϦޮ্”