[{"data":1,"prerenderedAt":697},["ShallowReactive",2],{"navigation":3,"\u002Fquickstart":222,"\u002Fquickstart-surround":694},[4,8,168,206,210,214,218],{"title":5,"path":6,"stem":7},"Quickstart","\u002Fquickstart","01.quickstart",{"title":9,"path":10,"stem":11,"children":12},"Concepts","\u002Fconcepts","20.concepts",[13,15,19,23,84,88,92,96,100],{"title":9,"path":10,"stem":14},"20.concepts\u002Findex",{"title":16,"path":17,"stem":18},"Preprocessing Graph","\u002Fconcepts\u002Fppg","20.concepts\u002F2.ppg",{"title":20,"path":21,"stem":22},"Plane decomposition","\u002Fconcepts\u002Fplanes","20.concepts\u002F3.planes",{"title":24,"path":25,"stem":26,"children":27},"Codecs","\u002Fconcepts\u002Fcodecs","20.concepts\u002F4.codecs",[28,32,36,40,44,48,52,56,60,64,68,72,76,80],{"title":29,"path":30,"stem":31},"Arithmetic","\u002Fconcepts\u002Fcodecs\u002Farithmetic","20.concepts\u002Fcodecs\u002Farithmetic",{"title":33,"path":34,"stem":35},"Context Mixing Lite","\u002Fconcepts\u002Fcodecs\u002Fcontext-mixing-lite","20.concepts\u002Fcodecs\u002Fcontext-mixing-lite",{"title":37,"path":38,"stem":39},"FPC","\u002Fconcepts\u002Fcodecs\u002Ffpc","20.concepts\u002Fcodecs\u002Ffpc",{"title":41,"path":42,"stem":43},"Huffman LLM 5-Bit","\u002Fconcepts\u002Fcodecs\u002Fhuff-llm","20.concepts\u002Fcodecs\u002Fhuff-llm",{"title":45,"path":46,"stem":47},"Huffman","\u002Fconcepts\u002Fcodecs\u002Fhuffman","20.concepts\u002Fcodecs\u002Fhuffman",{"title":49,"path":50,"stem":51},"Identity","\u002Fconcepts\u002Fcodecs\u002Fidentity","20.concepts\u002Fcodecs\u002Fidentity",{"title":53,"path":54,"stem":55},"Neural Predictor","\u002Fconcepts\u002Fcodecs\u002Fneural-predictor","20.concepts\u002Fcodecs\u002Fneural-predictor",{"title":57,"path":58,"stem":59},"Order-1 Arithmetic","\u002Fconcepts\u002Fcodecs\u002Forder1-arithmetic","20.concepts\u002Fcodecs\u002Forder1-arithmetic",{"title":61,"path":62,"stem":63},"Order-1 Scale AC","\u002Fconcepts\u002Fcodecs\u002Forder1-scale-ac","20.concepts\u002Fcodecs\u002Forder1-scale-ac",{"title":65,"path":66,"stem":67},"Per-Group Codebook","\u002Fconcepts\u002Fcodecs\u002Fper-group-codebook","20.concepts\u002Fcodecs\u002Fper-group-codebook",{"title":69,"path":70,"stem":71},"rANS","\u002Fconcepts\u002Fcodecs\u002Frans","20.concepts\u002Fcodecs\u002Frans",{"title":73,"path":74,"stem":75},"tANS","\u002Fconcepts\u002Fcodecs\u002Ftans","20.concepts\u002Fcodecs\u002Ftans",{"title":77,"path":78,"stem":79},"Zstd","\u002Fconcepts\u002Fcodecs\u002Fzstd","20.concepts\u002Fcodecs\u002Fzstd",{"title":81,"path":82,"stem":83},"Zstd Dictionary","\u002Fconcepts\u002Fcodecs\u002Fzstd-dict","20.concepts\u002Fcodecs\u002Fzstd-dict",{"title":85,"path":86,"stem":87},"Container format","\u002Fconcepts\u002Fcontainer","20.concepts\u002F5.container",{"title":89,"path":90,"stem":91},"Delta compression","\u002Fconcepts\u002Fdelta","20.concepts\u002F6.delta",{"title":93,"path":94,"stem":95},"Extensibility","\u002Fconcepts\u002Fextensibility","20.concepts\u002F7.extensibility",{"title":24,"path":25,"stem":97,"children":98},"20.concepts\u002Fcodecs\u002Findex",[99],{"title":24,"path":25,"stem":97},{"title":101,"path":102,"stem":103,"children":104},"Transforms","\u002Fconcepts\u002Ftransforms","20.concepts\u002Ftransforms\u002Findex",[105,106,110,114,118,122,126,130,134,140,144,148,152,156,160,164],{"title":101,"path":102,"stem":103},{"title":107,"path":108,"stem":109},"Alpha-Stable Normalize","\u002Fconcepts\u002Ftransforms\u002Falpha-stable-normalize","20.concepts\u002Ftransforms\u002Falpha-stable-normalize",{"title":111,"path":112,"stem":113},"Bit Reorder","\u002Fconcepts\u002Ftransforms\u002Fbit-reorder","20.concepts\u002Ftransforms\u002Fbit-reorder",{"title":115,"path":116,"stem":117},"Block Microscaling Repack","\u002Fconcepts\u002Ftransforms\u002Fblock-microscaling-repack","20.concepts\u002Ftransforms\u002Fblock-microscaling-repack",{"title":119,"path":120,"stem":121},"Burrows-Wheeler","\u002Fconcepts\u002Ftransforms\u002Fburrows-wheeler","20.concepts\u002Ftransforms\u002Fburrows-wheeler",{"title":123,"path":124,"stem":125},"Byte Split & Nibble Split","\u002Fconcepts\u002Ftransforms\u002Fbyte-split","20.concepts\u002Ftransforms\u002Fbyte-split",{"title":127,"path":128,"stem":129},"Concat","\u002Fconcepts\u002Ftransforms\u002Fconcat","20.concepts\u002Ftransforms\u002Fconcat",{"title":131,"path":132,"stem":133},"Delta","\u002Fconcepts\u002Ftransforms\u002Fdelta","20.concepts\u002Ftransforms\u002Fdelta",{"title":135,"path":136,"stem":137,"children":138},"Index Bitwidth Pack","\u002Fconcepts\u002Ftransforms\u002Findex-bitwidth-pack","20.concepts\u002Ftransforms\u002Findex-bitwidth-pack",[139],{"title":135,"path":136,"stem":137},{"title":141,"path":142,"stem":143},"IntDelta","\u002Fconcepts\u002Ftransforms\u002Fint-delta","20.concepts\u002Ftransforms\u002Fint-delta",{"title":145,"path":146,"stem":147},"Mantissa Zero Strip","\u002Fconcepts\u002Ftransforms\u002Fmantissa-zero-strip","20.concepts\u002Ftransforms\u002Fmantissa-zero-strip",{"title":149,"path":150,"stem":151},"Move to Front","\u002Fconcepts\u002Ftransforms\u002Fmove-to-front","20.concepts\u002Ftransforms\u002Fmove-to-front",{"title":153,"path":154,"stem":155},"MxFp4 Deinterleave","\u002Fconcepts\u002Ftransforms\u002Fmxfp4-deinterleave","20.concepts\u002Ftransforms\u002Fmxfp4-deinterleave",{"title":157,"path":158,"stem":159},"Predictor XOR","\u002Fconcepts\u002Ftransforms\u002Fpredictor-xor","20.concepts\u002Ftransforms\u002Fpredictor-xor",{"title":161,"path":162,"stem":163},"Reshape","\u002Fconcepts\u002Ftransforms\u002Freshape","20.concepts\u002Ftransforms\u002Freshape",{"title":165,"path":166,"stem":167},"Spherical Normalize","\u002Fconcepts\u002Ftransforms\u002Fspherical-normalize","20.concepts\u002Ftransforms\u002Fspherical-normalize",{"title":169,"path":170,"stem":171,"children":172},"Guides","\u002Fguides","30.guides\u002F00.index",[173,174,178,182,186,190,194,198,202],{"title":169,"path":170,"stem":171},{"title":175,"path":176,"stem":177},"CLI usage","\u002Fguides\u002Fcli","30.guides\u002F01.cli",{"title":179,"path":180,"stem":181},"Python API","\u002Fguides\u002Fpython-api","30.guides\u002F02.python-api",{"title":183,"path":184,"stem":185},"Writing your first extension","\u002Fguides\u002Fextension-authoring","30.guides\u002F03.extension-authoring",{"title":187,"path":188,"stem":189},"Trust and security","\u002Fguides\u002Ftrust-and-security","30.guides\u002F04.trust-and-security",{"title":191,"path":192,"stem":193},"Random access","\u002Fguides\u002Frandom-access","30.guides\u002F10.random-access",{"title":195,"path":196,"stem":197},"Tuning","\u002Fguides\u002Ftuning","30.guides\u002F11.tuning",{"title":199,"path":200,"stem":201},"Safetensors","\u002Fguides\u002Fsafetensors","30.guides\u002F50.safetensors",{"title":203,"path":204,"stem":205},"Transformers","\u002Fguides\u002Ftransformers","30.guides\u002F51.transformers",{"title":207,"path":208,"stem":209},"API reference","\u002Fapi","40.api",{"title":211,"path":212,"stem":213},"Benchmarks","\u002Fbenchmarks","50.benchmarks",{"title":215,"path":216,"stem":217},"Extensions","\u002Fextensions","60.extensions",{"title":219,"path":220,"stem":221},"Contributing","\u002Fcontributing","90.contributing",{"id":223,"title":5,"body":224,"description":688,"extension":689,"kind":690,"language":690,"links":690,"meta":691,"navigation":690,"path":6,"seo":692,"stem":7,"summary":690,"__hash__":693},"docs\u002F01.quickstart.md",{"type":225,"value":226,"toc":681},"minimark",[227,231,236,262,277,281,525,529,550,570,574,646,650,677],[228,229,230],"p",{},"This page installs the package, compresses a tensor, decompresses it, and\nverifies a bit-exact round-trip.",[232,233,235],"h2",{"id":234},"install","Install",[237,238,243],"pre",{"className":239,"code":240,"language":241,"meta":242,"style":242},"language-bash shiki shiki-themes material-theme-lighter github-light github-dark","pip install ptwm\n","bash","",[244,245,246],"code",{"__ignoreMap":242},[247,248,251,255,259],"span",{"class":249,"line":250},"line",1,[247,252,254],{"class":253},"sbgvK","pip",[247,256,258],{"class":257},"s_sjI"," install",[247,260,261],{"class":257}," ptwm\n",[228,263,264,265,272,273,276],{},"Requires Python ≥ 3.12 and PyTorch ≥ 2.6. For a specific PyTorch build\n(CPU-only, a particular CUDA version), install it from the matching\n",[266,267,271],"a",{"href":268,"rel":269},"https:\u002F\u002Fpytorch.org\u002Fget-started\u002Flocally\u002F",[270],"nofollow","PyTorch index"," before or\nalongside ",[244,274,275],{},"ptwm",".",[232,278,280],{"id":279},"round-trip-a-tensor","Round-trip a tensor",[237,282,286],{"className":283,"code":284,"language":285,"meta":242,"style":242},"language-python shiki shiki-themes material-theme-lighter github-light github-dark","import torch\nfrom ptwm import Compressor, Decompressor, CompressionConfig, Format\n\nconfig = CompressionConfig(input_format=Format.TORCH)\ncompressor = Compressor(config)\ndecompressor = Decompressor()\n\ntensor = torch.randn(1024, 1024, dtype=torch.bfloat16)\ncompressed = compressor.compress(tensor)\nrestored = decompressor.decompress(compressed)\n\nassert torch.equal(tensor, restored)\n","python",[244,287,288,298,329,336,370,387,400,405,450,473,496,501],{"__ignoreMap":242},[247,289,290,294],{"class":249,"line":250},[247,291,293],{"class":292},"sVHd0","import",[247,295,297],{"class":296},"su5hD"," torch\n",[247,299,301,304,307,309,312,316,319,321,324,326],{"class":249,"line":300},2,[247,302,303],{"class":292},"from",[247,305,306],{"class":296}," ptwm ",[247,308,293],{"class":292},[247,310,311],{"class":296}," Compressor",[247,313,315],{"class":314},"sP7_E",",",[247,317,318],{"class":296}," Decompressor",[247,320,315],{"class":314},[247,322,323],{"class":296}," CompressionConfig",[247,325,315],{"class":314},[247,327,328],{"class":296}," Format\n",[247,330,332],{"class":249,"line":331},3,[247,333,335],{"emptyLinePlaceholder":334},true,"\n",[247,337,339,342,346,349,352,356,358,361,363,367],{"class":249,"line":338},4,[247,340,341],{"class":296},"config ",[247,343,345],{"class":344},"smGrS","=",[247,347,323],{"class":348},"slqww",[247,350,351],{"class":314},"(",[247,353,355],{"class":354},"s99_P","input_format",[247,357,345],{"class":344},[247,359,360],{"class":348},"Format",[247,362,276],{"class":314},[247,364,366],{"class":365},"swQdS","TORCH",[247,368,369],{"class":314},")\n",[247,371,373,376,378,380,382,385],{"class":249,"line":372},5,[247,374,375],{"class":296},"compressor ",[247,377,345],{"class":344},[247,379,311],{"class":348},[247,381,351],{"class":314},[247,383,384],{"class":348},"config",[247,386,369],{"class":314},[247,388,390,393,395,397],{"class":249,"line":389},6,[247,391,392],{"class":296},"decompressor ",[247,394,345],{"class":344},[247,396,318],{"class":348},[247,398,399],{"class":314},"()\n",[247,401,403],{"class":249,"line":402},7,[247,404,335],{"emptyLinePlaceholder":334},[247,406,408,411,413,416,418,421,423,427,429,432,434,437,439,442,444,448],{"class":249,"line":407},8,[247,409,410],{"class":296},"tensor ",[247,412,345],{"class":344},[247,414,415],{"class":296}," torch",[247,417,276],{"class":314},[247,419,420],{"class":348},"randn",[247,422,351],{"class":314},[247,424,426],{"class":425},"srdBf","1024",[247,428,315],{"class":314},[247,430,431],{"class":425}," 1024",[247,433,315],{"class":314},[247,435,436],{"class":354}," dtype",[247,438,345],{"class":344},[247,440,441],{"class":348},"torch",[247,443,276],{"class":314},[247,445,447],{"class":446},"skxfh","bfloat16",[247,449,369],{"class":314},[247,451,453,456,458,461,463,466,468,471],{"class":249,"line":452},9,[247,454,455],{"class":296},"compressed ",[247,457,345],{"class":344},[247,459,460],{"class":296}," compressor",[247,462,276],{"class":314},[247,464,465],{"class":348},"compress",[247,467,351],{"class":314},[247,469,470],{"class":348},"tensor",[247,472,369],{"class":314},[247,474,476,479,481,484,486,489,491,494],{"class":249,"line":475},10,[247,477,478],{"class":296},"restored ",[247,480,345],{"class":344},[247,482,483],{"class":296}," decompressor",[247,485,276],{"class":314},[247,487,488],{"class":348},"decompress",[247,490,351],{"class":314},[247,492,493],{"class":348},"compressed",[247,495,369],{"class":314},[247,497,499],{"class":249,"line":498},11,[247,500,335],{"emptyLinePlaceholder":334},[247,502,504,507,509,511,514,516,518,520,523],{"class":249,"line":503},12,[247,505,506],{"class":292},"assert",[247,508,415],{"class":296},[247,510,276],{"class":314},[247,512,513],{"class":348},"equal",[247,515,351],{"class":314},[247,517,470],{"class":348},[247,519,315],{"class":314},[247,521,522],{"class":348}," restored",[247,524,369],{"class":314},[232,526,528],{"id":527},"compress-a-safetensors-file-from-the-command-line","Compress a safetensors file from the command line",[237,530,532],{"className":239,"code":531,"language":241,"meta":242,"style":242},"ptwm compress model.safetensors\n# produces model.safetensors.ptwm\n",[244,533,534,544],{"__ignoreMap":242},[247,535,536,538,541],{"class":249,"line":250},[247,537,275],{"class":253},[247,539,540],{"class":257}," compress",[247,542,543],{"class":257}," model.safetensors\n",[247,545,546],{"class":249,"line":300},[247,547,549],{"class":548},"sutJx","# produces model.safetensors.ptwm\n",[237,551,553],{"className":239,"code":552,"language":241,"meta":242,"style":242},"ptwm decompress model.safetensors.ptwm\n# restores model.safetensors\n",[244,554,555,565],{"__ignoreMap":242},[247,556,557,559,562],{"class":249,"line":250},[247,558,275],{"class":253},[247,560,561],{"class":257}," decompress",[247,563,564],{"class":257}," model.safetensors.ptwm\n",[247,566,567],{"class":249,"line":300},[247,568,569],{"class":548},"# restores model.safetensors\n",[232,571,573],{"id":572},"load-a-compressed-model-into-transformers","Load a compressed model into 🤗 transformers",[237,575,577],{"className":283,"code":576,"language":285,"meta":242,"style":242},"from ptwm import patch_safetensors\npatch_safetensors()\n\nfrom transformers import AutoModelForCausalLM\nmodel = AutoModelForCausalLM.from_pretrained(\"path\u002Fto\u002Fmodel\")\n# PTWM decompresses .ptwm shards on the fly\n",[244,578,579,590,597,601,613,641],{"__ignoreMap":242},[247,580,581,583,585,587],{"class":249,"line":250},[247,582,303],{"class":292},[247,584,306],{"class":296},[247,586,293],{"class":292},[247,588,589],{"class":296}," patch_safetensors\n",[247,591,592,595],{"class":249,"line":300},[247,593,594],{"class":348},"patch_safetensors",[247,596,399],{"class":314},[247,598,599],{"class":249,"line":331},[247,600,335],{"emptyLinePlaceholder":334},[247,602,603,605,608,610],{"class":249,"line":338},[247,604,303],{"class":292},[247,606,607],{"class":296}," transformers ",[247,609,293],{"class":292},[247,611,612],{"class":296}," AutoModelForCausalLM\n",[247,614,615,618,620,623,625,628,630,634,637,639],{"class":249,"line":372},[247,616,617],{"class":296},"model ",[247,619,345],{"class":344},[247,621,622],{"class":296}," AutoModelForCausalLM",[247,624,276],{"class":314},[247,626,627],{"class":348},"from_pretrained",[247,629,351],{"class":314},[247,631,633],{"class":632},"sjJ54","\"",[247,635,636],{"class":257},"path\u002Fto\u002Fmodel",[247,638,633],{"class":632},[247,640,369],{"class":314},[247,642,643],{"class":249,"line":389},[247,644,645],{"class":548},"# PTWM decompresses .ptwm shards on the fly\n",[232,647,649],{"id":648},"next-steps","Next steps",[651,652,653,660,666,672],"ul",{},[654,655,656,659],"li",{},[266,657,658],{"href":17},"Concepts → Preprocessing Graph"," — why the bit reorder matters.",[654,661,662,665],{},[266,663,664],{"href":180},"Guides → Python API"," — the full encoder\u002Fdecoder surface.",[654,667,668,671],{},[266,669,670],{"href":200},"Guides → safetensors integration"," — transparent decompression at load time.",[654,673,674,676],{},[266,675,211],{"href":212}," — compression ratios on real models.",[678,679,680],"style",{},"html pre.shiki code .sVHd0, html code.shiki .sVHd0{--shiki-light:#39ADB5;--shiki-light-font-style:italic;--shiki-default:#D73A49;--shiki-default-font-style:inherit;--shiki-dark:#F97583;--shiki-dark-font-style:inherit}html pre.shiki code .su5hD, html code.shiki .su5hD{--shiki-light:#90A4AE;--shiki-default:#24292E;--shiki-dark:#E1E4E8}html pre.shiki code .sP7_E, html code.shiki .sP7_E{--shiki-light:#39ADB5;--shiki-default:#24292E;--shiki-dark:#E1E4E8}html pre.shiki code .smGrS, html code.shiki .smGrS{--shiki-light:#39ADB5;--shiki-default:#D73A49;--shiki-dark:#F97583}html pre.shiki code .slqww, html code.shiki .slqww{--shiki-light:#6182B8;--shiki-default:#24292E;--shiki-dark:#E1E4E8}html pre.shiki code .s99_P, html code.shiki .s99_P{--shiki-light:#90A4AE;--shiki-light-font-style:italic;--shiki-default:#E36209;--shiki-default-font-style:inherit;--shiki-dark:#FFAB70;--shiki-dark-font-style:inherit}html pre.shiki code .swQdS, html code.shiki .swQdS{--shiki-light:#E53935;--shiki-default:#005CC5;--shiki-dark:#79B8FF}html pre.shiki code .srdBf, html code.shiki .srdBf{--shiki-light:#F76D47;--shiki-default:#005CC5;--shiki-dark:#79B8FF}html pre.shiki code .skxfh, html code.shiki .skxfh{--shiki-light:#E53935;--shiki-default:#24292E;--shiki-dark:#E1E4E8}html .light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html.light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html pre.shiki code .sjJ54, html code.shiki .sjJ54{--shiki-light:#39ADB5;--shiki-default:#032F62;--shiki-dark:#9ECBFF}html pre.shiki code .s_sjI, html code.shiki .s_sjI{--shiki-light:#91B859;--shiki-default:#032F62;--shiki-dark:#9ECBFF}html pre.shiki code .sutJx, html code.shiki .sutJx{--shiki-light:#90A4AE;--shiki-light-font-style:italic;--shiki-default:#6A737D;--shiki-default-font-style:inherit;--shiki-dark:#6A737D;--shiki-dark-font-style:inherit}html pre.shiki code .sbgvK, html code.shiki .sbgvK{--shiki-light:#E2931D;--shiki-default:#6F42C1;--shiki-dark:#B392F0}",{"title":242,"searchDepth":331,"depth":331,"links":682},[683,684,685,686,687],{"id":234,"depth":300,"text":235},{"id":279,"depth":300,"text":280},{"id":527,"depth":300,"text":528},{"id":572,"depth":300,"text":573},{"id":648,"depth":300,"text":649},"Install PTWM, compress and decompress a PyTorch tensor, and verify a bit-exact round-trip.","md",null,{},{"title":5,"description":688},"do9AharyO42MkgLNYQ-1IU5UBIfaNI6xzRjxGjVlQuM",[690,695],{"title":9,"path":10,"stem":14,"description":696,"children":-1},"Architecture and design rationale for PTWM's compression pipeline.",1784796352202]