当前位置: 首页 > news >正文

云原生环境下部署大语言模型服务:以 DeepSeek 为例的实战教程

📝个人主页🌹:一ge科研小菜鸡-CSDN博客
🌹🌹期待您的关注 🌹🌹

一、引言

随着 DeepSeek、Qwen、ChatGLM 等大语言模型(LLM)的开放与普及,企业将其私有化部署并服务化的需求愈发迫切。然而,从 HuggingFace 下载模型,到提供一个结构化、稳定、可调用的 API,并不是一个简单过程。它涉及:

  • 模型推理框架(如 vLLM)的集成;

  • Web API 封装(FastAPI等);

  • 容器化部署与资源调度;

  • 可扩展性设计与接口规范化。

本文将以 DeepSeek 7B 模型为例,详尽演示从“模型下载”到“API上线”的完整工程实践流程,并在每一段代码中增加详细注释和文字说明,力求让每一个环节都透明清晰、便于复现。


二、技术选型与架构概览

我们将采用如下技术栈构建大语言模型服务系统:

模块技术栈说明
模型本体DeepSeek-LLM-7BHuggingFace 提供,开源大模型
推理引擎vLLM高性能大模型推理框架
API服务封装FastAPI + Uvicorn高性能、异步API网关
部署方式Docker 容器封装云原生友好,可扩展至K8s

架构图示意

┌──────────────┐
│   用户浏览器   │
└──────┬───────┘│ HTTP POST
┌──────▼───────┐
│   FastAPI 服务 │
└──────┬───────┘│ 请求转发(OpenAI风格)
┌──────▼───────┐
│    vLLM 引擎  │
└──────┬───────┘│ 加载本地模型权重
┌──────▼───────┐
│ DeepSeek-7B 模型 │
└──────────────┘

三、准备阶段:获取 DeepSeek 模型

我们使用 HuggingFace 提供的官方模型。推荐使用 git-lfs 工具拉取(用于下载大文件权重)。

安装并下载模型

# 安装 Git LFS(仅需执行一次)
sudo apt update && sudo apt install git-lfs -y# 启用 Git LFS
git lfs install# 克隆 DeepSeek 模型(7B base版)
git clone https://huggingface.co/deepseek-ai/deepseek-llm-7b-base

完成后,目录中应包含如下文件:

deepseek-llm-7b-base/
├── config.json
├── tokenizer.json
├── pytorch_model-00001-of-00008.bin
├── generation_config.json
└── ...

四、启动推理引擎:使用 vLLM 提供 OpenAI 接口

vLLM 是目前最主流的开源大模型推理引擎之一,支持并发高、吞吐大、响应快,且原生兼容 OpenAI 风格接口(如 /v1/completions)。

安装 vLLM(建议用虚拟环境)

pip install vllm

启动推理服务(本地测试)

python -m vllm.entrypoints.openai.api_server \--model ./deepseek-llm-7b-base \--port 8000 \--dtype float16 \--gpu-memory-utilization 0.9

参数解释

参数说明
--model指定模型路径,本地模型或 HuggingFace 名称
--port设置服务监听端口
--dtype float16减少显存占用(float32会爆显存)
--gpu-memory-utilization控制使用多少显存,避免抢占GPU资源

成功后,可访问:

http://localhost:8000/v1/completions

五、封装API:使用 FastAPI 构建对外服务网关

FastAPI 是 Python 中一个流行、简洁的 Web 框架,天然支持异步调用,非常适合用来封装大模型推理 API。

安装依赖

pip install fastapi uvicorn httpx

示例代码(api_gateway.py)

from fastapi import FastAPI
from pydantic import BaseModel
import httpx# 创建 FastAPI 实例
app = FastAPI()# 定义请求格式(继承 Pydantic 模型)
class CompletionRequest(BaseModel):prompt: strmax_tokens: int = 128temperature: float = 0.7top_p: float = 0.9# 定义目标推理服务地址
VLLM_ENDPOINT = "http://localhost:8000/v1/completions"# POST 接口:处理模型推理请求
@app.post("/chat")
async def chat(request: CompletionRequest):# 构造向 vLLM 的 JSON 请求体payload = {"model": "deepseek-llm-7b-base","prompt": request.prompt,"max_tokens": request.max_tokens,"temperature": request.temperature,"top_p": request.top_p,}# 使用异步 HTTP 客户端发起请求async with httpx.AsyncClient() as client:response = await client.post(VLLM_ENDPOINT, json=payload)result = response.json()# 提取模型生成的回答return {"response": result["choices"][0]["text"]}

启动服务

uvicorn api_gateway:app --host 0.0.0.0 --port 8080

测试接口

curl -X POST http://localhost:8080/chat \-H "Content-Type: application/json" \-d '{"prompt": "介绍一下牛顿第一定律"}'

