Hacker News

Hoʻohālikelike kikokikona me Python 3.14's ZSTD module

Hoʻohālikelike kikokikona me Python 3.14's ZSTD module Hāʻawi kēia ʻikepili piha o ka kikokikona i ka nānā kikoʻī ʻana i kāna mau ʻāpana kumu a me nā hopena ākea. Nā Wahi Koʻikoʻi Kūkū ka kūkākūkā ma: Nā mīkini kumu a me ka pro...

14 min read Via maxhalford.github.io

Mewayz Team

Editorial Team

Hacker News
I kēia manawa ua loaʻa iaʻu nā pōʻaiapili a pau aʻu e pono ai. E ʻae mai iaʻu e kākau i ka moʻomanaʻo moʻomanaʻo.

Hoʻokaʻawale kikokikona me Python 3.14's ZSTD Module

Hoʻokomo ʻo Python 3.14 i ka module compression.zstd i ka waihona maʻamau, a wehe ʻo ia i kahi ala mana kupanaha i ka hoʻokaʻawale ʻana i nā kikokikona me ka ʻole o nā kumu aʻo mīkini. Ma ke ana ʻana i ka maikaʻi o ka hoʻopili ʻana i nā kikokikona ʻelua, hiki iā ʻoe ke hoʻoholo i ko lākou ʻano like - kahi ʻenehana i kapa ʻia ʻo Normalized Compression Distance (NCD) - a i kēia manawa ua wikiwiki ʻo Zstandard no nā hana hana.

Pehea ka hana ʻana o ka hoʻohālikelike kikokikona ma muli o ka hoʻoemi?

ʻO ka manaʻo koʻikoʻi ma hope o ka hoʻohālikelike ʻana i ka hoʻopili ʻana i hoʻopaʻa ʻia i ka manaʻo ʻike. I ka wā e hālāwai ai kahi algorithm compression e like me Zstandard i kahi poloka o nā kikokikona, kūkulu ia i kahi puke wehewehe'ōlelo o loko. Inā kaʻana like ʻelua kikokikona i nā huaʻōlelo, syntax, a me ka hoʻonohonoho ʻana, ʻo ka hoʻopaʻa ʻana ia mau mea e hoʻopuka i kahi hopena i ʻoi aku ka nui ma mua o ke kaomi ʻana i ka kikokikona nui wale nō. Inā pili ʻole lākou, pili ka nui i hoʻopili ʻia i ka huina o nā nui pākahi ʻelua.

Hoʻopaʻa ʻia kēia pilina e ka Normalized Compression Distance formula: NCD(x, y) = (C(xy) - min(C(x), C(y))) / max(C(x), C(y)), kahi o C(x) ka nui paʻi o ke kikokikona x, a ʻo C(xy) ka nui paʻa o nā kikokikona i hoʻohui ʻia. ʻO ka waiwai NCD kokoke i ka 0, ʻo ia hoʻi, ʻano like loa nā kikokikona, a ʻo ka waiwai kokoke i ka 1, ʻo ia hoʻi, ʻaʻole lākou e kaʻana like i ka ʻike.

ʻO ka mea kupaianaha kēia ʻano hana ʻaʻole ia e koi i ka ʻikepili hoʻomaʻamaʻa, ʻaʻohe hōʻailona, ʻaʻohe hoʻopili, ʻaʻohe GPU. ʻO ka compressor ponoʻī e hana ma ke ʻano he kumu hoʻohālike o ke ʻano o ka kikokikona. Ua hōʻike ʻia ka noiʻi i paʻi ʻia ma nā pepa e like me "Low-Resource Text Classification: A Parameter-Free Classification Method with Compressors" (2023) i hōʻike i ka Gzip-based NCD i hoʻohālikelike iā BERT ma kekahi mau hiʻohiʻona.

No ke aha i hoʻololi pāʻani ai ka Zstandard Module o Python 3.14 no NCD?

