亚马逊AWS官方博客
使用 vLLM 部署 DeepSeek 模型,并通过 NextChat 打造高性能 ChatBot
![]() |
随着生成式 AI 和大语言模型(LLM)的兴起,越来越多的企业和开发者希望能在自己的环境内快速部署高效的 AI 应用。本文将详细介绍如何在亚马逊云中国区使用 SageMaker 部署基于 vLLM 的 DeepSeek 模型,并通过 SageMaker Endpoint 对外提供服务。同时,我们还将探讨如何利用开源项目 NextChat 构建 ChatBot 聊天应用,实现流式推理与 Reasoning 输出,并在 UI 上实现流式交互效果。
为什么选择 vLLM 和 SageMaker 进行模型部署?
vLLM 简介
vLLM(Virtual Large Language Model)是一种高效的 LLM 推理引擎,专为大型语言模型(例如 DeepSeek、LLaMA、GPT 等)的高性能部署设计。vLLM 通过动态批处理、请求合并和缓存机制,大幅提高推理效率,降低模型推理延迟,最大限度地提升 GPU 的使用效率。
vLLM 的主要优势包括:
- 高效推理:通过智能批量处理、动态负载均衡和缓存复用,显著提升推理性能。
- 流式推理支持:原生支持流式推理(Streaming Inference),适合实时交互应用场景,如聊天机器人。
- 灵活兼容:支持多种主流大模型,无缝适配现有的推理服务框架(如 Amazon SageMaker)。
- 资源优化:减少 GPU 资源的浪费,适用于私有化环境的成本敏感型部署。
这些特性使 vLLM 成为在云端或本地部署生成式 AI 模型的理想选择,尤其适用于需要高性能、低延迟、实时交互场景的企业和开发团队。
Amazon SageMaker 优势
- 快速部署:通过内置的 Endpoint 服务快速实现模型部署,无需复杂的运维操作。
- 弹性扩展:提供弹性扩展能力,应对大流量访问。
- 私有化部署:模型推理过程完全私有化,数据安全性高,符合企业安全与合规需求。
架构设计
- 模型部署:利用 SageMaker Endpoint 部署经过 VLLM 优化的 DeepSeek 模型,支持流式推理。
- API 层:通过 SageMaker Runtime 客户端调用 Endpoint,实现实时的流式响应处理。
- NextChat 集成:在 NextChat 的 Nodejs 层中封装调用逻辑,完成从前端到模型的流式数据传输与处理。
![]() |
如何在 Amazon SageMaker 上部署 DeepSeek 模型?
您可以参考 Blog 中的 Amazon SageMaker JumpStart 中的 DeepSeek-R1 模型,和使用 AWS Trainium 和 AWS Inferentia 部署 DeepSeek-R1-Distill 模型部分,以及 Blog。
*中国区目前只能用 g5.48xlarge 部署 70b 的全量蒸馏版本模型或者 R1 的 1.58b 动态量化版本。
现在有两个工具可以在中国区部署模型使用:model_hub https://github.com/aws-samples/llm_model_hub 与 Easy Model Deployer https://github.com/aws-samples/easy-model-deployer。
主要包括以下几个步骤:
1. 创建 SageMaker Endpoint
- 配置推理实例:在 SageMaker 控制台中创建一个 Endpoint,选择自定义容器镜像,并配置合适的实例类型(如 GPU 实例)来满足大模型推理需求。
- 网络与安全配置:通过配置 VPC、子网和安全组,确保 Endpoint 部署在安全隔离的私有网络环境中,保障数据安全。
2. 实现流式推理与实时响应
- 在 Endpoint 推理服务中集成流式推理逻辑,使得返回结果可以逐步输出(例如通过 Server-Sent Events 的方式),从而在前端实现实时交互。
- 可以参考在 NextChat 中的实现逻辑,将响应数据包装成
ReadableStream
并设置Content-Type: "text/event-stream"
,便于前端实时处理和展示推理过程。
使用 NextChat 实现前端流式推理输出
NextChat 是一个基于 Next.js 构建的开源聊天应用,它能快速实现 AI ChatBot 服务。
为什么改造 NextChat 调用逻辑?
原始的 NextChat 通常调用公开的大模型 API,但公开 API 存在网络延迟、服务不稳定、数据安全风险等问题。为了更高效、更安全,我们对 NextChat 进行了改造,使用 Amazon SageMaker Endpoint 进行推理,实现了私有化部署,性能更稳定,响应更快。
如何使用 Node.js 调用 SageMaker Endpoint 进行流式响应
下面是实现流式响应的核心逻辑:
- 初始化 SageMaker 运行时客户端:通过
SageMakerRuntimeClient
初始化客户端,并设置相应参数。 - 构造请求 Payload:将用户输入、模型参数(如
temperature
、top_p
等)封装成 JSON 格式的请求数据。 - 调用 Endpoint 流式响应:使用
InvokeEndpointWithResponseStreamCommand
调用 Endpoint,接收流式响应数据。 - 解析流式响应数据:通过包装一个新的
ReadableStream
,解析每个 chunk 数据,识别“data: ”前缀,对 JSON 数据进行解码和拼接,并实时推送到前端。
关键代码如下所示:
接口返回设置
在 API 层,我们通过设置响应头 Content-Type: "text/event-stream"
来支持 SSE(Server-Sent Events)格式的流式响应,这种格式能够让前端实时接收到数据更新,同时避免了轮询带来的性能开销:
Reasoning 推理内容输出
DeepSeek 等大语言模型的推理过程中,除了最终内容输出外,还支持额外的 reasoning_content
字段,帮助用户理解模型的推理过程,进一步增强 AI 服务的透明度。例如:(\n\n 两个换行符代表一次 OutPut Event)
为什么使用”text/event-stream”?
目前,主流 ChatBot 应用都采用 text/event-stream
类型的响应格式(SSE,Server-Sent Events),原因包括:
- 实时性高:浏览器原生支持流式数据推送,无需客户端反复请求。
- 开发便利:前端使用 EventSource API,开发更简洁。
- 兼容性强:主流浏览器原生支持,无需额外库或插件。
示例响应:
私有化部署相比公有 API 的优势
- 数据安全与隐私保护:模型部署在企业内部或私有云环境,避免敏感数据外流。
- 服务可用性与性能保障:避免公有 API 服务不可控的风险,确保服务稳定性。
- 定制化需求:支持更灵活的参数设置和模型微调,满足企业特定需求。
总结
本文方案通过 vLLM 和 Amazon SageMaker Endpoint,在亚马逊云科技中国区快速部署 DeepSeek 模型,并结合 NextChat 的改造,开发了一个高效、安全、实时的 AI ChatBot 应用,显著提升了企业 AI 落地的能力。欢迎开发者和企业实践以上技术方案,打造更高效、更智能的 AI 服务。
希望本文对您的 AI 部署与开发有所帮助!
*前述特定亚马逊云科技生成式人工智能相关的服务仅在亚马逊云科技海外区域可用,亚马逊云科技中国仅为帮助您了解行业前沿技术和发展海外业务选择推介该服务。