PowerInfer源码解析(三):算子实现
这次我们来解析一下PowerInfer主要所使用到的算子是如何实现的。
这次我们来解析一下PowerInfer主要所使用到的算子是如何实现的。
上篇文章概括了PowerInfer的模型加载过程,这次我们来看一看推理时的流程。
最近开始着手研究PowerInfer,但看了下网上似乎还没有针对PowerInfer的代码解析,因此本人打算自己动手。
发表在ASPLOS'23的DeepUM是一篇关于GPU内存优化的论文。在本文中,作者提出了一个名为DeepUM的框架,利用CUDA Unified Memory(UM)来允许DNNs的GPU内存超额使用。虽然UM通过page fault机制允许内存超额使用,但page migration引入了巨大的开销。DeepUM使用一种新的correlation prefetching技术来隐藏page migration的开销。它是完全自动且对用户透明的。本文还提出了两种优化技术来最小化GPU fault handling time。作者使用来自MLPerf、PyTorch示例和Hugging Face的九个大规模DNN对DeepUM的性能进行评估,并将其性能与六种最先进的GPU内存交换方法进行比较。评估结果表明,DeepUM对于GPU内存超额使用非常有效,并且可以处理其他方法无法处理的更大模型。