3. 使用Hugging Face Transformers加载预训练模型

使用Hugging Face Transformers加载预训练模型 学习卡片

任务目标

使用 transformers 库加载 Hugging Face 上的预训练 模型,并基于给定提示词生成一段连贯文本,验证模型加载与推理链路可用。

环境与依赖

需要 Python 3.8+,并安装以下依赖(建议使用虚拟环境):

pip install transformers torch

首次运行时会自动从 Hugging Face Hub 下载 模型权重(约 500MB),请确保网络可访问 huggingface.co。

完整实现代码

以下代码完成模型加载、分词、生成与解码全流程:

from transformers import AutoTokenizer, AutoModelForCausalLM

# 1. 加载预训练模型与分词器(首次运行会自动下载)
model_name = ""
tokenizer = AutoTokenizer.from_pretrained(model_name)
model = AutoModelForCausalLM.from_pretrained(model_name)

# 2. 添加填充(无pad_,生成任务需要)
tokenizer.pad_ = tokenizer.eos_

# 3. 输入提示词并编码
prompt = "In the future, artificial intelligence will"
inputs = tokenizer(prompt, return_tensors="pt")

# 4. 生成文本(关闭采样以获得确定性输出,便于验证)
outputs = model.generate(
    inputs.input_ids,
    attention_mask=inputs.attention_mask,
    max_new_tokens=50,
    do_sample=False,          # 贪心解码,结果可复现
    pad__id=tokenizer.eos__id
)

# 5. 解码并打印结果
generated = tokenizer.decode(outputs[0], skip_special_tokens=True)
print(generated)

运行方式

将上述代码保存为 load_.py,在终端执行:

python load_.py

验证方法与通过标准

程序正常执行且满足以下条件即判定通过:

  • 无报错退出,模型加载与推理过程完整执行;
  • 输出文本以输入提示词 "In the future, artificial intelligence will" 开头;
  • 输出文本长度明显大于输入(新增约 50 个 ),且为通顺的英文句子,而非重复乱码或空输出。

由于采用贪心解码且未设置随机种子,输出结果确定且可复现。预期输出(与代码逻辑严格一致)示例开头为:

In the future, artificial intelligence will be able to...

实际输出可能因 transformers 库版本微调略有差异,但结构应与此类似。

常见问题

  • 下载超时:可设置环境变量 HF_ENDPOINT=https://hf-mirror.com 使用镜像站;
  • 显存不足(CPU/GPU): 约 500MB 参数,CPU 也可运行,但生成速度较慢;若 GPU 显存不足,可改用 -small(默认即此规格)或 distilgpt2 更轻量模型;
  • 无网络环境:需提前手动下载模型目录并设置 model_name 为本地路径。