- 博客(35)
- 资源 (10)
- 收藏
- 关注
原创 利用多GPU,推理transformer模型,避免显存溢出
transformers框架提供了多设备load模型的方式,通过设置device_map,让模型均匀的分布在多卡,从而以类模型并行的方式,比如用上4-6个8g-24g显存的设备就可以跑起来70B, moe, vl这些。像llama系列和MOE系列还好,可以借助deepseed等加速框架对齐进行TP切分,从而达到多卡切分参数的效果,但是像VL系列,TP等策略就不太好使了。最终,笔者利用4个32G的设备,成功推理了GLM-4V的模型,每个仅用了30%的显存。在一些模型参数量比较大的llm和多模态网络中,比如。
2025-01-02 23:23:16
575
原创 一种统计torch内部计算过程算子输入输出信息的方法
最近有个需求,相对比网络中不同设备之间的运行情况,出现差异的时候,需要知道差异的地方,不同的设备上发生了什么,设计如下过程,可以看到中间算子的执行信息,用来辅助算子开发。
2024-12-19 14:51:34
383
原创 测试batch_isend_irecv多卡,多组通信
batch_isend_irecv支持同时配置多组P2P算子,但是其底层实现上也是拆开来做的。以下是NCCL的几种测试场景。
2024-12-08 11:18:39
270
原创 PAI-Megatron-Patch工程中,CPU-Offload的时候,最佳Chunk大小的计算规则
【代码】PAI-Megatron-Patch工程中,CPU-Offload的时候,最佳Chunk大小的计算规则。
2024-11-28 18:46:53
176
原创 明悟一个简单的道理
专注于自己的工作任务的产出和关键合作点的推进是我的本职,其余的真的是随心随缘。根本点是自己要为自己负责,这才是道理的基础。自足是基本态,合作共赢是理想态。被同事无沟通了3个月之久,心里有些许抑郁。与leader沟通后,明晰了一个道理。2. 我并不需要为他们的工作结果负责。3. 每个人和每个人的接受度不一样。1. 我与他们并无直接利益冲突。
2024-11-28 10:25:46
98
原创 Megatron-LM中重计算模式(recompute-activations)是如何实现的
代码如下,首先torch的自动推导机制下,如果继承于torch.autograd.Function函数下的实现,则不会为其自动保存相关tensor,通过自定义tensor的维护机制实现打包。
2024-11-28 09:54:25
327
原创 modelscope系统中 微调工程的forward&backward&optimizer调用流程
以StableDiffusion中Dreambooth微调模式为例,其训练的调用过程大致如图所示。在OptimizerProcessor对象中,看到了完整的过程。在train_step过程中完成了模型的forward过程,跟到Optimer对象中,我们可以看到所有后处理相关过程。如果有相关需要,可以从这里去抓对应的数据。
2024-10-12 14:45:55
293
原创 deepspeed解决多卡inference的时候,hosts内存爆表的问题
由于deepspeed在启用多卡推理的时候,需要进行多个进程的载入,会导致一份transformers的weights被多个进程重复加载,用来替换子图用,导致在载入的时候,如果基础weights过大,那么需要的hosts内存就会巨大无比。4. 利用load_dict的方式,以meta加载原图,然后切分之后再将子图weights进行load_dict,从而达到每个进程只载入1/tp的weights的目的。65B * 2 * 16大小,这在很多电脑上都吃不消。2. 每次只执行1个进程的weights切分。
2024-09-14 10:36:04
489
1
原创 一个torch.baddbmm算子实现的细节
在一些算法框架,如Megatron-DeepSpeed下,对于input会用empty定义出来,这就导致会进行一个empty*beta的计算过程,此时需要注意,如果beta是0的话,inptu*beta是要跳过的,不然的话如果empty过程中引入了inf值,会导致计算结果中存在NAN。在torch的CPU实现中,也是规避了0带来的NAN的异常值引入。torch.baddbmm算子定义如下。
2024-09-03 18:19:36
483
1
原创 c10::impl::PyInterpreter的理解
它的主要职责是桥接 C++ 和 Python,使得在 C++ 中编写的 PyTorch 应用程序能够调用和执行 Python 定义的函数、脚本或模块,特别是在处理那些通过 TorchScript 编译的模型时。TorchScript 是 PyTorch 的一种中间表示形式,允许模型从 Python 转换为高效的、可序列化的格式,进而可以在没有Python解释器的环境下执行。: 表示这是实现细节部分,通常意味着这部分是给库内部使用的,对外部用户不保证稳定性和兼容性,可能会随着版本更新而改变。
2024-06-23 16:04:13
275
原创 python借助tracer模块来看程序结束位置
tracer.run('out.backward()'), 通过改行命令来让执行测试程序,最后会逐行打印出运行日志,直到最终卡主的位置。对于一些无法找出运行逻辑的过程,可以借助该方法查看最终代码运行到了什么位置。
2024-06-14 10:42:07
196
原创 如何理解Lora
这种方式其实是改变了原始模型结构,虽然改动不大,但是对于一些基于Graph加速的编译器来说,会影响这些模型的编译。Lora的原理图如图所示。
2024-06-13 17:40:12
204
原创 pytorch linalg模块
是 PyTorch 框架中的一个模块,它提供了一系列线性代数运算。这个模块在 PyTorch 2.0 中被引入,是为了补充现有的。模块包含了一些线性代数的核心操作,例如矩阵分解、特征值和特征向量计算等。运算,提供更全面的线性代数功能。
2024-02-21 11:15:28
1441
2
原创 onnxsim时候一个跟ir_version相关的错误
github上查了各种信息也没有很靠谱的解决方案,经过无心插柳的查找,发现原来是onnx把model序列化成字串的时候,用了protobuf,这个版本高的话,会让序列化字串出错,Onnx导不进来,把该pip包降到了。无语死了,想优化一个ChatGLM2,结果导出的onnx,用onnxsim简化不了,一直提示。之后,成功载入并且sim成功,记录一下,赠给有缘人。
2023-07-26 15:48:31
2665
5
原创 全卷积网络解决抄表类问题,车牌识别等一个思路
在工业场景中经常会遇到一些抄表类问题,如示例图片所示:在这类问题中,可以使用全卷积网络很好的解决,笔者借助Tensorflow设计了全卷积网络,进行了训练,从结果来看,准确度还非常高,以下是预测的示例结果:以下是预测代码:import kerasfrom PIL import Imageimport numpy as npimport cv2from PIL import Imagemodel = keras.models.load_model("model...
2021-10-27 17:17:23
190
原创 python数据可视化,matplotlib可视化绘图,自定义子图布局,多区域
############################### 这是追踪的图##############################from navigation.BinAdapter import *class TraceAdapter(BinAdapter): def __init__(self,name = None,adapter = None,navigation = None,channel = None,mask = None): ...
2021-03-05 17:45:49
638
1
原创 (四)理解矩阵运算,利用矩阵运算实现对象的自由移动。
概述:矩阵运算是计算机图形图像的一个重头戏。贯穿图形图像的各个领域和方方面面,在图像处理,建模分析等各个分支里都有极大的作用,一切物体的缩放,旋转,位移,都可以通过变换矩阵作用得到。同时在投影 变换的时候也有很多应用,在该教程中,将会介绍一些简要的变换矩阵,以及里用变换矩阵实现对“空间坐标点”的操控,这些变换矩阵包括:平移矩阵 旋转矩阵 缩放矩阵 反射矩阵 相关操作 充值单位矩阵 矩阵相乘 运算 当然,矩阵运算不止只有这四种,其他的在该教程中不会涉及,我们只集成了基本的常用矩阵
2021-03-03 15:46:52
497
原创 为Sipeed MaixII AI开发板(base:全志V831),交叉编译C代码,利用FB在屏幕上绘制一个渐变的正方形
由于工作原因,最近在调研MaixII这款开发板,Sipeed是自己非常喜欢的一个团队,极客精神下的各种开源开发板,用起来相当顺畅。MaixII是一款基于全志V831的一款开发板,自带NPU,具有0.2T的算力,当然完整的nn工具链,我现在还没有看到。作为前期调研,在官网示例程序跑完后,觉得还是不够带劲,既然是一款跑linux系统的板子,从底层纯C开发程序,当然是最佳选择。为MaixII编译程序需要用到SIpeed提供的交叉编译包,这个环境是为他们的MaixPy准备的,我们只需要用到其中的gcc即
2021-02-25 15:49:26
3288
原创 (三)如何理解直线算法,并借助OpenCV进行展示
概述在该例程中,我们将从底层设计一个直线绘制算法,并借助OpenCV将结果展示出来。例程引入了模块化的设计,拆分了三个模块内存图像模块,封装了和内存图像相关的操作。 直线模块,封装了直线元素的算法逻辑。 主函数逻辑模块,封装了我们想要实现的功能逻辑。绘制直线是经典计算机图形学的基础算法之一,是传统的格栅化渲染过程中的一个基础方法,当然我们不会过多阐述经典计算机图形学的理论,在例程最后,可以看到我们在内存图像中绘制出来了一条直线,尝试着改变一下直线的方向角度,还有颜色,很有意思。核心内容
2021-02-25 13:08:50
276
原创 (二)OpenCV 通过修改内存图像实现颜色过渡效果
概述:本例程为利用OpenCV通过操控内存数据,创建一个光滑渐变的图像。我们会知道如何对图像数据进行访问修改以及操作。核心内容实践:Step:1: 如何访问指定坐标处的像素点我们创建的内存图像数组可以记住图像进行理解由于每个像素有三个通道,那么指定坐标处的数组索引就变成了 像素索引 = (y * width * x) * 通道数。定位到该像素索引之后,我们便可以去按照像素格式,逐通道的进行像素更改,利用指针,我们可以很优雅的实现这个逻辑。/**************.
2021-02-25 10:23:48
600
原创 (一)OpenCV创建显示内存图像
概述:本例程为一个创建内存图像,并将该内存图像利用图像库OpenCV,展示到窗体上。我们将在内存创建一个640x480大小的图像,图像内容是渐变的过渡色,从黑到红。通过本章节例程的学习,我们将掌握一下几个技术点:如何创建一个标准的内存图像数组(BGR分布) 如何理解像素格式 如何将内存数组绑定到OpenCV图像对象上并展示出来Step:1:内存数组,创建内存图像这里我们创建了一个三通道的内存图像,并将内存图像默认置为红色,内存图像的像素格式选取的BGR格式,也就是说,在这幅内存图像中.
2021-02-24 20:58:38
549
原创 Ubuntu 16.04 下交叉编译python3.5到arm板子,荔枝派Nano为例!
虽然网上有那么多python的交叉编译移植教程,但是方法差异蛮大,需要根据实际开发板的型号做调整,以下是适用于荔枝派Nano的板子移植过程。下载python3.5源码 准备一个Ubuntu16.04环境,虚拟机 or 实体机均可 编译前的预准备第一步,将源码首先编译一遍,因为需要用到一些Python的解释模块,需要提前生成cd Python3.5.2mkdir prebuildcd prebuild./configuremakecd ..第二步,进行交叉编译的环境设置,请注意,
2020-05-22 16:44:44
1184
原创 K210上利用LittleVGL制作一套酷炫的嵌入式页面
最近工程需要,需要在勘智的k210平台进行一些本体软件开发。首当其冲的就是界面设计了。由于k210自身存储空间不是很大,留给ROM和程序的空间并不是很多,所以littlevgl并没有吧它全部去支持了。而是采取了一半一半的方式。界面渲染采用了littlevgl,关键的按键消息机制也采用了原生的,但是界面的元素的回调和处理,就没有用LittleVGL了。而是采用了即时生成的方式,效果还...
2020-04-22 12:39:33
3096
3
原创 一文详解 LSTM 诗词生成
LSTM简单介绍长短时记忆网络(Long Short Term Memory Network, LSTM),是一种改进之后的循环神经网络,可以解决RNN无法处理长距离的依赖的问题,目前比较流行。长短时记忆网络的思路:原始RNN的隐藏层只有一个状态,即h,它对于短期的输入非常敏感。再增加一个状态,即c,让它来保存长期的状态,称为单元状态(cell state)。正文开始...
2020-02-21 09:02:54
3592
原创 Tensorflow + Django 打造诗词生成系统
用Tensorflow + Django打造一款诗词生成系统安装Tensorflow,安装Tensorflowpip install tensorflow==1.15.0pip install Django创建Django默认框架django-admin startproject aitemplate前端Html页面<!DOCTYPE html>&...
2020-02-20 09:32:47
903
2
原创 Tensorflow实战系列教程(二) 通过简单的图像分类任务初识计算机视觉
目录 前言:摘要:正文:1.原始数据及标注2.待训练的参数及模型3.损失函数及反向传播优化器4.训练策略介绍完整工程,跑起来吧!前言:一套计算机视觉为切入点的Tensorflow教程,如果感兴趣,欢迎留言讨论。摘要:通过搭建一个分类Mnist数据集的示例,利用一个简单的数学矩阵模型,通过训练Mnist数据集的任务,来得到一个可以识别手写数字的模型...
2018-12-04 00:45:42
696
1
原创 Tensorflow实战系列教程(一) 训练一元一次方程
目录 前言:摘要:正文:1.原始数据及标注2.待训练的参数及模型3.损失函数及优化器4.训练过程完整工程,跑起来吧! 前言:一套计算机视觉为切入点的Tensorflow教程,如果感兴趣,欢迎留言讨论。摘要:通过搭建一个拟合一元方程 y = kx + b 的案例,我们来大致梳理一下一个完整的Tensorflow工程的几个关键要素。 正文...
2018-11-11 22:59:22
351
原创 FTP调研
最近有个需求,希望把客户处理过的数据搜集过来我跟老大商定的最初的想法是搭建一个FTP服务器,我们为客户提供好标准的工具链,产生一些规范格式的数据,然后客户讲规范化的数据打包后通过FTP传到服务器上,我们定期把服务器上的数据处理一轮并返回结果。今天有时间,于是调研了一下FTP的搭建。我刚开始的思路是,树梅派+移动硬盘构建一个服务器,打在FTP服务,自己建立一个自用
2017-03-12 16:47:42
808
LvglFontTool_V0.3.rar
2020-04-22
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人