40 lines
1.0 KiB
Python
40 lines
1.0 KiB
Python
from transformers import AutoTokenizer, AutoModelForCausalLM, TextStreamer
|
||
import torch
|
||
|
||
# 设置模型路径
|
||
model_path = "./"
|
||
|
||
# 加载分词器和模型
|
||
tokenizer = AutoTokenizer.from_pretrained(model_path)
|
||
|
||
# 加载模型并移动到可用设备(GPU/CPU)
|
||
device = "cuda" if torch.cuda.is_available() else "cpu"
|
||
model = AutoModelForCausalLM.from_pretrained(model_path).to(device)
|
||
|
||
# model = AutoModelForCausalLM.from_pretrained(
|
||
# model_path,
|
||
# trust_remote_code=True,
|
||
# torch_dtype=torch.float16,
|
||
# device_map="auto"
|
||
# )
|
||
|
||
# 创建流式输出器
|
||
streamer = TextStreamer(tokenizer, skip_prompt=True, skip_special_tokens=True)
|
||
|
||
# 推理示例
|
||
prompt = "喜欢主人吗"
|
||
inputs = tokenizer(prompt, return_tensors="pt").to(device)
|
||
|
||
# 生成(使用 streamer)
|
||
print("输入:", prompt)
|
||
print("输出: ", end="", flush=True)
|
||
|
||
outputs = model.generate(
|
||
**inputs,
|
||
max_new_tokens=512,
|
||
# temperature=0.7,
|
||
# top_p=0.9,
|
||
# repetition_penalty=1.0,
|
||
# do_sample=True,
|
||
streamer=streamer
|
||
) |