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.4k
リブセンスでの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新卒_Webエンジニア職採用_会社説明資料
livesense
PRO
0
550
株式会社リブセンス・転職会議 採用候補者様向け資料
livesense
PRO
0
26
株式会社リブセンス 会社説明資料(報道関係者様向け)
livesense
PRO
0
1.4k
データ基盤の負債解消のためのリプレイス
livesense
PRO
0
410
26新卒_総合職採用_会社説明資料
livesense
PRO
0
9.3k
株式会社リブセンス会社紹介資料 / Invent the next common.
livesense
PRO
1
29k
26新卒_Webエンジニア職採用_会社説明資料
livesense
PRO
1
12k
中途セールス職_会社説明資料
livesense
PRO
0
250
EM候補者向け転職会議説明資料
livesense
PRO
0
120
Other Decks in Technology
See All in Technology
CDK Toolkit Libraryにおけるテストの考え方
smt7174
1
550
Figma Dev Mode MCP Serverを用いたUI開発
zoothezoo
0
230
セキュアな社内Dify運用と外部連携の両立 ~AIによるAPIリスク評価~
zozotech
PRO
0
120
ClaudeCodeにキレない技術
gtnao
1
870
伴走から自律へ: 形式知へと導くSREイネーブリングによる プロダクトチームの信頼性オーナーシップ向上 / SRE NEXT 2025
visional_engineering_and_design
3
460
QuickSight SPICE の効果的な運用戦略~S3 + Athena 構成での実践ノウハウ~/quicksight-spice-s3-athena-best-practices
emiki
0
290
Autify Company Deck
autifyhq
2
44k
AIエージェントが書くのなら直接CloudFormationを書かせればいいじゃないですか何故AWS CDKを使う必要があるのさ
watany
18
7.6k
衛星運用をソフトウェアエンジニアに依頼したときにできあがるもの
sankichi92
1
1k
研究開発部メンバーの働き⽅ / Sansan R&D Profile
sansan33
PRO
3
18k
Deep Security Conference 2025:生成AI時代のセキュリティ監視 /dsc2025-genai-secmon
mizutani
4
2.9k
対話型音声AIアプリケーションの信頼性向上の取り組み
ivry_presentationmaterials
3
1.1k
Featured
See All Featured
Bootstrapping a Software Product
garrettdimon
PRO
307
110k
Site-Speed That Sticks
csswizardry
10
700
Documentation Writing (for coders)
carmenintech
72
4.9k
Statistics for Hackers
jakevdp
799
220k
The Psychology of Web Performance [Beyond Tellerrand 2023]
tammyeverts
48
2.9k
Understanding Cognitive Biases in Performance Measurement
bluesmoon
29
1.8k
The Pragmatic Product Professional
lauravandoore
35
6.7k
Designing for humans not robots
tammielis
253
25k
Code Reviewing Like a Champion
maltzj
524
40k
[Rails World 2023 - Day 1 Closing Keynote] - The Magic of Rails
eileencodes
35
2.4k
Optimizing for Happiness
mojombo
379
70k
Fashionably flexible responsive web design (full day workshop)
malarkey
407
66k
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 • ΞγελϯτͷͨΊʹؤுͬͯΈΛ࡞ΓࠐΉʁ • ΞγελϯτʹݶΒͣ৽نࢀೖোนΛԼ͛Δ͜ͱʹҙຯ͕͋Δ • Ξγελϯτ͕͍ͳ͘ͳͬͨΒͲ͏ͳΔʁ • ৽ػೳ։ൃٕज़తνϟϨϯδʹऔΓΊΔػձ͕ݮΔ •
ϝϯλʔͱͯ͠Ұ൪େมͳ͜ͱʁ • ίϯςΩετεΠον • ϝϯλʔͷࣄͬͯͲ͏ʁ • ૉʹָ͍͠