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
40k
実臨床・Webサービス領域での機械学習研究 開発の標準化
mski_iksm
8
27k
pythonでメタプログラミング(メタクラス編)
mski_iksm
1
570
パイプラインツールgokartのタスク競合を解消した話
mski_iksm
0
270
Other Decks in Technology
See All in Technology
【Google Cloud Next Tokyo'26】Gemini Enterprise と Oracle AI Database で実現する、業務データ活用を実現する AI エージェント実装
shisyu_gaku
0
230
【CEDEC2026】コードレビュー支援ツール開発から学ぶ:LLMを用いた業務システムの実践的な運用設計と誤出力対策
cygames
PRO
0
630
強化学習「理論」入門
enakai00
3
3.6k
AI時代の強いチームの作り方
yuukiyo
25
16k
【CEDEC2026】『Relink』を拡張せよ - 『GRANBLUE FANTASY: Relink - Endless Ragnarok』の開発速度と品質を守るCI運用
cygames
PRO
0
140
SO-101×VLAによる3色キューブのピック&プレース
abeja
0
150
サイバー捜査員研修(前半)
nomizone
1
1.9k
ガバメント AI 源内を地方自治体は活用できるのか可能性と課題、期待について
takeda_h
1
360
ボトムアップ文化が強い組織で セキュリティをどう根付かせていくかの現在進行形の話 / Making Security Stick in a Bottom-Up Organization
yamaguchitk333
0
200
AIは実装を速くする。では、私たちは何を今作るべきか?-立場を越えてリリースに向き合ったチーム開発の実践 / 20260801 Hiromi Nakaya and Naoki Takahashi
shift_evolve
PRO
3
450
FORENSIA: ローカルLLMフォレンジックハーネス
sumeshi
2
350
Goでデータパイプラインを作ろう
sansantech
PRO
0
360
Featured
See All Featured
エンジニアに許された特別な時間の終わり
watany
108
250k
GraphQLとの向き合い方2022年版
quramy
50
15k
AI in Enterprises - Java and Open Source to the Rescue
ivargrimstad
0
1.4k
Git: the NoSQL Database
bkeepers
PRO
432
67k
Save Time (by Creating Custom Rails Generators)
garrettdimon
PRO
32
4.3k
Being A Developer After 40
akosma
91
590k
KATA
mclloyd
PRO
35
15k
[SF Ruby Conf 2025] Rails X
palkan
2
1.2k
Navigating Weather and Climate Data
rabernat
0
460
Skip the Path - Find Your Career Trail
mkilby
1
180
From π to Pie charts
rasagy
0
260
Lessons Learnt from Crawling 1000+ Websites
charlesmeaden
PRO
1
1.5k
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՝Λࠀ