AI大模型部署到本地算力机,API接口开发
想在本地算力机上运行AI大模型并对外提供API接口,核心流程是:准备Python环境与GPU驱动、用Ollama或Transformers加载模型、通过FastAPI封装推理接口、最后用curl或Python脚本验证调用。
下面按零基础也能照做的顺序展开。
环境准备:确认算力与依赖
先确认你的机器满足最低要求:NVIDIA显卡建议显存不低于8GB(7B模型量化后可运行),系统为Ubuntu 20.04或22.04。
执行以下命令检查驱动和CUDA:
nvidia-smi
nvcc --version
如果nvidia-smi报错,先安装显卡驱动。
推荐用conda管理Python环境:
conda create -n llm python=3.10 -y
conda activate llm
pip install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu118
注意:CUDA版本需与PyTorch匹配,否则加载模型时会提示CUDA不可用。
加载模型:选择适合本地算力的方式
本地部署大模型有两种主流方案:Ollama(适合快速启动)和Transformers(适合深度定制)。
方案一:Ollama
curl -fsSL https://ollama.com/install.sh | sh
ollama pull qwen2:7b
ollama run qwen2:7b
能正常对话即表示模型加载成功。
Ollama默认监听11434端口,可直接作为API使用。
方案二:Transformers + FastAPI
from transformers import AutoModelForCausalLM, AutoTokenizer
model_name = "Qwen/Qwen2-7B-Instruct"
tokenizer = AutoTokenizer.from_pretrained(model_name, trust_remote_code=True)
model = AutoModelForCausalLM.from_pretrained(model_name, device_map="auto", trust_remote_code=True)
device_map="auto"会自动分配GPU和CPU,显存不足时会卸载部分层到内存。
开发API接口:用FastAPI封装推理服务
以下代码创建一个简单的对话接口,保存为api_server.py:
from fastapi import FastAPI
from pydantic import BaseModel
import uvicorn
app = FastAPI()
class Request(BaseModel):
prompt: str
@app.post("/generate")
def generate(req: Request):
inputs = tokenizer(req.prompt, return_tensors="pt").to(model.device)
outputs = model.generate(**inputs, max_new_tokens=200)
reply = tokenizer.decode(outputs[0], skip_special_tokens=True)
return {"response": reply}
if __name__ == "__main__":
uvicorn.run(app, host="0.0.0.0", port=8000)
启动服务:
python api_server.py
若使用Ollama,可直接调用其内置API,无需额外封装:
curl http://localhost:11434/api/generate -d '{"model":"qwen2:7b","prompt":"你好"}'
验证与排错:确保接口稳定可用
用curl测试接口:
curl -X POST http://localhost:8000/generate -H "Content-Type: application/json" -d '{"prompt":"介绍一下你自己"}'
预期返回JSON格式的文本。
常见问题:
- CUDA out of memory:减小
max_new_tokens或使用4bit量化加载。 - 端口被占用:更换端口,如
port=8001。 - 响应慢:检查是否使用了GPU,
model.device应显示cuda。
避坑提醒:生产环境不要直接用uvicorn单进程,建议加--workers 2并用Nginx反向代理;
公网暴露时务必加鉴权,避免被滥用。
关键结论与后续建议
本地部署大模型并开发API接口,核心是环境匹配、模型加载和接口封装三步。如果显存不足8GB,优先选Ollama加量化模型;
如果需要定制推理逻辑,用Transformers加FastAPI更灵活。 验证时先用简单请求测试,再逐步增加并发。
遇到报错先查CUDA版本和显存占用,多数问题出在这两处。
FAQ
没有NVIDIA显卡能部署吗?
可以,但只能用CPU推理,速度较慢。建议选小参数模型如Qwen2-1.5B。
API接口如何加鉴权?
在FastAPI中用Depends注入API Key校验,或直接在Nginx层加Basic Auth。
模型下载太慢怎么办?
使用国内镜像源,如export HF_ENDPOINT=https://hf-mirror.com后再下载。