分布式训练并行技术梳理总结

首先声明一些符号: 模型参数量:$\Phi$ GPU数量:$N$(有时候可能误写成了$n$) Pipeline degree(或者说PP size):$p$ TP siz...

Encoder Decoder和decoder Only架构训练和推理浅析

之前一直对LLM推理过程中的prefill阶段和decode阶段有些困惑,prefill阶段处理prompt,decode阶段自回归地逐to...

LLM时代的transformer参数量、计算量、激活值的分析

导读:本文可以看作是对分析transformer模型的参数量、计算量、中间激活、KV cache的详细说明 定性分析 GPU上都存了哪些东西 首先我...

flash_attention简要笔记

本文中有较多Latex数学公式,博客上有一些数学公式格式渲染不正确,可以查看flash_attention简要笔记 优化效果 原来,attent...

反向传播和自动微分简析

[toc] 1.自动微分 1.1 初步封装 首先我们考虑函数的自动微分。函数是这样的:$y=f(x), l=L(y)$,其中x表示输入,y是中间变量,L相当于是损...

推理框架设计

Tensor 背景 在推理框架中,只需要进行模型结构的加载、模型权重的加载,然后进行前向运算,整个过程不需要反向传播。 有时模型结构和权重信息会放在一个文件...

A survey of Efficient Transformer on Inference

Abstract Transformer模型架构在自然语言处理、计算机视觉、强化学习等领域表现出了强大的能力,已经成为当前深度学习很多模型的核心,当前发展迅...

Tmux简单使用

1. tmux简单介绍 xshell等工具SSH远程登录服务器时,终端窗口(显示界面)和会话(用户与服务器的交互命令)是绑定的,关闭窗口会话也随之...

2024-03-04 849 words 2 min

量化基础

1. 背景 从速度看 访存耗时远多于计算 浮点数计算耗时和整型计算耗时差不多?(from 张志),但是浮点数计算单元需要占用更多额外的芯片面积 从ener...

Java编译技术分析

Java编译技术分析 ​ Java程序在运行时首先需要进行前端编译,传统的方法是将Java字节码进行解释执行。为了提高性能,JIT编译通过分层编...

[cuda-learning-notes] 硬件抽象和执行模型

编程模型 线程组织层次 grid 网格 由一个内核函数启动所产生的所有线程统称为一个网格(grid) grid size和block size都是三维结构,dim3类...

2024-03-01 4533 words 10 min

[cuda-learning-notes] 内存模型

内存模型 全局内存 对全局内存变量的理解: 从主机端看,全局内存变量只是一个指针,主机端不知道其指向何方。主机端也无法进行操作 从设备端看,即为全局...

2024-03-01 7450 words 15 min

[cuda-learning-notes] 流和同步

CUDA事件 事件:标记stream执行过程的某个特定的点,比如用于计时 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 cudaEvent_t start, stop; CHECK(cudaEventCreate(&start)); // 创建cuda 事件对象。 CHECK(cudaEventCreate(&stop)); CHECK(cudaEventRecord(start, 0)); //...

2024-03-01 6056 words 13 min

[cuda-learning-notes] 工具使用和profile

工具 nvidia-smi -L:显示设备名称,精简信息 -q -i 0:显示0号设备详细状态信息 -q -i 0 -d MEMORY:从详细状态信息中提取某类信息(比如MEMORY、CO...

2024-03-01 1424 words 3 min

[cuda-learning-notes] GPU架构发展、兼容性和编译

CUDA编译链和兼容性 兼容性 CPU与GPU的区别 CPU只有少量的计算核心,有更多晶体管用于数据缓存和流程控制, GPU有大量计算能力较弱的计算...

2024-03-01 11734 words 24 min