结果返回一个 JSON:

{"response": "牛顿第一定律..."
}

六、Docker 化部署:构建完整服务容器

为了支持跨平台、环境隔离与后续部署至 Kubernetes,我们将整个服务封装为 Docker 镜像。

Dockerfile(详解注释版)

# 使用 NVIDIA 官方 CUDA 基础镜像
FROM nvidia/cuda:11.8.0-cudnn8-runtime-ubuntu22.04# 安装依赖环境
RUN apt update && apt install -y git-lfs python3-pip
RUN pip install --upgrade pip# 安装 PyTorch + vLLM + Web框架
RUN pip install torch --index-url https://download.pytorch.org/whl/cu118
RUN pip install vllm fastapi uvicorn httpx# 拷贝模型和代码
COPY deepseek-llm-7b-base /model
COPY api_gateway.py /app/api_gateway.py# 设置默认工作目录
WORKDIR /app# 同时启动 vLLM 与 FastAPI 服务
CMD bash -c "python3 -m vllm.entrypoints.openai.api_server --model /model --port 8000 & uvicorn api_gateway:app --host 0.0.0.0 --port 8080"

构建镜像

docker build -t deepseek-service .

启动容器

docker run --gpus all -p 8000:8000 -p 8080:8080 deepseek-service

七、常见问题排查

问题可能原因解决建议
启动报错“CUDA not available”宿主机未安装 NVIDIA 驱动或未使用--gpus确保使用 --gpus all 运行
模型加载缓慢权重文件较大(>20GB)使用 SSD 加速;预加载镜像
响应很慢或OOMGPU 显存不足降低 max_tokens,使用 float16
无法访问 API 接口端口未映射或防火墙拦截检查 Docker 端口映射设置

八、下一步建议与扩展方向

部署完成后,你可以继续进行如下优化和扩展:

  • 支持多轮对话:引入 session ID 和历史消息缓存;

  • 集成知识库问答(RAG):结合向量数据库(如 FAISS);

  • 搭建前端交互界面:基于 Streamlit、Gradio、Next.js 等;

  • 部署至 Kubernetes:将服务纳入企业云原生调度体系;

  • 多模型管理平台:支持模型热切换、版本切换与统一网关;


九、总结

本文完整演示了从零开始在云原生环境中部署 DeepSeek 大语言模型的过程,包括:

  • 模型下载与加载;

  • vLLM 推理服务启动;

  • FastAPI 封装 API;

  • Docker 打包与运行;

  • 性能优化与异常处理。

通过这套方案,任何企业或开发者都可以在本地、安全、可控地运行自己的大语言模型服务,为后续接入文档问答、智能客服、企业知识库等应用打下坚实基础。

模型 ≠ 能力,工程 ≠ 辅助。唯有两者结合,AI 才能真正落地。

http://www.dtcms.com/a/264737.html

相关文章:

  • 6种iOS开发中常用的设计模式
  • Qt designer坑-布局内子控件的顺序错乱
  • 量化交易学习之自动化交易策略 [freqtrade 框架学习] ,常见问题避坑指南!!!!
  • <u>#12288;#8203;</u> HTML5全角空格,自动换行,半角用#32;#8203;
  • Spring AI Advisor RAG使用指南
  • Android Auto即将带来变革
  • AI大模型:从编码助手到流程重构者——软件开发新范式解析
  • 【前端】1 小时实现 React 简历项目
  • 多种方法实现golang中实现对http的响应内容生成图片
  • MySQL间隙锁详解:解决幻读的「隐形守护者」
  • React 学习(2)
  • 03-JS资料
  • 企业需要什么样的远程桌面管理软件?
  • 不引入变量 异或交换的缺点
  • 替代进口SCA7606【智芯微】国产高精度电流传感器 工业新能源电网专用
  • openai-agents记忆持久化(neo4j)
  • WPF学习笔记(21)ListBox、ListView与控件模板
  • 深入理解 LoRA:大语言模型微调的低秩魔法
  • PyTorch 不支持旧GPU的异常状态与解决方案:CUDNN_STATUS_NOT_SUPPORTED_ARCH_MISMATCH
  • Spring Boot 高并发框架实现方案:数字城市的奇妙之旅
  • 智能物流革命:Spring Boot+AI实现最优配送路径规划
  • Knife4j+Axios+Redis:前后端分离架构下的 API 管理与会话方案
  • 【Java关系映射入门】实战一
  • gin如何返回html
  • Java面试宝典:集合一
  • 生僻字写入oracle后被转为??
  • (一)大语言模型的关键技术<-AI大模型构建
  • 在浏览器输入url,会发送什么事情?
  • HMAC 介绍
  • 在 VMware虚拟机中使用 NAT 网络模式