一、模型部署是什么模型部署就是把训练好的模型变成其他程序 / 用户可以调用的服务。开发阶段你在本地跑模型代码只有自己能用部署后模型变成 API 接口任何人通过网络都能调用比如我们平时用的聊天机器人背后都是部署好的模型服务二、主流部署方式按场景分1. 本地直接部署仅开发测试用直接在本地 / 服务器上运行模型代码没有封装接口只能自己用不适合线上服务。2. API 服务化部署生产环境主流用 Web 框架把模型封装成 HTTP 接口其他服务 / 用户通过网络请求调用模型。常用框架FastAPIPython、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_4bitTrue, # 4bit量化省显存 device_mapauto ) # 定义请求体格式 class ChatRequest(BaseModel): prompt: str max_tokens: int 512 # 聊天接口 app.post(/chat, summary大模型对话接口) def chat(request: ChatRequest): # 处理输入 inputs tokenizer(request.prompt, return_tensorspt).to(cuda) # 模型生成 outputs model.generate( **inputs, max_new_tokensrequest.max_tokens, temperature0.7 ) # 解码输出 response tokenizer.decode(outputs[0], skip_special_tokensTrue) return {response: response} if __name__ __main__: import uvicorn uvicorn.run(app, host0.0.0.0, port8000)运行后你可以用http://localhost:8000/docs直接测试接口。四、Docker 容器基础1. 什么是 DockerDocker 是一个容器化平台它把你的代码、依赖、环境一起打包成一个独立的 “容器”不管部署到哪台服务器运行环境都完全一样。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灰度发布也叫金丝雀发布是版本上线的稳妥策略。核心逻辑不一次性全量更新先把新版本只开放给一小部分用户 / 流量使用。流程第一步切少量流量到新版本实时监控报错、响应速度、模型效果第二步如果运行稳定、没有问题再逐步扩大范围最终全量上线第三步一旦发现 bug立刻切回旧版本风险可控。适用场景模型迭代、接口更新、服务升级。对比全量发布一次性所有用户用新版出问题全体受影响风险高灰度发布小范围试错风险低是线上服务标准做法。
Day2:模型部署、接口封装、服务化、容器基础
发布时间:2026/5/31 14:41:34
一、模型部署是什么模型部署就是把训练好的模型变成其他程序 / 用户可以调用的服务。开发阶段你在本地跑模型代码只有自己能用部署后模型变成 API 接口任何人通过网络都能调用比如我们平时用的聊天机器人背后都是部署好的模型服务二、主流部署方式按场景分1. 本地直接部署仅开发测试用直接在本地 / 服务器上运行模型代码没有封装接口只能自己用不适合线上服务。2. API 服务化部署生产环境主流用 Web 框架把模型封装成 HTTP 接口其他服务 / 用户通过网络请求调用模型。常用框架FastAPIPython、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_4bitTrue, # 4bit量化省显存 device_mapauto ) # 定义请求体格式 class ChatRequest(BaseModel): prompt: str max_tokens: int 512 # 聊天接口 app.post(/chat, summary大模型对话接口) def chat(request: ChatRequest): # 处理输入 inputs tokenizer(request.prompt, return_tensorspt).to(cuda) # 模型生成 outputs model.generate( **inputs, max_new_tokensrequest.max_tokens, temperature0.7 ) # 解码输出 response tokenizer.decode(outputs[0], skip_special_tokensTrue) return {response: response} if __name__ __main__: import uvicorn uvicorn.run(app, host0.0.0.0, port8000)运行后你可以用http://localhost:8000/docs直接测试接口。四、Docker 容器基础1. 什么是 DockerDocker 是一个容器化平台它把你的代码、依赖、环境一起打包成一个独立的 “容器”不管部署到哪台服务器运行环境都完全一样。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灰度发布也叫金丝雀发布是版本上线的稳妥策略。核心逻辑不一次性全量更新先把新版本只开放给一小部分用户 / 流量使用。流程第一步切少量流量到新版本实时监控报错、响应速度、模型效果第二步如果运行稳定、没有问题再逐步扩大范围最终全量上线第三步一旦发现 bug立刻切回旧版本风险可控。适用场景模型迭代、接口更新、服务升级。对比全量发布一次性所有用户用新版出问题全体受影响风险高灰度发布小范围试错风险低是线上服务标准做法。