为什么AI算力集群这么烧钱?Flex:ai解决大模型与小模型混部场景的GPU浪费难题 为什么AI算力集群这么烧钱Flex:ai解决大模型与小模型混部场景的GPU浪费难题【免费下载链接】flexaiFlex:ai是一个面向AI容器场景的开源项目其核心能力包含两大部分分别是XPU虚拟化和多级智能调度。其中XPU虚拟化分为本地XPU虚拟化和跨节点拉远虚拟化本地XPU虚拟化支持将1台服务器上的XPU算力卡虚拟化分割出多个虚拟算力单元实现单张算力卡在多个容器的共享。跨节点拉远虚拟化支持通过RDMA或TCP网络访问远端节点上的算力卡。多级智能调度支持对切分出的虚拟卡进行Binpack等资源级调度以及对AI训推任务进行分时调度等能力。项目地址: https://gitcode.com/ModelEngine/flexai构建一个AI算力集群成本高昂而其中最烧钱的元凶之一正是GPU浪费。在真实生产集群里DeepSeek、Qwen等大模型与海量小参数量模型CV、Embedding等通常混部运行——小模型用不满整张卡却只能独占申请。开源项目Flex:ai由上海交通大学、西安交通大学、厦门大学、华为联合发起核心能力是XPU虚拟化与多级智能调度把一张物理GPU/NPU虚拟切分成多个可共享的vGPU再配合Binpack与分时调度正是为了解决大模型小模型混部中的GPU浪费难题。一、算力集群为什么烧钱GPU浪费的三大根源 浪费场景传统做法结果小模型独占整卡K8s默认整卡分配设备一张卡利用率不足20%闲时资源空转无分时复用机制夜间低谷整卡闲置异构任务混部缺乏资源级精细调度高低负载任务互相拖累一句话总结卡很贵但大多数时间只有一小部分算力在被真正使用。二、Flex:ai如何破解GPU浪费Flex:ai 的能力分为两大块XPU虚拟化本地虚拟化单卡切分为多个vGPU/vNPU多容器共享 跨节点拉远虚拟化通过RDMA或TCP访问远端算力卡多级智能调度对切分出的虚拟卡做Binpack资源级调度对AI训推任务做分时调度相关入口README.md、GPU-Virtual-Service/、Ascend-Virtual-Service/1️⃣ 本地GPU虚拟化切分一张卡分给20个容器用Flex:ai 的GPU设备插件支持将1张物理GPU切分为1~20个vGPU每个容器按算力百分比 显存两个维度申请资源资源参数含义huawei.com/vgpu-number申请的虚拟卡数huawei.com/vgpu-cores算力切分百分比0-1005的倍数huawei.com/vgpu-memory.1Gi申请的显存GiB申请方式极其简单在业务Pod中声明即可示例可见 vgpu-test.ymlresources: limits: huawei.com/vgpu-number: 1 huawei.com/vgpu-cores: 20 # 20% 算力 huawei.com/vgpu-memory.1Gi: 3 # 3Gi 显存背后的实现链路设备插件 GPU-device-plugin 向集群注册vGPU资源CUDA劫持组件client-update将虚拟化动态库注入容器由 direct/cuda 中的算力限制器如 gpu_core_limiter.cpp与显存限流器memory_limiter.h保证每个vGPU的算力占比严格不超标。 官方还在 GPU-Virtual-Service/README.md 中给出了用 vLLM 部署 DeepSeek-R1-Distill-Llama-8B 的完整示例并可通过gpu-monitor命令验证GPU利用率是否在设定的百分比上下波动。2️⃣ 多级智能调度Binpack 毫秒级分时轮转切分出vGPU只是第一步Flex:ai 还内置了面向AI负载的智能调度资源级调度Binpack调度组件把vGPU尽量塞满同一张卡减少碎片化降低Pod对整卡的独占任务级调度分时复用支持多个AI任务在同一张卡上毫秒级时间片轮转低负载推理任务以排队抢占方式共享算力核心业务可设置高优先级、降低长尾延迟抢占与优先级训练任务可抢占空闲资源避免闲时浪费。调度核心由vc-scheduler、vc-controller-manager、vc-webhook-manager三个组件构成基于Volcano部署清单见 volcano-development.yaml拉远场景的资源调度算法可参考 resource_scheduler.py。3️⃣ 跨节点拉远虚拟化让容器远程使用别的节点的GPU当本节点算力不够时Flex:ai 的拉远虚拟化FlexGV源码位于 gpu-remoting/可以把远端节点的GPU搬过来用客户端通过CUDA API劫持LD_PRELOAD方式将CUDA调用透明重定向到远端对PyTorch等上层框架几乎零改造传输通道支持RDMA低延迟与TCP通用并覆盖cuBLAS、cuDNN、NCCL等常用算子接口数据侧采用存储与计算分离设计通过共享内存与消息队列在数据租用人renter与计算侧compute之间搬运批量数据避免反复跨网络传输数据集。下图展示了Flex:ai拉远虚拟化中数据存储与计算分离的整体架构其存储模块的代码组织dataloader包装、共享内存、预处理工具等如下图所示方便你快速定位源码三、快速上手三步部署Flex:ai部署调度组件导入vc-*镜像并执行kubectl apply -f volcano-development.yaml拉起多级调度平面部署GPU虚拟化组件用 gpupool Helm Chart 一键安装设备插件、CUDA劫持与 xpu-exporter 监控组件默认每张卡切分20份业务Pod申请vGPU资源按上文三参数声明即可实现单卡多容器共享。⚙️ 环境基线openEuler K8s 1.31.1详细步骤见 GPU-Virtual-Service/README.md昇腾NPU侧vNPU切分 分时调度配置文件 flexnpud.conf可参考 Ascend-Virtual-Service/README.md。四、写在最后对于AI算力集群而言买卡只是成本的开始用好每一瓦算力才是不停烧钱的根本解法。Flex:ai 用XPU虚拟化切分把整卡变成可灵活拼装的算力积木用多级智能调度让大模型、小模型在混部中各取所需——GPU利用率上去了单位推理/训练成本自然下来了 ✅【免费下载链接】flexaiFlex:ai是一个面向AI容器场景的开源项目其核心能力包含两大部分分别是XPU虚拟化和多级智能调度。其中XPU虚拟化分为本地XPU虚拟化和跨节点拉远虚拟化本地XPU虚拟化支持将1台服务器上的XPU算力卡虚拟化分割出多个虚拟算力单元实现单张算力卡在多个容器的共享。跨节点拉远虚拟化支持通过RDMA或TCP网络访问远端节点上的算力卡。多级智能调度支持对切分出的虚拟卡进行Binpack等资源级调度以及对AI训推任务进行分时调度等能力。项目地址: https://gitcode.com/ModelEngine/flexai创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考