计算框架
文章平均质量分 68
smartcat2010
这个作者很懒,什么都没留下…
展开
-
LLM推理优化
vLLM的Paged Attention:vLLM: Easy, Fast, and Cheap LLM Serving with PagedAttention | vLLM Blog原创 2024-07-23 20:39:37 · 154 阅读 · 0 评论 -
Pipeline并行:GPipe,1F1B, Interleaved-1F1B, Looped-BFP
1F1B等,是每个GPU负责连续的几个layers,例如:GPU1:[1,2,3,4], GPU2:[5,6,7,8], GPU3:[9,10,11,12], GPU4:[13,14,15,16]...本方法,每个GPU负责多个小段的连续layers,例如: GPU1: [1,2,9,10], GPU2:[3,4,11,12],GPU3:[5,6,13,14],GPU4:[7,8,15,16]总体目标:增大吞吐(减少气泡),减少显存(中间缓存的activation尽可能少),保持和原始计算的结果等价;原创 2024-07-21 20:53:46 · 363 阅读 · 0 评论 -
PyTorch论文
torch.from_numpy()和Tensor.numpy(),其返回值和原值,是share同一片内存的,改一个的值另一个的值也会改动;4. 简单而不完善的设计:目的是把有限的人力,投入到跟上AI发展的快节奏,快速支持新feature上;1. 使用算法和数据开发者熟悉的Python做编程接口,接入Python生态;方便在中间随时print中间变量(Tensor)的值,方便设断点debug;为了易用性,牺牲10%性能是可以的,牺牲太多不行;接口尽量简单,把复杂性隐藏起来;兼容Python生态,易于扩展。原创 2024-07-14 10:18:25 · 402 阅读 · 0 评论 -
GPU Kernel冷启动warm up
1. Kernel代码copy至GPU设备上When using the CUDA runtime API, kernel code is downloaded to the device once. This happens as an implicit action right after CUDA runtime context creation. When using the CUDA driver API, the app has control over when kernels get d原创 2022-02-17 12:06:50 · 1154 阅读 · 0 评论 -
移动端推理库
上层框架:Tensorflow LiteCaffee2PyTorch Mobile:CPU端定点计算:使用自家的QNNPACK做CPU端INT8量化计算; CPU端浮点计算:使用XNNPACK; iOS GPU端计算:Metal Android GPU端计算:Vulkan Android上的DSP和NPU支持:通过Google NNAPI 支持计算图优化腾讯NCNN小米MACE阿里MNN通用性:支持 Tensorflow、Caffe、ONNX 等主流模型格式,支持 C原创 2022-02-16 22:23:28 · 422 阅读 · 0 评论 -
腾讯移动端推理框架NCNN
ncnn 是一个为手机端极致优化的高性能神经网络前向计算框架。ncnn 从设计之初深刻考虑手机端的部署和使用。无第三方依赖,跨平台,手机端 cpu 的速度快于目前所有已知的开源框架。支持大部分常用的 CNN 网络:Classical CNN: VGG AlexNet GoogleNet Inception …Practical CNN: ResNet DenseNet SENet FPN …Light-weight CNN: SqueezeNet MobileNetV1/V2/V3 Shuffl转载 2022-02-16 14:12:50 · 2356 阅读 · 0 评论 -
MACE简介
Mobile AI Compute Engine (MACE)是一个专为移动端异构计算平台优化的神经网络计算框架。 主要从以下的角度做了专门的优化: 性能 代码经过NEON指令,OpenCL以及Hexagon HVX专门优化,并且采用Winograd算法来进行卷积操作的加速。 此外,还对启动速度进行了专门的优化。 功耗 支持芯片的功耗管理,例如ARM的big.LITTLE调度,以及高通Adreno GPU功耗选项。 系统响应 支持自动拆..转载 2022-02-15 22:25:41 · 1242 阅读 · 0 评论 -
阿里推理引擎MNN
MNN是一个轻量级的深度神经网络推理引擎,在端侧加载深度神经网络模型进行推理预测。目前,MNN已经在阿里巴巴的手机淘宝、手机天猫、优酷等20多个App中使用,覆盖直播、短视频、搜索推荐、商品图像搜索、互动营销、权益发放、安全风控等场景。此外,IoT等场景下也有若干应用。1、MNN简介MNN 是一个轻量级的深度学习端侧推理引擎,核心解决深度神经网络模型在端侧推理运行问题,涵盖深度神经网络模型的优化、转换和推理。目前,MNN已经在手淘、手猫、优酷、聚划算、UC、飞猪、千牛等 20 多个 App转载 2022-02-15 09:10:05 · 1804 阅读 · 0 评论 -
NVIDIA Triton推理服务器
【译】 英伟达Triton推理服务(一)Triton Architecture - 知乎 (zhihu.com)NVIDIA Triton 助力蚂蚁集团打造新一代推理引擎 - 知乎 (zhihu.com)以上图片展示的是Triton Inference Server的高层级的架构。其中Model Respository 是一个基于文件系统的模型仓库,Triton通过仓库中的模型进行推理。推理服务的requests请求通过HTTP/REST,或GRPC,或者C API进行调用,然后发送.转载 2022-01-23 18:00:01 · 1265 阅读 · 0 评论 -
经过CPU来做内存拷贝,会导致Cache污染
在hishscalability.com上看到一篇文章:Strategy: Stop Using Linked-Lists(这文章写的挺烂,只列结论没有具体分析),正好上周看到了一篇讲同样事情的文章为什么python标准库没有链表。两篇文章主题都是让大家写代码的时候少用链表,多用数组,主要原因是locality,局部性差的后果轻则cache miss,重则page fault。数组由于存储在连续空间里,其局部性显然是好过链表。还记得大学操作系统课上老师说过:「局部性是编程里最重要的概念之一」,当时听的一转载 2021-11-29 23:04:28 · 1182 阅读 · 0 评论 -
什么是内存模型
内存模型一:什么是内存模型总结了一下对于内存模型的理解,起因是在公司听了一场关于多线程编程的分享会。首先解释一下,内存模型和对象模型是不同的。对象模型说的是一个对象是如何被设计的,其在内存中是如何布局的。而内存模型说的是,在多核多线程环境下,各种不同的CPU是如何以一种统一的方式来与内存交互的。背景知识:CPU的高速缓存总所周知,CPU和内存并不是直接交换数据的,它们之间还隔着一个高速缓存。高速缓存是对程序员透明的,这意味在编程的时候是感知不到CPU的缓存的存在的。一般情况下确实如此,但在,转载 2021-11-29 13:01:36 · 5170 阅读 · 1 评论 -
PyTorch用户侧性能优化
原文:Performance Tuning Guide — PyTorch Tutorials 1.10.0+cu102 documentation1. DataLoad: num_workers开启多进程读取;pin_memory允许异步H2D拷贝。2. torch.no_grad():不需要backward的地方,用这个可以不创建反向图,不缓存激活值;3. 如果BatchNorm后面接Conv,则该Conv不需要再指定bias做相加了;4. param.grad=None取代mod.转载 2021-11-28 23:03:26 · 370 阅读 · 1 评论 -
NCCL的Double Binary Tree实现原理
延迟小的原因:hop次数是lgN(RingAllReduce是N-1)吞吐量高的原因:每个节点,应该是把数据流动起来了,子节点传过来一部分,加和这部分,传出给父节点;Massively Scale Your Deep Learning Training with NCCL 2.4BySylvain JeaugeyImagine using tens of thousands of GPUs to train your neural network. Using mult...转载 2021-11-27 23:22:51 · 3096 阅读 · 2 评论 -
卷积在GPU上的实现
【卷积加速】深度学习卷积算法的GPU加速实现方法_cbd_2012的博客-CSDN博客(Caffe)卷积的实现_沤江一流的专栏-CSDN博客_caffe卷积实现CCCaffe是将feature map和kernel都展开成矩阵,使用矩阵成法来做的...转载 2021-11-21 22:50:01 · 763 阅读 · 0 评论 -
Zero原理
DeepSpeed: Extreme-scale model training for everyone - Microsoft ResearchWhy model-parallelism is most communication cost?模型参数在CPU上有一份(只保留自己这个GPU的partition即可);update的时候直接把offload到CPU上的gradients以及常驻CPU内存的optimizer-states, 更新到同样在CPU内存里的模型参数,然转载 2021-11-10 12:13:25 · 2162 阅读 · 0 评论 -
循环展开的优缺点
优点:循环展开能够增大指令调度的空间,减少循环分支指令的开销。即增大指令流水线的效率。循环展开可以更好地实现数据预取技术。缺点:嵌入式设备上,增大了指令cache miss的可能。复杂功能的展开,没什么优化效果...原创 2021-11-10 09:29:47 · 1195 阅读 · 0 评论 -
PipeDream
比Data parallel的通信量大幅减少;优点:填满pipeline,减少机时浪费;GPipe:PipeDream:知识点:pipeline并行,throughtput取决于最慢的那个节点层;混合并行:层与层用Pipeline Parallel,层内部用Data Parallel自动划分:先在单卡上试探性跑一会儿("Profiling run"),拿到计算时间、通信时间等实际数据,再结合可以静态计算出的理论计算量、理论通信时间,决定分几节,每节多少个Data-p.转载 2021-07-11 21:37:18 · 229 阅读 · 0 评论 -
Oneflow概要
厚Compile阶段;薄Runtime阶段; 去中心化调度:以Op(叫做Actor)为核心,每个Actor有输入buffer和输出buffer;输入buffer有可用的且输出buffer有空闲的,来驱动Actor执行 天然支持pipeline并行:各个Actor并行执行; “整个数据流的执行像一个网络,数据在网络中的流动就完成了计算,如何避免生产者生产太快,消费者消费不及,以及如何避免生产者生产太慢,消费者感到饥饿的问题,这涉及到对计算、内存、传输带宽的规划,尽可能使系统的瓶颈之处最宽,...转载 2021-01-10 14:41:18 · 353 阅读 · 0 评论 -
RNN解决序列太长存储激活值过大问题的方法:TBPTT
原始论文:[Williams, Ronald J., and Jing Peng. "An efficient gradient-based algorithm for on-line training of recurrent network trajectories."]TBPTT :Truncated Back Propagation Through TimeTBPTT中,每次处理一...转载 2020-04-05 21:25:38 · 917 阅读 · 0 评论 -
MxNet源码学习--调度引擎
ThreadedVar的核心: num_pending_reads_:执行中的读操作的引用计数(-1表示正在执行写操作); 等待队列(单链表实现)(存放等待中的操作,队头pending_write_可能在执行也可能在等待):pending_write_一般是队头,head_是队尾 pending_write_:当前在执行或者等待中的第一个写操作;肯定是队头;一个操作在执...原创 2020-03-22 16:37:14 · 306 阅读 · 0 评论 -
MXNet专栏
张元鹏的博客转载 2020-03-17 09:37:00 · 92 阅读 · 0 评论