在深度学习和大模型训练需求爆发的当下,GPU资源已成为稀缺品。传统云服务商提供的按需实例价格居高不下,而长期预留实例又缺乏灵活性。我注意到一个有趣的现象:许多中小型实验室和企业其实存在大量GPU闲置时段,这些资源如果能够被高效调度,理论上可以显著降低整体计算成本。
这个项目本质上是一个去中心化的裸金属GPU现货市场,允许拥有闲置GPU资源的机构或个人以竞价方式出租算力,而需求方则可以按需获取远低于市场价的GPU服务。以NVIDIA A100为例,通过这个平台可以稳定获得0.38美元/小时的使用价格,相比主流云厂商的按需价格降低了60%-70%。
整个系统采用微服务架构,主要包含以下关键模块:
在技术栈选择上,我们做了以下关键决策:
特别注意:GPU直通(passthrough)方案最终选择了Intel开源的GVT-g技术而非传统的VFIO,这让我们在保持性能的同时实现了更细粒度的资源分割。
不同厂商的GPU设备存在驱动版本、CUDA兼容性等差异。我们开发了统一的抽象层:
rust复制#[derive(Debug, Clone)]
pub struct GpuSpec {
pub model: String,
pub cuda_cores: u32,
pub memory_gb: f32,
pub cuda_version: String,
pub supports_mps: bool,
// ...其他元数据字段
}
配合自动化的驱动兼容性检测脚本,确保用户任务能够无缝运行在不同配置的硬件上。
价格计算采用多因素加权算法:
code复制base_price = (gpu_tflops * 0.02) + (memory_gb * 0.01)
demand_factor = 1 + (current_utilization / max_capacity)
final_price = base_price * demand_factor * location_factor
其中location_factor根据数据中心电力成本动态调整,整套模型每5分钟重新计算一次。
我们对比了多种方案后选择了以下配置组合:
所有用户任务运行在加密的临时文件系统中,采用:
对于需要多GPU并行的任务,我们实现了拓扑感知调度:
python复制def find_optimal_allocation(request):
# 优先选择同一物理节点上的GPU
if available_on_single_node(request.gpu_count):
return allocate_local(request)
# 次优选择同机架的节点
elif available_in_rack(request.gpu_count):
return allocate_within_rack(request)
# 最后考虑跨机房调度
else:
return allocate_geodistributed(request)
通过预热的容器镜像缓存池,将典型启动时间从45秒缩短到3秒以内:
上线三个月后的关键指标:
| 指标 | 数值 |
|---|---|
| 注册GPU总量 | 1,243卡 |
| 平均利用率 | 82% |
| 最低A100时价 | $0.38/hr |
| 任务平均排队时间 | 2.7分钟 |
| 用户留存率(30天) | 76% |
早期遇到最棘手的问题是NVIDIA驱动版本碎片化。我们的解决方案是:
跨地域调度时遇到的网络问题:
要达到$0.38/hr的价格点,需要多方面的优化:
具体到A100实例,成本构成如下:
当前正在研发的重要特性:
对于想尝试类似项目的开发者,我建议先从本地小规模集群开始,重点解决以下几个基础问题: