MakiNaruto's Blog

Le vent se lève, il faut tenter de vivre

LLM - Training PipLine

一个完整的大模型的训练流程是如何进行的

LLM - Improving Attention

背景: 当输入序列(sequence length)较长时, Transformer的计算过程缓慢且耗费内存,即计算的矩阵会变得很大, 这是因为self-attention的计算时间和内存存取复杂度会随着输入序列的增加成二次增长。因此业界提出了几种加速方案. FlashAttentionAttention标准实现没有考虑到对内存频繁的IO操作, 它基本上 …

LLM - Multi Token Prediction

MTP(Multi-Token-Prediction) 的作用核心思想:通过解码阶段的优化,将1-token的生成,转变成multi-token的生成,从而提升训练和推理的性能。 具体来说,在训练阶段,一次生成多个后续token,可以一次学习多个位置的label,进而有效提升样本的利用效率,提升训练速度;在推理阶段通过一次生成多个token,实现成倍的推理加 …

LLM - GPU显存占用

存储分类首先先看看模型计算过程中, 哪些过程需要被存储下来. 存储主要分为两大块:静态显存 + 动态显存 M_total = 模型参数 + 梯度 + 优化器状态 + Activation Model States 指和模型本身息息相关的,必须存储的内容,具体包括: parameters(固定):模型参数 gradients(固定):梯度 optimizer …

LLM - 模型训练的几种方式

模型加载方式模型并行(Model Parallelism)当你有一个单卡装不下的大模型时,把模型分割成不同的层,每一层都放指定的GPU上. 此时,模型做一轮forward和backward的过程如下: 这张图的含义是:我在GPU0上做完一次forward,然后将GPU0上最后一层的输入传给GPU1,继续做forward,直到四块GPU都做完forward后, …

MarkDown 常用的语法

在编写hugo博客中, 常用的markdown语法记录。

LLM - Learning Tips

模型参数量的计算数据精度要计算参数量, 我们首先要知道, 在计算机表示中, 对于数据的表示精度范围不同, 意味着该数据表示形式可能占用的内存空间也不同. 浮点数在计算机中的存储分为三个部分: 1. 符号位(sign):float和double符号位均为1位,0代表正数,1代表负数 2. 指数位(exponent):存储科学计数法中的指数部分, …

一键安装你的Mac环境

重置系统, 仅保留程序环境的一键化脚本.

Torch 一些使用的小Tips

使用过程中遇到的一些问题的记录.

Python - 数据类型所需内存

Python DataType Use Memory