- 博客(156)
- 收藏
- 关注
原创 后处理采样
方法控制目标优缺点典型参数Top-k候选 token 数量简单,稳定性好;固定 k 可能忽略重要 tokenk=10~50Top-p累积概率阈值动态候选,平衡多样性和质量p=0.9~0.95概率分布平滑控制随机性,高 T 更创意T=0.7~1.5避免重复防止循环生成,但可能降低重复合理性α=1.1~1.5寻找高概率序列连贯性高,但多样性差。
2025-12-02 20:23:06
640
原创 Qwen2模型架构
Qwen2.5是阿里云最新推出的开源大型语言模型系列,相比Qwen2,新版本在多个方面实现了显著提升,包括知识掌握、编程能力、数学能力以及指令执行等。2. input_ids → Embedding 层将 token id 查表得到向量:这是 Transformer 第 0 层的初始特征。每层结构:每层都更新 hidden_states:4. Transformer 最后一层输出 → Final RMSNormQwen2(LLaMA 系)在所有层结束后会再加一次最终 RMSNorm
2025-12-02 19:59:39
1230
原创 Embedding查表操作
本文详细解析了PyTorch中nn.Embedding的实现原理。通过设定小规模参数示例(batch_size=2, seq_len=3, vocab_size=5, hidden_size=4),展示了embedding层的查表过程:每个token id对应一个固定维度的向量,输入序列经过查表后转换为(batch_size, seq_len, hidden_size)的三维张量。文中还提供了完整的PyTorch代码实现,演示了如何手动设置embedding权重矩阵,并通过输入tensor验证了embedd
2025-12-01 20:01:36
157
原创 Tensorrt-LLM的Qwen-VL推理
把图像路径和文本拼成结构化输入 → tokenizer 加入视觉占位符 → 用 ViT 特征替换这些位置的 token → 构建 prompt table 映射 → 调用 Qwen-VL 模型生成 → 解码输出文本。阶段数据结构示例输入input_textinput_text="这是什么?[{"image":"img.png"}, {"text":"这是什么?"}]query带特殊token的字符串"<image_start><image><image_end>这是什么?list[int]
2025-10-21 16:59:34
534
原创 Tensorrt-LLM的Qwen-VL推理流程(1)--vit_process
image_path: 图片路径的列表(可能是字典格式的列表)。: 已经编译好的 TensorRT ViT 引擎文件路径(.enginestream: CUDA 流,用于异步推理。
2025-10-20 17:31:39
761
原创 LLM大模型的输入处理
文字 (Human-readable)│▼Tokenizer│input_ids (整数序列) ←—— token ID│▼Embedding 层│embedding 向量 (连续向量序列)│▼│输出结果(预测下一个 token、生成文本等)
2025-10-20 15:42:53
396
原创 反量化的详细过程
输入:int8 权重 + 每行 scale输出:FP32 权重矩阵逐行取 scale逐列取 int8 → 乘 scale → 写 FP32支持 OpenMP 并行加速指针类型转换(char*)和(float*)一维数组索引映射二维矩阵。
2025-09-22 18:05:08
489
原创 动态量化(Dynamic Quantization)和 静态量化(Static Quantization / PTQ + Calibration)
训练后量化不需要重新训练模型,只需要在已经训练好的模型上进行量化。:权重 + 激活均量化 → 需要校准,速度最快,全 INT8 推理。:权重量化 + 激活动态量化 → 不需要校准,简单,速度提升有限。:动态计算 scale → 根据当前输入激活范围来量化。在深度学习中,模型的权重和激活通常是。:在推理前通过校准确定 scale。:权重和激活都量化。
2025-09-22 17:42:58
1135
原创 Per-Tensor 量化和Per-Channel 量化
量化(Quantization)是将浮点数权重或激活映射到整数表示,从而降低模型存储和计算成本。
2025-09-22 17:04:07
1029
原创 权重量化为什么选择对称量化?
qroundWsWq∈−127127qroundsWWq∈−127127s:量化比例(scale),由权重最大绝对值决定smax∣W∣127s127max∣W∣不需要 zero-point,0 映射到整数 0。权重零均值、对称 → 对称量化能最大限度减少量化误差对称量化运算简单 → 硬件加速高效只需 scale 参数 → 存储开销低所以权重量化一般选择对称量化。
2025-09-22 16:49:00
315
原创 哪些函数不能被声明为虚函数?
函数类型是否支持 virtual备注说明构造函数❌ 不支持没有多态机制时机析构函数✅ 推荐使用防止基类指针释放派生对象资源泄漏静态成员函数❌ 不支持无对象上下文,无法动态分发非成员函数 / 友元函数❌ 不支持不是成员,无虚表普通成员函数✅ 支持主要用于实现多态成员模板函数✅ 支持(不常用)模板实例化后作为成员函数存在。
2025-07-25 17:04:48
293
原创 static函数是否可以声明成虚函数?
特性是否支持 virtual说明构造函数❌ 不支持构造阶段没有 vtable静态函数❌ 不支持static 函数不依赖对象,无 vtable析构函数✅ 推荐使用允许通过基类指针正确释放派生对象资源成员函数✅ 支持支持多态,依赖对象 vtable 动态分发调用。
2025-07-25 17:01:53
266
原创 构造函数是否可以声明成虚函数?
特性是否可以是虚函数原因构造函数❌ 不可以构造阶段对象未完整建立,vptr 不安全析构函数✅ 可以(推荐)支持通过基类指针释放派生类对象,避免资源泄漏。
2025-07-25 16:59:05
517
原创 vector如何判断应该扩容?
项目vector 行为说明扩容时机扩容代价重新分配内存 + 拷贝/移动旧元素扩容策略指数增长(一般为 1.5 或 2 倍)控制扩容reserve(n)提前分配空间避免多次扩容注意事项扩容后地址可能变化,旧引用/指针可能失效。
2025-07-25 16:55:24
470
原创 Lambda 捕获方式
捕获方式说明适用场景值捕获[x]复制外部变量,lambda 内部独立需要变量快照,防止外部修改影响引用捕获[&x]捕获变量引用,访问的是外部变量本体需要修改外部变量,或变量较大避免复制隐式捕获[=]按值捕获所有外部变量简单只读场景隐式捕获[&]按引用捕获所有外部变量需要修改或大对象避免复制移动捕获C++14起支持,移动对象所有权到lambda内管理资源(unique_ptr等)
2025-07-25 16:49:21
313
原创 拷贝构造和移动构造的区别是什么?
使用一个已有对象来复制初始化一个新对象。会将资源(如内存)复制一份,两个对象拥有各自独立的资源。使用一个右值(临时对象或将亡值)来**“移动”资源**,而不是复制。把资源的所有权从other转移给新对象,other被置为“空”或安全状态。极大提升性能,避免不必要的内存分配和复制。方面拷贝构造移动构造参数类型const T&T&&作用复制资源,两个独立对象转移资源,避免复制资源管理申请新资源,复制数据直接“偷走”资源指针,无需申请性能相对较慢,涉及深拷贝。
2025-07-25 16:34:14
348
原创 函数f(int a,int b),a和b的地址关系?
函数调用时,参数是从右往左压栈的(cdecl调用约定)。第一个参数a最后入栈,位于栈顶(高地址)。第二个参数b先入栈,位于栈底(低地址)。栈顶(高地址)| 参数 a 地址 | ← &a| 参数 b 地址 | ← &b栈底(低地址)参数顺序地址关系(典型x86)&b < &a(后面的参数地址更低)
2025-07-25 16:31:17
292
原创 虚函数和纯虚函数
类型概念特点是否可调用用法场景虚函数virtual基类中定义,可以被派生类重写的函数可有默认实现✅(基类也可调用)多态调用(通常用于接口有默认行为)纯虚函数= 0基类中只声明,不提供实现的虚函数抽象接口❌(不能实例化基类)设计接口类,强制子类实现虚基类用于多重继承中避免“菱形继承”的重复基类问题避免数据成员冗余多重继承设计中的基类虚函数支持“多态行为”,纯虚函数用于“强制子类实现接口”,它们背后靠的是vtablevptr,让程序在运行时选择正确的函数实现。
2025-07-25 16:24:43
470
原创 动态链接和静态链接的区别?原理是什么?
静态链接把库代码“打包进程序”,运行时不依赖外部库;动态链接是“运行时加载外部库”,可节省空间、便于更新,但依赖环境完整性。
2025-07-24 19:26:43
689
原创 class占用的的内存大小怎么计算?
类型大小示例(64位)备注空类 / 空结构体1 字节必须可寻址仅 int 成员4 × 个数注意对齐int + char8 字节(含 padding)char后面可能补 3 字节指针成员每个 8 字节64 位平台有虚函数的类至少 8 字节(vptr)即使无其他成员多继承 / 虚继承更大多一个 vtable 或偏移表空基类优化(EBO)可能优化为 0 字节只适用于非虚继承。
2025-07-24 11:00:45
914
原创 Vector为了避免重复扩容做了那些机制?
机制说明📌 指数倍扩容策略O(1) 平均插入代价,减少 realloc 频率📌reserve(n)预分配用户手动避免扩容📌 不主动缩容保留已有 capacity,避免扩缩抖动📌 move 构造优化扩容减少元素复制成本(尤其是复杂类型)📌控制释放显式释放空间(需要谨慎使用)
2025-07-24 10:43:54
389
原创 resize和reserve的区别
函数作用描述resize(n)改变 vector 的“实际元素个数”,创建或销毁元素reserve(n)只改变“容量” capacity,不改元素个数 sizeresize(n)修改 vector 的大小,会创建或销毁元素。reserve(n)只预留容量,提高效率,不创建任何元素。
2025-07-24 10:39:40
432
原创 野指针和内存泄漏是什么?
野指针内存泄漏野指针 = 用了“坏掉”的指针;内存泄漏 = 忘了把申请的内存还回去。两者都能造成严重后果,C++ 程序员必须养成良好的内存管理习惯。
2025-07-23 20:13:49
407
原创 类的成员变量初始化顺序
项内容初始化顺序按成员变量在类中声明的顺序初始化列表不能改变顺序,只能写出初始化表达式编译器会警告你初始化顺序不一致建议写初始化列表时顺序与声明顺序保持一致,可读性更强。
2025-07-23 19:54:53
295
原创 只能在栈上创建对象
目的方法禁止堆上创建禁止对象复制拷贝构造 / 赋值操作= delete保留正常栈上使用能力构造函数/析构函数保持 public。
2025-07-23 16:46:18
198
原创 push_back` 与 `emplace_back` 的区别
public:std::cout << "构造Person: " << name_ << "\n";std::cout << "拷贝构造Person: " << name_ << "\n";std::cout << "移动构造Person: " << name_ << "\n";// 拷贝构造// 构造+移动构造// 直接构造// 移动构造输出结果构造Person: Alice拷贝构造Person: Alice。
2025-07-22 19:22:10
509
原创 C++引用折叠
引用折叠是理解C++现代模板编程的关键概念之一,特别是在处理万能引用和完美转发时。记住引用折叠的四个规则,可以帮助你更好地理解模板类型推导和引用行为。
2025-07-22 16:52:41
819
原创 C++的完美转发
使用万能引用T&&接收任意类型的参数保持值类别使用有条件地转发引用折叠规则是类型推导的基础与可变参数模板结合可以转发任意数量的参数应用场景包括工厂模式、包装器、回调函数等完美转发是现代 C++ 泛型编程的重要技术,它使得我们可以编写完全通用的函数模板,同时保持最佳的性能特性。
2025-07-19 00:52:25
345
原创 Pass: Attention的切分和消除计算图中layout_transform
本文提出了针对Transformer模型中Attention计算的结构优化方案。首先通过多头分割实现并行处理,将Q/K/V张量切分为4份。其次,将矩阵乘法转换为卷积操作,提高计算效率。同时实现了数值稳定的Softmax优化方案,通过最大值池化和卷积广播避免数值溢出。另外,还识别并消除了计算图中冗余的reshape、transpose和layout_transform操作,将6步操作简化为2步。这些优化显著减少了计算量,提高了模型运行效率,特别是在硬件加速场景下效果明显。实验结果表明,优化后模型在保持精度的同
2025-05-22 20:06:28
324
原创 Bert系列模型优化
本文介绍了两种深度学习计算图的优化方法:1)将特定条件的max操作转换为max_pool2d序列,针对BERT注意力机制后维度缩减优化,需满足输入为3D/4D且在最后一维执行max操作;2)卷积算子融合优化,将"conv2d->reshape->add"模式重排为"conv2d->add->reshape",要求add的常量为1D且与卷积输出最后一维相同,从而提升内存访问效率和数据局部性。两种优化均通过匹配特定计算图模式并重写实现性能提升。
2025-05-21 16:46:48
200
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