Skip to main content

H-Net Dynamic Chunking Modules

Project description

H-Net Dynamic Chunking

Implementation of the dynamic chunking mechanism in H-net by Hwang et al. of Carnegie Mellon

Install

$ pip install h-net-dynamic-chunking

Usage

import torch
from h_net_dynamic_chunking import DynamicSequenceChunker

downsampler = DynamicSequenceChunker(512)

tokens = torch.randn(3, 1024, 512).requires_grad_()

downsampled, upsample_fn, *_ = downsampler(tokens)

assert upsample_fn(downsampled).shape == tokens.shape

3 layers hierarchy

import torch
from h_net_dynamic_chunking import DynamicSequenceChunker

downsampler1 = DynamicSequenceChunker(512)
downsampler2 = DynamicSequenceChunker(512)
downsampler3 = DynamicSequenceChunker(512)

tokens = torch.randn(3, 1024, 512).requires_grad_()

downsampled1, upsample_fn1, aux_loss1 = downsampler1(tokens)

# hierarchical network 1 ...

downsampled2, upsample_fn2, aux_loss2 = downsampler2(downsampled1)

# hierarchical network 2 ...

downsampled3, upsample_fn3, aux_loss3 = downsampler3(downsampled2)

# inner most network

# reconstituting

assert upsample_fn1(upsample_fn2(upsample_fn3(downsampled3))).shape == tokens.shape

HNet wrapper

import torch
from torch import nn
from h_net_dynamic_chunking.h_net import HNet

# 3 hierarchies, from 512 -> 1024 -> 2048 inner

net = HNet(
    nn.Identity(),
    HNet(
        nn.Identity(),
        HNet(
            nn.Identity(),
            nn.Identity(),
            nn.Identity(),
            dim = 2048
        ),
        nn.Identity(),
        dim = 1024,
        dim_inner = 2048
    ),
    nn.Identity(),
    dim = 512,
    dim_inner = 1024,
)

tokens = torch.randn(1, 1024, 512)

ret = net(tokens)
out, aux_loss = ret.output, ret.loss # (1, 1024, 512), ()

Example

Enwik8 with 2 hierarchies

$ pip install '.[examples]'

Then

$ python train.py

Citations

@misc{hwang2025dynamicchunkingendtoendhierarchical,
    title   = {Dynamic Chunking for End-to-End Hierarchical Sequence Modeling},
    author  = {Sukjun Hwang and Brandon Wang and Albert Gu},
    year    = {2025},
    eprint  = {2507.07955},
    archivePrefix = {arXiv},
    primaryClass = {cs.LG},
    url     = {https://arxiv.org/abs/2507.07955},
}

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

h_net_dynamic_chunking-0.5.2.tar.gz (12.2 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

h_net_dynamic_chunking-0.5.2-py3-none-any.whl (13.2 kB view details)

Uploaded Python 3

File details

Details for the file h_net_dynamic_chunking-0.5.2.tar.gz.

File metadata

File hashes

Hashes for h_net_dynamic_chunking-0.5.2.tar.gz
Algorithm Hash digest
SHA256 4989b32f17bea1ce7b31ad11507a4db5cf16fd87742e531d8ad6cea906a1ec6c
MD5 e263c2d073d8d3d581b983676fcbf481
BLAKE2b-256 0caf1ea146aa7bbca28905ae59aa3963abc695079f4899208d3890ef4336b44b

See more details on using hashes here.

File details

Details for the file h_net_dynamic_chunking-0.5.2-py3-none-any.whl.

File metadata

File hashes

Hashes for h_net_dynamic_chunking-0.5.2-py3-none-any.whl
Algorithm Hash digest
SHA256 84e2080fc906c1dcd0f768a02bb68b0facde8b8f00fb17fcb04340883ed00e65
MD5 8f4506ccca3b84eb6df1cc5869e03c53
BLAKE2b-256 e43e45ea0d82ffa833184ea79dc12d47f393e6e28ebff94ebe987d02040a9c32

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page