大模型Serverless部署实操:从零跑通按需推理服务
大模型 Serverless 部署,简单说就是把模型推理服务挂到按需计费的云函数或容器实例上,不用长期维护一台 GPU 服务器。
适合调用量波动大、预算有限、又希望快速验证模型效果的场景。
下面按准备、操作、避坑和验证四段展开,命令和配置可直接参考。
先确认你的模型和平台能不能跑 Serverless
不是所有大模型都适合 Serverless。
先看三个条件:
- 模型体积:7B 参数模型量化后通常仍有 4GB 左右,Serverless 平台对镜像或代码包有大小限制,超限就要改用对象存储挂载。
- 冷启动时间:平台从零拉起推理进程可能需要几十秒到几分钟,交互式场景要评估用户能否接受。
- 运行时长限制:部分函数计算产品单次请求最长执行时间有限,长文本生成可能被截断,需要确认平台文档中的超时上限。
准备阶段建议在本地先跑通推理,确认模型能正常加载,再迁移到 Serverless。
本地验证命令示例(以 Python 环境为例):
python -c "from transformers import AutoModelForCausalLM; m=AutoModelForCausalLM.from_pretrained('./model'); print('load ok')"
看到 load ok 说明模型文件完整。
接着把模型文件上传到对象存储,记录桶名和路径,后面配置函数时要用。
配置函数入口和依赖层
Serverless 平台一般要求提供函数入口文件。
以常见的 Python 运行时为例,新建 handler.py:
import json
from transformers import pipeline
pipe = None
def init_model():
global pipe
if pipe is None:
pipe = pipeline("text-generation", model="/mnt/model", device=-1)
return pipe
def handler(event, context):
body = json.loads(event or "{}")
prompt = body.get("prompt", "你好")
model = init_model()
out = model(prompt, max_new_tokens=128)
return {"result": out[0]["generated_text"]}
依赖安装不要放在函数代码里现场执行,改用平台提供的层(Layer)或自定义镜像。
常见做法是把 transformers、torch 和模型运行库打进镜像,模型文件单独挂载到 /mnt/model。
如果平台支持容器镜像,Dockerfile 关键片段:
FROM python:3.10-slim
RUN pip install --no-cache-dir transformers torch
COPY handler.py /app/handler.py
WORKDIR /app
构建后推送到平台镜像仓库,
再把函数入口设置为 handler.handler。注意:device=-1 表示 CPU 推理,
如果平台提供 GPU 实例,
改为 device=0,
并确认镜像内 CUDA 版本与平台驱动匹配。
三个容易踩的坑
第一,模型路径写死成本地绝对路径。
Serverless 实例每次冷启动文件系统可能不同,模型必须放在对象存储挂载目录或镜像内固定路径,否则报 OSError: Can't load model。
第二,依赖包体积超限。torch 完整包很大,优先选平台预置的深度学习镜像,或者只安装 CPU 版 torch,能显著减小镜像体积。
第三,忽略并发和内存上限。
函数内存设得太小,模型加载阶段就会 OOM 被杀。
7B 量化模型建议至少给 8GB 内存,具体以平台规格为准,先小流量测试再调整。
部署后怎么验证是否真正可用
函数发布后,用平台控制台的测试事件或命令行调用一次,传入:
{"prompt": "用一句话解释什么是对象存储"}
预期返回包含 result 字段的 JSON,且内容与提示相关。
如果返回超时,先看函数日志里的冷启动耗时;
如果返回空结果,检查模型路径和 max_new_tokens 是否设置过小。
连续调用两次,观察第二次是否明显变快,以此判断实例是否被复用。
对延迟敏感的场景,可以配置平台的最小实例数来减少冷启动,但会增加费用,需要结合预算权衡。
常见疑问
Serverless 部署大模型和买 GPU 服务器哪个更划算? 调用量低且波动大时 Serverless 按需计费更省;
长期高并发、要求稳定低延迟时,常驻 GPU 服务器通常更可控。
CPU 实例能跑大模型吗? 可以跑小参数或量化模型,但生成速度较慢,适合测试和低频任务,不适合实时对话。
模型更新后要重新部署吗? 如果模型放在对象存储挂载目录,替换文件后重启函数实例即可;
如果打进镜像,则需要重新构建并发布版本。
大模型 Serverless 部署的核心是把模型文件、依赖和入口函数分开管理,先小流量验证冷启动和内存是否够用,再逐步调整规格。
按本文步骤执行后,如果遇到报错,优先检查模型路径、镜像体积和函数超时设置这三项。