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
Livesense Inc.
PRO
June 17, 2019
Technology
0
4k
事業横断組織でのMLシステム開発・運用と基盤設計
MACHINE LEARNING Meetup KANSAI #5
2019/6/17
Livesense Inc.
PRO
June 17, 2019
Tweet
Share
More Decks by Livesense Inc.
See All by Livesense Inc.
27新卒_Webエンジニア職採用_会社説明資料
livesense
PRO
0
3.4k
株式会社リブセンス・転職会議 採用候補者様向け資料
livesense
PRO
0
67
株式会社リブセンス 会社説明資料(報道関係者様向け)
livesense
PRO
0
1.6k
データ基盤の負債解消のためのリプレイス
livesense
PRO
0
460
26新卒_総合職採用_会社説明資料
livesense
PRO
0
12k
株式会社リブセンス会社紹介資料 / Invent the next common.
livesense
PRO
1
41k
26新卒_Webエンジニア職採用_会社説明資料
livesense
PRO
1
13k
中途セールス職_会社説明資料
livesense
PRO
0
270
EM候補者向け転職会議説明資料
livesense
PRO
0
130
Other Decks in Technology
See All in Technology
OCI Network Firewall 概要
oracle4engineer
PRO
2
7.9k
Oracle Base Database Service 技術詳細
oracle4engineer
PRO
12
80k
ビズリーチ求職者検索におけるPLMとLLMの活用 / Search Engineering MEET UP_2-1
visional_engineering_and_design
1
120
フレームワークを意識させないワークショップづくり
keigosuda
0
180
ガバメントクラウドの概要と自治体事例(名古屋市)
techniczna
2
240
20251007: What happens when multi-agent systems become larger? (CyberAgent, Inc)
ornew
1
280
プロポーザルのコツ ~ Kaigi on Rails 2025 初参加で3名の登壇を実現 ~
naro143
1
240
HR Force における DWH の併用事例 ~ サービス基盤としての BigQuery / 分析基盤としての Snowflake ~@Cross Data Platforms Meetup #2「BigQueryと愉快な仲間たち」
ryo_suzuki
0
210
業務効率化をさらに加速させる、ノーコードツールとStep Functionsのハイブリッド化
smt7174
2
140
ガバメントクラウド(AWS)へのデータ移行戦略の立て方【虎の巻】 / 20251011 Mitsutosi Matsuo
shift_evolve
PRO
2
200
Performance Insights 廃止から Database Insights 利用へ/transition-from-performance-insights-to-database-insights
emiki
0
270
なぜAWSを活かしきれないのか?技術と組織への処方箋
nrinetcom
PRO
4
880
Featured
See All Featured
ReactJS: Keep Simple. Everything can be a component!
pedronauck
667
120k
Save Time (by Creating Custom Rails Generators)
garrettdimon
PRO
32
1.6k
Embracing the Ebb and Flow
colly
88
4.8k
Put a Button on it: Removing Barriers to Going Fast.
kastner
60
4k
Performance Is Good for Brains [We Love Speed 2024]
tammyeverts
12
1.2k
The Success of Rails: Ensuring Growth for the Next 100 Years
eileencodes
46
7.7k
The Invisible Side of Design
smashingmag
302
51k
Mobile First: as difficult as doing things right
swwweet
224
10k
How GitHub (no longer) Works
holman
315
140k
Optimising Largest Contentful Paint
csswizardry
37
3.5k
Why You Should Never Use an ORM
jnunemaker
PRO
59
9.6k
Producing Creativity
orderedlist
PRO
347
40k
Transcript
ࣄۀԣஅ৫Ͱͷ MLγεςϜ։ൃɾӡ༻ͱج൫ઃܭ Shotaro Tanaka / @yubessy / Ϧϒηϯε (ژΦϑΟε) MACHINE
LEARNING Meetup KANSAI #5
͢͜ͱ • ෳͷWebαʔϏεΛӡӦ͍ͯ͠Δاۀ • MLγεςϜͷ։ൃɾӡ༻νʔϜԣஅ৫ͱͯ͠αʔϏε͔Βಠཱ • ֤αʔϏεʹϨίϝϯυޮՌ༧ଌϞσϧͳͲෳͷMLγεςϜΛఏڙ ͱ͍͏ڥͰɺMLγεςϜΛ։ൃɾӡ༻͢ΔͨΊʹͲΜͳΛ͍ͯ͠Δ͔ ͋Δ͍ɺͦͷͨΊͷMLج൫ΛͲ͏ઃܭ͍ͯ͠Δ͔
αʔϏεɾ৫ɾνʔϜ
None
৫ߏ • ࣄۀ෦ • ΞϧόΠτࣄۀ෦ (ϚοϋόΠτ) • ΩϟϦΞࣄۀ෦ (స৬ձٞ, స৬υϥϑτ,
...) • ෆಈ࢈Ϣχοτ (Door ି, IESHIL) • ... • ԣஅ৫ • ςΫϊϩδΧϧϚʔέςΟϯά෦ • σʔλϓϥοτϑΥʔϜάϧʔϓ ← MLؔ࿈ͷνʔϜ͜͜ʹॴଐ • σʔλϚʔέςΟϯάάϧʔϓ • ΠϯϑϥετϥΫνϟάϧʔϓ
MLνʔϜɾMLج൫νʔϜ ࣾһ • MLΤϯδχΞ: 2໊ • MLج൫ΤϯδχΞ: 2໊ • શʹۀ͍ͯ͠ΔΘ͚Ͱͳ͘ɺॏͳΔ෦͋Δ
ֶੜΞϧόΠτ • ژΦϑΟε: 4໊ • ౦ژΦϑΟε: 1໊ • ML/Web/ΠϯϑϥͳͲͷεΩϧΛ׆͔ͯ͠։ൃΛิॿ
ओͳMLγεςϜ
ٻਓϨίϝϯυΤϯδϯ • ϚοϋόΠτɾస৬φϏͳͲͷϢʔβʹٻਓΛਪન • ϝʔϧɾWebαΠτɾωΠςΟϒΞϓϦͳͲ༷ʑͳॴͰಋೖ
ٻਓϨίϝϯυΤϯδϯͷ෦ • ධՁɾίϯςϯπΛͱʹ MF, FM ͳͲͷΞϧΰϦζϜΛద༻͠είΞΛࢉग़ • user-item item-item
ͷϦετΛόονॲཧͰੜ֤͠αʔϏεʹఏڙ
Ԡืɾ࠾༻ͷޮՌਪఆɾ༧ଌϞσϧ • ϚοϋόΠτɾస৬φϏͳͲͷٻਓͷCVRԠื୯ՁΛࢉग़ • ݕࡧ݁ՌͷॱҐ੍ޚࠂग़ߘͷ࠷దԽʹ׆༻
Ԡืɾ࠾༻ͷޮՌਪఆɾ༧ଌϞσϧͷ෦ • ϩάΛ༻͍ͯϕΠζਪఆɾϩδεςΟοΫճؼͰ༧ଌɾਪఆ • σΟϨΫλʔ͚ʹ؆қతͳϏϡʔϫΛWebΞϓϦͱͯ͠։ൃ
A/BςετɾόϯσΟοτπʔϧ • A/Bςετͷύλʔϯ৴ൺΛόϯσΟοτΞϧΰϦζϜͰࣗಈௐ • WebαΠτɾωΠςΟϒΞϓϦͷ࠷దԽΛޮԽ
A/BςετɾόϯσΟοτπʔϧͷ෦ • ཧը໘͔ΒύλʔϯΛొ͠ɺWeb APIͰϥϯμϜʹ৴ • CVϩάΛੳج൫Ͱूܭ͠ɺύλʔϯ৴ൺΛࣗಈߋ৽
MLج൫͕ͳ͔ͬͨ࣌
࠷ॳظͷߏ • 2014ࠒʹ࠷ॳͷγεςϜ (ϨίϝϯυΤϯδϯ) Λ։ൃ • σʔλऔಘ͔Βσʔλอଘ·ͰΛҰؾ௨؏Ͱߦ͏δϣϒ
ෳࡶԽ͢Δ࣮ • ධՁσʔλͷΈΛ͏ΞϧΰϦζϜΛՃ • ϑΟϧλϦϯάϦετͷϚʔδΛߦͬͯϨίϝϯυϦετΛੜ
ࣅͨΑ͏ͳγεςϜͷ૿Ճ • ಉαʔϏεͰA/BςετͷͨΊϨϙδτϦΛෳͯ͠ΞϧΰϦζϜ͚ͩมߋ • ผαʔϏεͷԣల։ͷࡍʹΞϧΰϦζϜΛίϐʔͯ͠ར༻
ଟछଟ༷ͳ࣮ߦڥ • ֤γεςϜ͕αʔϏεͷڥʹ૬Γ͠ɺσϓϩΠϑϩʔҧ͏ • ΦϯϓϨͷϦιʔεʹݶΓ͕͋ΓɺVM͝ͱʹεϖοΫ͕ඍົʹҧ͏
खʹෛ͑ͳ͘ͳ͖ͬͯͨ
͜ͷ··Ͱ͍ͣΕ։ൃӡ༻ഁ͢Δ → ͦ͏ͳΔલʹMLج൫Λߏங͢Δ͜ͱʹ MLج൫ Livesense Brain ※ͱΓ͋͑ͣ࠷ॳʹ໊લ͚ܾͩΊͨ
MLج൫ԽͷͶΒ͍ ։ൃ໘ͷݟ͠ • γεςϜͷϞδϡʔϧؒͷີ݁߹Λͳ͘͢ • γεςϜؒͰڞ௨ԽͰ͖Δ෦ڞ௨Խ ӡ༻໘ͷݟ͠ • νʔϜ͕ࣗલӡ༻Ͱ͖ΔΠϯϑϥू •
δϣϒཧσϓϩΠϑϩʔΛڞ௨Խ
։ൃ໘ͷݟ͠
։ൃ্ͷ MLͷίΞ෦ͱͦΕҎ֎͕ີ݁߹ • MLΤϯδχΞɾMLج൫ΤϯδχΞͷ୲Λ͠ʹ͍͘ • ༻్ʹԠͯ͡ݴޠϥΠϒϥϦΛ͍͚ΒΕͳ͍ ֤γεςϜͷڞ௨ॲཧΛίϐϖར༻ • ڠௐϑΟϧλϦϯάͳͲͷΞϧΰϦζϜ࣮ •
લॲཧDBೖग़ྗ༻ͷΫϥε → γεςϜΛػೳ͝ͱʹׂ͠࠶ߏͰ͖ͳ͍͔ʁ
ίϯϙʔωϯτͷׂ ֤εςοϓΛ୯ػೳίϯϙʔωϯτʹΓग़͠ • ֤ίϯϙʔωϯτ CLI Ͱ୯ಠ࣮ߦͰ͖Δ • ίϯϙʔωϯτؒͷೖग़ྗͯ͢ϑΝΠϧΛհ͢Δ ྫ: •
I/Oίϯϙʔωϯτ: SQLϑΝΠϧΛೖྗ → σʔλΛCSVͱͯ͠ग़ྗ • લॲཧίϯϙʔωϯτ: ςΩετσʔλΛೖྗ → BoWϕΫτϧΛग़ྗ • Ϩίϝϯυίϯϙʔωϯτ: ධՁσʔλΛೖྗ → ਪનείΞΛग़ྗ
ίϯϙʔωϯτͷίϯςφԽ • ֤ίϯϙʔωϯτΛ୯Ұͷ Docker Πϝʔδʹ͢Δ • γεςϜ͝ͱͷࠩ΄΅ઃఆϑΝΠϧɾSQL͚ͩͰදݱ • ୯७ͳόονॲཧͳΒ docker
run ͷஞ࣮࣍ߦ͚ͩͰॻ͚Δ • ࣮ࡍʹ͜ΕͰຊ൪Քಇ͍ͯ͠ΔγεςϜ͋Δ # load dataset docker run -v $(pwd):/workdir sqlkit select ratings.sql /workdir/ratings.csv docker run -v $(pwd):/workdir sqlkit select content.sql /workdir/content.csv # preprocess docker run -v $(pwd):/workdir nlpkit vectorize /workdir/content.csv /workdir/features.csv # run recommender docker run -v $(pwd):/workdir recommender predict config.yaml /workdir
None
Pros • ΞϧΰϦζϜ࣮ͳͲΛෳγεςϜؒͰ࠶ར༻Ͱ͖Δ • ίϯϙʔωϯτ͝ͱʹݸผʹ։ൃɾվળ͕Ͱ͖Δ • ผͷݴޠϥΠϒϥϦΛ͏͜ͱ༰қ • ৽نϝϯόʔΞϧόΠτͷࢀೖোน͕͘ͳͬͨ •
͋Δίϯϙʔωϯτʹ͍ͭͯΩϟονΞοϓ͢Εࣄ͕Ͱ͖Δ Cons • MLΤϯδχΞؚΊશһʹίϯςφͷ͕ࣝ͋Δఔඞཁ
ӡ༻໘ͷݟ͠
ӡ༻্ͷ Πϯϑϥͷมߋͷࣗ༝͕͍ • MLγεςϜ͕֤αʔϏεͷΠϯϑϥʹ૬Γ • धཁʹԠͨ͡Ϧιʔεมߋ͕ॊೈʹͰ͖ͳ͍ ͦΕͧΕͷγεςϜͷڥ͕શ͘ผ • 10Ҏ্ͷδϣϒ͕֤γεςϜઐ༻ͷVMͰ cron
࣮ߦ • δϣϒཧπʔϧσϓϩΠϑϩʔόϥόϥ → νʔϜࣗલͷΠϯϑϥͰγεςϜΛҰݩཧͰ͖ͳ͍͔ʁ
Google Kubernetes Engine (GKE) ͷ࠾༻ νʔϜࣗલͷίϯϐϡʔςΟϯάج൫ΛखʹೖΕΔ • ߴෛՙͳMLॲཧͷ࣮ߦதΦʔτεέʔϧͰϦιʔεΛ૿ڧ • γεςϜͷߏΛ༰қʹՃɾมߋͰ͖Δ
• ྫ: ༧ଌϞσϧͷ؆қϏϡʔϫΛ Deployment ͱཱͯͯ͠Δ ෳγεςϜΛ౷Ұ͞ΕͨڥͰҰݩཧͰ͖Δ • WebΞϓϦόονॲཧ୯ҰΫϥελʹಉډ • δϣϒཧσϓϩΠ k8s ͷΤίγεςϜ্Ͱ࣮ݱ
ิ: গਓνʔϜͰ Kubernetes ? γεςϜͷܗଶ͕Ұ༷ɾ୯७ͳΒଞʹྑ͍બࢶ͕͋Δ • όονॲཧ͚ͩ → GCE, Fargate,
... • WebΞϓϦ͚ͩ → GAE, Beanstalk, ... ͔͠͠ɺࠓճ༷ʑͳγεςϜΛѻ͏ඞཁ͕͋ͬͨ • ҠߦରͷطଘγεςϜʹόονॲཧWebΞϓϦؚ·ΕΔ • ίϯςφԽ͞ΕͨෳͷίϯϙʔωϯτΛ࿈ܞ͍ͤͨ͞ → ͜ΕΒΛ౷Ұతʹཧ͢Δͷʹ Kubernetes ͕ద͍ͯͨ͠
ϫʔΫϑϩʔΤϯδϯͷಋೖ • δϣϒཧͦͷͷ k8s ͰҰݩԽͰ͖ͨ • ίϯϙʔωϯτΛ࿈ܞͤͯ͞ϫʔΫϑϩʔԽ͍ͨ͠ → Argo Workflow
Λಋೖ • k8s ͰίϯςφΛྻɾฒྻɾDAG࣮ߦ͢ΔϫʔΫϑϩʔΤϯδϯ • ϦτϥΠɾΤϥʔॲཧͳͲ؆୯ʹ࣮ݱ • ϫʔΫϑϩʔ࣮ߦΛ Web UI ͰϞχλϦϯάͰ͖Δ લճLTͰհ: Argo Workflow ʹΑΔMLδϣϒཧ - Speaker Deck
σϓϩΠϑϩʔͷࣗಈԽ • σϓϩΠͦͷͷ k8s manifest Λ apply ͢Δ͚ͩ • ߋʹखؒΛলͨ͘ΊσϓϩΠΛࣗಈԽ͍ͨ͠
→ Cloud Build Ͱ GitOps Λ࣮ݱ • Manifest ϨϙδτϦͷϓϧϦΫϚʔδΛτϦΨʔͱ͢Δ • Cloud Build Ͱ kustomize build ~ kubectl apply ※ Argo CD ݕ౼͕ͨ͠ɺࠓͷنͳΒ Cloud Build Ͱेͱஅ
None
Pros • νʔϜͰͷӡ༻ͷॊೈੑɾࣗ༝্͕ • ඞཁʹԠͯ͡ϦιʔεΛ૿ڧ • PoC ࣮ΛαʔϏεӨڹΛݶఆͯ͠ࢼݧӡ༻ • γεςϜ͕૿͑ͯཧίετΛ͍͑͢
Cons • ಉ͡ΠϯϑϥʹෳγεςϜ͕ಉډ → ΧεέʔυোͷϦεΫ • δϣϒͷႈੑͳͲ k8s ಛ༗ͷੑ࣭ʹཹҙ͢Δඞཁ
MLج൫લޙͷશମൺֱ
Before
After
Before • ਨߏ = ݽཱͨ͠γεςϜΛݸผʹ։ൃɾӡ༻ • γεςϜͷʹൺྫͯ͠ɾਓ͕ඞཁʹͳΓ͕ͪ After • ਫฏߏ
= ػೳίϯϙʔωϯτΛ࠶ར༻͠ɺΠϯϑϥϨΠϠΛڞ௨Խ • γεςϜͷ͕૿͑ͯཧׂ୲͕͍͢͠
·ͱΊ
·ͱΊ • গਓͷԣஅνʔϜͰෳͷMLγεςϜΛ։ൃɾӡ༻ • MLج൫Ҏલ֤γεςϜ͕ݽཱͨ͠ঢ়ଶͰଟ͘ͷΛ๊͍͑ͯͨ • MLج൫ߏஙΛ௨ͯ͡։ൃɾӡ༻Λશମతʹݟ͢͜ͱʹ • ίϯϙʔωϯτׂͱࣗલΠϯϑϥͷҰݩԽΛߦͬͨ •
ਨߏ → ਫฏߏ ͷసͰཧׂ୲͕͘͢͠ͳͬͨ