2026-05-14 20:00:00

HAMi 是目前 Kubernetes 上最活跃的开源 vGPU 方案,能够将一块物理 GPU 按显存和算力细粒度地切分为多个虚拟 GPU,供不同 Pod 共享。
本文聚焦 HAMi DRA 模式的部署与使用:安装 HAMi DRA 驱动后,分别用原生模式和兼容模式提交 Pod,验证 GPU 切分是否生效。
Kubernetes 在 1.34 中正式 GA 了 DRA(Dynamic Resource Allocation,动态资源分配)。DRA 的核心改进是让调度器参与资源分配,在 Pod 调度阶段就精确匹配设备属性,避免了 DevicePlugin “调度到节点后才发现资源不够” 的问题。
HAMi 最近的版本已经正式接入了 DRA,用户既可以使用原生 DRA 模式,也可以用 DevicePlugin 兼容模式无缝迁移。
HAMi(异构 AI 计算虚拟化中间件)是一个用于管理 Kubernetes 集群中异构 AI 计算设备的开源平台。前身为 k8s-vGPU-scheduler,HAMi 可在多个容器和工作负载之间实现设备共享。
HAMi 是云原生计算基金会(CNCF)的 Sandbox 项目,并被收录于 CNCF 技术全景图和 CNAI 技术全景图。

设备共享
内存管理
设备规格
易用性
开放治理
前提条件:
K8s 1.34 及以上版本,同时开启 DRAConsumableCapacity Feature Gate
Container Runtime 必须开启 CDI
NVIDIA GPU 驱动 440 及以上版本
特别是第一条,DRAConsumableCapacity 在 1.36 才默认开启,1.34、1.35 需手动配置。
安装 GPU Operator 时需要关闭 DevicePlugin:
|
|
--set devicePlugin.enabled=false:关闭 DevicePlugin,避免与后续安装的 DRA Driver 冲突。
HAMi DRA Webhook 需要 TLS 证书,因此需要提前安装 cert-manager 用于自动签发。
|
|
为节点打上 gpu=on 标签,未标记的节点不会被 HAMi 接管。
|
|
使用以下命令添加 HAMi 图表仓库:
|
|
用以下命令进行安装:
|
|
注意:DRA 模式与传统模式不兼容,请勿同时启用。
另外如果 GPU 驱动是主机预装,非 GPU Operator 安装,则安装时需额外指定:
|
|
正常情况下,会在 hami-system 下启动以下 Pod
|
|
查看 dra-driver 是否正常发布 resourceslice:
|
|
详情如下:
|
|
可以看到,ResourceSlice 记录了 GPU 的架构、型号、显存等信息。
DRA 原生使用流程是先创建 ResourceClaim,然后创建 Pod 使用该 ResourceClaim。

ResourceClaim 以及对应 Pod 完整 yaml 如下:
|
|
通过 ResourceClaim 可以看到资源分配情况:
|
|
Pod 中执行 nvidia-smi 看到显存是我们申请的 10G,说明 HAMi 生效了。
|
|
原生 DRA 模式需要手动创建 ResourceClaim,对存量业务不够友好。
为了便于大家迁移,HAMi 提供了兼容模式:用户仍然像 DevicePlugin 那样申请资源,由 HAMi DRA Webhook 自动拦截并转换为 ResourceClaim,调度器分配后再挂载到 Pod。
和使用 DevicePlugin 一样,正常在 resources 中申请资源即可:
|
|
HAMi 会根据 nvidia.com/gpumem、nvidia.com/gpucores 自动生成 ResourceClaim,并绑定到 Pod。
对应的 ResourceClaim 如下:
|
|
核心配置:
|
|
对比原始 Pod 的资源申请:
|
|
Webhook 转换映射关系:
| 原始资源申请 | ResourceClaim 字段 |
|---|---|
nvidia.com/gpu: 1 |
requests.count: 1 |
nvidia.com/gpumem: 10240 |
requests.capacity.memory |
nvidia.com/gpucores: 50 |
requests.capacity.cores |
同样的,显存为 10240M,说明 HAMi 也生效了。
|
|
本文围绕 HAMi DRA 模式完成了从安装到验证的完整实践:
dra.enabled=true
nvidia.com/gpu 等资源申请,HAMi DRA Webhook 自动转换为 ResourceClaim,存量业务零改造即可迁移两种模式的核心差异在于 ResourceClaim 的创建方式——原生模式手动管理、兼容模式自动生成,底层调度与切分逻辑一致。
2026-05-13 04:00:00

