FlexGV系统工作原理
First Post:
Last Update:
Last Update:
FlexGV系统工作原理
FlexGV系统架构
各部分功能详解:
租户侧:
1.GPU API Wrapper (GPU API 封装器)+ Training Job(训练任务):
GPU API wrapper和Training job为一个模块,并且向GPU Proxy发送Resorce request (资源请求)。
GPU API wrapper将拦截用户的API(比如PyTorch这些训练框架,而这些框架要使用GPU来训练的话,会调用CUDA API)把API打包成网络请求,发送给GPU Service让它执行。
2.GPU Proxy
拦截一开始程序运行的资源申请,并向集群那边申请资源。即将资源请求发送给Resource Dispatcher。后台挂着就行。为什么不直接让用户侧发送资源请求到资源调度器而是设计一个Proxy,是为了缓解Resource Dispatcher的压力,因为一个作业有可能需要多块GPU。
通俗来讲:就是首先用户侧首先向GPU Proxy问哪些是可用的GPU,然后GPU Proxy就帮忙找Resource Dispatcher问哪些可用的GPU,然后拿到了再返回给租户这边的应用程序
服务商侧:
3.Resource Dispatcher(资源调度器)
负责在多个任务或用户之间分配和调度 GPU 资源。其下属还有一个redis界面,查看各个数据库的GPU情况,并且将所有GPU资源整合到一起,形成资源池。也可以理解为将多个GPU融合成为一个GPU。后台挂着就行。
4.GPU Service
首先将GPU的资源信息注册进Resource Dispatcher的数据库中。并且和租户侧的API Wrapper进行API交互。
左右两侧组件的关系和作用
左侧是针对 API请求,右侧是针对资源申请请求。资源申请是拿GPU,发生在作业运行前期的过程;API请求是发生在训练过程当中,作业与GPU交互。只是作用的时间点不同但是都是协同才能完成整个操作。
相当于右侧是先获取宏观的GPU资源,左侧是获取微观的训练作业交互。