Autoregressive Generation
Generator (high-level)
Generator wraps a trained checkpoint and exposes three generation modes:
from dantinox import Generator
gen = Generator("runs/ar_mha_256d_12b_Dense") # local run dir
gen = Generator("my-org/dantinox-model") # HuggingFace Hub
Single prompt
text = gen.generate(
"Nel mezzo del cammin ",
max_new_tokens = 200,
temperature = 1.0,
top_p = 0.9,
use_cache = True,
)
Batched
texts = gen.generate_batch(
["Prompt A", "Prompt B", "Prompt C"],
max_new_tokens = 128,
)
Streaming
for chunk in gen.stream("Nel mezzo del cammin ", max_new_tokens=200):
print(chunk, end="", flush=True)
CLI
dantinox generate \
--run_dir runs/ar_mha_256d_12b_Dense \
--prompt "Nel mezzo del cammin " \
--max_new_tokens 200 \
--temperature 1.0 \
--top_p 0.9 \
--stream
Sampling Strategies
Strategy |
CLI flags |
API kwargs |
|---|---|---|
Greedy |
|
|
Temperature |
|
|
Top-p (nucleus) |
|
|
Top-k |
|
|
Strategies can be combined: top_k=50, top_p=0.9 first restricts to top-50 tokens, then applies nucleus sampling.
Low-level API
from dantinox.core.generation import generate
import jax.numpy as jnp
tokens = generate(
model,
prompt_ids, # [B, T_prompt] int32
max_generations = 128,
use_cache = True,
top_p = 0.9,
temperature = 1.0,
seed = 42,
)
# tokens: [B, T_prompt + max_generations]