rwkv7-g1h-7.2b-hf / README.md
Hakureirm's picture
Model card, config and the remote-code implementation (verified on the GPU box; weights uploaded from the datacenter leg)
6941e4d verified
|
Raw History Blame Contribute Delete
4.16 kB
---
license: apache-2.0
language:
- en
- zh
library_name: transformers
pipeline_tag: text-generation
base_model: BlinkDL/rwkv7-g1
tags:
- rwkv
- rwkv7
- goose
- linear-attention
- recurrent
---
# RWKV-7 "Goose" G1h (reasoning line) 7.2B — ready for the in-tree `transformers` implementation
This is **not a new model**. It is a format conversion of
[`BlinkDL/rwkv7-g1`](https://huggingface.co/BlinkDL/rwkv7-g1) →
`rwkv7-g1h-7.2b-20260710-ctx10240.pth`, laid out as a `transformers` directory so the `rwkv7`
implementation can load it with `from_pretrained`. All credit for the weights
belongs to **BlinkDL / the RWKV project**; they are redistributed here under the
Apache-2.0 licence they were released under.
The conversion is a rename, not a transformation: every one of the 1062 tensors
in the source `.pth` is **bit-identical** here (verified tensor by tensor). No tensors were
added: this checkpoint natively carries layer 0's value-residual LoRA at its
initialization values (layer 0 never reads it -- it *produces* `v_first`), and it
is preserved bit-identically rather than dropped.
`bfloat16`, the dtype the source is stored in. Training context length 10240.
## Usage
The implementation ships inside this repo (`auto_map` remote code), so stock
`transformers` is all you need — no fork, no extra package:
```python
import torch
from transformers import AutoModelForCausalLM, AutoTokenizer
tokenizer = AutoTokenizer.from_pretrained("RWKV/RWKV7-Goose-World2.8-0.1B-HF", trust_remote_code=True)
model = AutoModelForCausalLM.from_pretrained("Hakureirm/rwkv7-g1h-7.2b-hf", trust_remote_code=True, dtype=torch.bfloat16)
inputs = tokenizer("The Eiffel Tower is located in the city of", return_tensors="pt")
print(tokenizer.decode(model.generate(**inputs, max_new_tokens=20)[0]))
```
(The tokenizer is the RWKV "world" tokenizer, shared by every model in the family,
so the 0.1B repo above is just a convenient place to load it from.)
The same model class is also open as an in-tree PR
([rwkv-rs/transformers-rwkv#2](https://github.com/rwkv-rs/transformers-rwkv/pull/2));
this repo is the way to use it today on released transformers.
## Runs on
Pure-PyTorch portable path, no CUDA-only code on it. The implementation is verified
greedy 20/20 against BlinkDL's own runtime on **CPU**, **Apple Silicon MPS** and
**CUDA** (see [`Hakureirm/rwkv7-0.1b-hf`](https://huggingface.co/Hakureirm/rwkv7-0.1b-hf)
for that matrix and the logit-level comparison). Optional Triton kernels engage only
on CUDA and fall back to the portable path everywhere else.
RWKV-7 is attention-free and fully recurrent: the state is a fixed-size matrix per
head, so there is no KV cache, memory is constant in context length, and each new
token costs the same as the first.
## What was verified for this size
- all 1062 source tensors **bit-identical** after conversion, none missing, none extra;
- the converter's shape check: every tensor matches the shape the inferred config
implies (32 layers, hidden 4096, 64 heads x 64, ffn 16384, LoRA ranks w/a/v/g 128/128/96/480);
- a bf16 CUDA greedy smoke run. `"The Eiffel Tower is located in the city of"` continues:
> The Eiffel Tower is located in the city of Paris, France. It is situated on the Champ de Mars, a large public
The logit-level check against BlinkDL's own runtime was run on the 0.1B conversion
(same converter, same implementation), not repeated per size.
## Reproducing the conversion
```bash
huggingface-cli download BlinkDL/rwkv7-g1 rwkv7-g1h-7.2b-20260710-ctx10240.pth --local-dir .
python src/transformers/models/rwkv7/convert_rwkv7_checkpoint_to_hf.py \
--checkpoint rwkv7-g1h-7.2b-20260710-ctx10240.pth \
--flavour native --dtype bfloat16 --output_dir ./rwkv7-g1h-7.2b-hf
```
The converter compares the checkpoint's tensor shapes against the ones the config
implies and refuses a disagreement, so a config that names a different model fails
rather than producing something that loads and generates noise.
## Citation
The model is RWKV-7 "Goose" by Bo Peng (BlinkDL) and the RWKV community. Reference
implementation: [BlinkDL/RWKV-LM](https://github.com/BlinkDL/RWKV-LM).