Text Generation
Transformers
English
transwave_meyer
causal-lm
byte-level
raw-byte
attention-free
meyer
wavelet
custom_code
Instructions to use Angshul/TransWave with libraries, inference providers, notebooks, and local apps. Follow these links to get started.
- Libraries
- Transformers
How to use Angshul/TransWave with Transformers:
# Use a pipeline as a high-level helper from transformers import pipeline pipe = pipeline("text-generation", model="Angshul/TransWave", trust_remote_code=True)# pip install -U transformers accelerate # Load model directly from transformers import AutoModelForCausalLM model = AutoModelForCausalLM.from_pretrained("Angshul/TransWave", trust_remote_code=True, device_map="auto") - Notebooks
- Google Colab
- Kaggle
- Local Apps Settings
- vLLM
How to use Angshul/TransWave with vLLM:
Install from pip and serve model
# Install vLLM from pip: pip install vllm # Start the vLLM server: vllm serve "Angshul/TransWave" # Call the server using curl (OpenAI-compatible API): curl -X POST "http://localhost:8000/v1/completions" \ -H "Content-Type: application/json" \ --data '{ "model": "Angshul/TransWave", "prompt": "Once upon a time,", "max_tokens": 512, "temperature": 0.5 }'Use Docker
docker model run hf.co/Angshul/TransWave
- SGLang
How to use Angshul/TransWave with SGLang:
Install from pip and serve model
# Install SGLang from pip: pip install sglang # Start the SGLang server: python3 -m sglang.launch_server \ --model-path "Angshul/TransWave" \ --host 0.0.0.0 \ --port 30000 # Call the server using curl (OpenAI-compatible API): curl -X POST "http://localhost:30000/v1/completions" \ -H "Content-Type: application/json" \ --data '{ "model": "Angshul/TransWave", "prompt": "Once upon a time,", "max_tokens": 512, "temperature": 0.5 }'Use Docker images
docker run --gpus all \ --shm-size 32g \ -p 30000:30000 \ -v ~/.cache/huggingface:/root/.cache/huggingface \ --env "HF_TOKEN=<secret>" \ --ipc=host \ lmsysorg/sglang:latest \ python3 -m sglang.launch_server \ --model-path "Angshul/TransWave" \ --host 0.0.0.0 \ --port 30000 # Call the server using curl (OpenAI-compatible API): curl -X POST "http://localhost:30000/v1/completions" \ -H "Content-Type: application/json" \ --data '{ "model": "Angshul/TransWave", "prompt": "Once upon a time,", "max_tokens": 512, "temperature": 0.5 }' - Docker Model Runner
How to use Angshul/TransWave with Docker Model Runner:
docker model run hf.co/Angshul/TransWave
|
Download README.md from Angshul/TransWave: direct link, hf CLI and curl.
- Browser
- Download file 4.48 kB
-
https://huggingface.co/Angshul/TransWave/resolve/main/README.md
- Command line
-
hf download hf://Angshul/TransWave/README.md
-
curl -L -o README.md https://huggingface.co/Angshul/TransWave/resolve/main/README.md
4.48 kB
| license: agpl-3.0 | |
| language: | |
| - en | |
| library_name: transformers | |
| datasets: | |
| - allenai/c4 | |
| tags: | |
| - causal-lm | |
| - byte-level | |
| - raw-byte | |
| - attention-free | |
| - meyer | |
| - wavelet | |
| # TransWave | |
| TransWave is a 96.13M-parameter attention-free causal raw-byte language model using learned block-local lifting and learned Meyer-structured multiresolution memory. | |
| This repository contains the best checkpoint from the completed C4 English pretraining run. | |
| ## Checkpoint | |
| - Architecture: `causal_transwave_blocklifting_meyer_byte_lm_g4_v2` | |
| - Parameters: 96,130,040 | |
| - Input vocabulary: 256 raw byte values | |
| - External BPE/SentencePiece tokenizer: none | |
| - Trained C4 context: 20,480 model tokens | |
| - Structural architecture maximum: 32,768 raw-byte tokens | |
| - Physical training batch: 280 | |
| - Training tokens consumed: 4,499,988,480 | |
| - Optimizer steps: 785 | |
| - Dataset: `allenai/c4:en` | |
| - Objective: exact causal next-byte NLL | |
| - Source commit: `5cae31b81e15160379ded79f32bcbb443d7db9f7` | |
| One model token is one raw UTF-8 byte. | |
| ## Validation result | |
| The run exhausted its 4.5B-token budget before reaching the PPL=3 early-stop target. | |
| - Best/final held-out NLL: 2.228725893 | |
| - Best/final byte perplexity: 9.288024598 | |
| - Validation tokens: 16,773,120 | |
| ## Tokenization | |
| There are two distinct layers and they should not be conflated. | |
| `TransWaveByteTokenizer` is the Hugging Face input codec. It converts text to raw UTF-8 byte IDs 0...255 and back. It has no BPE merges and no learned external vocabulary. | |
| The learned tokenizer is inside the neural network itself. `CTWBlockLiftingTokenizer` contains the trained shared byte embedding, three learned lifting stages and the learned cross-scale mixer. Those learned parameters are contained in `best_model.pt` and are loaded as part of `CTWModel`. | |
| ## Architecture | |
| Eight raw bytes form one block. A shared 256-entry embedding maps each byte to 96 channels. Three learned block-local lifting stages recursively produce eight multiresolution scales, giving a 768-dimensional block state. | |
| Each of 12 layers combines a learned 512-block causal Meyer/Bernstein spectral FIR, learned full 8x8 scale mixing, learned spectral gates, a separate strictly causal DWConv7 path, RMS normalization and a SwiGLU feed-forward network of width 2816. | |
| The global block representation is shifted by one block before decoding: block b is predicted from h[b-1], never h[b]. Within each target block, an 8-step GRUCell decoder of width 256 predicts bytes autoregressively while reusing the shared byte embedding for the classifier. | |
| ## Load | |
| ```python | |
| import torch | |
| from transformers import AutoTokenizer, AutoModelForCausalLM | |
| repo = "Angshul/TransWave" | |
| tokenizer = AutoTokenizer.from_pretrained( | |
| repo, | |
| trust_remote_code=True, | |
| use_fast=False, | |
| ) | |
| model = AutoModelForCausalLM.from_pretrained( | |
| repo, | |
| trust_remote_code=True, | |
| ).eval() | |
| ids = tokenizer( | |
| "TransWave operates on raw UTF-8 bytes.", | |
| return_tensors="pt", | |
| )["input_ids"] | |
| # Exact scoring currently requires complete 8-byte blocks. | |
| ids = ids[:, : (ids.shape[1] // 8) * 8] | |
| with torch.no_grad(): | |
| out = model(input_ids=ids, labels=ids) | |
| print("NLL:", float(out.loss)) | |
| print("PPL:", float(torch.exp(out.loss))) | |
| ``` | |
| ## Reference byte generation | |
| The custom model exposes `generate_bytes`, an exact but deliberately simple reference generator: | |
| ```python | |
| prompt = tokenizer("The future of", return_tensors="pt")["input_ids"] | |
| generated = model.generate_bytes( | |
| prompt, | |
| max_new_tokens=64, | |
| do_sample=True, | |
| temperature=0.8, | |
| top_k=40, | |
| ) | |
| print(tokenizer.decode(generated[0].tolist())) | |
| ``` | |
| The reference generator recomputes completed-block context as needed; it is intended for correctness and checkpoint inspection, not optimized streaming throughput. | |
| ## Context note | |
| The architecture contains positional parameters for 4,096 eight-byte blocks = 32,768 raw-byte tokens. This checkpoint was trained on 20,480-token C4 contexts, so positions beyond 20,480 were not exercised in this C4 pretraining run. | |
| ## Provenance | |
| Implementation: https://github.com/AngshulMajumdar/TransWaveV1 | |
| Paper: https://openreview.net/forum?id=3a22WBU5kT | |
| The Hugging Face portability layer preserves the trained architecture. The only device-portability change in `transwave_core.py` is that the two explicitly-disabled CUDA autocast regions in the Meyer FFT path use the parameter device type, allowing the checkpoint to load and score on CPU as well as CUDA. |