Ma mua o Python 3.14, e hoʻohana ana iā Zstandard pono e hoʻokomo i ka pūʻolo python-zstandard ʻaoʻao ʻekolu. ʻO ka module compression.zstd hou, i hoʻokomo ʻia ma o PEP 784, e hoʻouna pololei ʻia me CPython. ʻO kēia ke ʻano o ka hilinaʻi ʻole ma luna a me kahi API paʻa i kākoʻo ʻia e Meta's battle-tested libzstd. No nā hana hoʻokaʻawale, hāʻawi ʻo Zstandard i nā mea maikaʻi ma mua o gzip a i ʻole bzip2:

  • Ka wikiwiki: Hoʻopiʻi ʻo Zstandard i 3-5x ʻoi aku ka wikiwiki ma mua o ka gzip ma nā ratio like, e hana ana i ka hoʻohālikelike ʻana i nā kaukani o nā palapala i kekona ma mua o nā minuke
  • Nā pae kōmike hiki ke hoʻokō ʻia: ʻO nā pae 1 a hiki i ka 22 e ʻae iā ʻoe e kālepa i ka wikiwiki no ka lākiō, e ʻae iā ʻoe e calibrate i ka pololei o ka NCD e pili ana i nā koi hoʻokomo
  • Kakoʻo puke wehewehe ʻōlelo: Hiki i nā puke wehewehe ʻōlelo Zstandard i hoʻomaʻamaʻa mua ʻia ke hoʻomaikaʻi maikaʻi loa i ka hoʻopili ʻana i nā kikokikona liʻiliʻi (ma lalo o 4KB), ʻo ia ka nui o ka nui o ka palapala kahi i mea nui ai ka pololei NCD
  • API Streaming: Kākoʻo ka module i ka hoʻoemi hoʻonui ʻia, e hiki ai i nā paipu hoʻokaʻawale e hoʻoponopono i nā kikokikona me ka hoʻouka ʻole ʻana i ke kino holoʻokoʻa i ka hoʻomanaʻo
  • Paʻa waihona maʻamau: ʻAʻohe manaʻo paio, ʻaʻohe pilikia o ke kaulahao lako — mai ka hoʻokomo ʻana i ka hoʻokomo zstd hana ma kēlā me kēia hoʻokomo Python 3.14+

Nāʻike koʻikoʻi: ʻOi aku ka maikaʻi o ka hoʻokaʻawale ʻana ma muli o ka hoʻopaʻa ʻana i ka wā e pono ai ʻoe i kahi baseline wikiwiki a hilinaʻi ʻole e hoʻohana i nā kikokikona ma ke ʻano maoli. Ma muli o ka hana ʻana o nā mea hoʻoomi i nā byte maka ma mua o nā hōʻailona kikoʻī ʻōlelo, hoʻokaʻawale lākou i nā palapala Pākē, ʻAlapia, a i ʻole nā ​​palapala ʻōlelo huikau e like me ka ʻōlelo Pelekania - ʻaʻohe kumu hoʻohālike ʻōlelo.

He aha ke ʻano o ka hoʻokō maʻamau?

Ka helu helu NCD liʻiliʻi ma Python 3.14 kūpono ma lalo o 30 laina. Hoʻopili ʻoe i kēlā me kēia kikokikona kuhikuhi (hoʻokahi no kēlā me kēia māhele), a laila no kēlā me kēia palapala hou, e helu i ka NCD me kēlā me kēia kuhikuhi a hāʻawi i ka māhele me ka mamao haʻahaʻa. Eia ke kumu kumu:

ʻO ka mua, e hoʻokomo i ka module me mai ka hoʻokomo hoʻokomo zstd. E wehewehe i kahi hana e ʻae ai i ʻelua mau kaula paita, hoʻopaʻa i kēlā me kēia, hoʻopaʻa i kā lākou concatenation, a hoʻihoʻi i ka helu NCD. A laila, kūkulu i ka puke wehewehe ʻana i nā lepili waeʻano i hōʻike ʻia i nā laʻana kikokikona. No kēlā me kēia palapala e komo mai ana, e hoʻololi hou i nā waeʻano, e helu i ka NCD, a e koho i ka palena iki.

Ma nā hōʻailona kūʻē i ka AG News dataset (ʻehā papa helu nūhou), ʻo kēia ala e hoʻohana ana iā Zstandard ma ka pae kōmike 3 hiki i ka 62-65% ka pololei - ʻaʻohe pae hoʻomaʻamaʻa, ʻaʻohe hoʻoiho kumu hoʻohālike, a me ka wikiwiki o ka helu ʻana ma kahi o 8,000 mau palapala i kēlā me kēia kekona ma ka CPU hoʻokahi. ʻO ka hoʻokiʻekiʻe ʻana i ka pae kōmike i 10 e hoʻokuke i ka pololei ma kahi o 68% ma ke kumukūʻai o ka hōʻemi ʻana i ka throughput ma kahi o 2,500 mau palapala i kekona. ʻAʻole kūlike kēia mau helu i nā mea hoʻololi i hoʻoponopono maikaʻi ʻia, akā hāʻawi lākou i kahi pae kumu ikaika no ka prototyping, ka hōʻailona hōʻailona ʻikepili, a i ʻole nā kaiapuni kahi hiki ʻole ke hoʻokomo i nā hilinaʻi ML.

