Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
Index Compression Using Byte-Aligned ANS Coding and Two-Dimensional Contexts
Search
chie8842
April 15, 2018
Technology
0
780
Index Compression Using Byte-Aligned ANS Coding and Two-Dimensional Contexts
WSDM 2018 論文読み会の資料
https://atnd.org/events/95510
chie8842
April 15, 2018
Tweet
Share
More Decks by chie8842
See All by chie8842
MongoDB Atlas Vectorsearchではじめる生成AIアプリ開発
chie8842
3
710
AWS GlueとAWS Lake Formationではじめるデータマネジメント
chie8842
0
730
Distributed Processing in Python
chie8842
2
540
クックパッドにおける推薦(と検索)の取り組み
chie8842
21
7.7k
Understanding distributed processing in Python
chie8842
2
1.7k
Performance Tuning Tips of TensorFlow Inference
chie8842
1
690
クックパッドにおけるCloud AutoML事例
chie8842
9
7.5k
Cookpad_Internship_MLOps_Lecture_2018
chie8842
35
16k
機械学習デプロイを支えるコンテナ技術(Machine Learning on Docker)
chie8842
14
8.1k
Other Decks in Technology
See All in Technology
Babylon.jsと色々なものを組み合わせる:ブラウザのAPIやガジェットや2D描画ライブラリなど / Babylon.js 勉強会 vol.3
you
PRO
0
180
Microsoft Intune 勉強会 第 2 回目
tamaiyutaro
2
500
ExaDB-D dbaascli で出来ること
oracle4engineer
PRO
0
2.1k
止まらないLinuxシステムを構築する_高信頼性クラスタ入門
koedoyoshida
3
2.3k
プロンプトエンジニアリングでがんばらない-Agentic Workflow へ-近藤憲児
kenjikondobai
6
1.3k
BPStudyの200回を中心にIT業界を振り返る。そしてこれから
haru860
3
430
Babylon.js JAPAN活動紹介 (2024/4)
limes2018
1
120
「知的単純作業」を自動化する、地に足の着いた大規模言語モデル (LLM) の活用
nrryuya
4
2k
AWS学習者向けにAzureの解説スライドを作成した話
handy
3
210
社内アプリで Cloudflare D1を プロダクト運用してみた体験談(Tokyo)
haochenx
0
130
Gemini, Google's Large Language Model
glaforge
0
120
Building a RAG-poweredAI chat appwith Python and VS Code
pamelafox
0
170
Featured
See All Featured
What the flash - Photography Introduction
edds
64
11k
It's Worth the Effort
3n
180
27k
YesSQL, Process and Tooling at Scale
rocio
165
13k
RailsConf & Balkan Ruby 2019: The Past, Present, and Future of Rails at GitHub
eileencodes
126
32k
The Pragmatic Product Professional
lauravandoore
26
5.8k
Rails Girls Zürich Keynote
gr2m
91
13k
How to train your dragon (web standard)
notwaldorf
75
5.2k
Designing Dashboards & Data Visualisations in Web Apps
destraynor
226
51k
Distributed Sagas: A Protocol for Coordinating Microservices
caitiem20
323
20k
Fantastic passwords and where to find them - at NoRuKo
philnash
39
2.5k
Rebuilding a faster, lazier Slack
samanthasiow
74
8.3k
Designing Experiences People Love
moore
136
23k
Transcript
*OEFY$PNQSFTTJPO6TJOH#ZUF"MJHOFE"/4 $PEJOHBOE5XP%JNFOTJPOBM$POUFYU 84%.ಡΈձ $IJF)BZBTIJEB
Θͨ͠ͷ͠ΐ͏͔͍ $IJF)BZBTIJEB !DIJF ΫοΫύουɹػցֶशνʔϜ $POUSJCVUFUP"QBDIF4QBSL )BEPPQ FUD
ൃചͷ8&# %#13&44ͷ 1ZUIPOͱՊֶٕज़ܭࢉͷষ ॻ͍ͨɻ
"#453"$5 • #MPDLCBTFEJOWFSUFEJOEFYDPNQSFTTJPOͷ࣮ݧΛߦͬͨɻ • "TZNNFUSJD/VNFSBM4ZTUFNT "/4 ΤϯτϩϐʔίʔσΟϯ άʹରͯ͠ҎԼͷ֦ுΛߦ͏͜ͱʹΑΔվળ͕ಘΒΕͨɻ – ͭͷूύϥϝʔλʹΑΔ࣍ݩͷ݅ίϯςΩετʹΑͬͯɺγ
ϯϘϧͷΧςΰϥΠζΛߦ͏ɻ – #ZUFGSJFOEMZͳϚοϐϯάΛͬͯγϯϘϧΛ"/4ͷDPEFXPSE CVDLFUʹΘ͚Δ – ίϯςΩετϚʔδͷϓϩηεʹΑΓɺෳͷEJTUSJCVUJPOΛͭͱ Έͳ͞ΕΔɻ • ͜ͷख๏ʹΑΓɺJOUFSQʹΑΔΠϯσοΫεͷѹॖͷੑೳج ४Λ্ճͬͨɻ • ࣮ݧ(#ͷHPWίʔύεͱ৽͍͠χϡʔεهࣄΛ͍ɺ ΫΤϦධՁผͷCMPDLCBTFEͷख๏ͱൺֱͨ͠ɻ
*/530%6$5*0/ • *OWFSUFE సஔ ΠϯσοΫεςΩετσʔλʹର͢Δ ߴͳΫΤϦ࣮ߦͷॏཁͳߏͰ͋Δɻ term Posting list J1IPOF
Ϗοάσʔλ Χό ϝϩϯ posting ͦΕͧΕͷυΩϡϝϯτ*%ʹରͯ͠୯ޠͷग़ݱසϙδ γϣϯͷใ࣋ͭɻ ίϯύΫτͳQPTUJOHMJTUTʹɺCZUFBMJHOFEDPEFT XPSE BMJHOFEDPEFT CJOBSZQBDLFEΞϓϩʔν͕͋Δɻ
*/530%6$5*0/ • ϋϑϚϯූ߸ԽͷΑ͏ͳΤϯτϩϐʔϕʔεͷख๏ఏҊ͞Ε͍ͯ ͕ͨɺҎલ͋·ΓސΈΒΕΔ͜ͱ͕ͳ͔ͬͨɻલʹ+FSFL %VEB͕"/4ϝΧχζϜΛ։ൃͨ͜͠ͱʹΑΓɺΤϯτϩϐʔίʔ σΟϯά͕࠶ͼ͞ΕΔΑ͏ʹͳͬͨɻ • 7#ZUF 4JNQMF 1BDLFEͷख๏Λ༻͍ͯɺͦΕͧΕѹॖޮ͕վળ͞
Εͨɻ • 1BDLFE "/4ΞϓϩʔνͷఏҊ – ݻఆϒϩοΫͷγϯϘϧ͕ηϨΫλʹΑͬͯಛఆ͞Εͨ֬ͱؔ࿈ ͯ͠ූ߸Խ͞ΕΔɻ – 1BDLFE "/4Ξϓϩʔνͷհʹ͓͍ͯɺηϨΫλϒϩοΫͷ࠷্Ґ ͕ར༻͞ΕΔɻ – QBDLFEGSBNFPGSFGFSFODF 1'03 ϝΧχζϜͷΑ͏ͳར͕͋Δɻ – ΤϯτϩϐʔίʔσΟϯάͷϝϦοτ • ΤϯτϩϐʔίʔσΟϯάͷॊೈੑʹΑΓɺࣅ௨ͬͨූ߸ͷ֬ٴͼූ ߸ͷ໘Ͱѹॖޮ্͕͕ͬͨɻ – ϒϩοΫͷूʹ͓͍ͯ࣍ݩͷηϨΫλ͕ར༻Ͱ͖ͨɻ • γϯϘϧͷࣝผࢠ͔Β"/4ͷͱϚοϐϯάΛม͑ΔলϝϞϦͰ CZUFGSJFOEMZͳग़ྗ • σίʔυͷࡍͷϝϞϦ༻ྔΛݮ͢ΔͨΊͷ$POUFYU.FSHJOH
#"$,(306/%ɿ*OEFY$PNQSFTTJPO ˙$PNQSFTTJPO"QQSPBDI • طଘͷํࣜ – ౷తͳख๏ɹ&MJBTDPEFT – 7#ZUFͦͷมܗ – ϫʔυϕʔεͷγϯϓϧͳΞϓϩʔν
– *OUFSQNFDIBOJTN • εέʔϧͨ͠ͱ͖ʹྑ͍ѹॖޮ͕ಘΒΕ͕ͨɺEFDPEF͕ &MJBTΑΓ͔ͬͨɻ
ิɿ&MJBT(BNNB https://en.wikipedia.org/wiki/Elias_gamma_coding
ิɿ7#ZUF 1 0 0 0 0 0 1 0 value
End marker 1000000110000010 整数自体を符号化するのでなく、逐次差分を符号化する方法
#"$,(306/%ɿQBDLFEDPEFT ˙1BDLFE$PEFT • ݻఆͷQPTUJOHTʹର͢ΔQBDLFEDPEFT • ൺֱత࠷ۙͷٕज़ • ΩʔΞΠσΞɺϩʔΧϧͳҰ؏ੑΛར༻͢Δํ๏Ͱ͋ Δɻ •
ݻఆʢେʣͷϒϩοΫ͝ͱͷΛͭͷϢχο τͱͯ͠ॲཧ͢Δɻ • ྫ͑ɺ ͔ΒηϨΫλΛબͿ͜ͱͰɺ͋ΔΛ ͱ͍ͬͨॻ͖ํͰදͤΔɻ
#"$,(306/%ɿ1BUDIFE'SBNFPG3FGFSFODF 2 1 31 1 0 … 2 10 01
01 01 00 … 10 b=5 b’=2 1exception position3 • ϒϩοΫຖʹͦͷϒϩοΫͷͷ΄ͱΜͲΛද͢͜ͱ͕Ͱ͖ΔϏοτΛ ܾΊͯ Τϯίʔυ͢Δɻ • খ͍͞ϏοτͰදͤΔͨΊσʔλαΠζ͕খ͘͞ͳΔɻ • 1'03ͷมܗͰ͋Δ0QU1'03Ͱɺ࠷શମͷύοέʔδ͕͜Μͺ͘ͱʹͳ ΔΑ͏ʹηϨΫλΛબͿΑ͏ʹͳ͍ͬͯΔɻ b b’ metadata
#"$,(306/%ɿ7BSJBCMF-FOHUI#SPDLT • ՄมͷϒϩοΫʹύʔςΟγϣχϯάͨ͠߹ͷख๏ Λ0UUBWJBOPFUBM͕ఏҊ͍ͯ͠Δɻ • ಉҰͷσʔλ͕ग़ݱͨ͠ͱ͖ʹେ͖ͳΠϯϓοτϢχο τΛ࣋ͭηϨΫλετϨʔδΛঈ٫͢ΔΑ͏ʹγʔΫ͢ Δɻ͕ہॴతʹόʔετ͢Δ߹ʹ༗ޮͳํ๏Ͱ͋Δɻ
#"$,(306/%ɿ"TZNNFUSJD/VNFSBM 4ZTUFNTʢ"/4ʣ • +BSFL%VEBʹΑͬͯ։ൃ͞Εͨ৽͍͠Τϯτϩϐʔූ߸ Խํࣜ • ϋϑϚϯූ߸Խࢉज़ූ߸ͱಉׂ͡ΛՌͨ͢ɻ • ग़ݱසͷߴ͍γϯϘϧʹϏοτͷখ͍͞ූ߸ɺग़ݱ සͷ͍γϯϘϧʹϏοτͷେ͖͍ූ߸ΛׂΓͯ
Δɻ
"/4Λ༻͍ͨΠϯσοΫεѹॖͷྫ • γϯϘϧ1 2 3ͦΕͧΕग़ݱ֬ɺɺͱ͢Δ • ϋϑϚϯූ߸ԽͰɺ1͕̍Ϗοτɺ2ͱ3͕̎ϏοτͱͳΔɻ • "/4ූ߸ԽͰɺ.ݸͷཁૉͷ͕1ɺ͕2ɺ͕3ʹϥϕϦϯά͞Εɺ ͦͷΞϧϑΝϕοτ্ͷه߸ͷγʔέϯεɺରԠ͢ΔϑϨʔϜͷঢ়ଶͱ͠
ͯදݱ͞ΕΔɻ • ଞͷϑϨʔϜΛ࡞Δ߹ɺଞͷॱྻ͘͠.ΑΓେ͖͍Λ༻͢Δɻ • ϑϨʔϜͷූ߸ԽɺભҠؔ5 ɾ ɾ Λ༻͍ͯߦ͏ɻ5্ͷΧϥϜɺεςʔ τมͰΠϯσοΫεԽ͞ΕΔɻ • શମΛූ߸Խ͢Δ߹ɺεςʔτม͕େ͖͘ͳΔɻ • σίʔυ͢Δͱ͖ɺɹɹɹ͕ΘΕΔɻ
"/4Λ༻͍ͨΠϯσοΫεѹॖͷྫʢଓ͖ʣ • TFRVFODF2222222222ݸͷεςʔτΛ ࣋ͪɺϏοτͰද͞ΕΔɻϋϑϚϯූ߸Խͩͱ ϏοτͰ͋Δɻ • ରͯ͠ɺTRVFODF3333333333εςʔτ͕ ݸͱͳΓɺϏοτʹͳΔɻ • ͜ͷख๏ɺ4LFXͷ͋Δσʔλʹ༗ޮͰ͋Δɻ
39364 118096 ….
"/4$PNQBSFE • ϋϑϚϯූ߸ٴͼ"SJUINFUJDDPEJOHͱͷൺֱ – "/4ཧతͳූ߸Խ͕"SJUINFUSJDDPEJOHͱۙ͘ͳΔɻ – ߴ͍ग़ݱසͷγϯϘϧΛൃੜ͢ΔͨΊʹɺϏοτͷίʔυ͢ Βൃੜ͠ͳ͍͍ͯ͘߹͕͋ΔɻʢϋϑϚϯූ߸ͩͱৗʹϏο τҎ্͕ඞཁɻʣ –
"SJUINFUSJDDPEJOHΑΓ͘ɺߴʹઃܭ͞ΕͨϋϑϚϯූ ߸ͷ࣮ʹ͍ۙεϧʔϓοτϨʔτΛग़͢͜ͱ͕Ͱ͖Δɻ – "/4"SJUINFUJDDPEJOHͱҟͳΓ੩తϝΧχζϜͰ͋Γɺҟͳ ΔίϯςΩετͷͱͰγϯϘϧΛੜ͢Δ͜ͱ͕Ͱ͖ͳ͍ɻ ͨͩ͜͠ͷ͜ͱΠϯσοΫεѹॖʹӨڹ͠ͳ͍ɻ
"/4GPS*OEFY$PNQSFTTJPO • Ҏલͷݚڀ – "/4Λ̏ͭͷҟͳΔΠϯσοΫεѹॖํࣜͱΈ߹Θͤͨɻ – ಛʹ7#ZUFͱΈ߹ΘͤΔΞϓϩʔνΛQPTUJOHMJTUͷѹॖʹ༻ ͨ͠ɻ – σίʔυͷεϧʔϓοτগ͠Լ͢Δ͚ͩͰɺετϨʔδΛ
͔ͳΓઅͰ͖Δ͜ͱΛ֬ೝͨ͠ɻ • ࠓճͷख๏ɿʮ1BDLFE "/4ʯϝΧχζϜ – ʮͭͷύϥϝʔλʯΛ͏ – গͳ͍ϝϞϦ༻ྔͷίϯύΫτͳ࣮ – ίϯςΩετϚʔδ • ͜ΕΒͷख๏ͷ༗༻ੑΛ࣮ূ͢ΔͨΊʹɺͭͷେ͖ͳ ςΩετίϨΫγϣϯΛ༻ͯ͠ɺѹॖͷ༗ޮੑͱΫΤ Ϧͷεϧʔϓοτʹؔ͢Δৄࡉͳ࣮ݧ݁ՌΛఏڙ͢Δɻ
1BDLFE "/4 • ඪ४తͳ1BDLFEBSSBOHFNFOUͰɺίϯςΩετΛಛఆ ͢ΔηϨΫλ͕֤ϒϩοΫͷූ߸Խͷௐʹར༻͞ΕΔɻ • ූ߸Խεςοϓ͕όΠφϦίʔυΛ༻͢Δ߹ɺηϨ ΫλɺϒϩοΫͷ࠷େΛݟग़͠ɺόΠφϦͷେ͖ ͞Λܾఆ͢Δɻ •
࣍ʹɹɹɹɹͱͳΔΑ͏ͳୈͷɹΛٻΊΔɻैདྷͷ 1BDLFEߏͰɺM൪ͷίϯςΩετΛ༻ͯ͠ɹɹɹɹɹ ΛؚΉϖΠϩʔυ͕ੜ͞ΕΔɻ
*.1307&%1"$,&%$0.13&44*0/ 1BDLFE "/4 • 1BDLFE "/4ϝΧχζϜͰɺ͜ΕΒͷ͞·͟·ͳཁૉ͕ີ ʹ݁ͼ͔ͭͳ͍ɻ • ηϨΫλϒϩοΫͷ࠷େͱ͠ɺ"/4ϑϨʔϜϓʔϧ Λࣝผ͢Δɻ
• ֤ϑϨʔϜʹɺͷϙεςΟϯάΛॲཧ͢Δ࠷ॳͷύεத ʹ౷ܭΛੵ͠ɺ֬Λর߹͢ΔͨΊʹߏங͞Εͨҟ ͳΔγϯϘϧ֬ηοτΛؚΉɻ • γϯϘϧͷසਐͷόέοτʹੵ͞ΕɺͦͷΑ͏ͳ֤ όέοτͷͯ͢ͷγϯϘϧʢͨͱ͑ʣʹͳΔɻ • ྫ͑ɺʜ ʜͱʜ֬Ͱ͋ΔͱԾఆ ͞ΕΔɻ • ͕͠γʔέϯεɹͷ൪ͷγϯϘϧ͕ϒϩοΫͷηο τͱͯ͠ූ߸Խ͞Ε͍ͯΔͳΒɺͱಉ͡ϒϩοΫͷ γϯϘϧʹΘͨΔ࠷େਐ͔Βܭࢉ͞ΕͨηϨΫλͰ͋Δɻ
5XP%JNFOUJPOBM$POUFYUT • ίϯςΩετΛ֦ு͢Δ͜ͱͰɺηϨΫλΛ֨ೲ͢Δί ετ૿Ճ͢Δ͕ɺਖ਼֬ʹλʔήοτͷ֬Λ༻ ͢Δ͜ͱ͕Ͱ͖Δ • ίϯςΩετͷՃํ๏ͱͯ͠ɺҎԼ͕ڍ͛ΒΕΔ – ̎ͷྦྷʹΑΓηϨΫλϕΫτϧΛऔಘ͢Δ –
όέοτ͕খ͘͞ͳΔΑ͏ʹରͷఈΛมߋ͢Δ • ্ͨͩ͠ه྆ํڞϒϩοΫͷ࠷େʹΑܾͬͯ·ͬ ͯ͠·͏ͷͰɺΤϯτϩϐʔίʔσΟϯάͷརΛ׆͔ ͤͳ͍
5XP%JNFOUJPOBM$POUFYUT • ࣍ݩͷηϨΫλΛར༻͍ͨ͠ɻ – ୈҰ࣍ݩ͕ϒϩοΫͷ࠷େɺୈೋ࣍ݩ͕ϒϩοΫͷ࠷খͱ ͢Δɻ • ͜ͷ্ݶΑΓେ͖͍ɺԼݶΑΓখ͍͞ྫ֎ͱͯ͠ ѻ͏͜ͱ͕Ͱ͖Δɻ –
ϒϩοΫͷதԝΛར༻͢Δ͜ͱͰ͖Δɻ
5XP%JNFOUJPOBM$POUFYUT • ࣍ݩ͔Βೋ࣍ݩͷίϯςΩετʹΓସ͑ͨ߹ͷ༷ࢠɻ
3FEVDJOHUIF'SBNFTJ[F • 1BDLFE "/4Ͱɺσίʔυʹ༻͞ΕΔςʔϒϧͷ ҡ࣋ίετ͕͔͔Δͱ͍͏σϝϦοτ͕͋Δɻ • "/4ΛγϯϘϧͷਐͷൣғͰ༻͠ɺ"/4ετϦʔ ϜͱิॿϏοτετϦʔϜΛฒྻʹॲཧ͢Δ͜ͱͰΛ ࠶ߏ͢Δͱ͍͏खஈ͕͋Δɻ •
͜ͷ߹ՃͷΞϥΠϝϯτʹΑΔίετ͕͔͔Δ ͜ͷͨΊɺ1'030QU1'03Ͱར༻͞ΕΔྫ֎Λఆٛ͠ ͯγϯϘϧͱ"/4λʔήοτͷؒͷϚοϐϯάΛఆٛ ͢Δɻ • ͜ΕʹΑΓѹॖͷ༗ޮੑΛߴΊΔ͜ͱ͕Ͱ͖Δɻ
1BDLFE "/4ͷσίʔυ
$POUFYU.FSHJOH • ίϯςΩετΛՃ͢ΔͱɺηϨΫλ͕ՃϏοτΛඞ ཁͱ͢ΔͨΊɺίϯςΩετ͕ଟ͗͢Δͱޮ͕ѱ͘ͳ ΔՄೳੑ͕͋ΔɻίϯςΩετ͕ͷྦྷͰ͋Δ͜ͱ Λอূ͢Δ͖ɻ • ίϯςΩετͷϖΞΛϚʔδ͢Δ͜ͱͰɺ୯Ұͷίϯς Ωετʹஔ͖͑ΔҊɻ γϯϘϧT͕ίϯςΩετB্ͰOB
T ճൃੜ͢Δͱ͢Δͱɺ τʔλϧͷPDDVSSFODF ΤϯτϩϐʔίʔσΟϯάՄೳͰɺͦͷίϯςΩετ ͷτʔλϧίετ
&YQFSJNFOUT &YQFSJNFOUBM$POUFYU • ࣍ݩͷηϨΫλΛར༻ͨ͠ࡍͷOFXTHBQͷ֬ͷ ਤ
γϯϘϧग़ݱසʹجͮ͘ѹॖ༗ޮੑ
.FBTVSFE*NQSPWFNFOU
࣮ߦ࣌ؒɺϝϞϦ༻ྔɺΫΤϦεϧʔϓοτ • *OUFSQΑΓΫΤϦϨεϙϯε͕ૣ͘ɺѹॖ࠷ྑ ͍ͱ͍͏݁Ռ͕ಘΒΕͨɻ
$0/$-64*0/4"/%'6563&803, ˙$PODMVTJPOT • 1BDLFE "/4ϝΧχζϜʹΑΓɺͭͷҟͳΔख๏Λվળͨ͠ɻ – ࣍ݩίϯςΩετ – ࠷্ҐόΠτϚοϐϯά –
ίϯςΩετϚʔδϯά • લͷ*OUFSQͷϕϯνϚʔΫʹউͬͨɻ • 1BDLFE "/4ͷ࣮0QU1'03&'PQUʹൺͯΫΤϦεϐʔ υʹ͓͍ͯྼ͍ͬͯΔ͕ɺ"/4ʹ·ͩվળͷ༨͕͋Δɻ • ͢Ͱʹ΄ͱΜͲͷQPTUJOHT͕খ͍͞αΠζʹූ߸ԽͰ͖Δ͜ͱΛ֬ ೝͨ͠ɻ ˙'VUVSFXPSL • ෳͷঢ়ଶΛฒߦͯ͠෮߸͢ΔͨΊʹ֦ு͞Εͨ෮߸Խςʔϒϧ͓ Αͼ4*.%ػߏΛ༻͢Δͱɺ෮߸ԽΛഒҎ্ʹ૿Ճͤ͞ΔՄ ೳੑ͕͋Δɻ • ՄมϒϩοΫͷ༻ • ΫΤϦͷ౷ܭใΛར༻ͯ͠ҟͳΔѹॖϝΧχζϜΛมߋ͢Δ