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
クラウドの作り方(GPUサーバ編)
Search
Hikaru Ashino
February 27, 2023
Technology
3.4k
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
クラウドの作り方(GPUサーバ編)
Hikaru Ashino
February 27, 2023
More Decks by Hikaru Ashino
See All by Hikaru Ashino
さくらのクラウド高火力プランを使って 大規模言語モデル(LLM)を動かしてみよう
picasa
1
750
A story until offering openSUSE on Sakura VPS
picasa
0
170
自宅サーバでマストドンを立てる
picasa
1
3.4k
さくらのサービスを支えるAPI開発のお話(仮) - APIStudy#6
picasa
0
120
卒業制作 サーバーの脆弱性情報管理システム
picasa
0
78
Kickstartfileジェネレータを作ってみた
picasa
0
74
Amazon Cognito + SNS + Zabbixでサーバー監視アプリを作ってみた - JAWS DAYS 2015
picasa
0
160
Amazon SNSでZabbixのアラートをプッシュ通知してみた
picasa
0
170
cobbler + koan VPS作成の自動化
picasa
0
54
Other Decks in Technology
See All in Technology
Running Kotlin + Quarkus with Lambda
nealle
1
3.9k
[JAWS-UG彩の国埼玉#12]そろそろ準備する?re:Invent2026をやさしく解説 / reinvent2026-sainokuni
sh_fk2
1
350
Tofu-Controller lightning talk @ Containerday 2026
gionn
0
120
ソフトウェア ファクトリー - 再現性のあるソフトウェアの工場づくり / Software factory
iktakahiro
6
5k
JAWSUG TOHOKU 青森支部 「LoGoチャット」のAWS移行で 乗り越えたこと
taketakekaho
0
340
オントロジーって 結局なにもの? AI エージェントに「意味」を渡す知識設計の話
greenmidori
0
230
分析の民主化を支えるメタデータ整備の実践
kakehashi
PRO
4
1.4k
自作バイナリを動かす「入口」8選
puhitaku
2
1.3k
Refining Active Record
shugo
0
160
AIがコードを書く時代に、エンジニアは何で自分の価値を証明するのか / In an era where AI writes code how do engineers prove their value
carta_engineering
3
1.1k
Gemini Intelligence 入門 ― AppFunctions と Gemini Nano
takuroabe
0
280
FinOps Agentが生んだ技術負債:コスト自動調査の落とし穴と解消までの道のり
oasis1994liveforever
1
110
Featured
See All Featured
CSS Pre-Processors: Stylus, Less & Sass
bermonpainter
360
31k
XXLCSS - How to scale CSS and keep your sanity
sugarenia
250
1.3M
Build The Right Thing And Hit Your Dates
maggiecrowley
39
3.5k
HU Berlin: Industrial-Strength Natural Language Processing with spaCy and Prodigy
inesmontani
PRO
0
760
JavaScript: Past, Present, and Future - NDC Porto 2020
reverentgeek
52
6.1k
Become a Pro
speakerdeck
PRO
31
6.3k
BBQ
matthewcrist
90
10k
Visualization
eitanlees
153
17k
Design in an AI World
tapps
1
350
Measuring Dark Social's Impact On Conversion and Attribution
stephenakadiri
2
310
Making Projects Easy
brettharned
120
6.8k
How to train your dragon (web standard)
notwaldorf
96
6.9k
Transcript
Ϋϥυͷ࡞Γํ (GPUαʔόฤ) Ϋϥυࣄۀຊ෦ ΫϥυαʔϏε෦ Ἑɹޫ ͘͞ΒΠϯλʔωοτגࣜձࣾ 2023/02/27
2 • ୲ۀ • αʔϏεͷόοΫΤϯυ։ൃɺΠϯϑϥ։ൃ • ӴσʔλϓϥοτϑΥʔϜʮTellusʢςϧʔεʣʯ • ͘͞ΒͷVPSɺ͘͞ΒͷΫϥυ •
ܦྺ • 2012 - 2016 ITܥઐֶߍ4՝ఔͰֶͿ ߴઐ࢜ଔ • 2013 - 2016 MSPͱϗεςΟϯάΛߦ͏ձࣾʹΞϧόΠτೖࣾ • OpenStackɺLinux KVMΛ༻͍ͨԾڥͷߏஙӡ༻ • OSSͰߏங͞ΕͨγεςϜͷӡ༻ɺτϥϒϧγϡʔςΟϯά • 2016 - ݱ৬ ͘͞ΒΠϯλʔωοτʹ৽ଔೖࣾ • 2017 - 2019 ܳज़ܥେֶӃʹͯ2ݚڀ͢Δ ܳज़ֶम࢜ @tar_xzvff
֓ཁ 3
ຊ͓͢͠Δ͜ͱ 4 ݱࡏఏڙதͷ͘͞ΒͷΫϥυͰར༻Ͱ͖ΔGPUαʔό(ߴՐྗϓϥϯ)ͷ͓͠Λ͠·͢ɻ ͲͷΑ͏ʹΫϥυͷத͕։ൃ͞Ε͍ͯΔ͔Λ͍͚ͬͯͨͩΕ͍Ͱ͢ɻ
ຊ͓͢͠Δ͜ͱ(։ൃମ੍) • ͘͞ΒͷΫϥυͷ։ൃମ੍ 5 ίϯτϩʔϧύωϧ (ϑϩϯτΤϯυ) APIɾόοΫΤϯυ (όοΫΤϯυ) ֤छΠϯϑϥ (ج൫ϢχοτɺSRE)
ຊ͓͢͠Δ͜ͱ(։ൃମ੍) • ͘͞ΒͷΫϥυͷ։ൃମ੍ 6 ίϯτϩʔϧύωϧ (ϑϩϯτΤϯυ) APIɾόοΫΤϯυ (όοΫΤϯυ) ֤छΠϯϑϥ (ج൫ϢχοτɺSRE)
ংষ 7
GPUαʔό(ߴՐྗϓϥϯ)͕ੜ͢Δ͖͔͚ͬ • ࣌ͷࢲӴσʔλϓϥοτϑΥʔϜʮTellusʯͷ୲ • Tellusͷར༻ऀ͚ʹӴσʔλΛJupyterLabͳͲΛ༻͍ͯੳͰ͖Δ ίϯϐϡʔςΟϯάڥͷఏڙΛ͍ͯ͠·ͨ͠ɻ(Jupyter as a service) 8
https://www.tellusxdp.com/ja/about/
GPUαʔό(ߴՐྗϓϥϯ)͕ੜ͢Δ͖͔͚ͬ 9 CPU(Ծαʔό) ※͘͞ΒͷΫϥυ CPU(ཧαʔό) ※͘͞Βͷઐ༻αʔό GPU(ཧαʔό) ※͘͞Βͷઐ༻αʔό ߴՐྗγϦʔζ ڞ༗ετϨʔδ
※͘͞ΒͷΫϥυ ɾɾɾ ɾɾɾ ※࣌ఏڙ͍ͯͨ͠ߏ
GPUαʔό(ߴՐྗϓϥϯ)͕ੜ͢Δ͖͔͚ͬ • ӡ༻͍ͯ͠ΔதͰ͍͔ͭ͘՝͕͋ͬͨ • Kubernetes͕ಈ͘αʔόαʔϏεΛ·͕ͨΔ • αʔϏε͕ҟͳΔͨΊ༷͕ҟͳΔ • APIͷ༗ແɺػೳͷ༗ແͷࠩɺΠϯϑϥ༷ •
αʔϏεؒΛϩʔΧϧଓ͢Δͷ͕ࡶ • ΫϥυTerraformͰίϯτϩʔϧͰ͖ͨɺͦΕҎ֎ࣗಈ • ͳΜͱ͔ɺαʔϏεؒͷࠩΛ͍͍ײ͡ʹຒΊͳ͕Βӡ༻͍ͯͨ͠ 10
GPUαʔό(ߴՐྗϓϥϯ)͕ੜ͢Δ͖͔͚ͬ • ͱ͋Δɺ͘͞ΒͷΫϥυͷऀͱ͢ػձ͕͋ΓɺاըॻΛ ࣋ͬͯΫϥυͰGPUఏڙ͍ͨ͠Λ͢Δ • →ͥͻΓ·͠ΐ͏ʂͱ͓ฦࣄΛ͍ͨͩ͘ • Ҏલ͔Βಉ༷ͷཁ͕͋Γ૬·ͬͯɺϓϩδΣΫτ͕ൃ😊 11
ϓϩδΣΫτൃ • ݕূڥʹͯϓϩτλΠϓͷ։ൃ͕ൃ • ͘͞ΒͷΫϥυͱ͘͞Βͷઐ༻αʔό ߴՐྗͷϝϯόʔͰߏ ʢاըɺ։ൃɺӡ༻ʣ • ࢲ։ൃͱӡ༻ͷ୲ͱͯ͠ࢀՃ •
جຊతʹϦϞʔτͰΦϯϥΠϯίϛϡχέʔγϣϯ • ि࣍ͷఆྫϛʔςΟϯά • σʔληϯλʔͳͲͰͷݱ࡞ۀͷΈΦϑϥΠϯ 12
ϓϩδΣΫτൃ • ϓϥϯઃܭ(اըϝϯόʔ) • ԿΛ࡞ͬͯɺԿΛఏڙ͢Δ͔ɺԾϚγϯͷઃܭ • ՝ۚઃܭɺϓϥϯ໊ • ӡ༻ઃܭ(ӡ༻ϝϯόʔ) •
ϑΝΠϦςΟ໘(Ͳ͜Ͱಈ͔͔͢ɺNWɺిྗɺۭௐ) • ऩ༰ઃܭɺԾϚγϯͷઃܭɺηΩϡϦςΟධՁɾରࡦ • ࠷దͳঢ়ଶΛ࡞Δ • ͲͷΑ͏ͳํ๏Ͱӡ༻͢Δ͔ɺఆৗతͳϝϯςφϯεɺো࣌ͷରԠ • νϡʔχϯά • ෛՙࢼݧ • ։ൃઃܭ(։ൃϝϯόʔ) • ͲͷΑ͏ʹ࡞Δ͔ • APIίϯτϩϧʔύωϧ͔ΒͷϦΫΤετʹै͍ԾϚγϯΛىಈͤ͞Δ෦·ͰΛ࡞Δ • ԾϚγϯͷεέδϡʔϦϯά 13 ઃܭޙɺ֤୲͝ͱʹɺ࣮४උͳͲʹਐΉ
ୈ1ষ ϓϩτλΠϓͷ։ൃ 14
ϓϥϯઃܭ • αʔόᝑମͱ༻͢ΔGPU֬ఆ͍ͯͨͨ͠ΊɺͦΕΒΛར༻ • ԾϚγϯʹɺ1GPUɺCPUͱϝϞϦదͳྔΛׂ • ࢢΛؑΈͭͭɺεϖοΫΛܾఆ 15
ӡ༻ઃܭ • طଘͷཧͷGPUαʔϏε(ߴՐྗ)Ͱ࣮ͷ͋ΔɺੴङDCʹܾఆ • ϓϥϯઃܭʹج͍ͮͯऩ༰ઃܭΛ࣮ࢪ • طଘͷԾԽج൫(Linux KVM)ͰGPUׂΛߦ͍ԾϚγϯΛىಈ͢Δํ๏Λௐࠪɾݕূ • GPU
Pass-Through (ཧͷGPUΛͦͷ··ԾϚγϯʹׂ) • GPUԾԽ • GPUʹΑΔHWଆͰͷԾԽ • GPUશԾԽ GVT-g (KVMGT) • GPU४ԾԽ virtio-gpu • →ύϑΥʔϚϯεͷ؍ͱԾԽͷඞཁ͕ͳ͍͜ͱ͔ΒɺGPU Pass-Throughʹܾఆ • GPUׂϗετ্ͷGPUͷPCIeͷBus:Device.Function (BDF)Λ༻͍ͯߦ͏ 16
ӡ༻ઃܭ • ͲͷΑ͏ʹ͢Εܾఆͨ͠GPUׂํ๏ͰGPUΛׂΓͯΒΕΔ͔ௐࠪɾݕূ • ཧαʔόᝑମͷBIOSɺBMCͷઃఆ(IOMMU) • ԾϚγϯʹGPUΛͨ͢ΊɺϗετOSଆͰGPUΛ௫·ͳ͍Α͏ʹ͢Δ • υΩϡϝϯτͳͲΛࢀߟʹqemu-kvmͷదͳҾΛ୳͢ɾݕূͷ܁Γฦ͠ •
GPUׂํ๏ʹର͢ΔηΩϡϦςΟϦεΫͷධՁɾରࡦ • GPUϕϯμ͓ΑͼɺԾԽʹਫ਼௨ͨ͠εϖγϟϦετͱ͠߹͍Λߦ͍ରࡦ 17
։ൃઃܭ • ӡ༻ઃܭΛͱʹԾϚγϯʹGPUΛׂ͠ىಈ͢ΔΈΛݕ౼͢Δ • ϗετʹࡌ͞Ε͍ͯΔGPUͷྻڍ • GPUϦΫΤετ࣌ͷ෦ॲཧ • GPUͷഉଞతׂ •
ݕ౼ΛͱʹԾ࣮Λߦ͏ • 1ԾϚγϯ1GPUͷׂ͕ͳ͞ΕΔΑ͏ʹ࣮ 18
ϓϩτλΠϓ 19 ϗετ ཧαʔόᝑମ ϋΠύʔόΠβʔ -JOVY,7. ϗετ04 GPU ԾϚγϯ αʔόΛىಈͤ͞Δ
ϓϩάϥϜ
ୈ̎ষ ൛ͷ։ൃ 20
൛ͷ։ൃ • ͓٬༷ͷఏڙʹ͚ͯ൛ͷ։ൃΛਐΊΔ • ൛ͷ࣭ʹ͢ΔͨΊͷ։ൃɺ͓Αͼݕূ 21
ϓϥϯઃܭʙ࣮ಇϑΣʔζ • ϓϥΠγϯά • ϓϥϯ໊ͷݕ౼ɺܾఆ • ͓٬༷͚ͷϚχϡΞϧ(͘͞ΒͷΫϥυɹυΩϡϝϯτ)ͷ࡞ 22
ӡ༻ઃܭ • ֤छΠϯϑϥΛ൛ͱಉ͡ߏʹ͢Δ • 1ϗετ্ͰෳԾϚγϯ͕ىಈͨ͠߹ͷݕূ • ύϑΥʔϚϯενϡʔχϯά • NUMA •
ԾϚγϯͷઃܭʹج͍ͮͨઃఆɺಈ࡞ݕূ • GPUͷಈ࡞ʹ࠷దͳڥΛඋ͢ΔͨΊͷݕূɾઃఆ • ෛՙࢼݧɺϕϯνϚʔΫ • ϗετͷCPU,ϝϞϦ • ԾϚγϯͷGPU • ࢹ༰ͷݕ౼ 23
• NUMA • ෳCPUΛࡌ͢Δαʔόʹ͓͍ͯߏ͞ΕΔΞʔΩςΫνϟ • ϘτϧωοΫɺϝϞϦΞΫηεͷ࠷దԽͳͲʹͭͳ͕Δ • Nodeͱ͍͏άϧʔϓ͕͋Δ (lstopoίϚϯυͳͲͰ֬ೝ͢Δ͜ͱ͕Ͱ͖Δ) •
ԾϚγϯʹׂΓͯΔɺCPUɺϝϞϦɺGPUͷΈ߹Θ͕ͤnodeΛލ͍ͩ ߹ɺύϑΥʔϚϯεʹӨڹΛٴ΅͢͜ͱ͕͔Γߟྀͨ͠ઃܭɾ࣮Λ࣮ࢪ • ԾϚγϯىಈ࣌ʹNUMA node͕ἧ͏Α͏ʹࢦఆ͠ىಈͤ͞Δ ӡ༻ઃܭ 24 NUMA node1 NUMA node2
• NUMA(͘ͳΔঢ়ଶ) ӡ༻ઃܭ 25 ԾϚγϯ NUMA nodeΛލ͙ͨΊ ύϑΥʔϚϯεʹӨڹ
• NUMA(࠷దͳঢ়ଶ) ӡ༻ઃܭ 26 ԾϚγϯ
ӡ༻ઃܭ • NUMA nodeͷΈ߹ΘͤʹΑΔੑೳࠩ(PCIeଳҬςετ) • NUMA node͕ಉ͡Έ߹ΘͤͰ҆ఆͯ͠ಈ࡞ 27
ӡ༻ઃܭ • ԾϚγϯͷઃܭʹج͍ͮͨઃఆɺಈ࡞ݕূ • ॳཧαʔόᝑମʹࡌͨ͠ϝϞϦΛͳΔ͘ԾϚγϯʹׂ͢Δํͩͬͨ • ىಈͨ͠ͷͷqemuͷϓϩηε͕swapͯ͠͠·͏ࣄଶ͕ൃੜ • ύϑΥʔϚϯεͷ؍ͰΑ͘ͳ͍ঢ়ଶ •
ىಈͯؒ͠ແ͘qemuͷϓϩηε͕ऴྃͯ͠͠·͏ࣄଶ͕ • oom-killerʹΑͬͯqemuϓϩηε͕ڧ੍ऴ͍ྃͯͨ͜͠ͱ͕ൃ֮…😇 • ϗετͰಈ࡞͢Δ֤छαʔϏεΛ֬ೝ҆͠શʹಈ࡞͢ΔϝϞϦ༰ྔΛܭࢉ͠ɺͦͷεϖοΫͰఏ ڙ͢Δ͜ͱʹ • Ұ෦γεςϜܥͷσʔϞϯ͕ϝϞϦϦʔΫ͍ͯͨ͠ΓɺͦͷରࡦͳͲ࣮ࢪ • ҆ఆͨ͠ঢ়ଶͰԾϚγϯΛಈ͔ͨ͢ΊʹɺεϖοΫͷΈ߹ΘͤݕূΛࢼߦࡨޡ • γεςϜશମʹϝϞϦͷۭ͖༰ྔ͕͋ͬͨͱͯ͠ɺNUMA node͋ͨΓͷϝϞϦͷۭ͖͕ͳ͍ͱ oom-killerͰVM͕ࢭΊΒΕͯ͠·͏ֶͼ͕ಘΒΕͨ 28
ӡ༻ઃܭ • GPUͷಈ࡞ʹ࠷దͳڥΛඋ͢ΔͨΊͷݕূɾઃఆ • ΤΞϑϩʔ͕ਖ਼ৗͰɺదͳԹͰ͋Δ͜ͱ • ϑΝϯͷճస੍ޚɺϑΝϯͷҐஔΛม͑ΔͳͲͷରԠ • ϑΝϯGPUʹࡌ͞Ε͓ͯΒͣɺυϥΠϠʔͷΑ͏ͳ෩ѹͷϑΝϯΛᝑମʹऔΓ͚Δ •
GPU͕ྫྷ٫͞Εͳ͍ͱɺGPU෦ϓϩηοαͷಈ࡞प͕Լ͢Δ • ҰํͰϑΝϯΛશ։ʹͯ͠ແବ͕ੜ͡ΔͨΊɺίετͱੑೳʹ͓͍ͯόϥϯε͕औΕͨঢ়ଶΛ ୳͠ɺݟ͚ͭΔ • αʔόᝑମͷIPMIͱGPU͔Β֤छϝτϦΫεΛPrometheusͰऩूɺGrafanaͰμογϡϘʔυΛ࡞ ͠ՄࢹԽ • ͍͔ͭ͘ͷϑΝϯͷϞʔυΛࢼ͢͏·͍͔ͣ͘αʔόͷཧళʹ͍߹Θͤͨ • BMCͷόʔδϣϯ͕ݹ͘Ξοϓσʔτͨ͠ͱ͜Ζظ͢Δ݁Ռ͕ಘΒΕ࠷దͳঢ়ଶ͕Ͱ͖ͨ • ݕূதϑΝϯΛશ։ʹͨ͠ͱ͜ΖɺGPUαʔόͷᝑମͷഎ໘ଆʹ͋ΔଞͷαʔόͷԹ্͕ঢ͠ ͯ͠·͏ࣄ͕ൃੜͨ͠ɺͦΕΒߟྀͯ͠ڥΛඋ 29
ӡ༻ઃܭ • GPUͷಈ࡞ʹ࠷దͳڥΛඋ͢ΔͨΊͷݕূɾઃఆ 30 ϗετ ཧαʔόᝑମ ϋΠύʔόΠβʔ -JOVY,7. ϗετ04 GPU
GPU GPU GPU ԾϚγϯ ԾϚγϯ ɾɹɾɹ ɾɾ GPUʹෛՙΛ͔͚Δɺgpu_exporterΛ࣮ߦ GPUʹෛՙΛ͔͚Δ ˍ gpu_exporterΛ࣮ߦ ipmi_exporter ipmi_exporter(αʔόᝑମͷϝτϦΫεΛऔಘɺফඅిྗɺԹɺϑΝϯճస) gpu_exporter(GPUͷ֤छϝτϦΫεɺಈ࡞पɺফඅిྗɺԹɺϝϞϦͳͲΛऔಘ)
ӡ༻ઃܭ 31
ӡ༻ઃܭ • ෛՙࢼݧɺϕϯνϚʔΫ • ফඅిྗ͕େ͖͘ͳΔɺԹ͕ߴ͘ͳΔέʔεΛ࡞͠Ұఆظ࣮ؒࢪ • ຊ൪ڥͱಉ͡ঢ়ଶϥοΫɺαʔόᝑମΛἧ͑ͯෛՙΛ͔͚Δ • جຊతʹઌ΄ͲͱΔ͜ͱಉ͡ɺҧ͍ԾϚγϯͷ͕ଟ͘ͳΔ •
TerraformͰෛՙࢼݧɺϕϯνϚʔΫ༻ͷԾϚγϯΛେྔʹల։ • ४උ͕ͬͨΒxargsίϚϯυͰҰ੪ʹԾϚγϯͱϗετʹෛՙΛ͔͚Δ • ͯ͢ͷϗετɺԾϚγϯɺGPUͷঢ়ଶΛ֬ೝ͢ΔͨΊͷμογϡϘʔυΛ࡞͠ݟकΔ • ԾϚγϯ • gpu_burn࣮ࡍͷϫʔΫϩʔυͳͲͰෛՙ • ϕϯνϚʔΫҰൠతͳGPUϕϯνϚʔΫͳͲΛ༻͍Δ • ϗετͷCPUɺϝϞϦ • ઐ༻ͷπʔϧΛ༻͍ͯෛՙ 32
ӡ༻ઃܭ 33
ӡ༻ઃܭ 34
ӡ༻ઃܭ • ࢹ༰ͷݕ౼ • طଘͷϗεταʔόʹର͢ΔࢹʹՃ͑GPUͷࢹΛ͢Δඞཁ͕͋Δ • ϗετ͔ΒGPUʹΞΫηεͰ͖ͳ͍ͨΊࢹͰ͖ΔൣғͰߦ͏ • ϗεταʔόଆ •
GPUࡌεϩοτͷϦϯΫεϐʔυ • lspciͳͲͷใΛνΣοΫ • GPUࣗମͷࢹɺނোݕɾϔϧενΣοΫޙड़͢ΔʮαʔϏε VMʯͱ͍͏ΈΛ༻͍ͯߦ͏͜ͱʹܾఆ 35
։ൃઃܭ • ԾϚγϯʹGPUΛׂ͠ىಈ͢ΔΈΛ࣮͠ɺຊ൪ڥʹөͰ͖Δঢ়ଶʹ͢Δ • ൛Λߟྀͨ͠ઃܭɺ࣮ • αʔόΛىಈ͢ΔϓϩάϥϜ • NUMAΛߟྀͨ͠ԾϚγϯʹର͢ΔCPU,MEM,GPUͷׂ •
ཁٻ͞ΕͨGPUʹԠׂͯ͡ɺׂෆՄͷ߹ͷΤϥʔॲཧ • ࡌ͞Ε͍ͯΔGPUͷঢ়ଶཧ(ະׂɺׂதɺނো) • ঢ়ଶΛAPIʹ௨͢Δػೳ • GPUͷނোݕɺϔϧενΣοΫͷΈͷݕ౼ • API • GPUϗετͷࡏݿཧ • GPUϓϥϯͷՃɺGPUαʔόͷεέδϡʔϦϯά • GPUͷଐੑใͷཧͷݕ౼(GPUܕ൪ɺGPUϝϞϦɺݸମΛࣝผ͢Δɺetc…) 36
։ൃઃܭ • GPUͷނোݕɺϔϧενΣοΫͷΈͷݕ౼ • ϗετ͔ΒGPUʹΞΫηεͰ͖ͳ͍ͨΊɺಛผͳԾϚγϯʮαʔϏεVMʯΛ༻͍ ͯߦ͏͜ͱʹܾఆ • ҎԼͷΑ͏ͳΈΛ։ൃ࣮͠ɺࣗಈνΣοΫͷΈΛཱ֬ • 1.ԾϚγϯఀࢭޙʹGPU͕ղ์͞ΕΔ
• 2.ղ์͞ΕͨGPU༻ࡁΈͱͯ͠ϚʔΫ͞ΕɺఆظతʹͦͷGPUΛΞλον͞Εͨ ʮαʔϏεVMʯ͕ىಈ • 3.GPUͷஅπʔϧΛ༻͍ͯਖ਼ৗʹಈ࡞͢Δ͜ͱΛ֬ೝ • 4.ਖ਼ৗͳ߹ɺະׂͱͯ͠GPUͷঢ়ଶΛมߋ͢Δ • 5.ҟৗͳ߹ɺׂ͞Εͳ͍Α͏ʹނোͱͯ͠ϚʔΫ͞ΕΔɺϗεταʔόʹ௨Λߦ ͍ࢹπʔϧͳͲ͕ͦΕΛͱʹΞϥʔτΛൃใ͢Δ 37 ͜ͷΈͷ࣮ͷҰͰɺ࣮ࡍʹࣾʹ͋ͬͨյΕͨGPUΛ༻͍ͯҟৗܥͷςετ࣮ࢪ
։ൃઃܭ 38 αʔϏεVM࣮ߦ࣌ͷ༷ࢠ
൛ 39 ϗετ ཧαʔόᝑମ ϋΠύʔόΠβʔ -JOVY,7. ϗετ04 GPU GPU GPU
GPU ԾϚγϯ ԾϚγϯ ɾɹɾɹɾ ɾɾɾ αʔόΛىಈͤ͞Δ ϓϩάϥϜ αʔϏεVM
• ։ൃத൫ʙ • ίϯτϩʔϧύωϧͳͲཧܥΠϯλϑΣʔεͷ։ൃ • ࣾϕʔλ൛ͱͯ͠ఏڙ • ࣮ࡍʹ͑Δ͔ධՁ • ϑΟʔυόοΫͳͲΛ͍ͨͩ͘
40
• ಈ࡞ࢼݧ • ίϯτϩʔϧύωϧ͔ΒGPUαʔόΛ࡞ • ਖ਼ৗʹಈ࡞͢Δ͜ͱ • ҟৗ͕ى͖ͨ࣌ʹҙਤͨ͠௨Γͷಈ࡞Λ͢Δ͜ͱ • αʔϏεϝχϡʔʹGPUϓϥϯՃ
41
ϦϦʔε 42
• 202110݄7ʹఏڙ։࢝🎉 43
·ͱΊ 44
• ۤ࿑ͨ͠ • ԾϚγϯͷઃܭʹ͓͍ͯ҆ఆ͢ΔεϖοΫΛܾΊΔ • ͋ΒΏΔΈ߹ΘͤΛߟ͑ݕূ͢Δͷ͕େมͩͬͨ • ՝͕ൃੜͨ͠߹ͷΓ͚ • ϨΠϠʔ͕བྷΈ߹͏ࣄ͋Δఔצ͕ͳ͍ͱɺΓ͚͕͍͠
• ϋΠύʔόΠβʔ/ϗετOS(Kernel)/GPU/αʔόᝑମ/etc… • Γ্͚ͨͰɺҟͳΔ͍߹ΘͤઌʹΤεΧϨʔγϣϯΛߦ͏ • ਂ۷Γ͕ͨࣝ͠ඞཁʹͳΔ • PCI-Expressʹର͢ΔཧղɺϋΠύʔόΠβʔɾԾϚγϯɺOSͷϝϞϦཧ 45
• ײ • ॳΊͯ৮ΕΔྖҬ͕৽ͩͬͨ • PCI-Expressͷ༷(ॻ੶Λߪೖͯ͠ษڧ) • ࣗͰσόΠεΛ࡞ͬͯΈ͍ͨͱࢥ͍ɺFPGAͳͲʹڵຯΛ࣋ͬͨ • ͞·͟·ͳϨΠϠʔʹରٕͯ͠ज़Λ࣋ͬͯରԠ͢Δͷ͕ྑ͍ܦݧʹͳͬͨ
• ݁ߏେม͕ͩͬͨɺ͖ͳ͜ͱΛࣄͱͯ͠Ͱ͖ͯຬ • TellusͰར༻͞ΕΔΑ͏ʹͳΓخ͍͠ • GPUΛ͏ͨΊͷڥߏஙͷϋʔυϧ͕ߴ͍ͷͰͦ͜Λղܾ͢ΔΑ͏ͳ ͷΛఏڙ͍ͨ͠ 46
• ࠷ޙʹ • jsonyamlͰΠϯϑϥɾΫϥυΛ͏͜ͱ͕Ͱ͖Δ࣌ • Πϯϑϥ͕நԽ͞Εɺ͍͘͢ͳΔ • Γ͍ͨ͜ͱʹूதͰ͖Δ͜ͱྑ͍͜ͱ • ҰํͰΫϥυͷઌͷੈք͞·͟·ͳٕज़Ͱߏ͞Ε͍ͯΔ
• ࠓճ͝հͨ͠༰΄ΜͷҰ෦ • ͘͞ΒΠϯλʔωοτͷٕज़ελοΫΛ·ͱΊͯΈͨ(Qiitaهࣄ) • https://qiita.com/jh1vxw/items/f460f33e00614c9d2510 47 ΫϥυΛ࡞Δଆʹ͝ڵຯ͕͋Γ·ͨ͠Βɺ͘͞ΒΠϯλʔωοτͰ͓·͓ͪͯ͠Γ·͢ʂ