最近在搞一个和 Hy4 preview 相关的项目,需要处理超长文档理解,上下文动不动就是几十万 token 起跳,真的到选型阶段才发现,自己租 GPU 部署和直接调 API压根不是一道简单的二选一题。我人在腾讯云,项目又挂在腾讯云上,身边还有聚搜云那边的朋友可以帮忙搭环境,所以两条路线我都实际跑了一遍,踩了不少坑,也把账算明白了。
这篇文章不站在任何一方说话,就纯粹从实际使用的角度,把Hy4 preview 自部署和 API 调用的差别、GPU 服务器成本的真实构成、TokenHub在整个链路里到底扮演什么角色,以及我在腾讯云上实操时遇到的问题全部摊开讲。不管你是个人开发者、小团队负责人,还是公司里要拍板技术方案的人,这篇应该都能帮你少走弯路。
1. 先想清楚:自部署和 API 调用,本质上是两种完全不同的东西
很多人上来就问"哪个便宜",但说实话,成本只是结果,真正的分歧在于你愿不愿意把运维、弹性、稳定性这些事揽到自己身上。Hy4 preview 这种面向超长上下文的模型,不管是部署还是调用,都跟以前调普通小模型完全不是一个量级。
1.1 自部署不是"下载个模型就能跑"
你可能觉得自部署就是找个开源模型文件,放到服务器上,起个服务,完事。真不是。Hy4 preview 如果是超长上下文的稀疏 MoE 架构(这类模型预览版普遍如此),推理时最吃资源的不是模型权重,而是KV Cache。简单说,模型每处理一个 token,都要把之前所有 token 的关键计算状态缓存下来,上下文越长,KV Cache 膨胀得越厉害,显存占用是指数级增长的。
举个例子你就明白了。模型权重可能是 100GB 左右(量化后),这部分是一次性固定的。但如果你要处理 100 万 token 的上下文,KV Cache 可能吃掉 200GB 甚至更多显存,具体取决于模型层数、注意力头数、精度设置。这就意味着你选的 GPU 实例不仅要扛得住权重,还得扛得住缓存,预算直接翻倍。我当时在腾讯云上先是天真地拿单卡 80GB 显存的实例去试,结果权重加缓存直接爆显存,不得不换成多卡方案。
除了显存,还有推理引擎的选择。现在主流的 vLLM、SGLang 这类推理框架,对 MoE 模型和长上下文的支持程度不一样,参数调起来也很讲究。比如max-model-len设多大、gpu-memory-utilization留多少余量、tensor-parallel-size怎么设,每个参数都影响你能跑多长的上下文、并发能到多少、会不会 OOM。这还只是把服务跑起来,后面还有监控、告警、日志、版本升级一堆事等着你。
1.2 API 调用的隐藏成本:不只是按 token 付钱
API 调用看着简单,发个请求拿结果,按 token 计费,不用管底层。但真正用起来,有几个隐性成本很容易被忽略。
首先是网络延迟。如果你的业务对首 token 延迟敏感,比如要做实时对话,API 的往返时间通常比自部署要高。自部署在内网,延迟可以做到几十毫秒甚至更低;API 走公网,加上服务端排队,延迟能差一个数量级。当然,如果你的场景是离线批量处理,那延迟就不重要。
其次是限流和过载。这个我在实操中感触太深了。API 服务商那边一旦负载高,就会返回503 server overloaded或者529 overloaded这类错误。做批量任务时,脚本跑到一半被限流,如果没做重试机制,整个任务就挂了。热词里那些"api error: 503 server overloaded"的搜索记录,估计都是被这个坑过的人搜出来的。你要自己部署,限流就是你说了算,不会莫名其妙被上游掐脖子。
最后是数据合规与隐私。如果业务涉及用户隐私数据,比如医疗、金融、企业内部文档,直接发到第三方 API 可能会有合规风险。自部署模型在自己的腾讯云 VPC 里跑,数据不出内网,这在很多行业是硬性要求。
1.3 两种方式的核心差异对照表
| 维度 | 自部署(GPU 服务器) | API 调用 |
|---|---|---|
| 前期投入 | 高,需要选型、购买、部署 | 低,注册拿 key 就能用 |
| 成本模型 | 固定月租,跑多跑少一个价 | 按 token 计费,用量越大越贵 |
| 延迟 | 内网部署,延迟可控 | 受公网和排队影响 |
| 并发控制 | 完全自主 | 受上游限流约束 |
| 数据私密性 | 数据不出内网 | 数据经过第三方 |
| 运维负担 | 高,需自建监控、告警、升级 | 无,服务商负责 |
| 上下文长度 | 受显存和配置限制,灵活调整 | 受模型服务端限制 |
| 稳定性 | 取决于你的运维水平 | 取决于服务商,偶发过载 |
| 弹性扩缩容 | 慢,需手动或脚本操作 | 即时,服务商自动处理 |
看完这个表,你应该能感觉到,这根本不是在选"便宜还是贵",而是在选你到底想当使用者,还是想当运营者。
2. GPU 服务器成本到底怎么算:从显存需求到腾讯云账单的完整推演
提到自部署,第一反应就是"GPU 服务器贵"。但贵不贵、值不值,得把账算细。我这次在腾讯云上的实际体验是:算对了账,自部署在特定场景下反而更省;算错了账,钱包直接大出血。
2.1 先搞清楚 Hy4 preview 到底需要多大的显存
选服务器之前,先估算资源需求。以我部署的 Hy4 preview 为参考,假设模型参数量在百亿到千亿级别(MoE 架构,激活参数远少于总参数),核心计算如下:
- 模型权重显存:以 FP16/BF16 精度加载,每 10 亿参数大约需要 2GB 显存。假设 300B 总参数量,则需要约 600GB。实际部署通常做量化(INT8/AWQ),可以降到 300GB 左右。当然,如果你的场景是超长上下文,建议 BF16 加载以保证精度,或者用 FP8 量化折中。
- KV Cache 显存:这是大头中的大头。计算公式大致是
2(K 和 V) × 层数 × 注意力头维度 × 序列长度 × batch size。不同模型差别很大,但保守估算,支持 128K 上下文,一个并发请求至少需要 20~40GB 的 KV Cache;如果上到百万级上下文,单请求的 KV Cache 可能超过 100GB。 - 推理引擎开销:CUDA context、激活值、临时缓冲区,预留 10%~20% 的显存余量比较稳。
我最终在腾讯云上用的方案是4 卡 H800(80GB)实例,总共 320GB 显存。用 FP8 量化加载模型权重,KV Cache 允许跑到约 128GB 左右。实测下来,单请求最大可以支持到 100 万 token 左右的上下文(会压缩并发数),并发 4 个请求时上下文长度要降到 32K 以下,不然直接 OOM。
预算上,这个级别的实例在腾讯云包年包月大概几万块一个月,按量计费每小时几百块。这数字乍一看很吓人,但你要算的是"值不值"。
2.2 腾讯云 GPU 实例选型与计费模式
腾讯云 GPU 服务器常见的有 GN7(T4)、GN8(V100)、GN10X(A100)、GN11S(H800)等系列。选型时除了看显存,还要看卡间互联带宽。如果你要跑多卡并行(tensor parallel),A100/H800 的 NVLink 带宽很重要,不然多卡通信会成为瓶颈,速度反而不如单卡大显存。
计费模式上,腾讯云主要有三种:
- 包年包月:适合长期稳定运行的业务。按月付费,单价最低,但资源要提前锁定,改配置比较麻烦。
- 按量计费:适合短期测试、临时任务。按秒计费,随开随停,但单价高。如果你只是每天跑几个小时,按量可能比包年更划算。
- 竞价实例:适合可中断的离线批量任务。价格波动大,可能被系统回收,不适合在线服务。
以我当时的需求为例,如果每天稳定跑 8 小时,一个月算下来,包年包月和按量差距能到 30%~50%。如果业务是 7×24 小时在线,那包年包月的单价优势就更明显了。如果你的任务是碎片化的,比如每天只跑一两小时,那按量计费反而更灵活,随用随开,用完释放。
2.3 TokenHub 在成本链路中到底起什么作用
算成本的时候,TokenHub 是绕不开的一个词。很多人以为它只是个 API 转发网关,但我实际用下来,觉得它更像是大模型成本控制的调度中枢。
简单说,TokenHub 可以做三件事:
- 统一管理多个模型服务的调用入口。不管后端是自部署的 GPU 实例,还是第三方 API,前端都走同一个 TokenHub 网关,业务侧不用关心后端到底连的谁。
- Token 用量统计与预算控制。它能把每个业务线、每个用户的 token 消耗量记录下来,设置配额和告警,防止某个人写了个死循环脚本把预算烧光。
- 成本路由。这个是我觉得最值钱的功能。TokenHub 可以根据配置,把请求自动路由到不同后端。比如低优先级任务走便宜的 API,高优先级任务走自部署实例;或者在 API 过载的时候自动切到备份渠道。
在 GPU 服务器场景里,TokenHub 的上下文缓存(prompt caching)功能非常关键。比如你做客服问答,系统提示词、历史聊天记录这些前缀是固定的,如果每次都让 GPU 服务器重新计算一遍 KV Cache,既浪费显存又浪费时间。TokenHub 会在缓存命中时直接复用计算结果,实测能降低 30%~50% 的 KV Cache 开销,意味着同样显存的服务器能扛更多并发。这一点在长上下文场景下尤其明显,因为长上下文的重复计算代价非常高。
2.4 算一笔真实账单:API 费用 vs GPU 月租
光说理论不行,我拿自己的真实数据来算一笔账。假设业务是离线批量处理文档,每天处理约 100 万 token 的输入,输出 20 万 token,一个月按 30 天算。
- API 路线:按市场常见价格,输入 100 万 token 假设几块钱,输出比输入贵几倍。一个月下来,API 费用可能在几千到一两万元之间,具体取决于模型定价和折扣。
- 自部署路线:4 卡 H800 实例包年包月几万块,看起来贵很多。但注意,这个费用是固定成本,不管你跑 1 个 token 还是 10 亿个 token,都是一个价。
所以结论很清晰:如果你的调用量稳定且偏大,自部署的单位成本会远低于 API。我算过,大概每天处理量超过 300 万 token 时,自部署就开始回本了。但如果只是偶尔用用,每天几千 token 的量,API 显然更划算。
另外别忘了,自部署的 GPU 服务器不只是跑 Hy4 preview,还可以同时跑其他模型服务。比如我用同一批卡,白天跑 Hy4 preview 的批量任务,晚上跑 Stable Diffusion 的生成任务,资源利用率拉满,摊薄下来成本又低了一截。这就是典型的"资源复用"思维。
3. TokenHub 到底是什么:它凭什么影响你的最终选型决策
我在上一节提到 TokenHub 能做成本路由和上下文缓存,但这还只是冰山一角。如果你要在腾讯云上认真跑 Hy4 preview,不管选 API 还是自部署,TokenHub 基本都会出现在架构图里。我甚至觉得,选型的第一步不是选 API 还是 GPU,而是先想清楚 TokenHub 放在哪一层。
3.1 TokenHub 的核心功能拆解
从技术架构看,TokenHub 本质上是一个模型服务网关,但它比普通网关多做了一层"模型感知"。常规 API 网关只管转发、鉴权、限流,TokenHub 则能理解"请求里有多少 token"、"这个请求应该路由到哪个模型"、"是否命中缓存"这类模型层面的信息。
我实际用到的核心功能主要有这几个:
- 多后端适配:统一封装不同模型的 API 协议。不管后端是 OpenAI 兼容接口、vLLM 自部署服务,还是腾讯云原生的大模型服务,前端看到的都是一个标准接口。业务代码不用因为换模型而大改。
- Token 计量与配额:每个请求消耗多少 token,系统会自动记录。你可以给不同部门、不同项目设置配额,用完自动告警或熔断。
- 智能路由:这是最有价值的。你可以配置规则,比如"普通对话走便宜的小模型 API,复杂任务走 Hy4 preview";或者"API 过载时自动切到自部署实例"。我在实际使用中,就用它实现了 API 和自部署的双活容灾,一个挂了另一个自动顶上,业务无感知。
- 缓存复用:前面提到的上下文缓存就是这里的核心能力。对于重复前缀极多的场景,缓存命中率能到 60% 以上,效果非常明显。
3.2 自部署场景下,TokenHub 怎么和 GPU 服务器配合
自部署 Hy4 preview 时,如果是单机单卡,那确实不需要 TokenHub,直接调 vLLM 的接口就行。但只要你上了多卡并行,或者搞了多实例集群,TokenHub 的价值就出来了。
我在腾讯云上部署时,用 TokenHub 做了一层请求分发。多个 GPU 实例组成一个后端池,TokenHub 根据每个实例的负载情况动态分配请求。比如实例 A 的显存快满了,TokenHub 会把新请求转到实例 B。这一层逻辑如果自己写,要考虑负载感知、健康检查、故障转移,工作量不小;直接用 TokenHub,配置一下路由规则就行。
还有任务优先级调度。批处理任务和实时请求混跑时,实时请求需要保证延迟,批处理任务可以慢慢跑。我在 TokenHub 里设置了两个队列,高优先级队列走单独实例,低优先级队列共享剩余资源,互不干扰。
另外还有个很实用的功能:版本灰度。模型升级后,可以先让 10% 的流量走新版本,验证没问题再把流量全部切过去。这个在自部署场景下尤其重要,因为模型版本升级不像 API 那样一键完成,涉及镜像构建、服务器更新,如果没有灰度机制,出问题就是全量事故。
3.3 API 场景下,TokenHub 如何帮你省钱和避险
如果你最终选了 API 路线,TokenHub 也不是多余的。我在调第三方 API 时,遇到的最大问题就是服务商不稳定。出现过几次503 server overloaded的情况,把批量任务中断了。后来我在 TokenHub 里配置了多个上游 API 服务商,实现了一个简单的故障转移:主服务商返回错误时,自动重试到备用服务商,任务不再中断。
还有成本控制。公司里不同项目组都在用 AI 能力,如果没有 TokenHub 这类计量网关,月底账单出来你根本说不清是谁烧的钱。我在 TokenHub 里给每个项目单独配了 key,独立计量,超预算自动熔断,花多少钱一目了然。另外,不同 API 服务商的价格是浮动的,TokenHub 可以配价格路由,优先走便宜的,贵的兜底,长期下来能省不少钱。
所以你看,TokenHub 不是一个"可选"组件,而是整个 AI 服务架构里的"标配"。它的存在,让你在自部署和 API 之间切换的时候,业务侧基本无感,这也是为什么我认为选型时要把它放在决策环里一起考虑。
4. 实操对比:两条路线我都跑通了,过程细节全记录
光说不练假把式。这一节我把两条路线的实操过程完整记录下来,包括我踩过的坑和最终稳定的方案。你可以直接按这个思路去复现。
4.1 自部署路线:从零到跑起 Hy4 preview 的完整流程
第一步:准备基础环境
我在腾讯云上买了一台 4 卡 H800 的 GPU 实例,操作系统选的 Ubuntu 22.04,预装了 NVIDIA 驱动和 CUDA 环境。如果你是新购实例,建议在创建时直接选择"公共镜像 + GPU 驱动"的选项,省去手动装驱动的麻烦。装驱动这事我踩过坑,版本不对会导致 CUDA 初始化失败,排查起来很费劲。
第二步:构建模型推理镜像
我用 Docker 来管理推理环境。这里要注意,不要自己从零搭推理环境,直接用社区成熟的镜像。我用的 vLLM 官方镜像基础上加装 Hy4 preview 的模型文件。具体流程是:
- 在本地或服务器上写好 Dockerfile,把 vLLM 框架和依赖装好。
- 把模型权重文件放进镜像,或者通过 Volume 挂载到容器里。
- 构建镜像并推送到腾讯云容器镜像服务(TCR)。
这里有个关键点:用腾讯云容器镜像服务的内网地址拉取/推送镜像,速度非常快,而且不走公网流量。腾讯云容器镜像服务支持私有网络访问,在服务器上配置好 Docker 的镜像仓库地址后,直接docker pull或docker push,秒级完成。我之前傻乎乎地走公网推大镜像,一个 20GB 的镜像推了两小时,换成内网后几分钟搞定。
第三步:启动推理服务
我用的启动命令大致如下:
docker run -d --gpus all \ --shm-size=32g \ -v /data/models:/models \ -v /data/cache:/cache \ -p 8000:8000 \ --env NVIDIA_VISIBLE_DEVICES=0,1,2,3 \ my-hy4-image:latest \ --model /models/hy4-preview \ --tensor-parallel-size 4 \ --max-model-len 131072 \ --gpu-memory-utilization 0.9 \ --enforce-eager \ --served-model-name hy4-preview参数解释一下:
--tensor-parallel-size 4:4 卡并行,模型权重分到 4 张卡上。--max-model-len 131072:最大上下文长度,初始设 128K,实测稳定后再往上调。--gpu-memory-utilization 0.9:允许使用 90% 的显存,留 10% 给 CUDA 上下文和临时缓冲区。设成 0.98 容易 OOM,建议别太贪。--enforce-eager:禁用 CUDA graph 优化,减少显存占用。如果你的显存够大,可以去掉这个参数,吞吐会更高。
第四步:配置 TokenHub 网关
自部署服务起来后,我不直接暴露 8000 端口给业务,而是把 TokenHub 部署在前面,统一入口。TokenHub 配置里填自部署服务的地址,设置好路由规则和缓存策略。业务侧只需要知道 TokenHub 的地址,不用关心后端细节。
4.2 API 调用路线:三分钟接入,但要处理好重试与容灾
API 调用的接入过程确实简单。拿到的 API key 和 endpoint 之后,写个 Python 脚本就能跑:
from openai import OpenAI client = OpenAI( api_key="YOUR_API_KEY", base_url="https://your-api-endpoint.com/v1" ) response = client.chat.completions.create( model="hy4-preview", messages=[ {"role": "system", "content": "你是专业文档分析助手。"}, {"role": "user", "content": "请总结这份合同的要点。"} ], max_tokens=4096 ) print(response.choices[0].message.content)但接入简单不代表稳定。我实际跑批量任务时遇到的问题不少,总结下来最重要的就是要做重试和退避:
import time import random def call_with_retry(client, messages, max_retries=5): for attempt in range(max_retries): try: response = client.chat.completions.create( model="hy4-preview", messages=messages, max_tokens=4096 ) return response except Exception as e: if "503" in str(e) or "529" in str(e) or "overloaded" in str(e): wait_time = (2 ** attempt) + random.uniform(0, 1) time.sleep(wait_time) continue else: raise e raise Exception("Max retries exceeded")这个重试逻辑让我的批量任务成功率从 85% 提升到了 99% 以上。重试间隔指数退避,避免把服务商打得更死。
如果你有多个 API 服务商,建议把容灾逻辑放到 TokenHub 里做,业务侧代码不用写死。TokenHub 的故障转移配置可以实现"主 API 连续失败 N 次后,自动切到备用 API",比业务侧写死更优雅。
4.3 运维工作量实测:GPU 服务器运维都做哪些活
这是很多人忽略的成本。自部署虽然单价算下来便宜,但运维是真的耗人力。我列一下实际做过的运维工作:
- 监控与告警:必须盯着显存使用率、GPU 温度、功耗、CPU 内存、磁盘 IO。我用的腾讯云自带监控加上 Prometheus + Grafana,设置告警规则,显存超过 90% 就告警,避免 OOM 导致服务崩溃。
- 容器管理:Docker 容器如果崩溃了,需要设置自动重启策略。还要定期拉取新镜像、清理无用镜像释放磁盘空间。
- 模型版本管理:模型文件更新后,需要重新构建镜像、滚动更新容器。这个用 TokenHub 的灰度功能可以平滑过渡,否则就是停机更新。
- 安全加固:安全组只放行必要端口,业务端口 8000 不直接暴露公网,前面用 TokenHub 网关做鉴权。我见过有人把 vLLM 的端口直接暴露公网,被薅羊毛跑亏本的,安全这关必须把好。
- 数据分析与调优:定期看日志,分析 token 利用率、缓存命中率、平均延迟,调整并发参数和缓存策略。
这些工作说实话,个人开发者一个人扛会很吃力。如果团队里有运维背景的,自部署完全可行;如果没有,建议要么选 API,要么找聚搜云这类服务商做代运维,把运维包袱甩出去。
5. 决策参考:什么情况选 API,什么情况选自部署
我自己的结论是:没有绝对的对错,只有合不合适。下面给出一个决策框架,你可以对着自己的场景打勾。
5.1 决策因子打分:量化你的真实需求
| 决策因子 | 选 API 的场景 | 选自部署的场景 |
|---|---|---|
| 日均调用量 | 低于 100 万 token | 高于 300 万 token |
| 延迟要求 | 可接受秒级响应 | 需要毫秒级响应 |
| 数据敏感度 | 低,可接受外发 | 高,必须内网处理 |
| 并发峰谷 | 波动大,弹性需求强 | 稳定,长期运行 |
| 运维能力 | 无专职运维 | 有 DevOps 或愿投入人力 |
| 预算模式 | 希望按量付费 | 有固定预算,可包月 |
| 模型版本控制 | 不关心底层版本 | 需要控制版本和升级节奏 |
| 上下文复用率 | 低,每次请求独立 | 高,固定前缀多 |
每个维度打勾后,倾向哪边多就选哪边。我实测下来,大多数中小团队的综合得分,会落在"API 为主 + 自部署为辅"的混合区。
5.2 三类典型用户的具体建议
个人开发者 / 学生:日均调用量小,高峰期集中。直接选 API,注册拿 key 就能跑,不用考虑运维。偶尔遇到 503 报错,做好重试就行。TokenHub 在这阶段不是必须的,但如果你同时在用多个模型的 API,可以提前接入,养成统一管理的习惯。
中小企业 / 创业团队:业务有一定调用量,也有部分数据隐私要求。建议混合方案:核心业务数据走自部署,非敏感数据走 API。TokenHub 这个阶段就必须上了,用它做统一网关、成本统计和自动容灾。GPU 服务器可以买一台入门级(比如单卡 A100 或 L40S),先跑起来,等业务量上来再扩容。
高频生产场景(客服、Copilot、批量文档处理):自部署是主力,API 做兜底。GPU 服务器配置往高配走,TokenHub 的缓存和负载均衡功能全开,把单位成本压到最低。如果团队没有运维人力,建议找专业服务商帮着搭,把精力放在业务上。
6. 踩坑实录与问题排查速查表
实操过程中我遇到了一堆报错,大部分都是在搜索框里能搜到的高频问题。整理一个速查表,你遇到类似问题可以直接对号入座。
6.1 上下文长度报错:this model's maximum context length is 1048576 tokens
这个报错的意思是请求的总 token 数超过了模型支持的最大上下文长度。Hy4 preview 这类模型虽然支持超长上下文,但 1048576 tokens(约 100 万)已经是上限,而且这是"输入 + 输出"的总和。我在做超长文档分析时,经常一条请求就把这 100 万额度占满了。
解决办法有三种:
- 分段处理:把长文档拆成多个片段,分别处理后再汇总结果。这是最通用的方案。
- 摘要压缩:对历史对话或旧内容做摘要,用摘要代替原文,压缩输入长度。
- 分批续写:利用"流式输出 + 自行维护上下文"的方式,分批喂给模型,控制每次请求的 token 数。
6.2 服务过载报错:503 server overloaded/529 overloaded
这两个报错都表示服务端当前负载过高,无法处理请求,是 API 场景最常见的错误。处理方案就是前面说的重试机制,但要注意重试策略:
- 指数退避 + 抖动,避免重试风暴。
- 重试次数设上限,比如 5 次,超过后放弃该请求并记录日志。
- 如果频繁遇到 503,说明业务量已经超过当前 API 服务的承载能力,考虑切到自部署实例。
6.3 Docker 连接失败:failed to connect to the docker api at npipe:////./pipe/docker_engine
这个报错常见于 Windows 环境下的 Docker Desktop,在服务器上也会出现,原因基本是 Docker 服务没起来或 Socket 路径不对。排查步骤:
# 检查 Docker 服务状态 systemctl status docker # 如果服务没起,启动它 systemctl start docker # 确认 Socket 文件存在 ls -la /var/run/docker.sock服务器上遇到这个问题,90% 是 Docker 服务没启动或重启后没自动拉起。设置 Docker 开机自启:
systemctl enable docker别小看这个,我因为急着部署,手动起的容器,结果服务器一重启服务全挂了,那天晚上我就是这么被教育过来的。
6.4 腾讯云容器镜像服务推送的细节问题
往腾讯云容器镜像服务推送镜像时,容易踩的坑有两个:
第一个是认证问题。推送前需要先登录:
sudo docker login ccr.ccs.tencentyun.com登录时用你在腾讯云账号下创建的访问凭证,不是登录控制台的密码。这个凭证在容器镜像服务的控制台里创建,注意别泄露。
第二个是镜像命名规范。镜像标签必须是"内网地址/命名空间/仓库名:版本号"的格式,比如:
sudo docker tag my-hy4-image:latest ccr.ccs.tencentyun.com/your-namespace/hy4-preview:v1.0 sudo docker push ccr.ccs.tencentyun.com/your-namespace/hy4-preview:v1.0命名空间和仓库名如果没创建,推送会报错。建议先在控制台把命名空间和仓库建好,再执行推送。
6.5 自部署时显存溢出的排查思路
如果你自部署时遇到CUDA out of memory,按这个顺序排查:
- 降低
max-model-len:上下文长度是显存消耗的大头。从 128K 降到 64K,显存占用能降 30% 以上。 - 降低
gpu-memory-utilization:从 0.9 降到 0.8,给 KV Cache 留更多余量。 - 减少并发数:vLLM 的
max-num-seqs参数控制最大并发序列数,调低它。 - 换量化精度:FP16 换 FP8 或 INT8,显存占用能降一半左右,但精度有轻微损失,视场景权衡。
我最后稳定运行的配置是:max-model-len 131072,gpu-memory-utilization 0.85,max-num-seqs 8。这个配置下,单请求支持的上下文长度和并发数都比较均衡,不会频繁 OOM,吞吐也够用。
最后再分享一个我个人的体会。选 API 还是自部署,与其说是省钱算账,不如说是在选一种"掌控感"。API 路线把运维交给别人,换来的是快速上线和弹性;自部署路线把一切都握在自己手里,换来的是稳定和成本摊薄。我现在的方案是两者都留,日常请求走 API,批量任务和核心数据走自部署,TokenHub 在中间做路由和缓存,两头的好处都占到了。如果你刚开始接触 Hy4 preview 这类超长上下文模型,建议先不要直接上高性能 GPU 服务器,拿 API 跑通业务流程,确认需求量和稳定性要求后,再决定要不要用自部署把成本降下来。这样试错成本最低,也不会一上来就被复杂环境搭建劝退。