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...
Search
chie8842
April 15, 2018
Technology
0
800
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 Search のご紹介
chie8842
2
1.4k
MongoDB Atlas Vectorsearchではじめる生成AIアプリ開発
chie8842
3
1.4k
AWS GlueとAWS Lake Formationではじめるデータマネジメント
chie8842
0
970
Distributed Processing in Python
chie8842
2
650
クックパッドにおける推薦(と検索)の取り組み
chie8842
20
7.9k
Understanding distributed processing in Python
chie8842
2
1.9k
Performance Tuning Tips of TensorFlow Inference
chie8842
1
730
クックパッドにおけるCloud AutoML事例
chie8842
9
7.8k
Cookpad_Internship_MLOps_Lecture_2018
chie8842
35
16k
Other Decks in Technology
See All in Technology
AIのコンプラは何故しんどい?
shujisado
1
190
AWS re:Invent 2024で発表された コードを書く開発者向け機能について
maruto
0
180
PHPからGoへのマイグレーション for DMMアフィリエイト
yabakokobayashi
1
160
サイボウズフロントエンドエキスパートチームについて / FrontendExpert Team
cybozuinsideout
PRO
5
38k
Wantedly での Datadog 活用事例
bgpat
1
410
なぜCodeceptJSを選んだか
goataka
0
160
podman_update_2024-12
orimanabu
1
260
統計データで2024年の クラウド・インフラ動向を眺める
ysknsid25
2
840
re:Invent をおうちで楽しんでみた ~CloudWatch のオブザーバビリティ機能がスゴい!/ Enjoyed AWS re:Invent from Home and CloudWatch Observability Feature is Amazing!
yuj1osm
0
120
AWS re:Invent 2024 ふりかえり
kongmingstrap
0
130
宇宙ベンチャーにおける最近の情シス取り組みについて
axelmizu
0
110
How to be an AWS Community Builder | 君もAWS Community Builderになろう!〜2024 冬 CB募集直前対策編?!〜
coosuke
PRO
2
2.8k
Featured
See All Featured
"I'm Feeling Lucky" - Building Great Search Experiences for Today's Users (#IAC19)
danielanewman
226
22k
It's Worth the Effort
3n
183
28k
Building a Modern Day E-commerce SEO Strategy
aleyda
38
7k
Sharpening the Axe: The Primacy of Toolmaking
bcantrill
38
1.9k
No one is an island. Learnings from fostering a developers community.
thoeni
19
3k
Rebuilding a faster, lazier Slack
samanthasiow
79
8.7k
CSS Pre-Processors: Stylus, Less & Sass
bermonpainter
356
29k
Why Our Code Smells
bkeepers
PRO
335
57k
The Web Performance Landscape in 2024 [PerfNow 2024]
tammyeverts
2
290
Designing on Purpose - Digital PM Summit 2013
jponch
116
7k
Side Projects
sachag
452
42k
The Illustrated Children's Guide to Kubernetes
chrisshort
48
48k
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*.%ػߏΛ༻͢Δͱɺ෮߸ԽΛഒҎ্ʹ૿Ճͤ͞ΔՄ ೳੑ͕͋Δɻ • ՄมϒϩοΫͷ༻ • ΫΤϦͷ౷ܭใΛར༻ͯ͠ҟͳΔѹॖϝΧχζϜΛมߋ͢Δ