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
5
3.2k
高速化・並列化・標準化で スケールするML予測システムの開発
Daiki Ikeshima
July 08, 2021
Tweet
Share
More Decks by Daiki Ikeshima
See All by Daiki Ikeshima
MLOpsの「あるある」課題の解決と、そのためのライブラリgokart
mski_iksm
1
1.6k
gokartのキャッシュ競合防止のロック機能
mski_iksm
0
2.4k
macのunicode正規化.pdf
mski_iksm
0
36k
実臨床・Webサービス領域での機械学習研究 開発の標準化
mski_iksm
8
26k
pythonでメタプログラミング(メタクラス編)
mski_iksm
1
520
パイプラインツールgokartのタスク競合を解消した話
mski_iksm
0
230
Other Decks in Technology
See All in Technology
AWS DevOps Agent x ECS on Fargate検証 / AWS DevOps Agent x ECS on Fargate
kinunori
2
250
Context Engineeringの取り組み
nutslove
0
380
M&A 後の統合をどう進めるか ─ ナレッジワーク × Poetics が実践した組織とシステムの融合
kworkdev
PRO
1
520
Oracle Base Database Service 技術詳細
oracle4engineer
PRO
15
93k
Bill One急成長の舞台裏 開発組織が直面した失敗と教訓
sansantech
PRO
2
410
SRE Enabling戦記 - 急成長する組織にSREを浸透させる戦いの歴史
markie1009
0
170
Oracle Cloud Observability and Management Platform - OCI 運用監視サービス概要 -
oracle4engineer
PRO
2
14k
Amazon Bedrock Knowledge Basesチャンキング解説!
aoinoguchi
0
170
usermode linux without MMU - fosdem2026 kernel devroom
thehajime
0
240
GitHub Copilot CLI を使いやすくしよう
tsubakimoto_s
0
110
Claude Code for NOT Programming
kawaguti
PRO
1
110
Agile Leadership Summit Keynote 2026
m_seki
1
680
Featured
See All Featured
Building the Perfect Custom Keyboard
takai
2
690
The Psychology of Web Performance [Beyond Tellerrand 2023]
tammyeverts
49
3.3k
[SF Ruby Conf 2025] Rails X
palkan
1
760
Distributed Sagas: A Protocol for Coordinating Microservices
caitiem20
333
22k
Exploring anti-patterns in Rails
aemeredith
2
260
Amusing Abliteration
ianozsvald
0
110
Why Your Marketing Sucks and What You Can Do About It - Sophie Logan
marketingsoph
0
77
YesSQL, Process and Tooling at Scale
rocio
174
15k
VelocityConf: Rendering Performance Case Studies
addyosmani
333
24k
Being A Developer After 40
akosma
91
590k
The Limits of Empathy - UXLibs8
cassininazir
1
220
Building Better People: How to give real-time feedback that sticks.
wjessup
370
20k
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՝Λࠀ