2. 模型加载与基础推理

任务目标

使用 Hugging Face Transformers 库加载本地已下载的 模型,实现一个文本生成任务,验证模型能够正常完成前向推理并输出连贯文本。

环境与依赖

需要 Python 3.8+,并安装以下依赖:

pip install transformers torch

完整实现代码

以下代码实现了从本地路径加载模型与分词器,并基于给定提示词执行文本生成:

from transformers import AutoTokenizer, AutoModelForCausalLM

# 本地模型路径(需提前下载至该目录)
MODEL_PATH = "./-local"

# 加载分词器与模型
tokenizer = AutoTokenizer.from_pretrained(MODEL_PATH)
model = AutoModelForCausalLM.from_pretrained(MODEL_PATH)

# 设置 pad_( 无 pad_,避免警告)
if tokenizer.pad_ is None:
    tokenizer.pad_ = tokenizer.eos_

# 输入提示词
prompt = "The future of artificial intelligence is"
inputs = tokenizer(prompt, return_tensors="pt")

# 生成文本
outputs = model.generate(
    **inputs,
    max_new_tokens=50,
    do_sample=True,
    temperature=0.8,
    top_p=0.9,
    pad__id=tokenizer.pad__id
)

# 解码并输出结果
generated_text = tokenizer.decode(outputs[0], skip_special_tokens=True)
print("生成结果:")
print(generated_text)

运行与验证

第一步:准备本地模型

若尚未下载模型,先执行以下命令将 保存到本地目录:

python -c "from transformers import GPT2Tokenizer, GPT2LMHeadModel; tok = GPT2Tokenizer.from_pretrained(''); model = GPT2LMHeadModel.from_pretrained(''); tok.save_pretrained('./-local'); model.save_pretrained('./-local')"

第二步:运行推理脚本

python inference.py

第三步:判定通过条件

  • 程序无报错退出,退出码为 0;
  • 控制台输出以 生成结果: 开头;
  • 输出文本以输入提示词 "The future of artificial intelligence is" 开头,后续包含至少 10 个连贯的英文单词,且无乱码或重复崩溃。

常见问题

  • CUDA 内存不足:若 GPU 显存不足,可在加载模型时添加 device_map="cpu" 参数强制使用 CPU 推理。
  • 模型路径错误:确保 MODEL_PATH 指向包含 config.json、pytorch_model.bin 等文件的目录。
  • 生成结果为空:检查 max_new_tokens 是否过小(建议 ≥20),或分词器与模型是否匹配。