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
740
A story until offering openSUSE on Sakura VPS
picasa
0
160
自宅サーバでマストドンを立てる
picasa
1
3.4k
さくらのサービスを支えるAPI開発のお話(仮) - APIStudy#6
picasa
0
110
卒業制作 サーバーの脆弱性情報管理システム
picasa
0
76
Kickstartfileジェネレータを作ってみた
picasa
0
72
Amazon Cognito + SNS + Zabbixでサーバー監視アプリを作ってみた - JAWS DAYS 2015
picasa
0
150
Amazon SNSでZabbixのアラートをプッシュ通知してみた
picasa
0
160
cobbler + koan VPS作成の自動化
picasa
0
46
Other Decks in Technology
See All in Technology
AI時代のAPI品質を支えるガードレール / API Guardrails for API quality in the AI era
yokawasa
1
150
データエンジニアリングワークショップ:Auto LoaderとSparkで学ぶデータパイプライン構築
databricksjapan
PRO
0
190
生成AI時代の クレデンシャルとパーミッション設計
nrinetcom
PRO
4
1.6k
Genie Code ワークショップ 応用編 / Genie-Code-Workshop-advanced
databricksjapan
PRO
0
360
Kiro Crewしか勝たん!?
miu_crescent
PRO
0
180
AIで仕事のやり方を変える
matsu7874
1
940
「重なり」は迎える側がつくる ― 人もAIエージェントも歓迎するプロダクトエンジニアリング ―
go0517go
PRO
0
260
grill-me(grilling):AI駆動開発を超助けてくれるSkill / grill me
mathbullet
0
110
module Synths; end
asonas
1
120
Bet AI Day 2026丨AIによって本質に戻るシステムリスク管理
layerx
PRO
0
1.2k
PM領域でのAI Agentの活用
lycorptech_jp
PRO
0
280
現場に行くだけでは足りない——プロダクトエンジニアが業務の流れを捉える観点と、その鍛え方
takumiengineering
0
310
Featured
See All Featured
Optimising Largest Contentful Paint
csswizardry
37
3.9k
From Legacy to Launchpad: Building Startup-Ready Communities
dugsong
0
320
HDC tutorial
michielstock
2
850
Impact Scores and Hybrid Strategies: The future of link building
tamaranovitovic
0
430
How People are Using Generative and Agentic AI to Supercharge Their Products, Projects, Services and Value Streams Today
helenjbeal
1
310
Marketing Yourself as an Engineer | Alaka | Gurzu
gurzu
0
290
Stewardship and Sustainability of Urban and Community Forests
pwiseman
0
510
SEO for Brand Visibility & Recognition
aleyda
0
4.7k
Being A Developer After 40
akosma
91
590k
How GitHub (no longer) Works
holman
316
150k
Refactoring Trust on Your Teams (GOTO; Chicago 2020)
rmw
35
3.8k
"I'm Feeling Lucky" - Building Great Search Experiences for Today's Users (#IAC19)
danielanewman
230
23k
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 ΫϥυΛ࡞Δଆʹ͝ڵຯ͕͋Γ·ͨ͠Βɺ͘͞ΒΠϯλʔωοτͰ͓·͓ͪͯ͠Γ·͢ʂ