第 1 章 · 语言模型导论
本章目标:探索激动人心的 Language AI 领域,加载并运行你的第一个语言模型 Phi-3,完成一次文本生成。
1.1 关于本章与本书
本章是《Hands-On Large Language Models》(Jay Alammar 与 Maarten Grootendorst 著,O'Reilly 出版)第 1 章的配套笔记本。全书用大量可视化插图讲解 LLM 的内部原理与实践:

上图为本书封面。
全书共 12 章,从 Token 与嵌入讲起,逐步深入分类、聚类、提示工程、语义搜索、多模态与微调:

上图为全书 12 章结构总览。
你也可以在 Google Colab 中打开本章原始笔记本运行:Open In Colab。
1.2 [可选] 在 Colab 中安装依赖
如果你在 Google Colab(或任何其他云厂商)上查看本笔记本,需要取消注释并运行下面的代码块来安装本章依赖:
# %%capture
# !pip install transformers==4.41.2 accelerate==0.31.0💡 注意:我们需要 GPU 来运行本笔记本中的示例。在 Google Colab 中,依次进入 Runtime > Change runtime type > Hardware accelerator > GPU > GPU type > T4。
1.3 Phi-3:加载模型与分词器
第一步是把模型加载到 GPU 上以获得更快的推理速度。注意我们分别加载模型和分词器(尽管这并非总是必需)。
from transformers import AutoModelForCausalLM, AutoTokenizer
# Load model and tokenizer
model = AutoModelForCausalLM.from_pretrained(
"microsoft/Phi-3-mini-4k-instruct",
device_map="cuda",
torch_dtype="auto",
trust_remote_code=False,
)
tokenizer = AutoTokenizer.from_pretrained("microsoft/Phi-3-mini-4k-instruct")1.4 用 pipeline 封装生成器
虽然现在可以直接使用模型和分词器,但把它们包装进一个 pipeline 对象会方便得多:
from transformers import pipeline
# Create a pipeline
generator = pipeline(
"text-generation",
model=model,
tokenizer=tokenizer,
return_full_text=False,
max_new_tokens=500,
do_sample=False
)1.5 第一次对话:让模型讲个笑话
最后,我们以 user 身份创建提示词并交给模型:
# The prompt (user input / query)
messages = [
{"role": "user", "content": "Create a funny joke about chickens."}
]
# Generate output
output = generator(messages)
print(output[0]["generated_text"])模型会返回一段关于鸡的笑话文本。messages 采用对话角色格式(role + content),return_full_text=False 表示只返回新生成的部分而不包含输入提示词。
1.6 本章小结
- 《Hands-On Large Language Models》全书 12 章,从 Token 嵌入到微调生成模型层层递进;
- 使用
AutoModelForCausalLM与AutoTokenizer分别加载模型与分词器(示例为microsoft/Phi-3-mini-4k-instruct),并通过device_map="cuda"放到 GPU 上; pipeline("text-generation", ...)是最便捷的推理封装,max_new_tokens=500控制生成长度,do_sample=False表示贪心解码;- 对话式输入使用
messages列表,每条消息包含role与content字段; - 运行示例需要 GPU(如 Colab 的 T4)。
🧪 随堂测验
点击你认为正确的选项。答错时会展示正确答案与原因解析。
1. 本章用于加载预训练语言模型的核心类是?
2. pipeline 构造参数中 return_full_text=False 的作用是?
3. 关于 messages 列表的格式,下列说法正确的是?
4. 在 Google Colab 上运行本章示例时,官方建议的硬件配置是?
🛠️ 动手实践
- 按 1.2 节安装依赖后,在 GPU 环境(本地或 Colab T4)中完整运行 1.3–1.5 节代码,把
messages中的提示词换成中文问题,观察模型输出。 - 将
pipeline的do_sample=True并添加temperature=0.7参数重新生成笑话,对比贪心解码(do_sample=False)与采样解码两次输出的差异。 - 把
max_new_tokens分别改为 50 和 500 各运行一次,记录生成长度的变化,并解释return_full_text=False与True时输出的区别。