Sanny: 大規模ECサイトのための精度と速度を両立した分散可能な近似近傍探索エンジン/wsa_2_sanny

Sanny: 大規模ECサイトのための精度と速度を両立した分散可能な近似近傍探索エンジン/wsa_2_sanny

Web System Architecture 研究会 (WSA研) #2
https://websystemarchitecture.hatenablog.jp/entry/2018/03/22/104006

Cd3d2cb2dadf5488935fe0ddaea7938a?s=128

monochromegane

May 16, 2018
Tweet

Transcript

  1. ࡾ୐ ༔հ / Pepabo R&D Institute, GMO Pepabo, Inc. 2018.05.12

    Web System Architecture ݚڀձ (WSAݚ) #2 Sanny: େن໛ECαΠτͷͨΊͷ ਫ਼౓ͱ଎౓Λཱ྆ͨ͠෼ࢄՄೳͳ ۙࣅۙ๣୳ࡧΤϯδϯ
  2. ϓϦϯγύϧΤϯδχΞ ࡾ୐༔հ!NPOPDISPNFHBOF (.0ϖύϘגࣜձࣾϖύϘݚڀॴ IUUQCMPHNPOPDISPNFHBOFDPN

  3. 1. ਪનػೳͱۙࣅۙ๣୳ࡧ 2. ۙࣅۙ๣୳ࡧͷվળͱ՝୊ 3. ఏҊख๏ 4. ධՁ 5. ·ͱΊ

    3 ໨࣍
  4. 1. ਪનػೳͱۙࣅۙ๣୳ࡧ

  5. • େن໛ͳECαΠτͷ৘ใաଟ໰୊ͷղܾͷͨΊɼ঎඼ͷࣗಈਪન͸ඞਢػೳ • ঎඼ಉ࢜ͷྨࣅੑΛݩʹਪન͕ߦΘΕΔͨΊɼػցతʹൺֱՄೳͳई౓ͱͯ͠ ଟ࣍ݩͷ࣮਺ϕΫτϧར༻͢Δɽಛ௃ྔɽ • ਂ૚ֶशͷൃలʹΑΓɼ͜Ε·Ͱద੾ͳಛ௃ྔΛಋ͘͜ͱ͕೉͔ͬͨ͠ը૾΍ ςΩετΛߴਫ਼౓ͳಛ௃ྔ΁ม׵͢Δ͜ͱ͕Ͱ͖ΔΑ͏ʹͳ͍ͬͯΔɽ 5 ਪનػೳͱಛ௃ྔ

  6. • m࣍ݩͷϕΫτϧxΛn࣍ݩͷϕΫτϧy΁ࣸ૾͢Δؔ਺fΛਪఆ͢Δֶशख๏ 6 χϡʔϥϧωοτϫʔΫ: Ϟσϧ x1 x2 xm b W

    y1 y2 yn 1 2 o1 = σ( m ∑ i=0 w1i xi + b1 ) h 3 o = σ (Wx + b) w11 w12 . . w1m w21 w22 . . w2m . . wh1 wh2 . . whm x1 x2 . . xm + b1 b2 . . bh x f y h wh1 wh2 x1 x2 ೖྗ͝ͱʹॏΈXΛ৐ࢉ όΠΞε ͨ͠΋ͷΛ׆ੑԽؔ਺ʹ௨͢ શϊʔυʹର͢Δॲཧ͸ߦྻͱͯ͠ૢ࡞Ͱ͖Δ
  7. • େن໛ͳECαΠτͰѻ͏ಛ௃ྔ͸ɼେن໛͔ͭߴ࣍ݩϕΫτϧͷू߹ͱͳΔ • ਪનػೳͰ͸ɼ͜ͷू߹͔Βݕࡧ࣭໰σʔλʹྨࣅ͢Δ͍͔ͭ͘ͷϕΫτϧΛ ೚ҙͷڑ཭ؔ਺Λ࢖ͬͯ୳ࡧ͢Δɽۙ๣୳ࡧɽ • ۙ๣୳ࡧʹ͓͍ͯɼਖ਼֬Ͱ͸͋Δ͕ɼσʔλ਺ͱ࣍ݩ਺ʹൺྫͯ͠ܭࢉྔ͕૿ Ճ͢Δઢܗ୳ࡧ͸ݱ࣮తͰ͸ͳ͍ • ۭؒ෼ׂ΍ہॴੑӶහܕϋογϡͳͲͷํࣜʹΑͬͯܭࢉྔΛ࡟ݮ

    • ಛʹେن໛͔ͭߴ࣍ݩϕΫτϧू߹ʹରͯ͠͸ɼਫ਼౓Λ٘ਜ਼ʹͯ͠ܭࢉྔΛ཈ ͑Δۙࣅղ͕༻͍ΒΕΔɽۙࣅۙ๣୳ࡧɽ 7 ਪનػೳͱۙࣅۙ๣୳ࡧ
  8. 2. ۙࣅۙ๣୳ࡧͷվળͱ՝୊

  9. • ਪનػೳʹ͸ɼఏҊ಺༰ͷత֬͞ͱॆ෼ͳԠ౴଎౓͕ٻΊΒΕΔɽ • ਫ਼౓ͱ଎౓Λཱ྆͢Δۙࣅۙ๣୳ࡧͷ࢓૊Έ͕ඞཁɽ • ଟछଟ༷ͳۙࣅۙ๣୳ࡧͷΞϧΰϦζϜ΍ͦΕΒΛ࣮૷ͨ͠ϥΠϒϥϦ͕ެ։ɼ ར༻͞Ε͍ͯΔɽ • ΞϧΰϦζϜ͝ͱʹ௕ॴ୹ॴ͕͋ΓɼݸʑͷΞϧΰϦζϜվળ͸ޮՌ͕ݶఆత 9

    ۙࣅۙ๣୳ࡧͷվળͱ՝୊ • ҰํͰɼଟ͘ͷΞϧΰϦζϜ͸ɼॲཧର৅σʔλ਺ͱ࣍ݩ਺ʹੑೳ͕ґଘ͢Δ • ୳ࡧ͋ͨΓͷॲཧର৅ͷॖখ͕ɼશͯͷΞϧΰϦζϜʹޮՌత
  10. 10 େن໛͔ͭߴ࣍ݩϕΫτϧू߹ͷ෼ղ΋͘͠͸࡟ݮ ߦํ޲ͷ෼ղ ྻํ޲ͷ෼ղ ྻํ޲ͷ࡟ݮ ۙ๣ ۙ๣ ۙ๣ީิ ΫΤϦR ۙ๣

    BSHNJOE R Y Y㱨ۙ๣ީิ ΫΤϦR R@ R@ R@ E R@ Y Y㱨9@ X_1 X_2 X_3 E R@ Y Y㱨9@ E R@ Y Y㱨9@ BSHNJO\E R@ Y  E R@ Y  E R@ Y ^ Y㱨9 ྻ͝ͱͷڑ཭ܭࢉ݁Ռ ڑ཭ܭࢉ݁ՌΛू໿ͯۙ͠๣୳ࡧ ࣍ݩ࡟ݮ
  11. 11 େن໛͔ͭߴ࣍ݩϕΫτϧू߹ͷ෼ղ΋͘͠͸࡟ݮ ߦํ޲ͷ෼ղ ྻํ޲ͷ෼ղ ྻํ޲ͷ࡟ݮ .VKB .BSJVT BOE%BWJE(-PXF4DBMBCMFOFBSFTUOFJHICPSBMHPSJUINTGPSIJHIEJNFOTJPOBM EBUB*&&&USBOTBDUJPOTPOQBUUFSOBOBMZTJTBOENBDIJOFJOUFMMJHFODF 

     Ұఆͷσʔλ਺͝ͱʹ෼ղɽ֤ू߹ʹ͓͚Δۙ๣ީิͱڑ཭Λ ू໿ۙ͠๣୳ࡧ͢Δɽ࣍ݩ਺΁ͷґଘ͕࢒Δɽ +FHPV )FSWF .BUUIJKT%PV[F BOE$PSEFMJB4DINJE1SPEVDURVBOUJ[BUJPOGPSOFBSFTU OFJHICPSTFBSDI*&&&USBOTBDUJPOTPOQBUUFSOBOBMZTJTBOENBDIJOFJOUFMMJHFODF    Ұఆͷ࣍ݩ਺͝ͱʹ෼ղɽ֤ू߹ʹ͓͚Δશσʔλͷڑ཭Λू ໿ͯۙ͠๣୳ࡧɽσʔλ਺΁ͷґଘ͕࢒Δɽ ओ੒෼෼ੳ 1$" ͳͲʹΑͬͯ࣍ݩ࡟ݮΛߦ͏ɽਫ਼౓Λ֬อ͠ ͨ࡟ݮ͸ݶք͕͋Δɽ #BCFOLP "SUFN FUBMz/FVSBMDPEFTGPSJNBHFSFUSJFWBMz&VSPQFBODPOGFSFODFPODPNQVUFS WJTJPO4QSJOHFS $IBN 
  12. • ਫ਼౓ͱ଎౓Λอͪͳ͕ΒɼߦɾྻΛ෼ղͰ͖Δํ͕ࣜٻΊΒΕΔɽ • ͦͷͨΊʹ͸ྻํ޲෼ղޙͷ݁Ռू໿Λղܾ͢Δඞཁ͕͋Δɽ 12 େن໛͔ͭߴ࣍ݩϕΫτϧू߹ͷ෼ղ΋͘͠͸࡟ݮ ྻํ޲ͷ෼ղ ΫΤϦR R@ R@

    R@ E R@ Y Y㱨9@ X_1 X_2 X_3 E R@ Y Y㱨9@ E R@ Y Y㱨9@ BSHNJO\E R@ Y  E R@ Y  E R@ Y ^ Y㱨9 ྻ͝ͱͷڑ཭ܭࢉ݁Ռ ڑ཭ܭࢉ݁ՌΛू໿ͯۙ͠๣୳ࡧ ͦ΋ͦ΋ɼͳͥ࠶౓શߦͷڑ཭ΛٻΊ௚͞ͳ͚Ε͹ͳΒͳ͍ͷ͔ɽ
  13. 3. ఏҊख๏

  14. • ঎඼ಛੑΛΑ͘දݱ͓ͯ͠Γߴਫ਼౓ʹྨࣅ౓͕ൺֱՄೳͳߴ࣍ݩ͔ͭີͳϕΫ τϧͷू߹Λର৅ͱͨۙ͠ࣅۙ๣୳ࡧ • ֶशࡁΈCNNΛಛ௃நग़ثͱͯ͠ར༻ͯ͠ը૾͔ΒಘΒΕΔಛ௃ྔू߹ • ςΩετΛ෼ࢄදݱ΁ม׵͢ΔWord2vec͔ΒಘΒΕΔಛ௃ྔू߹ • ͜ΕΒ͕ɼݕࡧ࣭໰σʔλ(ΫΤϦ)ʹର͢Δߴ࣍ݩϕΫτϧू߹ͷۙ๣୳ࡧ݁ Ռͷ্Ґू߹͕ɼΫΤϦͱߴ࣍ݩϕΫτϧू߹Λ೚ҙͷ࣍ݩ਺Ͱ౳෼ͨ͠෦෼

    ϕΫτϧ୯ҐͰۙ๣୳ࡧͨ݁͠Ռͷ্Ґू߹ͱྨࣅ͠΍͍͢͜ͱʹண໨ 14 ఏҊख๏ ෦෼͕ྨࣅ͢Ε͹શମ͕ྨࣅ͢ΔՄೳੑ͕ߴ͍σʔλಛੑ
  15. • ΫΤϦͱߴ࣍ݩϕΫτϧू߹Λ೚ҙͷ࣍ݩ਺Ͱ౳෼ͨ͠෦෼ϕΫτϧ୯ҐͰฒ ߦʹۙ๣୳ࡧͨ݁͠Ռͷ࿨ू߹Ͱ͋Δۙ๣ީิ͔Βɼ࠶౓ۙ๣୳ࡧΛߦ͏ɽ 15 ఏҊख๏ R@ R@ R@ 9@ 9@

    9@ /SFDPSET // R@ Y@O Y㱨9@ // R@ Y@O Y㱨9@ // R@ Y@O Y㱨9@ \   ^ \   ^ \   ^ BSHNJOE R Y Y㱨\    ^ 㱮 㱮 ෼ղલ ෼ղޙ ᶃ௿࣍ݩۭؒͷฒߦͨۙ͠๣୳ࡧ ᶄݻఆ਺ͷۙ๣ީิͷू໿ ᶅۙ๣ީิͷઢܗ୳ࡧ ᶃ ᶄ ᶅ ଎౓վળ ᶃ ᶄ ᶅ 2VFSZ
  16. 16 Sanny: ఏҊख๏ͷ࣮૷ 4BOOZ 4BOOZ 4BOOZ // // 㱮 //

    // ᶃ ᶄ ᶅ 2VFSZ "MHPSJTN "MHPSJTN "MHPSJTN • ΫΤϦฒͼʹ୳ࡧର৅σʔλͷ೚ҙ࣍ݩ΁ͷ౳෼ͱ݁Ռͷू໿Λ୲౰͢Δ • ෦෼ϕΫτϧͷۙ๣୳ࡧΞϧΰϦζϜ͸໰Θͳ͍ • ෦෼ϕΫτϧ͝ͱͷ୳ࡧॲཧ͸ಠཱͷͨΊ෼ࢄߏ੒͕Մೳ
  17. 4. ධՁ

  18. • ఏҊख๏ʹΑͬͯਫ਼౓ͱ଎౓͕Ͳͷఔ౓վળ͢Δ͔ΛධՁ͢Δ • ୳ࡧର৅͸ɼ2048࣍ݩϕΫτϧɼ27.2ສ݅ • ϕΫτϧ͸ECαΠτͰ঎඼ը૾ΛCNNҰछͰ͋Δinception-v3ΛImageNetը ૾Ͱ܇࿅ͨ͠Ϟσϧ͔ΒಘΒΕΔಛ௃ྔ • ۙ๣୳ࡧΞϧΰϦζϜͱͯ͠ɼۭؒ෼ׂํࣜΛ࠾༻ͨ͠AnnoyϥΠϒϥϦΛର ৅ͱͨ͠

    • ۙ๣୳ࡧͷύϥϝλΛมߋ͠ͳ͕ΒɼTop10ۙ๣୳ࡧʹ͓͚Δਫ਼౓ͱ଎౓ͷτ ϨʔυΦϑΛൺֱ͢Δ 18 ධՁ: ਫ਼౓ͱ଎౓ͷվળ
  19. ධՁ: ਫ਼౓ͱ଎౓ͷվળ 19 • ॎ࣠͸୳ࡧඵ਺ͷٯ਺දࣔɼ্ʹ ߦ͘΄Ͳߴ଎ɽԣ࣠͸ద߹཰ɽ • ݩͷΞϧΰϦζϜʹରͯ͠ఏҊख๏ Λద༻ͨ͜͠ͱͰਫ਼౓ɼ଎౓ͷվ ળ͕ݟΒΕͨ

    (40ms->10ms) • Sanny-4, Sanny-8͸ͦΕͧΕྻͷ෼ ׂ਺ɽ෼ׂ਺Λ૿΍ͯ͠΋ਫ਼౓͸Լ ͕Βͣɼ଎౓໘Ͱ΋վળ͕ݟΒΕͨ
  20. 20 ධՁ: σʔλಛੑʹΑΔ༗ޮੑ ɹద߹཰ ෦෼ ෦෼ ෦෼ ෦෼ 4BOOZ 8PSEWFD

         ࣍ݩͷີϕΫτϧ 'BTIJPO./*45      ࣍ݩͷૄϕΫτϧ Ұ༷ཚ਺      ࣍ݩͷີϕΫτϧ ਖ਼ن෼෍      ࣍ݩͷີϕΫτϧ • σʔλʹΑΔఏҊख๏ͷޮՌͷࠩΛൺֱ • Word2vecͷΑ͏ͳѹॖ͞Εͨ৘ใʹରͯ͠͸ɼख๏ͷޮՌ͕ߴ͍ • ૄϕΫτϧͰ͸ɼख๏ͷޮՌ͸௿͍ • ີϕΫτϧͰ΋ϥϯμϜͳ஋Λ༻͍Δ৔߹͸ɼख๏ͷޮՌ͸௿͍ɽ
  21. 5. ·ͱΊ

  22. • ECαΠτͷਪનػೳʹඞཁͳਫ਼౓ͱ଎౓Λཱ྆͢Δۙࣅۙ๣୳ࡧΤϯδϯΛ ఏҊͨ͠ • ෦෼ͷྨࣅ͕શମͷྨࣅͱؔ܎͢ΔσʔλΛର৅ͱ͢Δ͜ͱʹΑͬͯɼର৅ͷ ྻํ޲෼ղʹΑΔΞϧΰϦζϜඇґଘͷվળ͕ߦ͑Δ͜ͱΛ֬ೝͨ͠ • ෼ࢄՄೳͳํࣜʹΑͬͯɼՄ༻ੑɼ֦ுੑͷ͋Δߏ੒͕ՄೳͱͳΔ • ࠓޙ͸ɼద༻ΞϧΰϦζϜͷ෯޿͍ݕূͱɼద༻Մೳͳσʔλ൑ผํ๏ɼฒͼ

    ʹ෼ࢄߏ੒ʹ͓͚ΔωοτϫʔΫͷϘτϧωοΫΛճආ͢ΔͨΊͷܧଓͨ͠ݚ ڀ͕ඞཁɽ 22 ·ͱΊ
  23. None