ks-byte-lm-spacebyte-transformers / generation_ksbyte.py
Omarrran's picture
Add Transformers-compatible ks_byte_lm SpaceByte release
45121cf verified
Raw
History Blame Contribute Delete
1.15 kB
import torch
from transformers import AutoModelForCausalLM, AutoTokenizer
def generate_text(model_or_repo, prompt, max_new_tokens=200, temperature=0.8, top_k=50, device="auto"):
"""Convenience helper for this byte-level model."""
if isinstance(model_or_repo, str):
model = AutoModelForCausalLM.from_pretrained(model_or_repo, trust_remote_code=True)
tok = AutoTokenizer.from_pretrained(model_or_repo, trust_remote_code=True)
else:
model = model_or_repo
tok = None
if device == "auto":
device = "cuda" if torch.cuda.is_available() else "cpu"
model.to(device).eval()
if tok is None:
from tokenization_ksbyte import KsByteTokenizer
tok = KsByteTokenizer()
inputs = tok(prompt, return_tensors="pt").to(device)
if hasattr(model, "generate_bytes"):
out = model.generate_bytes(inputs["input_ids"], max_new_tokens=max_new_tokens, temperature=temperature, top_k=top_k)
else:
out = model.generate(**inputs, max_new_tokens=max_new_tokens, do_sample=True, temperature=temperature, top_k=top_k)
return tok.decode(out[0], skip_special_tokens=True)