下载和运行 LLM详细说明
目录
- 一、核心概念:你需要加载两样东西
- 二、准备工作:理解 Hugging Face 平台
- 三、实战:下载并运行你的第一个 LLM
- 四、设备选择:GPU vs CPU
- 五、完整的可运行示例
- 六、常见问题排查
- 七、关键要点总结
- 八、下一步
一、核心概念:你需要加载两样东西
在运行 LLM 之前,先理解一个重要事实:你需要加载两个独立的组件:
# 类比:就像前端开发需要同时加载
// 1. Vue/React 框架本身
// 2. Babel 转译器
# Python 中运行 LLM 需要
1. 模型本身(Model) # 类似框架本身
2. 分词器(Tokenizer) # 类似转译器
为什么需要两个?
- 分词器:把文本切分成模型能理解的“词元“(Token)
- 模型:真正进行推理和生成文本的“大脑“
二、准备工作:理解 Hugging Face 平台
2.1 什么是 Hugging Face?
想象 Hugging Face 就是 AI 模型界的 npm / GitHub:
// 类比前端生态
npm install react → 下载 React 包
github.com/facebook/react → 查看源码
// AI 模型生态
pip install transformers → 下载 Transformers 库
huggingface.co/microsoft/Phi-3-mini → 查看模型
核心数据:
- 平台上有 80 万+ 个模型
- 覆盖 LLM、计算机视觉、音频处理等
- 几乎所有开源 LLM 都能找到
2.2 模型的“地址“
每个模型都有唯一的 ID,格式类似 GitHub 仓库:
组织名/模型名
microsoft/Phi-3-mini-4k-instruct
↓ ↓
谁发布的 模型名称
三、实战:下载并运行你的第一个 LLM
步骤 1:安装依赖
# 安装 transformers 库(类似 npm install)
pip install transformers torch
步骤 2:加载模型和分词器
from transformers import AutoModelForCausalLM, AutoTokenizer
# 模型的"地址"(类似 npm 包名)
model_id = "microsoft/Phi-3-mini-4k-instruct"
# 1. 加载分词器(文本 → 数字的转换器)
tokenizer = AutoTokenizer.from_pretrained(model_id)
# 2. 加载模型本身
model = AutoModelForCausalLM.from_pretrained(
model_id,
device_map="cuda", # 使用 GPU(如果有的话)
torch_dtype="auto", # 自动选择数据类型
trust_remote_code=True, # 信任远程代码
)
参数详解:
| 参数 | 作用 | 类比前端概念 |
|---|---|---|
device_map | 指定运行设备 | target: 'node' vs 'browser' |
torch_dtype | 数据精度 | number vs bigint |
trust_remote_code | 允许执行远程代码 | eval() 的安全开关 |
步骤 3:第一次运行时会发生什么?
# 第一次运行时的控制台输出:
Downloading (…)okenizer_config.json: 100%|████| 3.12k/3.12k
Downloading (…)l-00001-of-00002.safetensors: 45%|███
下载内容包括:
- 模型权重文件(几个 GB)
- 分词器配置文件
- 模型配置文件
下载时间:取决于网速,通常需要几分钟
存储位置(类似 node_modules):
~/.cache/huggingface/hub/
└── models--microsoft--Phi-3-mini-4k-instruct/
├── snapshots/
└── refs/
四、设备选择:GPU vs CPU
4.1 如何选择设备
# 方案 1:使用 GPU(推荐)
model = AutoModelForCausalLM.from_pretrained(
model_id,
device_map="cuda" # NVIDIA GPU
)
# 方案 2:使用 CPU(慢但兼容性好)
model = AutoModelForCausalLM.from_pretrained(
model_id,
device_map="cpu" # 任何电脑都能跑
)
# 方案 3:自动选择
model = AutoModelForCausalLM.from_pretrained(
model_id,
device_map="auto" # 有 GPU 用 GPU,没有用 CPU
)
4.2 硬件需求
对于 Phi-3-mini 模型:
| 配置 | 最低要求 | 推荐配置 |
|---|---|---|
| GPU 显存 | 6GB(量化后) | 8GB+ |
| 内存 | 8GB | 16GB |
| 存储空间 | 10GB | 20GB+ |
没有 GPU 怎么办?
- 使用 Google Colab 免费 GPU(T4,16GB 显存)
- 使用 CPU 模式(会很慢)
- 使用量化模型(减少显存需求)
五、完整的可运行示例
from transformers import AutoModelForCausalLM, AutoTokenizer
# ===== 第一步:加载模型 =====
print("📥 正在下载模型...")
model_id = "microsoft/Phi-3-mini-4k-instruct"
tokenizer = AutoTokenizer.from_pretrained(model_id)
model = AutoModelForCausalLM.from_pretrained(
model_id,
device_map="auto", # 自动选择设备
torch_dtype="auto",
trust_remote_code=True,
)
print("✅ 模型加载完成!")
# ===== 第二步:准备输入 =====
messages = [
{"role": "user", "content": "Hello, how are you?"}
]
# ===== 第三步:生成文本 =====
# 将消息转换为模型需要的格式
inputs = tokenizer.apply_chat_template(
messages,
return_tensors="pt"
).to(model.device)
# 生成响应
outputs = model.generate(inputs, max_new_tokens=100)
# 解码输出
response = tokenizer.decode(outputs[0], skip_special_tokens=True)
print("🤖 AI 回复:", response)
六、常见问题排查
问题 1:CUDA out of memory
# 解决方案:使用更小的模型或量化
model = AutoModelForCausalLM.from_pretrained(
model_id,
device_map="auto",
load_in_8bit=True, # 8位量化,减少显存占用
)
问题 2:下载太慢
# 方案 1:使用镜像站(国内)
import os
os.environ['HF_ENDPOINT'] = 'https://hf-mirror.com'
# 方案 2:手动下载后加载本地文件
model = AutoModelForCausalLM.from_pretrained(
"/path/to/local/model"
)
问题 3:如何确认模型是否在 GPU 上运行?
# 检查模型设备
print(f"模型在设备: {model.device}")
# 检查 CUDA 是否可用
import torch
print(f"CUDA 可用: {torch.cuda.is_available()}")
print(f"GPU 名称: {torch.cuda.get_device_name(0)}")
七、关键要点总结
- 两个必需组件:模型 + 分词器
- 下载来源:Hugging Face 平台
- 模型标识:
组织名/模型名格式 - 首次运行:需要下载模型文件(几分钟)
- 硬件要求:建议 8GB+ 显存的 GPU
- 免费方案:Google Colab 提供免费 GPU
八、下一步
现在你已经成功加载了模型,接下来可以:
- 学习如何使用
pipeline简化调用(见 1.9 节) - 理解分词器的工作原理(见 2.1.3 节)
- 探索不同的生成参数(见第 6 章)
开发者小贴士:
- 第一次运行慢是正常的(在下载模型)
- 后续运行会快很多(使用缓存)
- 建议先在 Colab 上试验,再考虑本地部署