💡 DID YOU KNOW?

Mewayz replaces 8+ business tools in one platform

CRM · Invoicing · HR · Projects · Booking · eCommerce · POS · Analytics. Free forever plan available.

Start Free →

Pehea ka hoʻohālikelike ʻana o NCD me ka hoʻohālikelike ʻana i ka ML kuʻuna?

ʻO ka pane ʻoiaʻiʻo, ʻaʻole ʻo NCD kahi pani no nā mea hoʻonohonoho hoʻololi i nā ʻōnaehana hana kiʻekiʻe. Loaʻa i nā mea hoʻohālike e like me BERT a i ʻole GPT-based classifiers e loaʻa i ka 94%+ pololei ma nā pae kuhikuhi maʻamau. Eia naʻe, noho ʻo NCD me Zstandard i kahi niche kūʻokoʻa. ʻOi maikaʻi ia i nā hiʻohiʻona hoʻomaka anuanu kahi āu e liʻiliʻi ai ma mua o 50 mau hiʻohiʻona i hōʻailona ʻia i kēlā me kēia papa - kahi kūlana kahi e hakakā ai nā kumu hoʻohālike maikaʻi. ʻAʻole pono ka manawa hoʻomaʻamaʻa, mālama i kekahi ʻōlelo a i ʻole hoʻopāpā ʻana me ka hoʻololi ʻole, a holo holoʻokoʻa ma ka CPU me ka hoʻomanaʻo mau.

No nā ʻoihana e hoʻokele ana i ka nui o nā ʻike e hiki mai ana - kākoʻo i nā tiketi, ʻōlelo ʻia ka media social, nā loiloi huahana - hiki i kahi papa helu Zstandard NCD ke lawelawe ma ke ʻano he ala ala hele mua e hoʻokaʻawale i nā palapala i ka manawa maoli ma mua o ka hoʻomaʻamaʻa ʻana i nā hopena. Hoʻemi nui kēia pipeline ʻelua-pae i nā kumukūʻai inference me ka mālama ʻana i ka pololei holoʻokoʻa. Hoʻoponopono nā paepae i nā maʻiʻo i hana ʻia e ka mea hoʻohana ma ke ʻano nui, e like me ka OS pāʻoihana 207-module a Mewayz i hoʻohana ʻia e nā ʻoihana ʻoi aku he 138,000, e pōmaikaʻi mai ka hoʻokaʻawale māmā ʻana e ala i nā memo, nā maʻiʻo tag, a me ka hoʻopilikino ʻana i nā ʻike mea hoʻohana me ka ʻole o ka hana kaumaha.

He aha nā palena a me nā hana maikaʻi loa?

Ua ʻike ʻia ka hoʻokaʻawale ʻana i ka hoʻopili ʻana i nā palena āu e helu ai. ʻO nā kikokikona pōkole (ma lalo o 100 bytes) e hoʻopuka i nā helu NCD hiki ʻole ke hilinaʻi ʻia no ka mea ʻaʻole lawa ka ʻikepili o ka compressor e kūkulu i nā kumu kūpono. Pilikia ka ʻenehana i ke koho ʻana i nā kikokikona kuhikuhi - ʻo nā ʻelele i koho maikaʻi ʻole ʻia e hoʻohaʻahaʻa i ka pololei. A no ka mea, he anana mamao ka NCD ma mua o ke kumu ho'ohālike probabilistic, 'a'ole ia e hana maoli i nā helu hilina'i.

No ka loaʻa ʻana o ka mea maikaʻi loa mai kēia ala: e hoʻohana i nā kikokikona kuhikuhi o ka liʻiliʻi he 500 paita no kēlā me kēia ʻāpana, hoʻāʻo me ka hoʻohui ʻana i nā laʻana he nui i kēlā me kēia papa (2-3 mau palapala hōʻike i hui pū ʻia e loaʻa i nā puke wehewehe ʻoi ʻoi aku ka maikaʻi), hoʻomaʻamaʻa i ka pahu kikokikona a me ke keʻokeʻo ma mua o ka hoʻopaʻa ʻana, a me ka pae hoʻohālikelike ma waena o Zstandard pae kōmikena pae 3, 6, a me ka wikiwiki 10ccura. No ka hoʻokaʻawale ʻana i nā kikokikona liʻiliʻi, e hoʻomaʻamaʻa mua i ka puke wehewehe ʻōlelo Zstandard ma kāu kikowaena kikowaena - hiki i kēia ʻanuʻu hoʻokahi ke hoʻomaikaʻi i ka pololei ma ka 8-12 pakeneka ma nā palapala pōkole.

