本文由阿里云望宸分享,原题“大模型推理主战场:什么才是通信协议标配?”,下文进行了排版优化和内容修订。
DeepSeek 加速了模型平权,随之而来的是大模型推理需求的激增,大模型性能提升的主战场从训练转移到了推理。推理并发的提升,将催生计算、存储、网络、中间件、数据库等领域新的工程化需求。
本文将分享 SSE 和 WebSocket 这两个AI大模型应用的标配网络通信协议,一起重新认识下这两位新时代里的老朋友。
SSE(Server-Sent Events,服务器推送事件):是一种基于 HTTP 的网络通信协议,允许服务器向客户端单向推送实时数据。户端和服务端之间需要频繁地传输生成的内容。支持服务器可以一边生成结果,一边分块发送给客户端,这样用户就能逐步看到生成的内容,而不是等待服务端处理完所有内容才能看到。
它的主要特点是:
WebSocket:是一种网络通信协议,允许在客户端和服务器之间建立全双工、持久的连接,实现实时、双向的数据传输。不同于 SSE,WebSocket 连接一旦建立,双方可以随时发送数据,实效性更强,即无须等待服务端返回内容,客户端就能发起请求,适用于多人在线游戏操作实时同步、社交软件的聊天室、在线文档多人同时编辑等。
它的主要特点是:
关于SSE和WebSocket的更详尽资料可阅读:
大模型应用出现前,互联网在线应用以 Web 类应用为主,基于浏览器运行,通常通过 HTTP/HTTPS 协议与服务器通信,例如电商应用、新零售/新金融/出行等交易类应用,教育、传媒、医疗等行业应用,以及公共网站、CRM 等企业内部应用,适用范围非常广泛。
其中,HTTPS 是 HTTP 的安全版本,通过 SSL/TLS 协议,对传输数据进行加密保护,加解密过程中会带来一些性能损耗。
从 API 管理的视角,看不同类型的网络通信协议:
HTTPS 是一种无状态的、应用层的协议,用于在客户端(如浏览器)和服务器之间传输超文本(如 HTML 文件、图片、视频等)。
它具有以下特点:
它的优势是:
5)安全和合规性:通过加密技术保护数据传输,防止窃听和篡改;符合现代网络安全标准(如 GDPR、PCI DSS)。
这里我们以 TLS 1.3 为例,通过一张图了解下 HTTPS 在客户端和服务端之间的握手过程。
TLS 1.3 简化了以往的握手过程,性能损耗更小、响应更快。关于TLS1.3的应用实践可见微信团队的分享:《微信新一代通信安全解决方案:基于TLS1.3的MMTLS详解》。
不同类型的大模型应用,对网络通信的需求不尽相同,但几乎都离不开以下需求。
具体就是:
这些场景对实时性和双向通信有较高要求,沿用 Web 类应用的主流通信协议 - HTTPS,将会存在很多问题。
以下是主要的问题:
虽然 HTTPS 已经发展到 HTTPS/2 和 HTTPS/3,在性能上了有了提升,但是面对大模型应用这类对实时性要求较高的场景,依旧不够原生,并未成为这类场景下的主流通信协议。
1)客户端发起 SSE 连接:
const eventSource = new EventSource('https://example.com/sse-endpoint');
2)服务器返回 HTTP 响应:
服务器响应头中必须包含以下字段:
示例响应头:
HTTP/1.1 200 OK Content-Type: text/event-stream Cache-Control: no-cache Connection: keep-alive
3)服务器推送数据流:
data: {"message": "Hello"} data: {"message": "World"}
4)客户端处理数据:
eventSource.onmessage = (event) => { console.log('Received data:', event.data); };
5)连接关闭或错误处理:
retry: 5000
我们可以通过下方方式验证大模型 APP 使用的网络通信协议。
调用 API 并检查响应头:使用 stream=True 参数请求流式响应,通过开发者工具或 curl 查看返回的 Content-Type,若为 text/event-stream,则明确为 SSE。
示例命令:
curl -X POST "https://api.deepseek.com/v1/chat/completions" \ -H "Authorization: Bearer YOUR_KEY" \ -H "Content-Type: application/json" \ -d '{"model":"deepseek-chat", "messages":[{"role":"user","content":"Hello"}], "stream":true}' \ -v # 查看详细响应头
预期输出:
< HTTP/1.1 200 OK < Content-Type: text/event-stream < Transfer-Encoding: chunked
数据格式验证:流式响应的数据体格式为 data: {...}\n\n,符合 SSE 规范。
示例响应片段:
data: {"id":"123","choices":[{"delta":{"content":"Hi"}}]} data: [DONE]
1)客户端发起 WebSocket 握手请求:
客户端通过 HTTP 请求发起 WebSocket 握手,请求头中包含以下字段:
示例请求头:
GET /ws-endpoint HTTP/1.1 Host: example.com Upgrade: websocket Connection: Upgrade Sec-WebSocket-Key: dGhlIHNhbXBsZSBub25jZQ== Sec-WebSocket-Version: 13
2)服务器返回 WebSocket 握手响应:
服务器验证客户端的握手请求,并返回 HTTP 101 状态码(Switching Protocols),表示协议升级成功。
响应头中包含以下字段:
示例响应头:
HTTP/1.1 101 Switching Protocols Upgrade: websocket Connection: Upgrade Sec-WebSocket-Accept: s3pPLMBiTxaQ9kYGzzhZRbK+xOo=
3)WebSocket 连接建立:
4)数据传输:
{"message": "Hello"}
[0x01, 0x02, 0x03]
5)连接关闭:
Close Frame: - Code: 1000 (Normal Closure) - Reason: "Connection closed by client"
例如 OpenAI 的 Realtime API (适用于对实时性要求更高的场景,客户端在不需要等待服务端发送完内容后就能发起请求),推荐基于 WebSocket 协议,以支持低延迟的多模态交互,包括文本和音频输入输出。
具有以下特征 :
可见:SSE 和 WebSocket 均能较好的支持大模型应用的实时性需求,前者更加轻量化,后者因为是双向通信在实时性要求更高的场景更有优势。这里我们通过一张表来比对下各个协议的特点。
总结来看:HTTP/1.1 适合传统网页和简单 API 请求,但性能较低。HTTP/2 适合现代高性能网页,解决了 HTTP/1.1 的队头阻塞问题,SSE 适合服务器主动推送实时数据的场景,如一问一答的大模型应用,WebSocket 适合需要双向实时通信的场景如在线游戏、多人协作、实时性要求更高的大模型应用场景(随时可以打断生成过程进行追问的场景,例如大模型实时辩论平台)。
此外:WebRTC 也广泛应用于大模型应用场景,例如,当调用 Realtime API 时,OpenAI 官方推荐使用 WebSocket 或 WebRTC。
虽然 SSE 和 WebSocket 的特点,天然适合处理游戏、社交、大模型应用等有处理实时通信的场景。但是用户体量扩大后,依旧会遇到一些工程化上的技术挑战。
如果把数据比作货物,HTTPS 是小型渡轮,适合短距离、少量的货物运输,SSE 和 WebSocket 则是大型货轮,适合长距离、大批量的货物运输。此时,网关是负责连接陆地和水域的中转大厅,控制船只的秩序和方向(路由、负载均衡),对货船进行安全检查(身份验证),还设置了应急和备用通道(流量管控、高可用保障)等。由于大型货轮不间断(长连接)的进入中转大厅,且单次访问数据量大、访问用户多,对扮演管理 SSE 和WebSocket 的连接建立和维护的网关,提出了更高的要求。
以下罗列了具体的挑战和网关层的应对方案,方案部分仅供参考,工程上的问题没有唯一的答案,应结合业务和技术团队的实际情况,选择适合自己的方案。
技术挑战:
1)越是高速发展的应用,越是新兴应用,软件变更频率越高,网关升级是软件变更的重要组成部分。但是,网关的升级通常涉及服务重启、配置变更或网络切换等作用,这会直接影响 SSE 和 WebSocket 连接的稳定性;
2)服务扩容过程中(增加实例),现有的 SSE 和 WebSocket 可能无法连接到新实例,服务缩容过程中(减少实例),现有的 SSE 和 WebSocket 可能会因服务的下线而被强制关闭,这些对实时性要求比较高的应用,例如游戏、大模型实时聊天,都会带来用户体验的下降。
应对方案:
技术挑战:大模型经常需要处理长文本、以及图片、视频等多模态内容,对带宽的消耗远超 Web 类应用,导致内存快速上涨,同时带来更高的带宽成本。
应对方案:选择支持流式处理的网关(如 Higress),将生成的内容分块传输,减少单次传输的数据量。同时,采用压缩算法(如 Gzip),减少数据传输量,控制带宽成本。阿里云云原生 API 网关即将上线软硬一体化的内容压缩方案,带宽传输成本可下降20%+。
技术挑战:相比 Web 类应用,大模型应用推理时消耗的计算资源更多。例如发生 DDoS 攻击时, Web 类应用应对攻击会消耗1:1的计算资源,大模型应用则会消耗1:x(x 远大于1) 的后端资源,导致大模型应在面对恶意攻击时,更加脆弱。
应对方案:在网关层部署立体的防护措施,包括认证鉴权、安全防护、流量管控等。
具体就是:
大模型应用除了带来了 SSE 和 WebSocket 的使用频率越来越高,也在助推 API First 的理念。
以往:在线应用都是通过 Service 来对外暴露提供能力,但大模型应用将通过 API 对外提供服务能力,除了基模类厂商已经通过提供 API 来服务广大开发者群体,大模型应用类厂商也开始提供 API 服务。
例如:近日 Perplexity 将面向企业客户和开发人员推出其 AI 搜索的 API 服务——基础版 Sonar 和高级版 Sonar Pro,以允许企业和开发人员把 Perplexity 的生成式 AI 搜索工具构建到自己的应用中去。
这样做的好处是:Perplexity 可以因此让自己的 AI 搜索无处不在,而不只局限在它的应用与网站里。一个案例是其客户 Zoom:Sonar 允许 Zoom 的 AI 聊天机器人根据带有引文的网络搜索提供实时答案,而不需要 Zoom 的视频用户离开聊天窗口。随着国内大模型应用的成熟,相信这一趋势会越加明显。(本文已同步发布于:http://www.52im.net/thread-4797-1-1.html)
[1] 深入浅出,全面理解HTTP协议
[2] HTTP协议必知必会的一些知识
[3] 一分钟理解 HTTPS 到底解决了什么问题
[4] 如果这样来理解HTTPS原理,一篇就够了
[5] 为什么要用HTTPS?深入浅出,探密短连接的安全性
[6] 新手入门贴:史上最全Web端即时通讯技术原理详解
[7] Web端即时通讯技术盘点:短轮询、Comet、Websocket、SSE
[8] SSE技术详解:一种全新的HTML5服务器推送事件技术
[9] Comet技术详解:基于HTTP长连接的Web端实时通信技术
[10] WebSocket从入门到精通,半小时就够!
[11] 刨根问底WebSocket与Socket的关系
[12] 使用WebSocket和SSE技术实现Web端消息推送
[13] 详解Web端通信方式的演进:从Ajax、JSONP 到 SSE、Websocket
[14] 网页端IM通信技术快速入门:短轮询、长轮询、SSE、WebSocket
[15] 搞懂现代Web端即时通讯技术一文就够:WebSocket、socket.io、SSE
[16] 浅谈网页端IM技术及相关测试方法实践(包括WebSocket性能测试)
本文系转载,前往查看
如有侵权,请联系 cloudcommunity@tencent.com 删除。
本文系转载,前往查看
如有侵权,请联系 cloudcommunity@tencent.com 删除。