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
220
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
860
SantaFeTrail
s4ichi
2
150
Other Decks in Programming
See All in Programming
ルールを書いて終わらせないハーネスエンジニアリング
yug1224
4
1.8k
使用 Meilisearch 建立新聞搜尋工具
johnroyer
0
190
AI時代に設計が 最大の生産性レバーになる 意図駆動開発とデータを消さない設計|Don't Delete Your Data or Your Intent — Design as the Deepest Lever in the AI Era
tomohisa
0
120
人間の目はかわらない、だからJPEGは30年もつ
yuzneri
12
17k
Welcome to the "Parametricity" 🏙️ − Generic だけど Specific な世界 −
guvalif
PRO
1
190
そこに3びきプロダクトがいるじゃろう——生成AI時代における“価値が届かない理由”の構造
kosuket
0
270
20260722_microCMSで考える、AI時代のコンテンツ運用設計
yosh1
0
160
PHP初心者セッション2026 〜生成AIでは見えない裏側を知る:今だからLAMPを通して仕組みを学ぶ〜
kashioka
0
730
Augmenting AI with the Power of Jakarta EE
ivargrimstad
0
300
2年かけて Deno に DOMMatrix を実装した話 / How I implemented DOMMatrix in Deno over two years
petamoriken
0
180
為什麼你並不需要ViewModel / No, you don't need a ViewModel
lovee
1
450
Go言語とトイモデルで学ぶTransformerの気持ち / fukuokago23-transformer
monochromegane
0
150
Featured
See All Featured
Side Projects
sachag
455
43k
State of Search Keynote: SEO is Dead Long Live SEO
ryanjones
0
230
SEO for Brand Visibility & Recognition
aleyda
0
4.6k
The State of eCommerce SEO: How to Win in Today's Products SERPs - #SEOweek
aleyda
2
11k
KATA
mclloyd
PRO
35
15k
Accessibility Awareness
sabderemane
1
160
Designing Experiences People Love
moore
143
24k
How to Align SEO within the Product Triangle To Get Buy-In & Support - #RIMC
aleyda
2
1.7k
Information Architects: The Missing Link in Design Systems
soysaucechin
0
1k
ReactJS: Keep Simple. Everything can be a component!
pedronauck
666
130k
SEO in 2025: How to Prepare for the Future of Search
ipullrank
3
3.7k
The Illustrated Children's Guide to Kubernetes
chrisshort
51
53k
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) ”ϦʔδϣϯมͷಈతͳΤΠϦΞεఆʹΑΔϝϞϦޮ্”