$30 off During Our Annual Pro Sale. View Details »
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.5k
gokartのキャッシュ競合防止のロック機能
mski_iksm
0
2.3k
macのunicode正規化.pdf
mski_iksm
0
35k
実臨床・Webサービス領域での機械学習研究 開発の標準化
mski_iksm
8
26k
pythonでメタプログラミング(メタクラス編)
mski_iksm
1
500
パイプラインツールgokartのタスク競合を解消した話
mski_iksm
0
230
Other Decks in Technology
See All in Technology
第4回 「メタデータ通り」 リアル開催
datayokocho
0
120
Playwright x GitHub Actionsで実現する「レビューしやすい」E2Eテストレポート
kinosuke01
0
560
[CMU-DB-2025FALL] Apache Fluss - A Streaming Storage for Real-Time Lakehouse
jark
0
110
Reinforcement Fine-tuning 基礎〜実践まで
ch6noota
0
170
re:Invent2025 コンテナ系アップデート振り返り(+CloudWatchログのアップデート紹介)
masukawa
0
350
20251209_WAKECareer_生成AIを活用した設計・開発プロセス
syobochim
6
1.5k
regrowth_tokyo_2025_securityagent
hiashisan
0
220
Overture Maps Foundationの3年を振り返る
moritoru
0
170
生成AI活用の型ハンズオン〜顧客課題起点で設計する7つのステップ
yushin_n
0
130
re:Inventで気になったサービスを10分でいけるところまでお話しします
yama3133
1
120
年間40件以上の登壇を続けて見えた「本当の発信力」/ 20251213 Masaki Okuda
shift_evolve
PRO
1
100
Kiro Autonomous AgentとKiro Powers の紹介 / kiro-autonomous-agent-and-powers
tomoki10
0
390
Featured
See All Featured
Automating Front-end Workflow
addyosmani
1371
200k
Product Roadmaps are Hard
iamctodd
PRO
55
12k
I Don’t Have Time: Getting Over the Fear to Launch Your Podcast
jcasabona
34
2.5k
BBQ
matthewcrist
89
9.9k
What’s in a name? Adding method to the madness
productmarketing
PRO
24
3.8k
The Pragmatic Product Professional
lauravandoore
37
7.1k
Designing for Performance
lara
610
69k
Designing Dashboards & Data Visualisations in Web Apps
destraynor
231
54k
Building an army of robots
kneath
306
46k
Side Projects
sachag
455
43k
Context Engineering - Making Every Token Count
addyosmani
9
500
GraphQLの誤解/rethinking-graphql
sonatard
73
11k
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՝Λࠀ