在Kubernetes中使用Bitfusion
目前的GPU虚拟化解决方案存在一些不足: GPU计算力未得到充分利用 无法较好的隔离GPU资源或无法动态的调整资源隔离粒度 只能使用本地的GPU资源 应用程序调度困难 Bitfusion通过提供一个远程GPU池来解决以上这些问题。Bitfusion将GPU作为一等公民,使得GPU可以像计算资源一样被抽象、分区、自动化和共享。另一方面,Kubernetes已经成为事实上的部署和管理机器学习工作负载的平台。
然而,Kubernetes没有提供一种原生方式来使用Bitfusion的远程GPU池。这一限制成为Kubernetes上的作业使用Bitfusion GPU的关键挑战。Kubernetes需要一种友好的方式来使用Bitfusion GPU资源: 支持资源管理 支持GPU池管理 本项目通过允许Kubernetes使用Bitfusion的方式来解决这些问题
1.架构 我们通过以下两个组件来实现允许Kubernetes使用Bitfusion的目的。
1.bitfusion-device-plugin 2.bitfusion-webhook 组件1和组件2分别内置在独立的Docker 镜像中。 bitfusion-device-plugin 作为DaemonSet 运行在kubelet所在的每个工作节点上。 bitfusion-webhook 作为Deployment 运行在Kubernetes主节点上。
2.前置条件 安装机器的操作系统为Ubuntu Linux OpenSSL需要安装在Ubuntu上 Kubernetes 1.17+ Bitfusion 2.5+ kubectl和docker命令可以正常使用 如果需要启用配额功能,需要更新以下的yaml文件。
修改bitfusion-injector.yaml文件。 vim bitfusion-with-kubernetes-integration/bitfusion_device_plugin/webhook/deployment/bitfusion-injector.yaml 为TOTAL_GPU_MEMORY设置合适的值,TOTAL_GPU_MEMORY代表Bitfusion Server所管理的GPU物理设备的显存大小,单位是MB。 apiVersion: apps/v1 ... env: - name: TOTAL_GPU_MEMORY value: 16000 ... 2.1 获取Bitfusion的token文件 为了启用Bitfusion,用户必须生成一个用于授权的Bitfusion Token,并将相关的tar文件下载到安装机器上。 按照以下步骤从vCenter获取Token:Step 1. 登录 vCenterStep 2. 在插件部分点击BitfusionStep 3.……