在上一篇 DRA P1:DRA 能解决什么问题?从部署到使用的完整体验 中,我们部署了 DRA 并成功运行了第一个 GPU Pod。DRA 相比 DevicePlugin 最大的区别在于:资源展示更详细,资源申请也更灵活。靠三个 API 对象来实现:ResourceSlice、DeviceClass、ResourceClaim。
那么这三个对象各自干什么,它们之间怎么配合?本篇就来回答这个问题。
如果对 K8s 比较熟悉的同学就会发现,DRA 的设计思路和 CSI 有点类似,DRA 把异构设备的管理拆成了同样的三层:

| 存储 (CSI) | 设备 (DRA) | 谁创建 | |
|---|---|---|---|
| 供给 | PV | ResourceSlice | 驱动 (Driver) |
| 分类 | StorageClass | DeviceClass | 管理员 (Admin) |
| 需求 | PVC | ResourceClaim | 用户 (User) |
ps:严格来说 ResourceSlice 和 PV 不能完全等同——PV 是一块具体的存储卷,ResourceSlice 更像是节点上设备的目录清单。但从供需关系看,模式是一样的:
DRA 三者之间的关系,按数据流方向串起来就是:
|
|
deviceClassName 引用某个 DeviceClass,声明需要几个该类设备逐个来看。
ResourceSlice 是 DRA 驱动向集群"公告"设备信息的方式, 可以理解为是对 DevicePlugin 提供的 nvidia.com/gpu:4 这个信息的扩展。
|
|
HAMi 提供的 hami-device-plugin-nvidia 为了能够感知 GPU 显存信息,也是只能通过给节点打 Annotations 方式实现,DRA 中的 ResourceSlice 则是原生支持了这些。
一个标准的 ResourceSlice 内容如下所示:
|
|
可以看到,相比 DevicePlugin 只能报一个 nvidia.com/gpu:4 数量信息,ResourceSlice 把 GPU 架构、型号、显存、驱动版本都暴露出来了。有了这些信息,“只要 A100”、“显存大于 40Gi 的 GPU"这类调度策略才能做到。
driver:DRA 驱动
nodeName:资源所属节点
pool:资源池,对于本地资源,名称一般是节点名
attributes:描述设备固有特性的键值对,用于标识和选择设备
capacity:设备可分配的资源量(如 GPU 显存),DRAConsumableCapacity 特性启用后可被多个 ResourceClaim 按容量共享消耗
DeviceClass 定义了"什么样的设备属于这一类”,一般由 DRA Driver 或者集群管理员创建。
一个完整的 DeviceClass 内容如下:
|
|
DeviceClass 的关键是 CEL 选择器:
|
|
这表示:驱动为 gpu.nvidia.com 且类型为 gpu 的设备才属于这个 Class。
CEL 表达式可以组合任意属性条件。比如管理员可以创建一个只包含高端 GPU 的 DeviceClass:
|
|
这样用户只需要在 ResourceClaim 中指定 deviceClassName: gpu.nvidia.com-a100,就能精确地申请到 A100,而无需关心 CEL 表达式的写法。
DevicePlugin 只能通过 gpu.nvidia.com:1 指定数量,GPU 型号管不了,得靠 nodeSelector 之类的方式绕路。DRA 直接在 Claim 里选 Class 就行。
说白了,DeviceClass 就是把 CEL 的复杂性藏起来——管理员写规则,用户选 Class。
DeviceClass 还可以在 config 字段中定义传递给 DRA 驱动的配置参数:
|
|
当 Kubelet 调用驱动的 NodePrepareResources 准备设备时,会将这些配置传递给驱动。管理员在 Class 级别统一设置设备参数,不用每个用户单独配。
目前 NVIDIA DRA 驱动对 config 的支持还在完善中,具体可配置项参考驱动文档。
extendedResourceName 是 DeviceClass 中的一个字段,开启后匹配该 Class 的设备可以通过 Pod 的扩展资源请求(resources.requests/limits)来使用,不用写 ResourceClaim。调度器会负责资源核算,确保不会超分配。
DeviceClass 中指定 extendedResourceName:
|
|
Pod 按传统方式申请即可:
|
|
extendedResourceName是 Alpha 特性,需要启用DRAExtendedResourcefeature gate 才能生效。该特性在 Kubernetes 1.34/1.35 默认关闭,1.36 开始默认开启。
ResourceClaim 是用户对资源的"采购订单",描述需要什么设备、需要多少。
上一篇我们用了 ResourceClaimTemplate:
|
|
随 Pod 创建而自动生成 ResourceClaim,Pod 删除时自动回收。适合"一个 Pod 用一份资源"的场景。
单独创建的 ResourceClaim 有独立的生命周期,可以跨 Pod 共享。适合"多个 Pod 共用同一份资源"的场景(如 GPU 共享)。
是的,DRA 默认就支持 GPU 共享。多个 Pod 同时引用同一个 Claim,获得同一个设备的访问权,本质是共享同一块 GPU。效果和 DevicePlugin 的 TimeSlicing 方案类似。
关于 TimeSlicing 方案推荐阅读这篇文章:一文搞懂 GPU 共享方案: NVIDIA Time Slicing
例如:
|
|
Pod A 和 Pod B 共享同一个 GPU 设备,调度器会将它们调度到同一节点,分配同一个设备。
结果如下:
|
|
ResourceClaim 支持两种分配模式:
|
|
All 模式本质是:我要这个节点这个资源池里的所有设备。
只有当该节点上该 Class 下的所有设备均未被占用时,分配才会成功;否则分配失败(除非设置了 adminAccess)。适合分布式训练这类需要独占节点全部 GPU 的场景。
除了通过 deviceClassName 限定设备范围,ResourceClaim 还可以添加额外的 CEL 选择条件,进一步缩小匹配范围:
|
|
这里虽然引用的是通用的 gpu.nvidia.com Class,但通过额外选择条件限定只匹配 GB200 GPU。
当请求多个设备时,可以用 constraints 定义跨设备的约束条件:
|
|
matchAttribute: productName 表示:分配的 2 个 GPU 必须是相同型号。
matchAttribute: cudaComputeCapability 则是确保 CUDA 兼容性。
matchAttribute 配置主要匹配 ResourceSlice 中的 devices.attributes 参数,保证所有设备都有同样的参数。
三个对象各自干什么搞清楚了,接下来看它们怎么配合完成一次资源分配。以下流程以上篇的 gpu-test-pod 为例。

|
|
DRA 驱动以 DaemonSet 方式运行在每个节点上,持续 watch 设备状态。设备变化时(新增、移除、健康状态变化),驱动更新对应的 ResourceSlice 并递增 pool.generation。
|
|
DeviceClass 是管理员对 ResourceSlice 中设备的分类标准。驱动把原始设备信息发布到集群后,管理员通过 DeviceClass 告诉用户"有哪些设备类别可用"。
例如创建一个通用的 NVIDIA GPU 类别:
|
|
用户不需要理解 CEL 语法,只需知道 deviceClassName: gpu.nvidia.com 代表"NVIDIA GPU"。管理员写好规则,用户选 Class 就行——跟 CSI 里选 StorageClass 一个道理。
用户根据 DeviceClass 创建 ResourceClaim,声明需要什么设备、需要多少。上一篇我们用的是 ResourceClaimTemplate:
|
|
也可以直接创建独立的 ResourceClaim(适合跨 Pod 共享的场景)。
无论哪种方式,都是通过 deviceClassName: gpu.nvidia.com 引用 DeviceClass,告诉调度器"我需要这个类别的设备"。
与 DevicePlugin 只能指定数量不同,ResourceClaim
allocationMode除了ExactCount之外还支持All模式,不指定数量,直接占用该节点该 class 下的全部设备。适合分布式训练等需要独占所有 GPU 的场景。
用户创建 Pod,通过 resourceClaims 引用 Template:
|
|
Pod 提交后,调度流程如下:
|
|
调度器不仅选节点,还选定了具体设备。Reserve 阶段调度器在内部缓存中完成设备选择,Bind 阶段将分配结果(哪个节点、哪个设备)写入 ResourceClaim.status.allocation,后续 Driver 和 Kubelet 都基于这个结果工作。
三个组件的分工:
| 组件 | 职责 |
|---|---|
| Scheduler | 选节点 + 选具体设备,写入 allocation |
| Driver | 根据 allocation 结果准备设备(NodePrepareResources) |
| Kubelet | 调用 Driver + 将设备注入容器 |
|
|
最终我们看到 P1 中的运行结果:
|
|

