Views
No views yet
Note: the weights here are an early snapshot and will be refreshed as training continues.
LilyNota — a hierarchical, two-level NotaGen-style decoder (Llama backbone):| value | |
|---|---|
| params | ~196 M |
| base type | llama (bf16 trained) |
| patch size | 16 tokens |
| vocab | 256 |
| context | 1024 patches |
model_*.chkpt torch training checkpoint (full precision)
.state.yaml training / architecture config
tokenizer.json tokenizer
onnx/
patch_kv_int8.onnx patch decoder, int8, with KV-cache (incremental)
token_kv_int8.onnx token decoder, int8, with KV-cache (incremental)
wte.npy token-embedding table [vocab, hidden]
geometry.json patch size, special ids, per-level KV geometryonnx/ bundle is torch-free: a generator needs only onnxruntime + numpy
to run it (the embedding lookup and sampling live outside the graph). int8 dynamic
quantization plus a two-level KV cache make it a fast CPU inference path.StreamingLilyletGenerator in the
LilyScript Space
(lilyscript/generator.py). Sketch:1from lilyscript.generator import StreamingLilyletGenerator
2
3gen = StreamingLilyletGenerator(model_dir='onnx', asset_dir='onnx')
4prompt = '%Beethoven, Ludwig van\n%Classical\n%Keyboard'
5for raw, pretty, done in gen.generate_stream(prompt_text=prompt, measures=8, temperature=1.0, seed=42):
6 pass # `pretty` is measure-segmented Lilylet; streams one patch at a time
7print(pretty)%Beethoven, Ludwig van
%Classical
\key g \major \time 3/4 \clef "treble" \tempo 4=54 ^\markup "Andante con moto" r2. \\
...