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
What's New in Android 2026
veronikapj
0
240
音楽のための関数型プログラミング言語mimiumにおける多段階計算の活用
tomoyanonymous
1
370
Augmenting AI with the Power of Jakarta EE
ivargrimstad
0
300
Laravel Boostに学ぶ、AIにPHPを書かせる技術 〜OSSの実装から蒸留するエージェント制御の王道〜
kentaroutakeda
3
560
2年かけて Deno に DOMMatrix を実装した話 / How I implemented DOMMatrix in Deno over two years
petamoriken
0
180
광주소프트웨어마이스터고등학교 DevFest 특강 - 바이브 코딩 시대에서 주니어 개발자로 살아남는 방법
utilforever
1
160
ビデオ通話が繋がる0.2秒で何が起きているのか
supurazako
2
160
AI時代、エンジニアはどう育つのか -未経験エンジニアの成長を間近で見て考えたこと-
thasu0123
0
200
壊れたパーサから始める関数型設計と構成的なパーサ #fp_matsuri
raiga0310
2
420
生成AI導入の「期待外れ」を乗り越える ー 開発フロー改革が目指す、真の組織変革
starfish719
0
2.7k
Terraform標準の組織で AWS CDKをどう使うか
mu7889yoon
1
430
AI時代のPHPer生存戦略 ~「言語、もうなんでもよくない?」に本気で向き合う~
vivion
0
210
Featured
See All Featured
Abbi's Birthday
coloredviolet
3
8.9k
Jamie Indigo - Trashchat’s Guide to Black Boxes: Technical SEO Tactics for LLMs
techseoconnect
PRO
0
540
The AI Search Optimization Roadmap by Aleyda Solis
aleyda
1
6k
Tell your own story through comics
letsgokoyo
1
1k
Have SEOs Ruined the Internet? - User Awareness of SEO in 2025
akashhashmi
0
400
Build your cross-platform service in a week with App Engine
jlugia
234
18k
4 Signs Your Business is Dying
shpigford
187
22k
Save Time (by Creating Custom Rails Generators)
garrettdimon
PRO
32
4k
Groundhog Day: Seeking Process in Gaming for Health
codingconduct
0
260
Building the Perfect Custom Keyboard
takai
2
820
JAMstack: Web Apps at Ludicrous Speed - All Things Open 2022
reverentgeek
1
510
DBのスキルで生き残る技術 - AI時代におけるテーブル設計の勘所
soudai
PRO
67
56k
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) ”ϦʔδϣϯมͷಈతͳΤΠϦΞεఆʹΑΔϝϞϦޮ্”