整个过程中 ResourceClaim 的状态变化:
| 状态 | 触发时机 | 含义 |
|---|---|---|
| (创建) | Pod 创建时由 Controller 生成 | 等待调度器处理 |
| Allocated | 调度器完成分配 | 已选定具体设备,写入 allocation 结果 |
| Reserved | Pod 绑定到节点 | 设备已预留给该 Pod,其他 Pod 不可使用 |
P1 中我们看到的 allocated,reserved 就是这两个状态的组合:
|
|
Pod 删除后,基于 Template 创建的 ResourceClaim 会随 Pod 一起被回收,设备回到可分配状态。若是独立创建的 ResourceClaim,Pod 删除后 allocation 被清除、Claim 回到 Pending,但 Claim 本身不会被删除,可被其他 Pod 重新引用。
| 概念 | 职责 |
|---|---|
| ResourceSlice | 设备目录,驱动发布设备信息 |
| DeviceClass | 分类标准,封装选择规则 |
| ResourceClaim | 资源订单,描述用户需求 |
协作流程:
下一篇来看 DRA 的完整工作流和源码实现——调度器怎么分配、Kubelet 怎么准备设备,以及 NVIDIA DRA Driver 的源码。
2026-05-07 04:00:00

在 Kubernetes 里用 GPU 这类设备,大家习惯走 DevicePlugin。但 AI workload 越来越复杂,DevicePlugin 的短板越来越明显——没法描述设备属性,调度器不参与分配,Pod 经常调度到节点后才发现资源不够。
DRA(Dynamic Resource Allocation,动态资源分配)就是 Kubernetes 针对这些问题推出的新框架。
DRA 核心功能在 Kubernetes 1.34 已 GA,可以放心用在生产环境。
只能上报"数量",无法描述设备属性
调度器不参与分配,导致调度冲突
不支持资源预留
设备信息通过 ResourceSlice 进入 API Server,调度器可见
精确的设备选择(通过 CEL 表达式)
支持资源预留和共享
例如:
DevicePlugin:用户申请 1 个 GPU → 调度器随机选节点 → Kubelet 本地分配 -> Pod 启动后发现显存不够 OOM(比如你想要 A100 80GB,但被调度到了只有 V100 16GB 的节点,因为调度器无法区分 GPU 型号)
DRA:用户显式申请一个"显存>40Gi 的 GPU" → 调度器精确匹配 → 预分配成功 → Pod 正常启动

K8s 相关:
Kubernetes v1.32 or newer.
DRA and corresponding API groups must be enabled.
Container Runtime 相关
ps:K8s 最好 1.34+,Containerd 则是 v1.7.x 及以上。
v1.32+ 已内置(beta),v1.34 GA
NVIDIA 官方在推进将 DRA 也集成到 GPU Operator,不过目前还没有完成,需要分别安装。
安装 GPU Operator 时需要指定不安装 DevicePlugin,否则会和后续安装的 DRA GPU Plugin 冲突。
安装命令如下:
|
|
核心参数
|
|
NVIDIA 提供的 DRA Driver:dra-driver-nvidia-gpu ,包含了下面两个 plugin:
GPU Plugin:用于替代之前的 DevicePlugin,即:https://github.com/nvidia/k8s-device-plugin
ComputeDomain Plugin:此插件专门用于支持 Multi-Node NVLink (MNNVL),这是 NVIDIA GB200 NVL72 等新一代系统实现节点间 GPU 高速直连的关键技术。它引入 ComputeDomain 这一抽象概念,用于在多个 Pod(可能跨节点)之间自动建立并保障一个安全、隔离的 NVLink 通信域。
安装命令如下:
|
|
注意:在 KEP 5004 正式发布之前,resources.gpus.enabled=true的 DRA 驱动无法与标准的 NVIDIA GPU DevicePlugin 同时安装。两者会因管理相同的扩展资源(nvidia.com/gpu)而发生冲突。
可以通过
--set 'gpuResourcesEnabledOverride=true'安装。
核心参数:
|
|
对于 DevicePlugin 来说是通过直接在 node 的 capacity 字段上展示nvidia.com/gpu 来表示该节点上有多少张 GPU。
|
|
比如上面这个节点 capacity 信息,只能看出该节点有 4 张 GPU,但是其他的:型号、显存、拓扑等信息完全无法得知。
DRA 则是有单独的 ResourceSlice 对象记录详细信息
暂时忽略这里面的 compute-domain 资源
|
|
以 gb200-pod2-f06-node05-gpu.nvidia.com-j7ggv 为例,查看详情:
|
|

里面记录了节点上所有 GPU 的详细信息,关键属性包括:
type: string: gpu(设备类型)
architecture: string: Blackwell(GPU架构)
brand: string: Nvidia(品牌)
productName: string: NVIDIA GB200(产品名)
cudaComputeCapability: version: 10.0.0(计算能力)
driverVersion: version: 580.126.20(驱动版本)
resource.kubernetes.io/pciBusID(PCI总线地址)
容量 (capacity):目前只显示了 memory: 189471Mi。
在 ResourceSlice展示了资源的‘库存清单’后,DeviceClass则定义了如何使用这些资源的‘筛选规则’。
|
|
例如 gpu.nvidia.com deviceclass 内容如下:
|
|
DeviceClass 中通过 CEL 定义规则
|
|
含义如下:
gpu.nvidia.com
gpu
满足这两个条件的设备就属于这个 DeviceClass。
创建 ResourceClaimTemplate 申请一个 GPU
|
|
然后创建 Pod 指定使用这个 resourceClaimTemplate,通过 resourceClaimTemplateName 指定名称进行关联。
|
|
验证调度结果
|
|
|
|
Pod 成功启动,并被调度器精确地分配到了拥有符合条件 GPU 的 gb200-pod2-f06-node05 节点。
|
|
查看 Pod 日志,成功分配了一个 GPU:
|
|
这篇文章带大家从零搭了一套 DRA 环境,跑通了第一个 GPU Pod。几个关键点:
和 DevicePlugin 最大的区别:调度器在做调度决策时就能看到设备的全部信息,不再盲选,可以做更精细的调度。
DRA(Dynamic Resource Allocation) 的引入,标志着 Kubernetes 在 资源管理 方向的重大演进。它不仅解决了现有资源管理模型的痛点,还为复杂的异构硬件管理提供了原生支持,例如 GPU、FPGA、高性能 NIC 等等。
2026-04-23 04:00:00

Kimi-K2.6 是 Moonshot AI 在 4 月 20 日正式发布并开源的旗舰大语言模型,具备强大的长上下文推理、多模态理解和工具调用能力。本文将详细介绍如何使用 vLLM 部署 Kimi-K2.6 模型,并附上性能基准测试。
根据各大榜单排名以及实测表现,Kimi-K2.6 在多项评测中表现出色,是当前开源模型中的佼佼者。
在 Artificial Analysis Intelligence Index 中得分如下:

详细专项能力测评:

Arena AI Code Arena-WebDev 得分如下:

