リブセンスでのMLシステム開発・運用と 研究・開発アシスタントの取り組み

リブセンスでのMLシステム開発・運用と 研究・開発アシスタントの取り組み

2019/08/02
これからの開発チームのあり方を考える @ Sansan Innovation Lab

E60aa4f80303f3f386898546ddb3686a?s=128

Livesense Inc.

August 02, 2019
Tweet

Transcript

  1. 2.

    ࣗݾ঺հ ాத ঵ଠ࿠ / @yubessy • גࣜձࣾϦϒηϯε • ςΫϊϩδΧϧϚʔέςΟϯά෦ σʔλϓϥοτϑΥʔϜάϧʔϓ

    • ࢓ࣄ • Ҏલ: σʔλ෼ੳج൫ (Livesense Analytics) ͷ։ൃɾӡ༻ • ݱࡏ: ػցֶशج൫ (Livesense Brain) ͷ։ൃɾӡ༻ • ژ౎ΦϑΟεۈ຿ • ݚڀɾ։ൃΞγελϯτͷϝϯλʔ
  2. 6.

    ૊৫ߏ੒ • ࣄۀ෦ • ΞϧόΠτࣄۀ෦ (ϚοϋόΠτ) • స৬ձٞࣄۀ෦ (స৬ձٞ) •

    ෆಈ࢈Ϣχοτ (Door ௞ି, IESHIL) • ... • ԣஅ૊৫ • ςΫϊϩδΧϧϚʔέςΟϯά෦ • σʔλϓϥοτϑΥʔϜάϧʔϓ ← MLؔ࿈ͷνʔϜ͸͜͜ʹॴଐ • σʔλϚʔέςΟϯάάϧʔϓ • ΠϯϑϥετϥΫνϟάϧʔϓ • ωΠςΟϒΞϓϦάϧʔϓ
  3. 8.

    αʔϏεͱMLγεςϜ MLɾMLج൫νʔϜ͕֤αʔϏεʹ༷ʑͳMLγεςϜΛఏڙ • ϨίϝϯυΤϯδϯ → αΠτɾΞϓϦͳͲͰͷٻਓਪનʹར༻ • Ԡื཰ɾ࠾༻཰ͳͲͷਪఆɾ༧ଌϞσϧ → ޿ࠂग़ߘͳͲʹར༻

    • όϯσΟοτπʔϧ → A/Bςετͷޮ཰Խʹར༻ ෳ਺ͷMLγεςϜΛগਓ਺ͷνʔϜͰ։ൃɾӡ༻Ͱ͖ΔΑ͏޻෉ • MLγεςϜΛߏ੒ཁૉ͝ͱʹ෼ղ͠ૄ݁߹Խ • ڞ௨ͷΠϯϑϥͰෳ਺γεςϜΛӡ༻ ৄࡉ͸ ࣄۀԣஅ૊৫ͰͷMLγεςϜ։ൃɾӡ༻ͱج൫ઃܭ Ͱ
  4. 9.

    MLγεςϜͷߏ੒ MLγεςϜͷߏ੒ཁૉΛ෼ׂ͠ʮίϯϙʔωϯτʯͱݺΜͰ͍Δ • ਪનΞϧΰϦζϜ, લॲཧ, ݁ՌϏϡʔϫ ͳͲ͕֤ʑ୯Ұίϯϙʔωϯτ • ̍ίϯϙʔωϯτ =

    ̍ϨϙδτϦ = ̍ίϯςφΠϝʔδ ͷߏ੒Ͱ౷Ұ ֤ίϯϙʔωϯτຖʹ ࣮૷ ʙ ςετ ʙ ϦϦʔε ͷαΠΫϧ͕׬݁ • ίϯϙʔωϯτຖʹαϯϓϧσʔλ΍ࣗಈςετΛ੔උ • ίϯϙʔωϯτͷಈ࡞ݕূʹඞཁͳͷ͸ docker run ͚ͩ ٕज़໘͸ Argo Workflow ʹΑΔػցֶशϫʔΫϑϩʔ؅ཧ ΋ࢀর
  5. 11.

    ֓ཁ ݚڀɾ։ൃΞγελϯτʢژ౎ΦϑΟεʣืूཁ߲ • ػցֶशɾσʔλΤϯδχΞϦϯά͓ΑͼͦΕʹ෇ਵ͢Δݚڀɾ։ൃ • ਺िؒʙ਺ϲ݄୯ҐͷϛχϓϩδΣΫτܗࣜ • جૅతͳΤϯδχΞϦϯάεΩϧ +α Ͱ׆͔ͤΔٕज़͕͋Δ͜ͱ

    • ʢ౰વͳ͕Βʣֶۀ༏ઌ ≠ ৽ଔ࠾༻ • ͋͘·Ͱۀ຿Λ௨ͯ͡νʔϜɾαʔϏεʹߩݙ͢Δͷ͕໨త • ࠾༻໨తͰͷֶੜͷғ͍ࠐΈ͸͠ͳ͍ʢ΋ͪΖΜೖࣾͯ͘͠ΕͨΒخ͍͠ʣ
  6. 16.

    Ξγελϯτۀ຿ʹ͓͚Δ੍໿ ࣌ؒ ͷ੍໿ • ීஈ͔Βतۀɾݚڀ౎߹ͷग़ୀࣾ࣌ࠁมߋ΍தൈ͚͕ൃੜ • ࣌ظʹΑͬͯࢼݧ΍࿦จࣥචʹΑΔ௕ظෆࡏ͕ൃੜ ۀ຿ൣғ ͷ੍໿ •

    εΩϧ͕ݚڀدΓͰҰൠతͳ Web ։ൃʹෆ׳Εͳ͜ͱ΋ • ݖݶ্ϝϯλʔʹ͔͠Ͱ͖ͳ͍࡞ۀ͕Ұఆൃੜ → ͦΕͧΕͷ੍໿ʹͲ͏ରԠ͍ͯ͠Δ͔Λ঺հ
  7. 20.

    # ϓϩδΣΫτ: 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/) ...
  8. 22.

    ## εςοϓ ### 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 ͰͷϢʔβɾΞΠςϜຖͷείΞܭࢉ: ...
  9. 24.

    ۀ຿ൣғͷ੍໿ εΩϧ͕ݚڀدΓͰҰൠతͳ Web ։ൃʹෆ׳Εͳ͜ͱ΋ • ෳࡶͳ Git ͷϒϥϯνӡ༻ʹ׳Ε͍ͯͳ͍ • Python,

    Jupyter ͸ݚڀͳͲͰ࢖͏͕ Web ΞϓϦ։ൃ͸ະܦݧ ݖݶ্ϝϯλʔʹ͔͠Ͱ͖ͳ͍࡞ۀ͕Ұఆൃੜ • ຊ൪؀ڥͰͷಈ࡞֬ೝ΍ϦϦʔε͸Ͱ͖ͳ͍ • ։ൃऀͱӡ༻ऀ͕ҟͳΔͱ໰୊ൃੜ࣌ͷରԠʹखؒऔΔ → γεςϜߏ੒ɾϦϦʔεϑϩʔͷ޻෉ͰোนΛখ͘͢͞Δ
  10. 25.

    ࠶ܝ: MLγεςϜͷߏ੒ MLγεςϜͷߏ੒ཁૉΛ෼ׂ͠ʮίϯϙʔωϯτʯͱݺΜͰ͍Δ • ਪનΞϧΰϦζϜ, લॲཧ, ݁ՌϏϡʔϫ ͳͲ͕֤ʑ୯Ұίϯϙʔωϯτ • ̍ίϯϙʔωϯτ

    = ̍ϨϙδτϦ = ̍ίϯςφΠϝʔδ ͷߏ੒Ͱ౷Ұ ֤ίϯϙʔωϯτຖʹ ࣮૷ ʙ ςετ ʙ ϦϦʔε ͷαΠΫϧ͕׬݁ • ίϯϙʔωϯτຖʹαϯϓϧσʔλ΍ࣗಈςετΛ੔උ • ίϯϙʔωϯτͷಈ࡞ݕূʹඞཁͳͷ͸ docker run ͚ͩ
  11. 31.

    ·ͱΊ • MLγεςϜͷ։ൃɾӡ༻νʔϜͰݚڀɾ։ൃΞγελϯτΛ࠾༻ • ֶੜΞϧόΠτͷۀ຿ʹ͸͍͔ͭ͘ͷ੍໿͕͋Δ • ࣌ؒͷ੍໿ • ۀ຿ൣғͷ੍໿ •

    ੍໿Λ͏·͘ѻ͏޻෉Λͯ͠νʔϜͷੜ࢈ੑΛ޲্ • ࣌ؒͷ੍໿ → ϓϩδΣΫτ؅ཧΛ޻෉ • ۀ຿ൣғͷ੍໿ → γεςϜߏ੒ɾϦϦʔεϑϩʔΛ޻෉