使用 Phi-3 模型生成第一段文本
#2025/12/27 #ai
但你知道如何在自己的电脑上运行一个开源的
LLM吗?本文将手把手教你使用 Phi-3 模型生成你的第一段 AI 文本。
目录
为什么选择 Phi-3 ?
- 小而强:只有 38 亿参数,但性能相当不错
- 硬件友好:可以在显存小于 8GB 的设备上运行(如果量化,甚至小于 6GB)
- 开源免费:采用 MIT 许可证,可以随意用于商业用途
体积小但性能够用,非常适合个人学习和开发。
准备工作:Hugging Face 平台
在下载模型之前,你需要了解 Hugging Face:
- 这是一个开源 AI 模型的“应用商店“,拥有超过 80 万个模型
- 你可以在这里找到几乎所有开源的 LLM、计算机视觉模型、音频处理模型等
- Hugging Face 还提供了
Transformers这个强大的 Python 库,让加载模型变得非常简单
核心架构:模型生成的“双子星”
在代码加载时,你会发现我们加载了两个东西。这对于初学者来说是第一个“坑”:
- 分词器(Tokenizer):
- 预处理器。
- 模型看不懂汉字或英文,它只能看懂数字。Tokenizer 的作用就是把字符串
Hello转换成 ID 数组[15496]。
- 模型看不懂汉字或英文,它只能看懂数字。Tokenizer 的作用就是把字符串
- 预处理器。
- 模型本身(Model):
- 核心算力。
- 负责接收
ID 数组,进行复杂的数学计算(还记得我们聊过的向量吗?),然后预测下一个最可能的数字。
- 负责接收
- 核心算力。
动手实践:三步生成文本
第一步:加载模型和分词器
使用 LLM 时,你需要加载两个组件:
- 生成模型本身:负责生成文本
- 分词器(Tokenizer):负责将文本切分成模型能理解的“词元“
from transformers import AutoModelForCausalLM, AutoTokenizer
# 加载模型和分词器
# 加载模型:注意 device_map="cuda" 意味着我们把模型丢进 NVIDIA 显卡里
model = AutoModelForCausalLM.from_pretrained(
"microsoft/Phi-3-mini-4k-instruct",
device_map="cuda", # 使用 GPU,如果没有可以改为 "cpu"
torch_dtype="auto",
trust_remote_code=True,
)
tokenizer = AutoTokenizer.from_pretrained("microsoft/Phi-3-mini-4k-instruct")
小贴士:第一次运行时会自动下载模型文件(约几个 GB),需要等待几分钟。
第二步:创建文本生成流水线
Hugging Face 提供了一个超级方便的工具——pipeline,它把模型、分词器和生成过程打包成一个函数,用起来非常简单:
pipeline是最友好的 API。它把加载、输入转换、生成、输出解码全部封装在了一起。
from transformers import pipeline
# 创建流水线
generator = pipeline(
"text-generation",
model=model,
tokenizer=tokenizer,
return_full_text=False, # 只返回生成的内容,不包含提示词 即只拿答案,不要复读我的问题
max_new_tokens=500, # 最多生成 500 个词元,限制生成长度,防止模型“废话”停不下来
do_sample=False # 不使用随机采样,保证结果稳定,贪婪搜索:永远选概率最高的那个词,保证输出稳定
)
参数说明:
return_full_text=False:只输出 AI 生成的内容,不重复你输入的提示词max_new_tokens=500:限制生成长度,避免模型“停不下来“do_sample=False:每次都选择概率最高的词,保证输出稳定(设为True可以增加创造性)
第三步:生成你的第一段文本
现在,让我们让 AI 讲一个关于鸡的笑话:
# 提示词(用户输入)
# 定义对话结构:LLM 习惯用这种“角色/内容”的字典列表
messages = [
{"role": "user", "content": "Create a funny joke about chickens."}
]
# 生成输出
output = generator(messages)
print(output[0]["generated_text"])
输出结果:
Why don't chickens like to go to the gym?
Because they can't crack the egg-sistence of it!
(翻译:为什么鸡不喜欢去健身房?因为它们无法突破“蛋”生(存在)的真谛!)
恭喜!你已经成功使用 Phi-3 生成了第一段 AI 文本!
理解背后的原理
分词器的作用
分词器就像一个“翻译官“,它负责:
- 把你输入的文本(比如 “Hello world”)切分成模型能理解的“词元“
- 将这些词元转换成数字 ID
- 把这些 ID 喂给模型
提示词模板
注意到 messages 的格式了吗?这是一个对话模板:
role: "user"表示这是用户说的话content是具体的内容
Phi-3 在训练时使用了特殊的对话格式,底层会自动转换成类似这样的模板:
<s><|user|>
Create a funny joke about chickens.<|end|>
<|assistant|>
这些特殊标记帮助模型区分“谁在说话“。
硬件要求
要在本地运行 Phi-3,建议的最低配置是:
- GPU 显存:至少 8GB(如 NVIDIA T4)
- 内存:16GB 以上
- 存储空间:约 10GB(用于存储模型文件)
如果你的电脑配置不够,可以使用 Google Colab 提供的免费 GPU 环境。
下一步学习
现在你已经掌握了基础用法,可以尝试:
- 修改提示词,让模型做其他任务(翻译、写代码、总结文本等)
- 调整
temperature和top_p参数,探索更有创意的输出 - 尝试其他开源模型(如 Llama 3、Mistral 等)
总结
通过本文,你学会了:
- ✅ 使用 Hugging Face 下载和加载开源 LLM
- ✅ 理解模型和分词器的作用
- ✅ 使用
pipeline简化文本生成流程 - ✅ 成功运行
Phi-3并生成你的第一段 AI 文本
大语言模型的世界远不止于此,这只是一个开始。随着你对模型原理的深入理解,你将能够构建更复杂、更强大的 AI 应用。