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
990
Distributed Processing in Python
chie8842
2
660
クックパッドにおける推薦(と検索)の取り組み
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
Git scrapingで始める継続的なデータ追跡 / Git Scraping
ohbarye
5
490
Oracle Base Database Service:サービス概要のご紹介
oracle4engineer
PRO
1
16k
今から、 今だからこそ始める Terraform で Azure 管理 / Managing Azure with Terraform: The Perfect Time to Start
nnstt1
0
240
信頼されるためにやったこと、 やらなかったこと。/What we did to be trusted, What we did not do.
bitkey
PRO
0
2.2k
AWSサービスアップデート 2024/12 Part3
nrinetcom
PRO
0
140
AWS re:Invent 2024 recap in 20min / JAWSUG 千葉 2025.1.14
shimy
1
100
なぜfreeeはハブ・アンド・スポーク型の データメッシュアーキテクチャにチャレンジするのか?
shinichiro_joya
2
470
テストを書かないためのテスト/ Tests for not writing tests
sinsoku
1
170
[IBM TechXchange Dojo]Watson Discoveryとwatsonx.aiでRAGを実現!事例のご紹介+座学②
siyuanzh09
0
110
30分でわかる「リスクから学ぶKubernetesコンテナセキュリティ」/30min-k8s-container-sec
mochizuki875
3
450
ゼロからわかる!!AWSの構成図を書いてみようワークショップ 問題&解答解説 #デッカイギ #羽田デッカイギおつ
_mossann_t
0
1.5k
今年一年で頑張ること / What I will do my best this year
pauli
1
220
Featured
See All Featured
YesSQL, Process and Tooling at Scale
rocio
170
14k
How to train your dragon (web standard)
notwaldorf
89
5.8k
Statistics for Hackers
jakevdp
797
220k
What’s in a name? Adding method to the madness
productmarketing
PRO
22
3.2k
Fight the Zombie Pattern Library - RWD Summit 2016
marcelosomers
232
17k
Documentation Writing (for coders)
carmenintech
67
4.5k
Practical Tips for Bootstrapping Information Extraction Pipelines
honnibal
PRO
10
870
10 Git Anti Patterns You Should be Aware of
lemiorhan
PRO
656
59k
Done Done
chrislema
182
16k
Easily Structure & Communicate Ideas using Wireframe
afnizarnur
192
16k
Bash Introduction
62gerente
610
210k
The Web Performance Landscape in 2024 [PerfNow 2024]
tammyeverts
3
360
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*.%ػߏΛ༻͢Δͱɺ෮߸ԽΛഒҎ্ʹ૿Ճͤ͞ΔՄ ೳੑ͕͋Δɻ • ՄมϒϩοΫͷ༻ • ΫΤϦͷ౷ܭใΛར༻ͯ͠ҟͳΔѹॖϝΧχζϜΛมߋ͢Δ