从榜单数据来看,Kimi-K2.6 和 GLM-5.1 各有千秋,二者也都基本达到了 Claude Opus 4.6 的水平。
本文所有测试均在以下环境完成:
|
|
首先安装 HuggingFace CLI 工具用于下载模型:
|
|
Kimi-K2.6 原生提供 Int4 精度版本,模型权重约需 595 GB 显存,加上推理时的 KV Cache,官方推荐最低显存为 714 GB。
H100 80G × 8 也能跑起来,但由于总显存只有 640 GB,余量较紧,上下文长度会受到一定限制。
|
|
由于单机多卡即可运行,因此在 Kubernetes 中可以直接使用 Deployment 进行部署:
使用 vllm/vllm-openai:v0.19.1-cu130 镜像即可
|
|
部署要点:
ResourceClaimTemplate 声明 4 块 GPU,由 DRA 调度器自动分配hostPath 挂载到 /app/model 和 /app/eagle-model
| 参数 | 说明 |
|---|---|
--tensor-parallel-size |
张量并行数,通常等于 GPU 数量 |
--attention-config.use_trtllm_ragged_deepseek_prefill |
启用 TRT-LLM 优化的不规则 prefill,加速长上下文处理 |
--tool-call-parser kimi_k2 |
使用 Kimi-K2.6 工具调用解析器 |
--reasoning-parser kimi_k2 |
启用 Kimi-K2.6 推理能力解析 |
--enable-auto-tool-choice |
启用自动工具选择 |
--trust-remote-code |
信任模型中的远程代码 |
--gpu-memory-utilization |
GPU 显存利用率,建议 0.85–0.95 |
--speculative-config |
启用 EAGLE-3 投机解码(测试显示当前版本效果不佳,接受率仅 1.28%) |
部署完成后,验证服务是否正常运行:
|
|
Kimi-K2.6 支持开启/关闭思考模式,通过 chat_template_kwargs 参数控制。
|
|
开启思考模式(默认):
|
|
关闭思考模式:
|
|
Kimi-K2.6 支持视觉-语言多模态输入:
|
|
使用 vLLM 内置的 benchmark 工具进行测试:
|
|
|
|
关键指标解读:
| 指标 | 含义 | 测试结果 |
|---|---|---|
| TTFT | Time To First Token,首 token 延迟 | 平均 162 ms |
| TPOT | Time Per Output Token,每个 token 的生成时间 | 平均 24.4 ms |
| 吞吐量 | Output token throughput | 1182 tok/s |
在 vLLM 启动参数中添加 --speculative-config 启用 EAGLE-3 投机解码:
|
|
在此配置下再次运行基准测试:
测试结果:
|
|
结果分析:
开启推测解码后,性能反而下降约 46%(吞吐量从 1182 tok/s 降至 631 tok/s)。根本原因是 EAGLE-3 投机模型的接受率仅 1.28%,远低于有效阈值(通常需要 60%+ 才有正收益)。
过低的接受率直接导致:
ps:本次测试开启推测解码后产生负收益,推测是当前 EAGLE-3 模型与 Kimi-K2.6 的适配参数或配置方式存在问题(1.28% 的接受率明显异常)。在官方给出更明确的配置指引前,不建议开启 推测解码功能。
Kimi-K2.6 是一个综合能力非常强的开源模型,长上下文、多模态、工具调用、推理能力都具备,部署起来也不算复杂,单机多卡就能跑。
对于编码任务来说,模型选择也比较简单:
从榜单数据来看,Kimi-K2.6 和 GLM-5.1 各有千秋,二者也都基本达到了 Claude Opus 4.6 的水平。 当然,各家发布时都喜欢标榜「超越 Claude」,但真落到实际使用上,Claude 的体感依旧是目前最稳的——不过最近网上关于 Claude “降智” 的吐槽也不少。
最后再扯一句题外话。从 GLM-5 到 GLM-5.1 再到这次的 Kimi-K2.6,国产大模型的迭代速度确实肉眼可见。虽然跟 OpenAI、Anthropic、Google 这”御三家”比,整体差距还在,但也算是”能够干活”了。
哦对,DeepSeek V4 什么时候发?(手动狗头)
2026-04-16 04:00:00

你是否遇到过这样的困扰:手头有 OpenAI、Claude、本地部署的多个 AI 模型:
New API 就是来解决这些问题的。
New API 是什么?
Next-Generation LLM Gateway and AI Asset Management System
New API 是新一代 AI 基座平台,为您的 AI 应用提供统一的基础设施。承载所有 AI 应用,管理您的数字资产,连接未来的统一接口平台。
核心特性:
技术架构:
上一篇文章 LiteLLM:打造统一 AI 网关 介绍了 LiteLLM——一个轻量的多模型聚合网关,可以通过统一的 API 接口调用 OpenAI、Claude、Gemini 等各种模型,还提供了 SDK,非常适合在 Python 项目中直接集成使用。
两者都是优秀的多模型聚合网关,但定位不同:
| 特性 | New API | LiteLLM |
|---|---|---|
| 定位 | 企业级 AI 平台 | 开发者工具 |
| 用户管理 | ✅ 完整的用户体系 | ❌ 无 |
| 计费系统 | ✅ 内置支付和计费 | ⚠️ 仅成本追踪 |
| 权限控制 | ✅ 令牌分组、模型限制 | ⚠️ 基础权限 |
| 可视化界面 | ✅ 完整管理后台 | ✅ 使用监控 |
| SDK 集成 | ❌ 无 | ✅ Python SDK |
| 适用场景 | 对外提供 AI 服务 | 代码内集成调用 |
选择建议:
|
|
使用 SQLite(默认):
|
|
使用 MySQL:
|
|
| 变量名 | 说明 | 默认值 |
|---|---|---|
SESSION_SECRET |
会话密钥(多机部署必填) | - |
SQL_DSN |
数据库连接字符串 | SQLite |
REDIS_CONN_STRING |
Redis 连接字符串 | - |
STREAMING_TIMEOUT |
流式超时时间(秒) | 300 |
浏览器访问 http://ip:3000/ 进入界面,首次访问需要初始化管理员账号。

