最近大语言模型越来越火,但很多朋友发现一个问题:网上的API要么收费贵,要么响应慢,还总担心隐私问题。这时候本地部署就成了一个很实在的选择。谷歌开源的Gemma系列模型特别适合个人开发者,尤其是2B版本,在消费级显卡上就能跑起来。
我用的是一张RTX 4070Ti显卡,实测下来2B版本完全够用。本地部署最大的好处就是数据不出本地,响应速度飞快,而且想怎么改就怎么改。比如你可以随时调整生成文本的长度、修改提示词模板,这些在在线API里往往都是受限的。
先说最重要的硬件问题。Gemma 2B模型在FP16精度下需要约4GB显存,这意味着大多数中端显卡都能胜任。我用RTX 4070Ti(12GB显存)测试时,显存占用大概在3.8GB左右,完全无压力。
如果你的显卡显存小于8GB,建议做两件事:
推荐使用conda创建独立环境:
bash复制conda create -n gemma_env python=3.10
conda activate gemma_env
pip install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu118
这里有个小技巧:安装PyTorch时一定要选择与CUDA版本匹配的wheel包。我一开始没注意这个,结果白白浪费了半天时间排查问题。
首先需要去Kaggle获取模型权重:
下载完成后你会得到一个压缩包,解压后目录结构应该是这样的:
code复制gemma-2b/
├── gemma-2b.ckpt
└── tokenizer.model
克隆官方PyTorch实现:
bash复制git clone https://github.com/google/gemma_pytorch
cd gemma_pytorch
pip install -r requirements.txt
这里有个坑要注意:官方代码库更新比较频繁,建议checkout到最新稳定版本。我遇到过主分支代码突然不兼容的情况,后来锁定到特定commit才解决。
创建一个新的Python文件,比如叫gemma_deploy.py,写入以下配置:
python复制import sys
sys.path.append("./gemma_pytorch") # 指向你的代码库路径
from gemma_pytorch.gemma.config import get_config_for_2b
from gemma_pytorch.gemma.model import GemmaForCausalLM
from gemma_pytorch.gemma.tokenizer import Tokenizer
import torch
# 基础配置
VARIANT = "2b"
MACHINE_TYPE = "cuda"
weights_dir = "./gemma-2b" # 模型权重路径
# 加载配置
model_config = get_config_for_2b()
model_config.tokenizer = f"{weights_dir}/tokenizer.model"
device = torch.device(MACHINE_TYPE)
# 加载模型
model = GemmaForCausalLM(model_config)
model.load_weights(f"{weights_dir}/gemma-{VARIANT}.ckpt")
model = model.to(device).eval()
来做个简单测试:
python复制def generate_text(prompt):
chat_template = "<start_of_turn>user\n{prompt}<end_of_turn>\n<start_of_turn>model\n"
output = model.generate(
chat_template.format(prompt=prompt),
device=device,
output_len=100,
)
return output
print(generate_text("请用简单的话解释人工智能"))
第一次运行可能会比较慢,因为要初始化CUDA上下文。我实测生成100个token大约需要3-5秒,后续请求会更快。
如果遇到CUDA out of memory错误,可以尝试:
output_len参数值temperature=0.7参数降低计算复杂度有时会遇到分词器路径问题,建议:
想要更快响应可以尝试:
torch.compile()包装模型torch.backends.cudnn.benchmark = True模型跑起来只是第一步,真正发挥价值还需要:
我最近在做一个本地知识问答系统,就是把公司内部文档喂给Gemma,效果比直接用公开API好很多。整个过程虽然踩了不少坑,但看到最终成果还是很有成就感的。