Upgrade to Pro — share decks privately, control downloads, hide ads and more …

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

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

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

monochromegane

May 16, 2018
Tweet

More Decks by monochromegane

Other Decks in Programming

Transcript

  1. ࡾ୐ ༔հ / Pepabo R&D Institute, GMO Pepabo, Inc.
    2018.05.12 Web System Architecture ݚڀձ (WSAݚ) #2
    Sanny: େن໛ECαΠτͷͨΊͷ
    ਫ਼౓ͱ଎౓Λཱ྆ͨ͠෼ࢄՄೳͳ
    ۙࣅۙ๣୳ࡧΤϯδϯ

    View Slide

  2. ϓϦϯγύϧΤϯδχΞ
    ࡾ୐༔հ!NPOPDISPNFHBOF
    (.0ϖύϘגࣜձࣾϖύϘݚڀॴ
    IUUQCMPHNPOPDISPNFHBOFDPN

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

  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Λ৐ࢉόΠΞε
    ͨ͠΋ͷΛ׆ੑԽؔ਺ʹ௨͢
    શϊʔυʹର͢Δॲཧ͸ߦྻͱͯ͠ૢ࡞Ͱ͖Δ

    View Slide

  7. • େن໛ͳECαΠτͰѻ͏ಛ௃ྔ͸ɼେن໛͔ͭߴ࣍ݩϕΫτϧͷू߹ͱͳΔ
    • ਪનػೳͰ͸ɼ͜ͷू߹͔Βݕࡧ࣭໰σʔλʹྨࣅ͢Δ͍͔ͭ͘ͷϕΫτϧΛ
    ೚ҙͷڑ཭ؔ਺Λ࢖ͬͯ୳ࡧ͢Δɽۙ๣୳ࡧɽ
    • ۙ๣୳ࡧʹ͓͍ͯɼਖ਼֬Ͱ͸͋Δ͕ɼσʔλ਺ͱ࣍ݩ਺ʹൺྫͯ͠ܭࢉྔ͕૿
    Ճ͢Δઢܗ୳ࡧ͸ݱ࣮తͰ͸ͳ͍
    • ۭؒ෼ׂ΍ہॴੑӶහܕϋογϡͳͲͷํࣜʹΑͬͯܭࢉྔΛ࡟ݮ
    • ಛʹେن໛͔ͭߴ࣍ݩϕΫτϧू߹ʹରͯ͠͸ɼਫ਼౓Λ٘ਜ਼ʹͯ͠ܭࢉྔΛ཈
    ͑Δۙࣅղ͕༻͍ΒΕΔɽۙࣅۙ๣୳ࡧɽ
    7
    ਪનػೳͱۙࣅۙ๣୳ࡧ

    View Slide

  8. 2.
    ۙࣅۙ๣୳ࡧͷվળͱ՝୊

    View Slide

  9. • ਪનػೳʹ͸ɼఏҊ಺༰ͷత֬͞ͱॆ෼ͳԠ౴଎౓͕ٻΊΒΕΔɽ
    • ਫ਼౓ͱ଎౓Λཱ྆͢Δۙࣅۙ๣୳ࡧͷ࢓૊Έ͕ඞཁɽ
    • ଟछଟ༷ͳۙࣅۙ๣୳ࡧͷΞϧΰϦζϜ΍ͦΕΒΛ࣮૷ͨ͠ϥΠϒϥϦ͕ެ։ɼ
    ར༻͞Ε͍ͯΔɽ
    • ΞϧΰϦζϜ͝ͱʹ௕ॴ୹ॴ͕͋ΓɼݸʑͷΞϧΰϦζϜվળ͸ޮՌ͕ݶఆత
    9
    ۙࣅۙ๣୳ࡧͷվળͱ՝୊
    • ҰํͰɼଟ͘ͷΞϧΰϦζϜ͸ɼॲཧର৅σʔλ਺ͱ࣍ݩ਺ʹੑೳ͕ґଘ͢Δ
    • ୳ࡧ͋ͨΓͷॲཧର৅ͷॖখ͕ɼશͯͷΞϧΰϦζϜʹޮՌత

    View Slide

  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
    ྻ͝ͱͷڑ཭ܭࢉ݁Ռ
    ڑ཭ܭࢉ݁ՌΛू໿ͯۙ͠๣୳ࡧ
    ࣍ݩ࡟ݮ

    View Slide

  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

    View Slide

  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
    ྻ͝ͱͷڑ཭ܭࢉ݁Ռ
    ڑ཭ܭࢉ݁ՌΛू໿ͯۙ͠๣୳ࡧ
    ͦ΋ͦ΋ɼͳͥ࠶౓શߦͷڑ཭ΛٻΊ௚͞ͳ͚Ε͹ͳΒͳ͍ͷ͔ɽ

    View Slide

  13. 3.
    ఏҊख๏

    View Slide

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

    View Slide

  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

    View Slide

  16. 16
    Sanny: ఏҊख๏ͷ࣮૷
    4BOOZ 4BOOZ
    4BOOZ
    // //

    //
    //



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

    View Slide

  17. 4.
    ධՁ

    View Slide

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

    View Slide

  19. ධՁ: ਫ਼౓ͱ଎౓ͷվળ
    19
    • ॎ࣠͸୳ࡧඵ਺ͷٯ਺දࣔɼ্ʹ
    ߦ͘΄Ͳߴ଎ɽԣ࣠͸ద߹཰ɽ
    • ݩͷΞϧΰϦζϜʹରͯ͠ఏҊख๏
    Λద༻ͨ͜͠ͱͰਫ਼౓ɼ଎౓ͷվ
    ળ͕ݟΒΕͨ (40ms->10ms)
    • Sanny-4, Sanny-8͸ͦΕͧΕྻͷ෼
    ׂ਺ɽ෼ׂ਺Λ૿΍ͯ͠΋ਫ਼౓͸Լ
    ͕Βͣɼ଎౓໘Ͱ΋վળ͕ݟΒΕͨ

    View Slide

  20. 20
    ධՁ: σʔλಛੑʹΑΔ༗ޮੑ
    ɹద߹཰
    ෦෼ ෦෼ ෦෼ ෦෼ 4BOOZ
    8PSEWFD ࣍ݩͷີϕΫτϧ
    'BTIJPO./*45 ࣍ݩͷૄϕΫτϧ
    Ұ༷ཚ਺ ࣍ݩͷີϕΫτϧ
    ਖ਼ن෼෍ ࣍ݩͷີϕΫτϧ
    • σʔλʹΑΔఏҊख๏ͷޮՌͷࠩΛൺֱ
    • Word2vecͷΑ͏ͳѹॖ͞Εͨ৘ใʹରͯ͠͸ɼख๏ͷޮՌ͕ߴ͍
    • ૄϕΫτϧͰ͸ɼख๏ͷޮՌ͸௿͍
    • ີϕΫτϧͰ΋ϥϯμϜͳ஋Λ༻͍Δ৔߹͸ɼख๏ͷޮՌ͸௿͍ɽ

    View Slide

  21. 5.
    ·ͱΊ

    View Slide

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

    View Slide

  23. View Slide