Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
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
950
主専攻実験(春) 巡回セールスマン問題
s4ichi
0
870
SantaFeTrail
s4ichi
2
150
Other Decks in Programming
See All in Programming
最近”作らせてる” ローカルAIアプリの話
akit37
0
500
Zero-Tap Sign-In対応、結局何をすればいいの?
mitohato14
0
1k
私なりのハーネスエンジニアリング ~独自の言語処理系の開発を通して~
seosoft
0
110
個人開発者よ、Honoを使え(おじさんver)
tanahiro2010
2
280
作って学ぶSpring BootのAuto Configuration / JJUG Night Seminar 2026-10-19
rshindo
0
210
Atomic Design, Enforced: Scaling Mobile Design Systems (next.app devCon / droidCon Berlin 2026)
steliosf
PRO
0
190
Performance Optimization With LLMs
xleitix
0
210
조합이폭발하는디자인시스템이걸눈으로도테스트하라고요
giljongyu
0
620
Lambda durable functionsでHuman in the Loopを楽に…楽に……
har1101
2
210
3回つくってわかった、 定期実行ジョブ基盤の本質情報
takai
4
3.3k
月間100万人のサービス刷新で、 技術選定をHonoに振り切った話
yutobara
8
7k
Long Living Tokens, Die, Die, Die! (or: The One Ring is Banned in Modern)
sylph01
0
380
Featured
See All Featured
B2B Lead Gen: Tactics, Traps & Triumph
marketingsoph
1
290
Build The Right Thing And Hit Your Dates
maggiecrowley
39
3.5k
Un-Boring Meetings
codingconduct
0
470
From Legacy to Launchpad: Building Startup-Ready Communities
dugsong
0
360
Game over? The fight for quality and originality in the time of robots
wayneb77
1
310
A designer walks into a library…
pauljervisheath
211
25k
Ruling the World: When Life Gets Gamed
codingconduct
0
420
StorybookのUI Testing Handbookを読んだ
zakiyama
31
7k
Exploring the Power of Turbo Streams & Action Cable | RailsConf2023
kevinliebholz
37
6.6k
[RailsConf 2023 Opening Keynote] The Magic of Rails
eileencodes
31
10k
So, you think you're a good person
axbom
PRO
2
2.2k
AI: The stuff that nobody shows you
jnunemaker
PRO
10
1.2k
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) ”ϦʔδϣϯมͷಈతͳΤΠϦΞεఆʹΑΔϝϞϦޮ্”