随笔分类 - AI
摘要:0. 前言 最近本人在写硕士大论文,需要写一些GPU相关的内容作为引言,所以在此总结一下。 1. NVIDIA GPU线程管理 CUDA的线程模型如上图,在调用一个CUDA函数时,需要定义grid和block的形状: func<<<grid, block>>>(); 在程序里定义的grid和bloc
阅读全文
摘要:torch.mm 线代的矩阵乘法,要求输入都是矩阵 torch.matmul 注意:torch.mm和torch.matmul不等价 根据输入不同执行不同的操作: 输入都是二维矩阵,矩阵乘法,等同于torch.mm 输入都是一维向量,计算向量内积,等同于torch.dot 第一个参数是向量,第二个是
阅读全文
摘要:LLaMA系列用的FFN层现在是SwishGLU,这里Swish是个激活函数,GLU是个线性单元,二者合起来是SwishGLU。 FFN Transformer中原始的FFN长这样: 两个线性层中间夹了个relu激活函数 写成模型
阅读全文
摘要:1. SGD 随机梯度下降(stochastic gradient descent,SGD) 输入数据为(x, y)组成的pair,模型参数是,随机选择一批样本组成一个batch,输入模型计算loss:,并求出梯度,更新参数时: \(W=W-lr*\frac{
阅读全文
摘要:博主在学习的过程中,一直看到负对数似然函数(NLLLoss,negative log likelihood loss),虽然知道怎么计算,但是一直不清楚为什么叫似然。今天通过学习对似然和机器学习模型训练有了全新的理解,故记录在此。 本文主要参考:似然(likelihood)和概率(probabili
阅读全文
摘要:背景 本人在安装deepspeed后遇到了这个报错,明眼人一看就是缺库,但是搜索到的解决方案(凌漪_, 2023)说是设置一个环境变量,实在是治标不治本,而且对本人来说连标都治不了。其他的博客尚未看到解决此问题的。 分析 这个so文件理论上应该在安装deepspeed的过程中就自动编译好了,但是现在
阅读全文
摘要:最近阅读论文,再回顾一些基础的线性代数知识 1. 行列式 转置不改变行列式的值 对某一行加上另外一行的K倍,不改变行列式的值 只要矩阵有一行为0,行列式就是0。因为行列式等于任意一行/列的元素和其代数余子式的乘积之和,元素本身是0,行列式就是0 \[|A|=a_{i0}
阅读全文
摘要:分布式训练使用方法见博主之前的博客,本文介绍一些注意事项。 分布式训练用torchrun进行,要注意: 所有进程必须固定随机种子,不然可能会导致训练时不同进程的样本不一致,尤其是涉及随机数时,比如train_test_split。 export LOGLEVEL=DEBUG可以修改torchrun的
阅读全文
摘要:由于pytorch的python语句执行和CUDA后端实际上是异步执行的,所以当CUDA runtime报错时,并不一定能正确地反映在python抛出的错误语句中,因此,可以添加一个环境变量来实现: CUDA_LAUNCH_BLOCKING=1 这里再补充一些关于cuda和pytorch异步执行的知
阅读全文
摘要:当前版本为本文的尝鲜版,稳定版尚未发布: 稳定版已发布 位置编码: https://zhuanlan.zhihu.com/p/454482273 transformer的sin位置编码本身已经包含了相对位置信息,本身就是一种包含相对信息的绝对位置编码。因为它符合一种形式: \[PE_{t+k}=f(
阅读全文
摘要:layer = layers.Conv1D(input_shape=(66, 5), filters=100, kernel_size=10, padding="same", activation="relu", strides=1) 上述例子为例,实际上和二维卷积是一样的,只不过卷积核的第二个维度
阅读全文
摘要:本文将系统性介绍GPTQ以及他爹,他爷爷,他太爷爷系列论文。GPTQ是目前极端流行的一个后训练量化算法。本文从他太爷爷开始讲起。 GPTQ使用的方法改进自OBC(Frantar, 2022),OBC来源于OBS(Hassibi, 1992),OBS来源于OBD(Lecun, 1990) 这是一种量化
阅读全文
摘要:对于正定对称矩阵,可以分解为,其中是下三角矩阵。这个分解方法就是cholesky分解,pytorch对应的函数是[torch.linalg.cholesky](https://pytorch.org/
阅读全文
摘要:# 矩阵乘法求导 pyotrch中只能是标量对矩阵求导,所以矩阵乘法结束后加个sum 其中,和都是矩阵,那么 $$ \frac{\partial L}{\partial\bm{W}}_{\cdot i}=\sum\bm{X
阅读全文
摘要:根据个人理解,pytorch显存分3个概念:reserved memory、allocated memory、context memory。参考:https://discuss.pytorch.org/t/difference-between-allocated-and-reserved-memor
阅读全文
摘要:0. 概念界定 关于分布式训练/多卡训练,我们首先明确一些概念: 并行(parallel) 多个卡训练,所有卡是一个进程或者是多个进程 分布式(Distributed) 多个卡训练,但是每张卡上都是一个单独的进程 但是,在下文中,为了表述的方便性,我们不严格区分“并行”和“分布式”两个概念,不论说并
阅读全文
摘要:[] [a]可能表示的是不超过a的整数组成的集合 https://math.stackexchange.com/a/4139609 论文《Patient Knowledge Distillation for BERT Model Compression》的第3.1章也提到了一下这种写法 圆圈加号 e
阅读全文
摘要:混淆矩阵 预测 Positive 预测 Negtive 真实 Positive TP FN 真实 Negtive FP TN precision、recall和f1 关于precision和recall的解
阅读全文
摘要:def softmax(x): x -= np.max(x, axis= 1, keepdims=True) f_x = np.exp(x) / np.sum(np.exp(x), axis=1, keepdims=True) return f_x 第一步:减去最大值。 因为在求exp时,可能因为指
阅读全文