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
クラウドの作り方(GPUサーバ編)
Search
Hikaru Ashino
February 27, 2023
Technology
3.3k
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
710
A story until offering openSUSE on Sakura VPS
picasa
0
150
自宅サーバでマストドンを立てる
picasa
1
3.3k
さくらのサービスを支えるAPI開発のお話(仮) - APIStudy#6
picasa
0
110
卒業制作 サーバーの脆弱性情報管理システム
picasa
0
73
Kickstartfileジェネレータを作ってみた
picasa
0
69
Amazon Cognito + SNS + Zabbixでサーバー監視アプリを作ってみた - JAWS DAYS 2015
picasa
0
150
Amazon SNSでZabbixのアラートをプッシュ通知してみた
picasa
0
150
cobbler + koan VPS作成の自動化
picasa
0
46
Other Decks in Technology
See All in Technology
SRE Lounge Hiroshimaへの招待
grimoh
0
540
しぶいSRE: サーバから見えない障害にどう向き合うか。ラストワンマイルのデバッグ実践 / Shibui SRE
kanny
12
5.5k
知らん間に、回ってる
ming_ayami
0
370
AWS Summit の片隅で、体育座りしながらコミュニティがにぎわう理由を考えた
k_adachi_01
2
360
ループエンジニアリングでE2Eテストを実践
noriyukitakei
0
320
AWS Blocks を触ってみた/first-tach-aws-blocks
fossamagna
2
150
Amazon EVS で VCF 9.0 / 9.1 のサポート開始まとめ
mtoyoda
0
280
事業価値を⽣み出すSREへ SREが担うべき意思決定の5層
kenta_hi
2
2.9k
証券システムを10年Scalaで作り続けるということ - 関数型まつり2026
krrrr38
3
790
次世代ランサムウェア対策の考察 / 20260704 Mitsutoshi Matsuo
shift_evolve
PRO
5
1.7k
キャリアの中で本を作る / Making a Book During Your Career
ak1210
0
130
Compose 新機能総まとめ / What's New in Jetpack Compose
yanzm
0
160
Featured
See All Featured
Building a Scalable Design System with Sketch
lauravandoore
463
34k
What the history of the web can teach us about the future of AI
inesmontani
PRO
1
630
Self-Hosted WebAssembly Runtime for Runtime-Neutral Checkpoint/Restore in Edge–Cloud Continuum
chikuwait
0
640
Responsive Adventures: Dirty Tricks From The Dark Corners of Front-End
smashingmag
254
22k
Lessons Learnt from Crawling 1000+ Websites
charlesmeaden
PRO
1
1.3k
Balancing Empowerment & Direction
lara
6
1.2k
Marketing Yourself as an Engineer | Alaka | Gurzu
gurzu
0
260
Performance Is Good for Brains [We Love Speed 2024]
tammyeverts
12
1.7k
Ethics towards AI in product and experience design
skipperchong
2
320
Easily Structure & Communicate Ideas using Wireframe
afnizarnur
194
17k
KATA
mclloyd
PRO
35
15k
The Power of CSS Pseudo Elements
geoffreycrofte
82
6.3k
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 ΫϥυΛ࡞Δଆʹ͝ڵຯ͕͋Γ·ͨ͠Βɺ͘͞ΒΠϯλʔωοτͰ͓·͓ͪͯ͠Γ·͢ʂ