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.3k
リブセンスでの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.
データ基盤の負債解消のためのリプレイス
livesense
PRO
0
220
株式会社リブセンス 会社説明資料(報道関係者様向け)
livesense
PRO
0
910
26新卒_総合職採用_会社説明資料
livesense
PRO
0
3.3k
株式会社リブセンス会社紹介資料 / Invent the next common.
livesense
PRO
1
12k
26新卒_Webエンジニア職採用_会社説明資料
livesense
PRO
1
6.9k
中途セールス職_会社説明資料
livesense
PRO
0
170
EM候補者向け転職会議説明資料
livesense
PRO
0
77
コロナで失われたノベルティ作成ノウハウを復活させた話
livesense
PRO
0
200
転職会議でGPT-3を活用した企業口コミ要約機能をリリースした話
livesense
PRO
0
1.3k
Other Decks in Technology
See All in Technology
今年一年で頑張ること / What I will do my best this year
pauli
1
230
完全自律型AIエージェントとAgentic Workflow〜ワークフロー構築という現実解
pharma_x_tech
0
360
Unsafe.BitCast のすゝめ。
nenonaninu
0
200
20250116_自部署内でAmazon Nova体験会をやってみた話
riz3f7
1
100
Kotlin Multiplatformのポテンシャル
recruitengineers
PRO
2
150
メールヘッダーを見てみよう
hinono
0
120
あなたの人生も変わるかも?AWS認定2つで始まったウソみたいな話
iwamot
3
870
VPC Block Public AccessとCloudFrontVPCオリジンによって何が変わるのか?
hatahata021
2
100
AWS re:Invent 2024 recap in 20min / JAWSUG 千葉 2025.1.14
shimy
1
100
AWS Community Builderのススメ - みんなもCommunity Builderに応募しよう! -
smt7174
0
190
駆け出しリーダーとしての第一歩〜開発チームとの新しい関わり方〜 / Beginning Journey as Team Leader
kaonavi
0
130
Azureの開発で辛いところ
re3turn
0
240
Featured
See All Featured
No one is an island. Learnings from fostering a developers community.
thoeni
19
3.1k
Documentation Writing (for coders)
carmenintech
67
4.5k
Dealing with People You Can't Stand - Big Design 2015
cassininazir
365
25k
Git: the NoSQL Database
bkeepers
PRO
427
64k
[RailsConf 2023 Opening Keynote] The Magic of Rails
eileencodes
28
9.2k
Fontdeck: Realign not Redesign
paulrobertlloyd
82
5.3k
The Cult of Friendly URLs
andyhume
78
6.1k
A Tale of Four Properties
chriscoyier
157
23k
[Rails World 2023 - Day 1 Closing Keynote] - The Magic of Rails
eileencodes
33
2k
Facilitating Awesome Meetings
lara
51
6.2k
Fashionably flexible responsive web design (full day workshop)
malarkey
406
66k
Six Lessons from altMBA
skipperchong
27
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 • ΞγελϯτͷͨΊʹؤுͬͯΈΛ࡞ΓࠐΉʁ • ΞγελϯτʹݶΒͣ৽نࢀೖোนΛԼ͛Δ͜ͱʹҙຯ͕͋Δ • Ξγελϯτ͕͍ͳ͘ͳͬͨΒͲ͏ͳΔʁ • ৽ػೳ։ൃٕज़తνϟϨϯδʹऔΓΊΔػձ͕ݮΔ •
ϝϯλʔͱͯ͠Ұ൪େมͳ͜ͱʁ • ίϯςΩετεΠον • ϝϯλʔͷࣄͬͯͲ͏ʁ • ૉʹָ͍͠