自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(17)
  • 收藏
  • 关注

原创 在pytorch中使用自定义的cuda算子

本文完整演示了在PyTorch中集成自定义CUDA算子的标准流程,重点展示如何通过JIT编译机制实现自定义的cuda算子的开发与验证。核函数声明(sgemm.h):作为C++与CUDA的接口桥梁,声明设备函数原型。PyTorch扩展绑定(sgemm.cpp)CUDA核函数实现(sgemm.cu)Python测试模块(main.py).cpp文件:pybind绑定。.cu文件:具体的内核实现。.py文件:加载后使用。

2025-05-11 15:37:45 182

原创 cuda矩阵乘法实现与优化(基础)

其中,( A ) 和 ( B ) 是输入矩阵,( C ) 是结果矩阵,( \alpha ) 和 ( \beta ) 是标量系数。其中,( A ) 和 ( B ) 是输入矩阵,( C ) 是结果矩阵,( \alpha ) 和 ( \beta ) 是标量系数。其中,( K ) 是矩阵 ( A ) 的列数和矩阵 ( B ) 的行数。内层循环(k)计算矩阵 A 的第 i 行与矩阵 B 的第 j 列的点积。其中,( K ) 是矩阵 ( A ) 的列数和矩阵 ( B ) 的行数。

2025-05-11 15:37:04 282

原创 使用 cuda 实现向量加法

而在 CUDA 中,向量加法可以通过核函数(Kernel Function)实现并行计算。每个线程独立地处理数组中的一个元素,通过获取当前线程的全局索引(globalIdx)来确定其操作的数据位置。这种方式充分利用了 GPU 的并行计算能力,显著提高了计算效率。在传统 CPU 计算中,向量加法通常通过顺序遍历数组并逐个计算结果来实现,这种方式是串行的,计算效率受限于 CPU 的核心数量和单线程性能。CUDA 代码文件后缀名是.cu,使用 nvcc 编译后会得到可执行文件。

2025-05-11 15:36:11 319

原创 大模型常用激活函数总结

【代码】大模型常用激活函数总结。

2025-05-11 15:35:30 346

原创 BBPE(Byte-Level Byte Pair Encoding)算法学习笔记

BBPE(

2025-05-11 15:34:50 326

原创 deepseekV3 论文学习总结

WDKVctKV​WQRWKR。

2025-05-11 15:34:10 690

原创 MLA(多头潜在注意力)理解

作为 MHA 与 MQA 的折中方案,将注意力头分组,组内共享 K、V。相比 MQA,GQA 在效果和缓存效率间取得更好平衡,成为主流方案(如 LLaMA 系列、ChatGLM 等)。此举将 KV 缓存压缩至原始大小的 1/头数,显著降低显存占用,但可能因表征能力下降影响模型效果,需通过调整其他模块(如 FFN)弥补。作为 Transformer 的基础结构,每个注意力头拥有独立的查询(Q)、键(K)、值(V)矩阵。虽然效果优异,但 KV 缓存随头数线性增长,导致长上下文推理时显存压力巨大。

2025-05-11 15:33:08 691

原创 使用 pytorch 实现 dpo 训练

实现了一个混合精度的 dpo 训练流程。

2025-05-11 15:32:16 127

原创 自定义 lora 微调 llm

实现了一个混合精度的 lora 微调 流程。lora 微调整体流程与 sft 类似,只需给模型中输入输出维度相同的线性层加上 lora 模块,将输出替换为原始线性层的输出和 lora 模块输出的和,同时还要调整可训练参数,单独将 lora 模块参数放入优化器中。

2025-05-11 15:29:59 109

原创 简单实现sft 一个 pretrain 后的 llm

实现了一个混合精度训练的 sft 流程,model 和 tokenizer 可换成自定义的模型。SFT(Supervised Fine-Tuning,监督微调)是一种在预训练模型基础上,使用对话数据进行微调的技术,sft 在训练时将非 assistant 的 token 的损失进行 mask,让模型专门学习 assistant 的表达方式。经过 tokenizer 的 apply_chat_template()处理后。

2025-03-30 10:24:42 312

原创 简单pretrain 一个 llm

实现了一个混合精度训练的 pretrain 流程,model 和 tokenizer 可换成自定义的模型。

2025-03-23 15:53:57 214

原创 理解并实现简单 Moe

混合专家模型(MoE)是一种高效的神经网络架构,它通过多个前馈网络(FF)和一个门控网络协同工作。每个前馈网络专注于处理一部分输入数据,而门控网络则动态决定哪些前馈网络参与计算。此外,MoE 通过引入负载均衡损失来确保所有专家都能得到均衡的训练和使用,避免某些专家过载而其他专家闲置。具体而言,门控网络负责为每个 token 从 num_experts 个专家中挑选出 topk 个专家,每个专家为一个前馈网络,每个专家各自处理对应所需处理的 token,最后再相加即为该 token 最终的输出。

2025-03-16 11:35:00 129

原创 理解并实现旋转位置编码 RoPE

在 LLaMA 源码中,旋转位置编码(Rotary Position Embedding, RoPE)的实现通过。

2025-03-16 11:33:26 776

原创 理解并实现 RMSNorm

layernorm 实现的是将均值调整为 0 和标准差调整为 1,而 RMSNorm 实现的是将均方根调整为 1。RMSNorm 与 LayerNorm 类似,都是对 emb_dim 进行归一化,只是计算公式不同。RMSNorm 特点是仅进行缩放不进行中心化,简化了计算。pytorch 实现代码如下。

2025-03-11 11:47:58 727

原创 从头训练一个 tokenizer

其中 subword 粒度用的比较多,subword tokenizer 算法的核心思路就是尽可能的合并出现频次多的词。常见的有 BPE(Byte-Pair Encoding),WordPiece(Character-Level BPE),Byte-level BPE 等。tokenizer 的作用是将字符序列转为数字序列,tokenizer 对应不同的粒度也有不同的分词方式。训练完整流程如下,其中。

2025-03-06 10:22:13 358

原创 KV-Cache 基础理解

显存占用 = 2 × precision × layer_num × seq_len × batch_size × emb_dim。来避免重复计算,然而,这种优化也会带来显存占用的增加,尤其是在长序列推理时。的增加,显存占用会显著增加,这就是 KV-Cache 在处理长序列时的缺点。模型中,推理过程涉及逐步生成下一个 token,缓存已计算的。可以避免每次都重新计算这些值,节省大量的计算资源。来减少计算冗余,从而提高计算效率。中,KV-Cache 通过缓存。KV-Cache 使用缓存的。

2025-03-04 19:10:37 262

原创 使用 pytorch 实现 MultiheadAttention

在翻译任务中,查询(q)通常代表需要翻译的源语言(如中文)的词,键(k)和值(v)则来自于目标语言(如英文)的中间表示。具体来说,查询(中文)与键(英文的不同部分)通过注意力得分进行匹配,模型会将注意力集中在源语言中的相关部分,以便生成目标语言的翻译。具体来说,q 代表当前的查询信息,k 和 v 是信息序列中的键值对,表示输入序列中不同部分的信息。k 和 v 代表的是“键”与“值”,在信息处理过程中可以理解为对输入信息的编码,k 是用来与查询进行匹配的部分,v 则是根据匹配得到的加权信息。

2025-03-01 13:16:46 633

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除