from pathlib import Path import torch from transformers import AutoModelForCausalLM, AutoTokenizer MODEL_PATH = "." MODEL_SUBFOLDER = "hf" PROMPT = "There was a little" SEED = 0 def main() -> None: device = torch.device("cuda" if torch.cuda.is_available() else "cpu") model_dir = Path(MODEL_PATH) / MODEL_SUBFOLDER tokenizer = AutoTokenizer.from_pretrained(model_dir) model = AutoModelForCausalLM.from_pretrained( model_dir, dtype=torch.float32, ).to(device) model.eval() input_ids = torch.tensor( [ [tokenizer.bos_token_id] + tokenizer.encode(PROMPT, add_special_tokens=False) ], dtype=torch.long, device=device, ) torch.manual_seed(SEED) if device.type == "cuda": torch.cuda.manual_seed_all(SEED) with torch.no_grad(): output = model.generate( input_ids=input_ids, max_new_tokens=100, do_sample=True, temperature=0.8, top_p=0.95, top_k=40, repetition_penalty=1.1, pad_token_id=tokenizer.pad_token_id, eos_token_id=tokenizer.eos_token_id, ) print(tokenizer.decode(output[0].tolist(), skip_special_tokens=True)) if __name__ == "__main__": main()