设置完成后使用管理员账号登录。
渠道是 New API 与上游模型服务的连接配置。

添加渠道:
在「渠道管理」页面添加新的渠道:
例如添加本地 vLLM 部署的 GLM-5:
http://vllm-server:8000/v1
your-api-key
glm-5
模型映射:
可以为模型设置别名,方便统一管理:
|
|

模型配置:
如果使用自定义模型,需要在「模型管理」中配置:
价格设置示例:

| 模型 | 输入价格 | 输出价格 |
|---|---|---|
| GLM-5.1 | $1.00/1M | $4.00/1M |
| Qwen3.5 | $0.50/1M | $2.00/1M |
令牌是用户调用 API 的凭证。

创建令牌:
在「令牌管理」页面创建令牌:
创建后会生成一个 API Key,格式如:sk-xxxxxxxxxxxx
令牌权限控制:
可以为令牌设置:

在首页可以看到:
http://your-domain:3000
|
|
|
|
本文介绍了 New API 的部署和基本使用:
| 功能 | 说明 |
|---|---|
| 一键部署 | Docker/Docker Compose 快速启动 |
| 多模型聚合 | 支持 OpenAI、Claude、Gemini 等格式 |
| 用户管理 | 多用户、令牌分组、权限控制 |
| 计费系统 | 在线充值、按量计费、价格策略 |
| 可视化管理 | 完整的 Web 管理后台 |
New API 适合场景:
New API vs LiteLLM 选型指南:
| 场景 | 推荐 | 原因 |
|---|---|---|
| 对外提供 AI 服务、需要收费 | New API | 内置用户管理、计费系统 |
| 企业内部多用户使用 | New API | 权限控制、用量统计完善 |
| Python 项目内集成多模型 | LiteLLM | Python SDK,代码级调用 |
| 个人开发测试 | LiteLLM | 轻量、配置简单 |
相关文章:
2026-04-08 04:00:00

为什么需要 LiteLLM?
当你在使用多个 AI 模型时,会遇到这些问题:
LiteLLM 通过统一的 OpenAI 兼容接口解决了这些问题,让你只需修改 model 参数就能切换模型。
核心功能:
LiteLLM 作为统一网关,接收所有客户端请求,然后根据 model 参数自动路由到对应的后端模型服务。无论是本地部署的 vLLM,还是云端 API(OpenAI、Claude 等),都可以通过同一套接口调用。
本文将介绍如何在 Kubernetes 环境中部署 LiteLLM,并配置 PostgreSQL 作为数据库。
部署完成后,你可以像这样统一调用不同的模型:
|
|
⚠️ 重要安全提醒
ps:主要影响 PyPI 包,如果是 Docker Image 则不受影响。
如果你的环境中有 LiteLLM,请立即检查版本:
|
|
如果你不幸安装了 1.82.7 或 1.82.8,请假设所有凭证已泄露,立即:
详细信息请参考官方安全公告:LiteLLM Security Update - March 2026 Github Issue: https://github.com/BerriAI/litellm/issues/24518
PostgreSQL 需要 StorageClass,使用 LocalPathStorage:
|
|
查看部署状态:
|
|
使用 Bitnami PostgreSQL Helm Chart 部署:
|
|
查看部署状态:
|
|
OK,准备工作完成,接下来可以开始部署 LiteLLM 了。
|
|
|
|
查看 Pod 状态:
|
|
LiteLLM 对外提供 OpenAI API 格式的端点,会根据 model 自动路由到不同的后端 Provider 上:
|
|
|
|
服务启动后,访问 4000 端口,进入 LiteLLM UI 界面:
|
|
账号 admin,密码为配置文件中指定的 MASTER_KEY:

登录后,跳转到界面上 Usage 页面可以看到不同模型的具体的使用情况:

以及具体请求:

本文详细介绍了 LiteLLM AI Gateway 的 Kubernetes 部署:
LiteLLM 的核心价值:
| 功能 | 说明 |
|---|---|
| 一行代码切换模型 | 只需修改 model 参数,无需改业务代码 |
| 可视化监控 | Web UI 实时查看调用次数、Token 消耗、成本统计 |
| 多模型负载均衡 | 自动在多个模型实例间分配请求 |
| OpenAI 兼容 | 无缝对接现有使用 OpenAI API 的应用 |
如果你已经在使用 vLLM 部署本地模型,可以参考我的其他文章: