$30 off During Our Annual Pro Sale. View Details »

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

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

第42回 情報処理学会 インターネットと運用技術研究会
https://www.iot.ipsj.or.jp/meeting/42-program/

monochromegane

June 28, 2018
Tweet

More Decks by monochromegane

Other Decks in Technology

Transcript

  1. ࡾ୐༔հ / Pepabo R&D Institute, GMO Pepabo, Inc.
    2018.06.28 ୈ42ճ ৘ใॲཧֶձ Πϯλʔωοτͱӡ༻ٕज़ݚڀձ
    Sanny: େن໛ECαΠτͷͨΊͷ
    ਫ਼౓ͱ଎౓Λཱ྆ͨ͠
    ෼ࢄՄೳͳۙࣅۙ๣୳ࡧΤϯδϯ

    View Slide

  2. 1. ECαΠτʹ͓͚Δ঎඼ࣗಈఏҊͷഎܠͱຊݚڀͷ໨త
    2. ैདྷͷۙࣅۙ๣୳ࡧͷ՝୊
    3. େن໛ECαΠτͷͨΊͷ଎౓ͱਫ਼౓Λཱ྆ͨ͠෼ࢄՄೳ
    ͳۙࣅۙ๣୳ࡧΤϯδϯ
    4. ࣮ݧͱߟ࡯
    5. ·ͱΊ
    2
    ໨࣍

    View Slide

  3. 1.
    ECαΠτʹ͓͚Δ঎඼ࣗಈఏҊͷഎܠͱ
    ຊݚڀͷ໨త

    View Slide

  4. • ECαΠτͷ৘ใաଟ໰୊Λղܾ͢ΔͨΊɼ঎඼ͷࣗಈఏҊ͸ඞਢػೳ
    • ECαΠτͷࣗಈఏҊػೳͰ͸ɼର৅঎඼ʹର͢Δ͍͔ͭ͘ͷީิΛఏࣔ͢Δ
    • ECαΠτͷࣗಈఏҊػೳʹ͸ɼൢചػձͷଛࣦΛ๷͙ͨΊɼఏҊ಺༰ͷత֬
    ͞ͱॆ෼ͳԠ౴଎౓ͷཱ͕྆ٻΊΒΕΔ
    4
    എܠ - ECαΠτͷ঎඼ࣗಈఏҊػೳ

    View Slide

  5. • ঎඼ͷࣗಈఏҊ͸঎඼ಉ࢜ͷྨࣅੑΛݩʹߦ͏
    • ྨࣅੑͷൺֱʹ͸ɼػցతʹऔΓѻ͏͜ͱ͕Ͱ͖Δई౓ͱͯ͠ଟ࣍ݩͷ࣮਺ϕ
    ΫτϧΛ༻͍Δ (= ಛ௃ྔ)
    5
    എܠ - ECαΠτͷ঎඼ࣗಈఏҊػೳͱۙ๣୳ࡧ
    ECαΠτͷ঎඼ࣗಈఏҊػೳʹ͸ɼ঎඼ͷಛ௃ྔू߹Λର৅ͱͨۙ͠๣୳ࡧ͕
    ඞཁͱͳΔɽ͜ͷ࣌ɼର৅঎඼ͷಛ௃ྔ͕ݕࡧ࣭໰σʔλʢΫΤϦʣͱͳΔɽ

    View Slide

  6. • େن໛

    ঎඼શମ͔ΒఏҊର৅Λ୳ࡧ͢ΔͨΊɼಛ௃ྔू߹ͷ݅਺΋औΓѻ͏঎඼਺ʹ
    ൺྫͯ͠૿Ճ͢Δɽେن໛ͳECαΠτͰ͸਺ेສʙ਺ඦສ݅ͷಛ௃ྔू߹ͱ
    ͳΔɽ
    • ߴ࣍ݩ

    ঎඼ಛੑͷత֬ͳදݱͷͨΊɼߴ࣍ݩͷಛ௃ྔ͕༻͍ΒΕΔɽֶशࡁΈCNN
    Λಛ௃நग़ثͱͯ͠ར༻ͯ͠ը૾͔ΒಘΒΕΔಛ௃ྔ΍ɼςΩετΛ෼ࢄදݱ
    ΁ม׵͢ΔWord2vec͔ΒಘΒΕΔಛ௃ྔͷ࣍ݩ਺͸਺ඦʙ਺ઍ࣍ݩͱͳΔɽ
    6
    എܠ - ECαΠτͷ঎඼ͷಛ௃ྔू߹

    View Slide

  7. • ࣄલʹۙ๣ू߹ΛٻΊ͓ͯ͘

    ঎඼ͷ௥Ճɼߋ৽ɼ࡟আ͕සൟʹൃੜ͢ΔECαΠτͰ͸ɼఏҊ಺༰ͷաෆ଍
    ʹΑΔൢചػձͷଛࣦΛආ͚ΔͨΊɼࢉग़ࡁΈۙ๣ू߹ͷߋ৽Λఆظతʹߦ͏
    ඞཁ͕͋Δɽ

    ·ͨɼΫΤϦͱͳΔର৅঎඼͕ECαΠτͷ֎෦͔Β༩͑ΒΕΔΑ͏ͳ৔߹ɼ
    ༧Ίࢉग़ࡁΈͷۙ๣ू߹Λར༻͢Δ͜ͱ͸Ͱ͖ͳ͍ɽ

    ˠ ߴ଎ͳۙ๣୳ࡧ͕ඞཁ
    7
    എܠ - େن໛͔ͭߴ࣍ݩͳू߹ʹର͢Δۙ๣୳ࡧ(1/2)
    େن໛͔ͭߴ࣍ݩͷಛ௃ྔू߹ʹର͢Δۙ๣୳ࡧ͸ܭࢉྔ͕૿Ճ͢Δ

    View Slide

  8. • ਫ਼౓Λ٘ਜ਼ʹͯ͠ܭࢉྔΛ཈͑Δۙࣅۙ๣୳ࡧ

    ਫ਼౓ͱ଎౓͕τϨʔυΦϑͷؔ܎ʹ͋ΔͨΊɼख๏ͷ૝ఆ͢Δσʔλ਺΍࣍ݩ
    ਺Λ௒͑ͨ৔߹ʹਫ਼౓ͱ଎౓ͷཱ͕྆ࠔ೉ʹͳΔɽ
    8
    എܠ - େن໛͔ͭߴ࣍ݩͳू߹ʹର͢Δۙ๣୳ࡧ(2/2)
    େن໛͔ͭߴ࣍ݩͷಛ௃ྔू߹ʹର͢Δۙ๣୳ࡧ͸ܭࢉྔ͕૿Ճ͢Δ

    View Slide

  9. ECαΠτͰऔΓѻ͏঎඼͔ΒɼఏҊ಺༰ͷత֬͞ͱ୳ࡧ଎౓Λཱ྆ͨ͠঎඼ͷ
    ࣗಈఏҊػೳΛ࣮ݱ͢ΔͨΊɼ

    େن໛͔ͭߴ࣍ݩϕΫτϧू߹Λର৅ͱͨ͠ਫ਼౓ͱ଎౓Λཱ྆ͨۙ͠ࣅۙ๣୳
    ࡧͷ࢓૊ΈΛݕ౼͢Δ
    9
    ຊݚڀͷ໨త

    View Slide

  10. 2.
    ैདྷͷۙࣅۙ๣୳ࡧͷ՝୊

    View Slide

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

    View Slide

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

    View Slide

  13. 13
    େن໛͔ͭߴ࣍ݩϕΫτϧू߹ͷ෼ղ΋͘͠͸࡟ݮ
    ߦํ޲ͷ෼ղ
    ྻํ޲ͷ෼ղ
    ྻํ޲ͷ࡟ݮ
    ۙ๣
    ۙ๣
    ۙ๣ީิ
    ΫΤϦ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

  14. 14
    େن໛͔ͭߴ࣍ݩϕΫτϧू߹ͷ෼ղ΋͘͠͸࡟ݮ
    ߦํ޲ͷ෼ղ
    ྻํ޲ͷ෼ղ
    ྻํ޲ͷ࡟ݮ
    .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

  15. 3.
    େن໛ECαΠτͷͨΊͷ
    ଎౓ͱਫ਼౓Λཱ྆ͨ͠
    ෼ࢄՄೳͳۙࣅۙ๣୳ࡧΤϯδϯ

    View Slide

  16. • ΫΤϦͱߴ࣍ݩϕΫτϧू߹Λ೚ҙͷ࣍ݩ਺Ͱ౳෼ͨ͠෦෼ϕΫτϧ୯ҐͰฒ
    ߦʹۙ๣୳ࡧͨ݁͠Ռͷ࿨ू߹Ͱ͋Δۙ๣ީิ͔Βɼ࠶౓ۙ๣୳ࡧΛߦ͏ɽ
    16
    ఏҊख๏ (଎౓໘)
    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

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

    View Slide

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

    //
    //



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

    View Slide

  19. 4.
    ࣮ݧͱߟ࡯

    View Slide

  20. • σʔλಛੑʹΑΔఏҊख๏ͷਫ਼౓໘ͰͷޮՌͷࠩΛධՁ
    • 6ສ݅ͷ֤σʔληοτΛ4෼ׂɼఏҊख๏ʹΑΔۙ๣10݅ͷద߹཰Λൺֱ
    • ཚ਺Λ༻͍ͨσʔληοτͰ͸ఏҊख๏͸༗ޮʹಇ͔ͳ͍
    • Inception-v3΍Word2vecͷΑ͏ͳ৘ใྔ͕ѹॖ͞ΕͨσʔληοτͰ༗ޮ
    20
    σʔλಛੑʹΑΔ༗ޮੑ

    View Slide

  21. • ෼ׂ਺ͱ෦෼ϕΫτϧ͝ͱͷۙ๣਺ͷ૊Έ߹ΘͤʹΑΔਫ਼౓ͷมԽΛධՁ
    • ఏҊख๏ͷޮՌ͕֬ೝ͞Εͨಛੑͷσʔληοτ100ສ݅ͰධՁ
    • ֤෼ׂ਺Ͱۙ๣਺20͔Β1000݅Λݕূ
    21
    σʔλಛੑʹΑΔ༗ޮੑ

    View Slide

  22. • ෼ׂ਺Λ૿Ճ͢ΔͱಉҰۙ๣਺ʹ͓͍ͯਫ਼౓͕௿Լ
    • ෼ׂޙͷ࣍ݩ਺͕100Ҏ্ͱͳΔ෼ׂ਺Ͱ࠷దͳۙ๣਺ΛٻΊΔ͜ͱ͕ඞཁ
    22
    σʔλಛੑʹΑΔ༗ޮੑ

    View Slide

  23. • ఏҊख๏ʹΑͬͯɼਫ਼౓ͱ୳ࡧ଎౓͕ͲͷΑ͏ʹվળ͢Δ͔ΛධՁ
    • ୳ࡧର৅͸ɼఏҊख๏ͷޮՌ͕ݟࠐΊΔInception-v3͔ΒಘΒΕͨσʔληο
    τ2048࣍ݩ100ສ݅
    • ۙ๣୳ࡧͷΞϧΰϦζϜͱͦΕΒͷύϥϝλΛมԽ͠ͳ͕ΒTop10ۙ๣୳ࡧʹ
    ͓͚Δਫ਼౓ͱ଎౓ͷτϨʔυΦϑΛൺֱ͢Δ
    23
    ਫ਼౓ͱ୳ࡧ଎౓ͷτϨʔυΦϑ

    View Slide

  24. • ॎ࣠͸୳ࡧඵ਺ͷٯ਺දࣔɼ্ʹߦ͘
    ΄Ͳߴ଎ɽԣ࣠͸ద߹཰ɽ
    • ݩͷΞϧΰϦζϜʹରͯ͠ఏҊख๏Λ
    ద༻ͨ͜͠ͱͰਫ਼౓ɼ଎౓ͷվળ͕ݟ
    ΒΕͨ
    24
    ਫ਼౓ͱ୳ࡧ଎౓ͷτϨʔυΦϑ

    View Slide

  25. 5.
    ·ͱΊ

    View Slide

  26. • େن໛͔ͭߴ࣍ݩͳಛ௃ྔू߹Λର৅ͱͨ͠঎඼ͷࣗಈఏҊػೳͷͨΊʹਫ਼౓
    ͱ଎౓Λཱ྆͢Δۙ๣୳ࡧͷ࢓૊Έ͕ඞཁ
    • ߴਫ਼౓ʹྨࣅ౓͕ൺֱՄೳͳߴ࣍ݩ͔ͭີͳϕΫτϧͷू߹Ͱ͸෦෼͕ྨࣅ͢
    Ε͹શମͱͯ͠ྨࣅ͢ΔՄೳੑ͕ߴ͍ಛੑΛ࣋ͭ͜ͱʹண໨
    • ෦෼ϕΫτϧू߹ʹର͢Δ෼ࢄՄೳͳ୳ࡧͱू໿Λߦ͏ํࣜʹΑͬͯैདྷख๏
    ΑΓਫ਼౓ͱ଎౓ͷ྆໘Ͱվળ͢Δ͜ͱΛ֬ೝ
    • ࠓޙ͸ɼ୯७ͳ౳෼Ͱ͸ͳ͘σʔλͷภΓΛߟྀͨ͠ޮՌతͳ෼ׂΛݕ౼ͨ͠
    ͍ɽ

    ·ͨɼ෼ࢄՄೳͳಛੑΛ׆͔ͨ͠ߏ੒ͰͷධՁΛਐΊ͍ͯ͘ɽ
    26
    ·ͱΊ

    View Slide

  27. View Slide