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.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
750
A story until offering openSUSE on Sakura VPS
picasa
0
160
自宅サーバでマストドンを立てる
picasa
1
3.4k
さくらのサービスを支えるAPI開発のお話(仮) - APIStudy#6
picasa
0
120
卒業制作 サーバーの脆弱性情報管理システム
picasa
0
77
Kickstartfileジェネレータを作ってみた
picasa
0
73
Amazon Cognito + SNS + Zabbixでサーバー監視アプリを作ってみた - JAWS DAYS 2015
picasa
0
150
Amazon SNSでZabbixのアラートをプッシュ通知してみた
picasa
0
170
cobbler + koan VPS作成の自動化
picasa
0
51
Other Decks in Technology
See All in Technology
高負荷プロダクション環境におけるAWS Lambdaのリアル 〜スケールとコストを左右する実行ライフサイクルの技術仕様〜
maimyyym
2
390
AI時代、データエンジニアが一番おもろい
genshun9
0
690
Mastering Agentic Development: Harness Engineering for Effective Coding Agents
konippi
3
480
The Knowledge Spine: A Machine-Executable Ontology for Governed Marketing Activation
vananth22
0
120
AWS DevOps Agent スキルをつかいこなそう / Master AWS DevOps Agent Skills
kinunori
1
350
Harness Engineering on Rails
joelq
0
430
事業課題から技術的負債に向き合う
sansantech
PRO
2
2.3k
EventBridge に「合流」はない ― サーバーレスのワークフローを育てるということ / No Join in EventBridge
yusukeshimizu
2
520
Genieを崇めよ
kameitomohiro
0
170
What the customer really needed
kawaguti
PRO
3
220
AIで社員の自主発信に広報目線を組み込む
_mossann_t
0
140
[Kiro Meetup #7] Kiro Crew Dive Deep
konippi
0
290
Featured
See All Featured
Have SEOs Ruined the Internet? - User Awareness of SEO in 2025
akashhashmi
0
500
Art, The Web, and Tiny UX
lynnandtonic
304
22k
Ethics towards AI in product and experience design
skipperchong
2
380
Claude Code のすすめ
schroneko
67
230k
Site-Speed That Sticks
csswizardry
13
1.5k
Paper Plane (Part 1)
katiecoart
PRO
2
11k
What does AI have to do with Human Rights?
axbom
PRO
1
2.4k
Context Engineering - Making Every Token Count
addyosmani
9
1.2k
Skip the Path - Find Your Career Trail
mkilby
1
240
We Have a Design System, Now What?
morganepeng
55
8.3k
We Analyzed 250 Million AI Search Results: Here's What I Found
joshbly
1
2k
Designing Experiences People Love
moore
143
24k
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 ΫϥυΛ࡞Δଆʹ͝ڵຯ͕͋Γ·ͨ͠Βɺ͘͞ΒΠϯλʔωοτͰ͓·͓ͪͯ͠Γ·͢ʂ