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
August 02, 2019
Technology
2
2.6k
リブセンスでのMLシステム開発・運用と 研究・開発アシスタントの取り組み
2019/08/02
これからの開発チームのあり方を考える @ Sansan Innovation Lab
Livesense Inc.
PRO
August 02, 2019
Tweet
Share
More Decks by Livesense Inc.
See All by Livesense Inc.
27新卒_総合職採用_会社説明資料
livesense
PRO
0
2.6k
27新卒_Webエンジニア職採用_会社説明資料
livesense
PRO
0
6.6k
株式会社リブセンス・転職会議 採用候補者様向け資料
livesense
PRO
0
190
株式会社リブセンス 会社説明資料(報道関係者様向け)
livesense
PRO
0
1.6k
データ基盤の負債解消のためのリプレイス
livesense
PRO
0
550
26新卒_総合職採用_会社説明資料
livesense
PRO
0
13k
株式会社リブセンス会社紹介資料 / Invent the next common.
livesense
PRO
2
52k
26新卒_Webエンジニア職採用_会社説明資料
livesense
PRO
1
13k
中途セールス職_会社説明資料
livesense
PRO
0
290
Other Decks in Technology
See All in Technology
Oracle Base Database Service 技術詳細
oracle4engineer
PRO
15
93k
Bedrock PolicyでAmazon Bedrock Guardrails利用を強制してみた
yuu551
0
260
AI駆動開発を事業のコアに置く
tasukuonizawa
1
400
コスト削減から「セキュリティと利便性」を担うプラットフォームへ
sansantech
PRO
3
1.6k
Agent Skils
dip_tech
PRO
0
140
Claude Code for NOT Programming
kawaguti
PRO
1
110
Red Hat OpenStack Services on OpenShift
tamemiya
0
140
猫でもわかるKiro CLI(セキュリティ編)
kentapapa
0
130
Ruby版 JSXのRuxが気になる
sansantech
PRO
0
170
AzureでのIaC - Bicep? Terraform? それ早く言ってよ会議
torumakabe
1
620
AIエージェントに必要なのはデータではなく文脈だった/ai-agent-context-graph-mybest
jonnojun
1
250
ブロックテーマ、WordPress でウェブサイトをつくるということ / 2026.02.07 Gifu WordPress Meetup
torounit
0
210
Featured
See All Featured
Fight the Zombie Pattern Library - RWD Summit 2016
marcelosomers
234
17k
ピンチをチャンスに:未来をつくるプロダクトロードマップ #pmconf2020
aki_iinuma
128
55k
My Coaching Mixtape
mlcsv
0
52
エンジニアに許された特別な時間の終わり
watany
106
230k
Building an army of robots
kneath
306
46k
More Than Pixels: Becoming A User Experience Designer
marktimemedia
3
330
Why Our Code Smells
bkeepers
PRO
340
58k
Google's AI Overviews - The New Search
badams
0
910
Designing Powerful Visuals for Engaging Learning
tmiket
0
240
Done Done
chrislema
186
16k
Believing is Seeing
oripsolob
1
59
Fantastic passwords and where to find them - at NoRuKo
philnash
52
3.6k
Transcript
ϦϒηϯεͰͷMLγεςϜ։ൃɾӡ༻ͱ ݚڀɾ։ൃΞγελϯτͷऔΓΈ Shotaro Tanaka / @yubessy / Ϧϒηϯε ͜Ε͔Βͷ։ൃνʔϜͷ͋ΓํΛߟ͑Δ @
Sansan Innovation Lab
ࣗݾհ ాத ଠ / @yubessy • גࣜձࣾϦϒηϯε • ςΫϊϩδΧϧϚʔέςΟϯά෦ σʔλϓϥοτϑΥʔϜάϧʔϓ
• ࣄ • Ҏલ: σʔλੳج൫ (Livesense Analytics) ͷ։ൃɾӡ༻ • ݱࡏ: ػցֶशج൫ (Livesense Brain) ͷ։ൃɾӡ༻ • ژΦϑΟεۈ • ݚڀɾ։ൃΞγελϯτͷϝϯλʔ
͢͜ͱ • ػցֶशγεςϜͱͦͷ࣮ߦج൫ͷ։ൃɾӡ༻Λ͍ͯ͠ΔνʔϜ • ژΦϑΟεத৺ʹݚڀɾ։ൃΞγελϯτͱֶͯ͠ੜΞϧόΠτΛ࠾༻ • ͳͥΞγελϯτͷΈ͕͋Δͷ͔ɾͲΜͳࣄΛ͍ͯ͠Δ͔ • ۀ্ͲΜͳোน͕ଘࡏ͢Δ͔ɾͦΕΛͲ͏ࠀ͍ͯ͠Δ͔
Ϧϒηϯεͷڥ
ӡӦαʔϏε
৫ߏ • ࣄۀ෦ • ΞϧόΠτࣄۀ෦ (ϚοϋόΠτ) • స৬ձٞࣄۀ෦ (స৬ձٞ) •
ෆಈ࢈Ϣχοτ (Door ି, IESHIL) • ... • ԣஅ৫ • ςΫϊϩδΧϧϚʔέςΟϯά෦ • σʔλϓϥοτϑΥʔϜάϧʔϓ ← MLؔ࿈ͷνʔϜ͜͜ʹॴଐ • σʔλϚʔέςΟϯάάϧʔϓ • ΠϯϑϥετϥΫνϟάϧʔϓ • ωΠςΟϒΞϓϦάϧʔϓ
MLνʔϜɾMLج൫νʔϜ ࣾһ • MLΤϯδχΞ: 2໊ • MLج൫ΤϯδχΞ: 2໊ • શʹۀ͍ͯ͠ΔΘ͚Ͱͳ͘ɺॏͳΔ෦͋Δ
ΞϧόΠτ = ݚڀɾ։ൃΞγελϯτ • ژΦϑΟε: 4໊ • ౦ژΦϑΟε: 1໊
αʔϏεͱMLγεςϜ MLɾMLج൫νʔϜ͕֤αʔϏεʹ༷ʑͳMLγεςϜΛఏڙ • ϨίϝϯυΤϯδϯ → αΠτɾΞϓϦͳͲͰͷٻਓਪનʹར༻ • Ԡืɾ࠾༻ͳͲͷਪఆɾ༧ଌϞσϧ → ࠂग़ߘͳͲʹར༻
• όϯσΟοτπʔϧ → A/BςετͷޮԽʹར༻ ෳͷMLγεςϜΛগਓͷνʔϜͰ։ൃɾӡ༻Ͱ͖ΔΑ͏ • MLγεςϜΛߏཁૉ͝ͱʹղ͠ૄ݁߹Խ • ڞ௨ͷΠϯϑϥͰෳγεςϜΛӡ༻ ৄࡉ ࣄۀԣஅ৫ͰͷMLγεςϜ։ൃɾӡ༻ͱج൫ઃܭ Ͱ
MLγεςϜͷߏ MLγεςϜͷߏཁૉΛׂ͠ʮίϯϙʔωϯτʯͱݺΜͰ͍Δ • ਪનΞϧΰϦζϜ, લॲཧ, ݁ՌϏϡʔϫ ͳͲ͕֤ʑ୯Ұίϯϙʔωϯτ • ̍ίϯϙʔωϯτ =
̍ϨϙδτϦ = ̍ίϯςφΠϝʔδ ͷߏͰ౷Ұ ֤ίϯϙʔωϯτຖʹ ࣮ ʙ ςετ ʙ ϦϦʔε ͷαΠΫϧ͕݁ • ίϯϙʔωϯτຖʹαϯϓϧσʔλࣗಈςετΛඋ • ίϯϙʔωϯτͷಈ࡞ݕূʹඞཁͳͷ docker run ͚ͩ ٕज़໘ Argo Workflow ʹΑΔػցֶशϫʔΫϑϩʔཧ ࢀর
ݚڀɾ։ൃΞγελϯτ
֓ཁ ݚڀɾ։ൃΞγελϯτʢژΦϑΟεʣืूཁ߲ • ػցֶशɾσʔλΤϯδχΞϦϯά͓ΑͼͦΕʹਵ͢Δݚڀɾ։ൃ • िؒʙϲ݄୯ҐͷϛχϓϩδΣΫτܗࣜ • جૅతͳΤϯδχΞϦϯάεΩϧ +α Ͱ׆͔ͤΔٕज़͕͋Δ͜ͱ
• ʢવͳ͕Βʣֶۀ༏ઌ ≠ ৽ଔ࠾༻ • ͋͘·ͰۀΛ௨ͯ͡νʔϜɾαʔϏεʹߩݙ͢Δͷ͕త • ࠾༻తͰͷֶੜͷғ͍ࠐΈ͠ͳ͍ʢͪΖΜೖࣾͯ͘͠ΕͨΒخ͍͠ʣ
ۀ༰ ʮՌ͕ग़Δ͔Θ͔Βͳ͍͕ɺઓ͢ΔՁ͕͋Δʯ͜ͱ • ͬͯΈ͍͕ͨͯ͘͠खΛ͚ΒΕ͍ͯͳ͍ٕज़ݕূɾσʔλੳ • MLγεςϜͷิॿπʔϧʢσʔλ֬ೝɾϝτϦΫεऩूʣͷ։ൃ ۀܗଶ্ෆ͖ͳࣄආ͚Δ • ظݶ͕͋Δɾۓٸੑ͕ߴ͍ •
ࣦഊ࣌ͷϦεΫ͕େ͖͍ • ਂ͍υϝΠϯࣝɾଞ෦ॺͱͷີͳ࿈ܞΛཁ͢Δ
ྫ: Julia ͷฒྻܭࢉػೳͷݕূɾಋೖ • ࣾͰ Julia ͰϨίϝϯυΞϧΰϦζϜΛ࣮͍ͯ͠Δ • ϓϩηεɾεϨουฒྻػೳʹΑΔߴԽΛݕূ࣮͠ࡍʹಋೖ
ྫ: ΫνίϛͷผϞσϧͷݕূ • ΫνίϛαΠτͷҙຯෆ໌ͳߘͳͲΛࣗಈఆ͢ΔϞσϧΛ࡞ͬͯΈΔ • ಛྔɾΞϧΰϦζϜͷௐͰ࠶ݱɾద߹ΛͲͷఔ্͛ΒΕΔ͔ݕূ
ྫ: Ϩίϝϯυͷ݁ՌϏϡʔΞͷվળ • Ϩίϝϯυͷ݁ՌΛ֬ೝ͢Δ؆୯ͳ Web ΞϓϦΛ։ൃ • ΞϧΰϦζϜʹΑΔϥϯΩϯάมԽͷൺֱػೳͳͲΛࡌ
Ξγελϯτۀʹ͓͚Δ੍ ࣌ؒ ͷ੍ • ීஈ͔Βतۀɾݚڀ߹ͷग़ୀࣾ࣌ࠁมߋதൈ͚͕ൃੜ • ࣌ظʹΑͬͯࢼݧจࣥචʹΑΔظෆࡏ͕ൃੜ ۀൣғ ͷ੍ •
εΩϧ͕ݚڀدΓͰҰൠతͳ Web ։ൃʹෆ׳Εͳ͜ͱ • ݖݶ্ϝϯλʔʹ͔͠Ͱ͖ͳ͍࡞ۀ͕Ұఆൃੜ → ͦΕͧΕͷ੍ʹͲ͏ରԠ͍ͯ͠Δ͔Λհ
࣌ؒͷ੍
࣌ؒͷ੍ ීஈ͔Βतۀɾݚڀ߹ͷग़ୀࣾ࣌ࠁมߋதൈ͚͕ൃੜ • ͑Δ͕࣌ؒগͳ͍ͷͰࢦ͕ࣔͪൃੜ͢Δͱޮ͕མͪΔ • ࣾһͱಉ࣌ؒ࣠͡ͰಉظతʹࣄΛਐΊΔͷ͕͍͠ ࣌ظʹΑͬͯࢼݧจࣥචʹΑΔظෆࡏ͕ൃੜ • ෆࡏதͷঢ়گมԽʹϓϩδΣΫτ͕ࠨӈ͞ΕΔͱՌ͕ແବʹͳΔ͓ͦΕ •
ظ͕ۭؒ͘ͱϝϯλʔԿΛ͍͔ͬͯͨΕ͕ͪ → ϓϩδΣΫτཧΛ֤ͯࣗ͠ͷϖʔεͰਐΊΒΕΔΑ͏ʹ
ϛχϓϩδΣΫτܗࣜͰͷ࣮ࢪ ݸผλεΫͰͳ͘ϓϩδΣΫτͱͯ͠എܠɾΰʔϧΛ໌จԽ • ͜Ε͕Ͱ͖ΔͱνʔϜαʔϏεʹͱͬͯԿ͕خ͍͠ͷ͔ • ͲΜͳΞτϓοτ͕Ͱ͖Εޭͳͷ͔ ஞҰࡉ͔͍ࢦࣔΛ͠ͳͯ͋͘Δఔ֤ࣗͷஅͰਐΊΒΕΔΑ͏ʹ • ̎ʙ̏ఔࢦ͕ࣔͪൃੜ͠ͳ͍͜ͱΛ҆ʹ •
िʹ̍ճϖʔεͰৼΓฦΓΛ࣮ࢪ
# ϓϩδΣΫτ: Julia + Docker ͷฒྻԽػߏͷݕূɾಋೖ ## എܠ Data Platform
άϧʔϓͰ֤αʔϏεͰར༻͢ΔϨίϝϯυΞϧΰϦζϜΛ Julia Ͱ࣮͠ Docker ίϯςφͱͯ͠ӡ༻͍ͯ͠·͢ɻ https://github.com/livesense-inc/brain.recommender Matrix Factorization ͷΑ͏ͳΞϧΰϦζϜɺֶश༧ଌͷҰ෦ͷॲཧΛฒྻԽ͢Δ͜ͱ͕ՄೳͰ͢ɻ ͜ͷ͏ͪੵL2ϊϧϜʹΑΔϕΫτϧ୳ࡧʹ͍ͭͯ faiss Λར༻Ͱ͖·͕͢ɺϥΠϒϥϦ͕ͳ͍Α͏ͳέʔεͰࣗͰॲཧΛ࣮͢Δඞཁ͕͋Γ·͢ɻ Julia ʹ༷ʑͳฒྻԽػߏ͕༻ҙ͞Ε͍ͯΔͨΊɺͦΕΒΛͬͯΞϧΰϦζϜΛߴԽͰ͖Εɺ։ൃɾӡ༻ͷޮΛ্Ͱ͖·͢ɻ ͦ͜Ͱࠓճ Julia ͷฒྻԽػߏͷௐࠪͱɺͦΕΛ༻͍ͨߴԽͷ࣮ΛߦͬͯΒ͍·͢ɻ ## ΰʔϧ - Julia + Docker Ͱར༻ՄೳͳฒྻԽػߏΛௐࠪ͠Ϩϙʔτʹ·ͱΊΔ - brain.recommender ͷ prediction ΛฒྻԽʹΑΓߴԽ͢Δ ## ڥ - Julia όʔδϣϯ: 1.0.2 - ίϯςφͷϕʔεΠϝʔδ: julia:1.0.2 (https://hub.docker.com/r/library/julia/) ...
ΞτϓοτΛஈ֊తʹ ϓϩδΣΫτதʹෳճͷνΣοΫϙΠϯτΛઃ͚Δ • ։ൃܥϓϩδΣΫτͰϦϦʔεΛԿஈ֊͔ʹ͚Δ • ੳɾݕূܥϓϩδΣΫτͰෳճϨϙʔτΛ࡞ ϓϩδΣΫτ͕தஅͯͦ͠ͷ࣌·ͰͷՌ͕׆͖ΔΑ͏ʹ͢Δ • ͍͖ͳΓػೳ࣮ʹೖΔͷͰͳٕ͘ज़ݕূ͔Β࢝ΊΔ •
ݕূٕͨ͠ज़ͷಋೖ·ͰͰ͖ͳͯ͘ݟ͕ΔΑ͏ʹ
## εςοϓ ### 1 - ฒྻԽػߏͷಈ࡞ݕূ ҎԼͷ Julia ެࣜυΩϡϝϯτʹهࡌ͞ΕͨฒྻԽػߏ͕ɺDocker ίϯςφͰಈ࡞͢Δ͔֬ೝ͍ͯͩ͘͠͞ɻ
https://docs.julialang.org/en/v1/manual/parallel-computing/index.html#Multi-Threading-(Experimental)-1 ࠓճͷݕূରϚϧνεϨου·ͨϚϧνϓϩηεʹΑΔฒྻԽͰ͢ (άϦʔϯεϨου, ΫϥελίϯϐϡʔςΟϯάର֎Ͱ͢)ɻ ### 2 - ฒྻԽػߏͷύϑΥʔϚϯεݕূ 1Ͱݕূͨ͠ॲཧͷ͏ͪಛʹ SharedArrays, SparseArrays ͷ read/write ʹ͍ͭͯɺҎԼͷΑ͏ʹύϑΥʔϚϯεݕূΛߦ͍ͬͯͩ͘͞ɻ ... ·ͨ2ͰͷฒྻԽରͷؔͷॻ͖ํͱͯ͠ɺ࣍ͷΑ͏ͳҧ͍ʹΑΓ݁Ռʹ͕ࠩग़Δ͔Λௐ͍ͯͩ͘͞ (ฒྻॲཧͰ࠷దԽϚΫϩ͕ޮ͔͘ΛௐΔͨΊ)ɻ ... ### 3 - brain.recommender ͷฒྻԽ 1, 2 ͷݕূ݁ՌΛͱʹ brain.recommender ͷ࣍ͷॲཧΛฒྻԽ͍ͯͩ͘͠͞ɻ prediction ͰͷϢʔβɾΞΠςϜຖͷείΞܭࢉ: ...
ۀൣғͷ੍
ۀൣғͷ੍ εΩϧ͕ݚڀدΓͰҰൠతͳ Web ։ൃʹෆ׳Εͳ͜ͱ • ෳࡶͳ Git ͷϒϥϯνӡ༻ʹ׳Ε͍ͯͳ͍ • Python,
Jupyter ݚڀͳͲͰ͏͕ Web ΞϓϦ։ൃະܦݧ ݖݶ্ϝϯλʔʹ͔͠Ͱ͖ͳ͍࡞ۀ͕Ұఆൃੜ • ຊ൪ڥͰͷಈ࡞֬ೝϦϦʔεͰ͖ͳ͍ • ։ൃऀͱӡ༻ऀ͕ҟͳΔͱൃੜ࣌ͷରԠʹखؒऔΔ → γεςϜߏɾϦϦʔεϑϩʔͷͰোนΛখ͘͢͞Δ
࠶ܝ: MLγεςϜͷߏ MLγεςϜͷߏཁૉΛׂ͠ʮίϯϙʔωϯτʯͱݺΜͰ͍Δ • ਪનΞϧΰϦζϜ, લॲཧ, ݁ՌϏϡʔϫ ͳͲ͕֤ʑ୯Ұίϯϙʔωϯτ • ̍ίϯϙʔωϯτ
= ̍ϨϙδτϦ = ̍ίϯςφΠϝʔδ ͷߏͰ౷Ұ ֤ίϯϙʔωϯτຖʹ ࣮ ʙ ςετ ʙ ϦϦʔε ͷαΠΫϧ͕݁ • ίϯϙʔωϯτຖʹαϯϓϧσʔλࣗಈςετΛඋ • ίϯϙʔωϯτͷಈ࡞ݕূʹඞཁͳͷ docker run ͚ͩ
ίϯϙʔωϯτ୯ҐͰͷվળ ̍ϓϩδΣΫτͰ̍ίϯϙʔωϯτΛվળ → ඞཁεΩϧΛݶఆ • ֤ࣗͷಘҙڵຯʹԠͯ͡ϓϩδΣΫτΛͤΔ • ະܦݧͷٕज़ͰΩϟονΞοϓίετΛͳΔ͘খ͘͞ ̍ϨϙδτϦ͋ͨΓͷ։ൃਓΛݮΒͯ͠ఔΛ୯७Խ •
Git flow ͷΑ͏ͳࡶͳϒϥϯνӡ༻ඞཁͳ͍ • ίϯϑϦΫτ͕ൃੜ͠ʹ͘͘ɺൃੜͯ͠ղܾ͕༰қʹ
֤ϨϙδτϦͷϓϧϦΫ • Ξγελϯτ / ओͳίϯϙʔωϯτ ຖͷϓϧϦΫͷ • ਓʹΑͬͯѻ͏ίϯϙʔωϯτ͕ࣗવʹ͔Ε͍ͯΔ
ϦϦʔεͷলྗԽɾ҆શԽ ϦϦʔεϑϩʔΛ̎ஈ֊ʹ͚ɺϝϯλʔίϯϙʔωϯτར༻ͷஅͷΈ 1. Ξγελϯτ͕ίϯϙʔωϯτʹػೳՃ 2. ϝϯλʔ͕γεςϜͰར༻͢ΔίϯϙʔωϯτόʔδϣϯΛΓସ͑ ϦϦʔεલޙͰ༷ʑͳ҆શࡦΛߨ͍ͯ͡Δ • ։ൃڥͰΞγελϯτ͕γεςϜͷಈ࡞֬ೝ·Ͱߦ͑Δ •
ඞཁʹԠͯ͡ΧφϦΞϦϦʔεɾA/BςετͰӨڹΛہॴԽ • ສҰͷΓ͠όʔδϣϯΛ͚ͩ͢ → ରԠͷ༨༟͕ੜ·ΕΔ
ϦϦʔεϑϩʔ
·ͱΊͱFAQ
·ͱΊ • MLγεςϜͷ։ൃɾӡ༻νʔϜͰݚڀɾ։ൃΞγελϯτΛ࠾༻ • ֶੜΞϧόΠτͷۀʹ͍͔ͭ͘ͷ੍͕͋Δ • ࣌ؒͷ੍ • ۀൣғͷ੍ •
੍Λ͏·͘ѻ͏Λͯ͠νʔϜͷੜ࢈ੑΛ্ • ࣌ؒͷ੍ → ϓϩδΣΫτཧΛ • ۀൣғͷ੍ → γεςϜߏɾϦϦʔεϑϩʔΛ
FAQ • ΞγελϯτͷͨΊʹؤுͬͯΈΛ࡞ΓࠐΉʁ • ΞγελϯτʹݶΒͣ৽نࢀೖোนΛԼ͛Δ͜ͱʹҙຯ͕͋Δ • Ξγελϯτ͕͍ͳ͘ͳͬͨΒͲ͏ͳΔʁ • ৽ػೳ։ൃٕज़తνϟϨϯδʹऔΓΊΔػձ͕ݮΔ •
ϝϯλʔͱͯ͠Ұ൪େมͳ͜ͱʁ • ίϯςΩετεΠον • ϝϯλʔͷࣄͬͯͲ͏ʁ • ૉʹָ͍͠