Day2:模型部署、接口封装、服务化、容器基础

一、模型部署是什么?

模型部署就是把训练好的模型,变成其他程序 / 用户可以调用的服务。

  • 开发阶段:你在本地跑模型代码,只有自己能用
  • 部署后:模型变成 API 接口,任何人通过网络都能调用,比如我们平时用的聊天机器人,背后都是部署好的模型服务

二、主流部署方式(按场景分)

1. 本地直接部署(仅开发测试用)

直接在本地 / 服务器上运行模型代码,没有封装接口,只能自己用,不适合线上服务。

2. API 服务化部署(生产环境主流)

用 Web 框架把模型封装成 HTTP 接口,其他服务 / 用户通过网络请求调用模型。

  • 常用框架:FastAPI(Python)、Flask
  • 优势:跨语言调用、易扩展、方便负载均衡

3. 容器化部署(工业界标准)

用 Docker 把模型、代码、依赖环境打包成一个镜像,部署到服务器上。

  • 解决的核心问题:"本地能跑,线上跑不起来" 的环境依赖不一致问题
  • 优势:一次打包,到处运行,可在多台服务器上快速部署、扩容

三、API 接口封装实战(FastAPI 示例)

这是生产环境最常用的方式,

复制代码
from fastapi import FastAPI
from transformers import AutoModelForCausalLM, AutoTokenizer
from pydantic import BaseModel

# 初始化应用
app = FastAPI(title="大模型聊天服务")

# 加载模型和分词器(这里用你熟悉的量化方式省显存)
model_name = "qwen-7b-chat"
tokenizer = AutoTokenizer.from_pretrained(model_name)
model = AutoModelForCausalLM.from_pretrained(
    model_name,
    load_in_4bit=True,  # 4bit量化,省显存
    device_map="auto"
)

# 定义请求体格式
class ChatRequest(BaseModel):
    prompt: str
    max_tokens: int = 512

# 聊天接口
@app.post("/chat", summary="大模型对话接口")
def chat(request: ChatRequest):
    # 处理输入
    inputs = tokenizer(request.prompt, return_tensors="pt").to("cuda")
    # 模型生成
    outputs = model.generate(
        **inputs,
        max_new_tokens=request.max_tokens,
        temperature=0.7
    )
    # 解码输出
    response = tokenizer.decode(outputs[0], skip_special_tokens=True)
    return {"response": response}

if __name__ == "__main__":
    import uvicorn
    uvicorn.run(app, host="0.0.0.0", port=8000)

运行后,你可以用http://localhost:8000/docs直接测试接口。

四、Docker 容器基础

1. 什么是 Docker?

Docker 是一个容器化平台,它把你的代码、依赖、环境一起打包成一个独立的 "容器",不管部署到哪台服务器,运行环境都完全一样。

2. 核心文件:Dockerfile

用来定义镜像的构建步骤,示例如下:

dockerfile

复制代码
# 基础镜像(带Python环境)
FROM python:3.10-slim

# 设置工作目录
WORKDIR /app

# 复制依赖文件
COPY requirements.txt .

# 安装依赖
RUN pip install --no-cache-dir -r requirements.txt

# 复制项目代码
COPY . .

# 暴露端口(和FastAPI里的端口一致)
EXPOSE 8000

# 启动命令
CMD ["uvicorn", "main:app", "--host", "0.0.0.0", "--port", "8000"]

3. 常用 Docker 命令(记这几个就够)

bash

运行

复制代码
# 构建镜像
docker build -t llm-chat-service .

# 运行容器
docker run -d -p 8000:8000 llm-chat-service

# 查看运行中的容器
docker ps

# 停止容器
docker stop 容器ID

灰度发布也叫金丝雀发布,是版本上线的稳妥策略。

  1. 核心逻辑:不一次性全量更新,先把新版本只开放给一小部分用户 / 流量使用。
  2. 流程:
    • 第一步:切少量流量到新版本,实时监控报错、响应速度、模型效果;
    • 第二步:如果运行稳定、没有问题,再逐步扩大范围,最终全量上线;
    • 第三步:一旦发现 bug,立刻切回旧版本,风险可控。
  3. 适用场景:模型迭代、接口更新、服务升级。
  4. 对比:
    • 全量发布:一次性所有用户用新版,出问题全体受影响,风险高;
    • 灰度发布:小范围试错,风险低,是线上服务标准做法。
相关推荐
万联WANFLOW8 小时前
Kimi K3.1 Pro 接口接入指南:模型选型、费用计算与零数据保留
java·spring boot·python·安全·spring·大模型
小七-七牛开发者11 小时前
从 GLM 到 GPT,HarnessPro 如何用 RSI 降低 Agent 成本
ai·大模型·agent·ai coding·harnesspro
还卿一钵无情泪12 小时前
PEFT-Transformers、Unsloth、LLaMA-Factory 微调框架 横向对比
深度学习·大模型·llama·ollama
loulanyue_12 小时前
10000P国产算力破壁上线,算电协同与超智融合打破算力孤岛:高文院士图灵奖得主纵论世界算力网新纪元——读2026世界算力网大会实录
人工智能·大模型·架构设计·高性能计算·算力网络
夏文强1 天前
Rerank 与混合检索:怎么让 RAG 从「能用」变成「好用」
人工智能·大模型·向量数据库·rag·检索增强生成
小哈里2 天前
【编译器】从计算机系统原理到 LLM 编译器与算子优化
大模型·编译器·1024程序员节·计算机系统原理·算子优化·推理平台
虎鲸不是鱼2 天前
AI 自动化逆向(十七)解码器、反汇编器、反编译器:能力边界表
人工智能·自动化·大模型·逆向·ai逆向
天树星智源2 天前
相机轨迹为什么对不上:问题不在控制模块,而在两段噪声不是同一份
论文阅读·机器人·大模型
Magicdata大数据2 天前
AI辅助教学:调用大模型从教材中生成习题,方便学员练习
java·spring boot·大模型·知识图谱·neo4j·ai辅助教学
8486981192 天前
RAGFlow v1.0 企业级 RAG 落地实录:从零部署到 RAGAS 评估闭环(全踩坑记录)
人工智能·大模型·rag·ragflow·ragas