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

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

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

Cd3d2cb2dadf5488935fe0ddaea7938a?s=128

monochromegane

June 28, 2018
Tweet

Transcript

  1. ࡾ୐༔հ / Pepabo R&D Institute, GMO Pepabo, Inc. 2018.06.28 ୈ42ճ

    ৘ใॲཧֶձ Πϯλʔωοτͱӡ༻ٕज़ݚڀձ Sanny: େن໛ECαΠτͷͨΊͷ ਫ਼౓ͱ଎౓Λཱ྆ͨ͠ ෼ࢄՄೳͳۙࣅۙ๣୳ࡧΤϯδϯ
  2. 1. ECαΠτʹ͓͚Δ঎඼ࣗಈఏҊͷഎܠͱຊݚڀͷ໨త 2. ैདྷͷۙࣅۙ๣୳ࡧͷ՝୊ 3. େن໛ECαΠτͷͨΊͷ଎౓ͱਫ਼౓Λཱ྆ͨ͠෼ࢄՄೳ ͳۙࣅۙ๣୳ࡧΤϯδϯ 4. ࣮ݧͱߟ࡯ 5.

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

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

    ECαΠτͷ঎඼ࣗಈఏҊػೳ
  5. • ঎඼ͷࣗಈఏҊ͸঎඼ಉ࢜ͷྨࣅੑΛݩʹߦ͏ • ྨࣅੑͷൺֱʹ͸ɼػցతʹऔΓѻ͏͜ͱ͕Ͱ͖Δई౓ͱͯ͠ଟ࣍ݩͷ࣮਺ϕ ΫτϧΛ༻͍Δ (= ಛ௃ྔ) 5 എܠ -

    ECαΠτͷ঎඼ࣗಈఏҊػೳͱۙ๣୳ࡧ ECαΠτͷ঎඼ࣗಈఏҊػೳʹ͸ɼ঎඼ͷಛ௃ྔू߹Λର৅ͱͨۙ͠๣୳ࡧ͕ ඞཁͱͳΔɽ͜ͷ࣌ɼର৅঎඼ͷಛ௃ྔ͕ݕࡧ࣭໰σʔλʢΫΤϦʣͱͳΔɽ
  6. • େن໛
 ঎඼શମ͔ΒఏҊର৅Λ୳ࡧ͢ΔͨΊɼಛ௃ྔू߹ͷ݅਺΋औΓѻ͏঎඼਺ʹ ൺྫͯ͠૿Ճ͢Δɽେن໛ͳECαΠτͰ͸਺ेສʙ਺ඦສ݅ͷಛ௃ྔू߹ͱ ͳΔɽ • ߴ࣍ݩ
 ঎඼ಛੑͷత֬ͳදݱͷͨΊɼߴ࣍ݩͷಛ௃ྔ͕༻͍ΒΕΔɽֶशࡁΈCNN Λಛ௃நग़ثͱͯ͠ར༻ͯ͠ը૾͔ΒಘΒΕΔಛ௃ྔ΍ɼςΩετΛ෼ࢄදݱ ΁ม׵͢ΔWord2vec͔ΒಘΒΕΔಛ௃ྔͷ࣍ݩ਺͸਺ඦʙ਺ઍ࣍ݩͱͳΔɽ

    6 എܠ - ECαΠτͷ঎඼ͷಛ௃ྔू߹
  7. • ࣄલʹۙ๣ू߹ΛٻΊ͓ͯ͘
 ঎඼ͷ௥Ճɼߋ৽ɼ࡟আ͕සൟʹൃੜ͢ΔECαΠτͰ͸ɼఏҊ಺༰ͷաෆ଍ ʹΑΔൢചػձͷଛࣦΛආ͚ΔͨΊɼࢉग़ࡁΈۙ๣ू߹ͷߋ৽Λఆظతʹߦ͏ ඞཁ͕͋Δɽ
 ·ͨɼΫΤϦͱͳΔର৅঎඼͕ECαΠτͷ֎෦͔Β༩͑ΒΕΔΑ͏ͳ৔߹ɼ ༧Ίࢉग़ࡁΈͷۙ๣ू߹Λར༻͢Δ͜ͱ͸Ͱ͖ͳ͍ɽ
 ˠ ߴ଎ͳۙ๣୳ࡧ͕ඞཁ 7

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

  9. ECαΠτͰऔΓѻ͏঎඼͔ΒɼఏҊ಺༰ͷత֬͞ͱ୳ࡧ଎౓Λཱ྆ͨ͠঎඼ͷ ࣗಈఏҊػೳΛ࣮ݱ͢ΔͨΊɼ
 େن໛͔ͭߴ࣍ݩϕΫτϧू߹Λର৅ͱͨ͠ਫ਼౓ͱ଎౓Λཱ྆ͨۙ͠ࣅۙ๣୳ ࡧͷ࢓૊ΈΛݕ౼͢Δ 9 ຊݚڀͷ໨త

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

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

    • ಛʹେن໛͔ͭߴ࣍ݩϕΫτϧू߹ʹରͯ͠͸ɼਫ਼౓Λ٘ਜ਼ʹͯ͠ܭࢉྔΛ཈ ͑Δۙࣅղ͕༻͍ΒΕΔɽۙࣅۙ๣୳ࡧɽ 11 ࣗಈఏҊػೳͱۙࣅۙ๣୳ࡧ
  12. • ࣗಈఏҊػೳʹ͸ɼఏҊ಺༰ͷత֬͞ͱॆ෼ͳԠ౴଎౓͕ٻΊΒΕΔɽ • ਫ਼౓ͱ଎౓Λཱ྆͢Δۙࣅۙ๣୳ࡧͷ࢓૊Έ͕ඞཁɽ • ଟछଟ༷ͳۙࣅۙ๣୳ࡧͷΞϧΰϦζϜ΍ͦΕΒΛ࣮૷ͨ͠ϥΠϒϥϦ͕ެ։ɼ ར༻͞Ε͍ͯΔɽ • ΞϧΰϦζϜ͝ͱʹ௕ॴ୹ॴ͕͋ΓɼݸʑͷΞϧΰϦζϜվળ͸ޮՌ͕ݶఆత 12

    ۙࣅۙ๣୳ࡧͷվળͱ՝୊ • ҰํͰɼଟ͘ͷΞϧΰϦζϜ͸ɼॲཧର৅σʔλ਺ͱ࣍ݩ਺ʹੑೳ͕ґଘ͢Δ • ୳ࡧ͋ͨΓͷॲཧର৅ͷॖখ͕ɼશͯͷΞϧΰϦζϜʹޮՌత
  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 ྻ͝ͱʹڑ཭ܭࢉͷҰ෦Λ࣮ࢪ ڑ཭ܭࢉ݁ՌΛू໿ͯۙ͠๣୳ࡧ ࣍ݩ࡟ݮ
  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 
  15. 3. େن໛ECαΠτͷͨΊͷ ଎౓ͱਫ਼౓Λཱ྆ͨ͠ ෼ࢄՄೳͳۙࣅۙ๣୳ࡧΤϯδϯ

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

    ϕΫτϧ୯ҐͰۙ๣୳ࡧͨ݁͠Ռͷ্Ґू߹ͱྨࣅ͠΍͍͢͜ͱʹண໨ 17 ఏҊख๏ (ਫ਼౓໘) ෦෼͕ྨࣅ͢Ε͹શମ͕ྨࣅ͢ΔՄೳੑ͕ߴ͍σʔλಛੑ
  18. 18 Sanny: ఏҊख๏ͷ࣮૷ 4BOOZ 4BOOZ 4BOOZ // // 㱮 //

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

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

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

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

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

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

  25. 5. ·ͱΊ

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

    ࠓޙ͸ɼ୯७ͳ౳෼Ͱ͸ͳ͘σʔλͷภΓΛߟྀͨ͠ޮՌతͳ෼ׂΛݕ౼ͨ͠ ͍ɽ
 ·ͨɼ෼ࢄՄೳͳಛੑΛ׆͔ͨ͠ߏ੒ͰͷධՁΛਐΊ͍ͯ͘ɽ 26 ·ͱΊ
  27. None