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
高速化・並列化・標準化で スケールするML予測システムの開発
Search
Daiki Ikeshima
July 08, 2021
Technology
3.3k
5
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
高速化・並列化・標準化で スケールするML予測システムの開発
Daiki Ikeshima
July 08, 2021
More Decks by Daiki Ikeshima
See All by Daiki Ikeshima
MLOpsの「あるある」課題の解決と、そのためのライブラリgokart
mski_iksm
1
1.7k
gokartのキャッシュ競合防止のロック機能
mski_iksm
0
2.6k
macのunicode正規化.pdf
mski_iksm
0
41k
実臨床・Webサービス領域での機械学習研究 開発の標準化
mski_iksm
8
27k
pythonでメタプログラミング(メタクラス編)
mski_iksm
1
570
パイプラインツールgokartのタスク競合を解消した話
mski_iksm
0
270
Other Decks in Technology
See All in Technology
本番に近いテストをもっと手軽に - Postmanで広がるAPIテストの世界 / Expanding the World of API Testing with Postman
yokawasa
1
130
EMの役割で 変わったこと・変わらなかったこと
sansantech
PRO
0
190
EUDIWの枠組みを出発点に民間エコシステムの在り方を考える(OAuth/OIDC Numa (Immersion) Workshop 2026)
oidfj
PRO
0
340
1.5時間を無駄にして学んだwsl2におけるaptとsnapの選択と仕組み
yosaka0123
0
460
1000⼈規模のClaude Enterprise運⽤を「Oktaのグループ」と「Slack」に集約する
sansantech
PRO
0
490
markdown-poster Introduction
kazamori
0
400
名刺メーカーDevグループ 紹介資料
sansan33
PRO
0
1.2k
暗号化?某ファイルストレージはどうなるの!? 3rd Partyとうまく付き合う秘密度ラベル設計
kasada
0
210
エージェント化するAI:現在地とその先に起きる変化 / AI as Agents: The Current State and the Changes Ahead
ks91
PRO
0
150
DMMブックスのNext.js化を加速させるAI活用 / Migrating DMM Books to Next.js with AI
kentarom
0
170
サービス内で複数のOP・ASを連鎖させる(OAuth/OIDC Numa (Immersion) Workshop 2026)
oidfj
PRO
0
350
internal/testlog で遊ぼう
rokuosan
0
320
Featured
See All Featured
KATA
mclloyd
PRO
35
15k
Evolving SEO for Evolving Search Engines
ryanjones
0
270
Bioeconomy Workshop: Dr. Julius Ecuru, Opportunities for a Bioeconomy in West Africa
akademiya2063
PRO
1
300
Reality Check: Gamification 10 Years Later
codingconduct
0
2.3k
Winning Ecommerce Organic Search in an AI Era - #searchnstuff2025
aleyda
1
2.1k
So, you think you're a good person
axbom
PRO
2
2.1k
Visual Storytelling: How to be a Superhuman Communicator
reverentgeek
2
630
技術選定の審美眼(2025年版) / Understanding the Spiral of Technologies 2025 edition
twada
PRO
120
120k
Why Our Code Smells
bkeepers
PRO
340
58k
Game over? The fight for quality and originality in the time of robots
wayneb77
1
260
CSS Pre-Processors: Stylus, Less & Sass
bermonpainter
360
30k
The AI Revolution Will Not Be Monopolized: How open-source beats economies of scale, even for LLMs
inesmontani
PRO
3
3.7k
Transcript
ߴԽɾฒྻԽɾඪ४ԽͰ εέʔϧ͢ΔML༧ଌγεςϜͷ։ൃ ʲSansan×Unipos×M3ʳMLOpsษڧձ ΤϜεϦʔגࣜձࣾɹౢେथ
MLར༻Ҋ݅ͰΑ͋͘Δ̏՝ XXʹڵຯͷ͋Δਓʹ Ξϓϩʔν͍ͨ͠ MLΤϯδχΞ
MLར༻Ҋ݅ͰΑ͋͘Δ̏՝ XXʹڵຯͷ͋Δਓʹ Ξϓϩʔν͍ͨ͠ Ϟσϧ MLΤϯδχΞ
MLར༻Ҋ݅ͰΑ͋͘Δ̏՝ XXʹڵຯͷ͋Δਓʹ Ξϓϩʔν͍ͨ͠ YYΛങͬͯ͘Εͦ͏ ͳਓΛΓ͍ͨ Ϟσϧ MLΤϯδχΞ
MLར༻Ҋ݅ͰΑ͋͘Δ̏՝ XXʹڵຯͷ͋Δਓʹ Ξϓϩʔν͍ͨ͠ YYΛങͬͯ͘Εͦ͏ ͳਓΛΓ͍ͨ ͜ͷલͱಉ͡ײ͡Ͱ Ϟσϧ ଐਓԽ MLΤϯδχΞ
MLར༻Ҋ݅ͰΑ͋͘Δ̏՝ XXʹڵຯͷ͋Δਓʹ Ξϓϩʔν͍ͨ͠ YYΛങͬͯ͘Εͦ͏ ͳਓΛΓ͍ͨ ͜ͷલͱಉ͡ײ͡Ͱ Ϟσϧ ଐਓԽ MLΤϯδχΞ
MLར༻Ҋ݅ͰΑ͋͘Δ̏՝ XXʹڵຯͷ͋Δਓʹ Ξϓϩʔν͍ͨ͠ YYΛങͬͯ͘Εͦ͏ ͳਓΛΓ͍ͨ ୀձͦ͠͏ͳਓʹ ࢪࡦΛଧ͍ͪͨ ZZʹߠఆҙݟͷਓΛ Γ͍ͨ ͜ͷલͱಉ͡ײ͡Ͱ
Ϟσϧ ଐਓԽ ฒߦͯ͠ΔҊ݅ MLΤϯδχΞ
MLར༻Ҋ݅ͰΑ͋͘Δ̏՝ XXʹڵຯͷ͋Δਓʹ Ξϓϩʔν͍ͨ͠ YYΛങͬͯ͘Εͦ͏ ͳਓΛΓ͍ͨ ୀձͦ͠͏ͳਓʹ ࢪࡦΛଧ͍ͪͨ ZZʹߠఆҙݟͷਓΛ Γ͍ͨ ͜ͷલͱಉ͡ײ͡Ͱ
ͳΔૣͰʂ ࠓिதʹʂ Ϟσϧ ଐਓԽ ฒߦͯ͠ΔҊ݅ λΠτͳక MLΤϯδχΞ
MLར༻Ҋ݅ͰΑ͋͘Δ̏՝ XXʹڵຯͷ͋Δਓʹ Ξϓϩʔν͍ͨ͠ YYΛങͬͯ͘Εͦ͏ ͳਓΛΓ͍ͨ ୀձͦ͠͏ͳਓʹ ࢪࡦΛଧ͍ͪͨ ZZʹߠఆҙݟͷਓΛ Γ͍ͨ ͜ͷલͱಉ͡ײ͡Ͱ
ͳΔૣͰʂ ࠓिதʹʂ Ϟσϧ ྲྀ༻ ྲྀ༻ ଐਓԽ ฒߦͯ͠ΔҊ݅ λΠτͳక MLΤϯδχΞ
MLར༻Ҋ݅ͰΑ͋͘Δ̏՝ XXʹڵຯͷ͋Δਓʹ Ξϓϩʔν͍ͨ͠ YYΛങͬͯ͘Εͦ͏ ͳਓΛΓ͍ͨ ୀձͦ͠͏ͳਓʹ ࢪࡦΛଧ͍ͪͨ ZZʹߠఆҙݟͷਓΛ Γ͍ͨ ͜ͷલͱಉ͡ײ͡Ͱ
ͳΔૣͰʂ ࠓिதʹʂ Ϟσϧ ྲྀ༻ ྲྀ༻ όά ʁ ʁ ଐਓԽ ฒߦͯ͠ΔҊ݅ λΠτͳక MLΤϯδχΞ
̏՝ʹରԠ͢ΔͨΊʹ։ൃ͞ΕͨMLγεςϜ: Yule XXʹڵຯͷ͋Δਓʹ Ξϓϩʔν͍ͨ͠ YYΛങͬͯ͘Εͦ͏ ͳਓΛΓ͍ͨ ୀձͦ͠͏ͳਓʹ ࢪࡦΛଧ͍ͪͨ ZZʹߠఆҙݟͷਓΛ Γ͍ͨ
͜ͷલͱಉ͡ײ͡Ͱ ͳΔૣͰʂ ࠓिதʹʂ ଐਓԽ ฒߦͯ͠ΔҊ݅ λΠτͳక Yule AutoMLͳ ਪଌγεςϜ ଐਓԽ λΠτͳక ฒߦͯ͠ΔҊ݅ ඪ४Խ ฒྻԽ ߴԽ
Yule: ଟϞσϧΛΞϯαϯϒϧͯ͠ਪ·ͰҰؾʹ࣮ߦ 12 ಛநग़ GBDT Neural Network ϚϧνλεΫֶश సҠֶश ֶशࡁ
Ϟσϧ Ξϯαϯϒϧ ਪ ڭࢣσʔλ
ߴԽɾฒྻԽɾඪ४ԽͰMLҊ݅3՝Λࠀ 13 ਪ σʔλऩू ಛ࡞ Ϟσϧ࡞ ֶश࣮ߦ ֶशࢹ ֶशධՁ վળΠςϨʔγϣϯ
Λߴʹճ͢ ։ൃऀҎ֎Ͱ ࣮ߦͰ͖ΔΑ͏ʹ ଟͷҊ݅Λ ฒߦͯ͠ରԠͰ͖Δ Ҋ݅̍ Ҋ݅̎ Ҋ݅̏ ඪ४Խ ฒྻԽ ߴԽ
ᶃ KubernetesΛ༻͍ͯλεΫΛࢄॲཧ ᶄ ઃఆϑΝΠϧΛ࡞͢Δ͚ͩͰֶशɾਪΛ࣮ߦͰ͖Δ ᶅ TensorBoardʹΑΔֶशࢹ ᶆ gokartΛͬͯதؒσʔλΛΩϟογϡ͢Δ ᶇ νʔϜڞ௨ͷμϯϩʔυϥΠϒϥϦͰσʔλಡΈࠐΈ
14 ·ͱΊ: ߴԽɾฒྻԽɾඪ४ԽͰMLҊ݅3՝Λࠀ ඪ४Խ ฒྻԽ ߴԽ ඪ४Խ ߴԽ ߴԽ
15 ಛ࡞ʙֶशʙਪΛKubernetes্Ͱ࣮ࢪ ֶश ਪ CVͷFold͝ͱʹϊʔυࢄ ਪରϢʔβΛׂͯ͠ϊʔυࢄ ᶃ KubernetesΛ༻͍ͯࢄॲཧ ฒྻԽ ߴԽ
16 • ཁ݅ʹ߹ΘͤͯϊʔυϓʔϧΛ͍͚Δ • GKEͷϓϦΤϯϓςΟϒϧϊʔυΛͬͯྉۚΛઅ —> ΨϯΨϯࢄͰ͖Δ • ෳͷֶशਪΛಉ࣌ฒߦʹճͤΔ •
࣮ݧΠςϨʔγϣϯ͕ߴԽ͠ɺੑೳվળʹूதͰ͖Δ ֶश ਪ CPU༏ઌϊʔυ ϝϞϦ༏ઌϊʔυ ฒྻԽ ߴԽ ᶃ KubernetesΛ༻͍ͯࢄॲཧ
17 ᶄ ઃఆϑΝΠϧΛ࡞͢Δ͚ͩͰֶशɾਪΛ࣮ߦͰ͖Δ • ڭࢣσʔλͷύε • ಛબํ๏ • Ϟσϧͷछྨɾύϥϝλ •
ίʔυͷίϛοτϋογϡɹ ઃఆϑΝΠϧ Yule Kubernetes GCR BigQuery GCS docker Πϝʔδ ಛ σʔλ ڭࢣ σʔλ • ࣮ݧઃఆΛઃఆϑΝΠϧʹهड़͢Δ͚ͩͰ • ઃఆʹԊͬͯdockerΠϝʔδ/σʔλΛGCR, BQ, GCSͳͲ͔Βऔಘ • KubernetesʹࢄσϓϩΠ ίʔυ hash: ff34 tag: ff34 push build & push ඪ४Խ
18 • ڭࢣσʔλͷύε • ಛબํ๏ • Ϟσϧͷछྨɾύϥϝλ • ίʔυͷίϛοτϋογϡɹ ઃఆϑΝΠϧ
Yule Kubernetes • ઃఆϑΝΠϧΛॻ͚ͩ͘ͰֶशΛ࣮ߦͰ͖ΔΑ͏ʹͳͬͨ • ։ൃͱ࣮ߦ͕͠ίʔυΛҙֶࣝͤͣशΛճͤΔ • ➔ίΞ։ൃऀҎ֎Ͱ࣮ߦՄೳʹ • ࣮ݧઃఆͱίʔυΛඥ͚ • ࠷৽͚ͩͰͳ͘աڈͷίʔυࢀরͰ͖Δ • ➔࠶ݱੑΛ୲อ ᶄ ઃఆϑΝΠϧΛ࡞͢Δ͚ͩͰֶशɾਪΛ࣮ߦͰ͖Δ ඪ४Խ
ᶅ TensorBoardʹΑΔֶशࢹ 19 KubernetesͳͲϦϞʔτڥͰࢄֶͯ͠श͢ΔͱܦաΛѲͮ͠Β͍ ੑೳվળͷΠςϨʔγϣϯ͕ૣ͘ͳͬͨ TensorBoardͰֶशۂઢͳͲֶशϝτϦΫεΛ ϦΞϧλΠϜࢹ ɹˠ ֶशվળͷώϯτΛಘΒΕΔ ߴԽ
gokartͱ • pythonύΠϓϥΠϯϥΠϒϥϦ • ॲཧΛTaskͱݺΕΔΫϥε୯ҐͰґଘؔͱͱʹهड़͢Δ • ґଘؔΛղܾ͠ͳ͕ΒॲཧΛ͢͢ΊΔ • ్தܦաΩϟογϡ͞Ε͍ͯΔͨΊɺಉ͡ॲཧ̎ճলུͰ͖Δ ᶆ
gokartΛͬͯதؒσʔλΛΩϟογϡ͢Δ 20 Ҋ݅ؒͰڞ௨ͯ͠͏ಛྔσʔλ͍·Θ͍ͨ͠ AIνʔϜͰgokartΛ։ൃ͠׆༻ ॲཧ̍ ॲཧ̎ ॲཧ̏ σʔλ̍ σʔλ̎ Ϟσϧ ֶश̍ ߴԽ
gokartͱ • pythonύΠϓϥΠϯϥΠϒϥϦ • ॲཧΛTaskͱݺΕΔΫϥε୯ҐͰґଘؔͱͱʹهड़͢Δ • ґଘؔΛղܾ͠ͳ͕ΒॲཧΛ͢͢ΊΔ • ్தܦաΩϟογϡ͞Ε͍ͯΔͨΊɺಉ͡ॲཧ̎ճলུͰ͖Δ ᶆ
gokartΛͬͯதؒσʔλΛΩϟογϡ͢Δ 21 Ҋ݅ؒͰڞ௨ͯ͠͏ಛྔσʔλ͍·Θ͍ͨ͠ AIνʔϜͰgokartΛ։ൃ͠׆༻ ॲཧ̍ ॲཧ̎ ॲཧ̏ σʔλ̍ σʔλ̎ Ϟσϧ ֶश̍ Ϟσϧ ֶश̎ ߴԽ
ᶆ gokartΛͬͯதؒσʔλΛΩϟογϡ͢Δ 22 • ಛྔͷੜϓϩηε͕ίʔυԽ͞Ε͍ͯΔ • ಛྔσʔλ͕Ωϟογϡ • ➔ Ҋ݅ʹΑΒ͍ͣճͤΔ
• ➔ ઃఆΛม͑ͨ࠶࣮ݧͰ࠶ར༻ʹΑΔ࣌ؒॖ • ϓϩηε్͕தͰམ్ͪͯதͷΩϟογϡ͔Β࠶։ • ➔ ҆৺ͯ͠GKEͷϓϦΤϯϓςΟϒϧϊʔυΛ͑Δ • Ωϟογϡ࠶ར༻ʹΑ࣮ͬͯߦ࣌ؒΛॖͰ͖ͨ • ϓϦΤϯϓςΟϒϧͷ׆༻ͰGKEͷྉۚͷઅ͕Ͱ͖ͨ ߴԽ ॲཧ̍ ॲཧ̎ ॲཧ̏ σʔλ̍ σʔλ̎ Ϟσϧ ֶश̍ Ϟσϧ ֶश̎
BigQuery Ϣʔβ σʔλ هࣄӾཡ σʔλ ΫϦοΫ σʔλ ᶇ νʔϜڞ௨ͷμϯϩʔυϥΠϒϥϦͰσʔλಡΈࠐΈ 23
• YuleҎ֎ͷMLϓϩμΫτͰ͍ͬͯΔσʔλࣅ͍ͯΔ • BQ͔Βσʔλऔಘ͢ΔͨΊʹͦΕͧΕSQLΛॻ͔ͳ͍ͱ͍͚ͳ͍ ඪ४Խ Yule ML1 ML2 ML3 SQL SQL SQL SQL SQL SQL SQL SQL SQL SQL SQL SQL
BigQuery Ϣʔβ σʔλ هࣄӾཡ σʔλ ΫϦοΫ σʔλ ᶇ νʔϜڞ௨ͷμϯϩʔυϥΠϒϥϦͰσʔλಡΈࠐΈ 24
• μϯϩʔυ༻ͷڞ௨ϥΠϒϥϦΛ༻ • طଘͷμϯϩʔυϝιου͕͍·ΘͤΔ ➔ SQLΛϓϩμΫτ͝ͱʹॻ͔ͳͯ͘ࡁΉ • gokartͰඪ४Խ͞Ε͓ͯΓಡΈॻ͖͍͢͠ • ➔ ୭Ͱ؆୯ʹ͑Δ ඪ४Խ Yule ML1 ML2 ML3 mushroom μϯϩʔυ༻ ϥΠϒϥϦ SQL ϝιουΛར༻
ᶃ KubernetesΛ༻͍ͯλεΫΛࢄॲཧ ᶄ ઃఆϑΝΠϧΛ࡞͢Δ͚ͩͰֶशɾਪΛ࣮ߦͰ͖Δ ᶅ TensorBoardʹΑΔֶशࢹ ᶆ gokartΛͬͯதؒσʔλΛΩϟογϡ͢Δ ᶇ νʔϜڞ௨ͷμϯϩʔυϥΠϒϥϦͰσʔλಡΈࠐΈ
25 ·ͱΊ: ߴԽɾฒྻԽɾඪ४ԽͰMLҊ݅3՝Λࠀ ඪ४Խ ฒྻԽ ߴԽ ඪ४Խ ߴԽ ߴԽ
26 ΤϜεϦʔͰMLγεςϜΛ։ൃɾվળͯ͘͠ΕΔਓΛืूதͰ͢ https://jobs.m3.com/engineer/ ̏՝Λղܾ͢Δ͜ͱͰεέʔϧ͢ΔγεςϜ͕Ͱ͖ͨ • ߴԽɿվળΠςϨʔγϣϯΛߴʹճͤͨ • ฒྻԽɿଟͷҊ݅Λಉ࣌ਐߦͰ͜ͳͤͨ • ඪ४Խɿ։ൃ/࣮ߦΛͨ͜͠ͱͰɺ৽نϝϯόʔͰ͙͢ʹ࣮ߦͰ͖ͨ
·ͱΊ: ߴԽɾฒྻԽɾඪ४ԽͰMLҊ݅3՝Λࠀ