Nīnau pinepine

Ke hana nei ka hoʻopololei ʻana ma muli o ka hoʻopili ʻana i ka manaʻo?

Hiki iā ia, akā me nā ʻōlelo hōʻike. Pono ka nānā ʻana i ka manaʻo e ʻike i nā ʻokoʻa tonal maʻalahi i loko o nā kikokikona like ʻole. ʻOi aku ka maikaʻi o ka NCD no ka hoʻokaʻawale kumuhana kahi e hoʻohana ai nā palapala ma nā ʻāpana like ʻole i nā huaʻōlelo ʻokoʻa. No ka manaʻo, ʻoi aku ka pololei ma kahi o 55-60% - ʻoi aku ka maikaʻi ma mua o ka maʻamau, akā ʻaʻole mākaukau i ka hana ponoʻī. ʻO ka hoʻohui ʻana i nā hiʻohiʻona NCD me kahi kumu hoʻohālike logistic regression māmā e hoʻomaikaʻi nui i nā hopena.

Hiki iaʻu ke hoʻohana i ka module compression.zstd i nā mana Python ma mua o 3.14?

ʻAʻole. He mea hou ka compression.zstd module ma Python 3.14. No nā mana mua, e hoʻouka i ka pūʻolo python-zstandard mai PyPI, e hāʻawi ana i nā hana like compress() a me decompress(). Ua like nō ka loiloi NCD — hoʻololi wale ka ʻōlelo hoʻokomo. Ke hoʻonui ʻoe i ka 3.14, hiki iā ʻoe ke hoʻokuʻu loa i ka hilinaʻi ʻaoʻao ʻekolu.

Pehea ka hana ʻana o Zstandard NCD i ka hoʻohālikelike ʻia me TF-IDF me ke ʻano like cosine?

Ma ka papa helu kumuhana he nui me nā papa helu kaulike, TF-IDF me ka like cosine loaʻa i ka 75-82% ka pololei i hoʻohālikelike ʻia me ka Zstandard NCD 62-68%. Eia nō naʻe, koi ʻo TF-IDF i kahi vectoriser kūpono, kahi huaʻōlelo i wehewehe ʻia, a me nā papa inoa pani ʻōlelo kikoʻī. ʻAʻole koi ʻo Zstandard NCD i kekahi o kēia preprocessing, hana i nā ʻōlelo ma waho o ka pahu, a hoʻokaʻawale i nā palapala hou i ka manawa mau me ka nānā ʻole i ka nui o nā huaʻōlelo. No ka hana prototyping wikiwiki a i ʻole nā ʻōlelo he nui, ʻo NCD ke ala wikiwiki loa i kahi ʻōnaehana hana.

Inā ʻoe e kūkulu nei i nā paipu maʻiʻo maʻiʻo, e hoʻokele ana i nā memo o nā mea kūʻai aku, a i ʻole ka manaʻo hoʻohālikelike hoʻohālikelike ʻana no kāu ʻoihana kikohoʻe, ʻo ke kākoʻo Zstandard i kūkulu ʻia ʻo Python 3.14 e ʻoi aku ka maʻalahi o ka NCD i hoʻokumu ʻia i ka compression. Inā ʻoe e ʻimi nei i kahi paepae holoʻokoʻa no ka hoʻokele ʻana i kāu ʻikepili ʻoihana, nā huahana, nā papa, a me ka launa pū ʻana o nā mea kūʻai aku, hoʻomaka i ke kūkulu ʻana me Mewayz i kēia lā a hoʻohana i kēia mau ʻenehana i kāu hana holoʻokoʻa.

Try Mewayz Free

All-in-one platform for CRM, invoicing, projects, HR & more. No credit card required.

Start managing your business smarter today

Join 30,000+ businesses. Free forever plan · No credit card required.

Ready to put this into practice?

Join 30,000+ businesses using Mewayz. Free forever plan — no credit card required.

Start Free Trial →

Ready to take action?

Start your free Mewayz trial today

All-in-one business platform. No credit card required.

Start Free →

14-day free trial · No credit card · Cancel anytime