Yet Another 何榜文's Blog
  • 首页
  • 标签
  • 归档
  • 分类
  • 标签
  • 友链
  • 待办事项
  • 联系我

bfloat16 精度损失(II)

在上一篇 记一个关于 RMSNorm 实现上的细节 中,我们讨论了 LayerNorm 和 RMSNorm 使用 float16 格式会导致的数值溢出问题,而 bfloat16 由于数值范围较大,通常不会出现溢出问题。那么本文我们讨论 bfloat16 较之于 float16,由于数据舍入而带来的精度损失问题。 浮点数表示方式浮点数的表示方式是通过科学计数法来表示一个实数。float16 和 bf
2025-06-30
#LayerNorm #bfloat16

记一个 Tokenizers 版本兼容性问题

表现当使用较低版本的 tokenizers 库加载版本较高的 tokenizer.json 时,会出现低版本不兼容高版本 tokenizer.json 的问题。代码如下: 12345678910111213141516171819202122232425262728import jsonfrom huggingface_hub import hf_hub_downloadimport tokeni
2025-06-23
#Tokenizers #HuggingFace #Transformers #Python

GCC 中的 whole-archive 参数解析

本文由 AI 加提示词大纲生成 提示词如下: 帮我写一篇博客,介绍 gcc 中的 whole-archive 这个参数,顺序如下: 背景:使用全局变量动态注册类到 RegisterFactory 中的时候,发现这个库打包为静态库时,可执行文件去链接这个静态库,会出现未注册成功的情况 表现:1、保存注册结果的 map 大小为 0;2、文件非常小,仅有十几KB,看起来并不包含整个静态库;3、访问
2025-06-17

科目二考试 - 00

科目二考试有关科目二的一些信息和内容分享。 一般来说,科目二教练在开始练习时让学员最先做的两件事就是:调整座椅和后视镜。这两件事其实都是为了点位这个概念服务的。 至于为什么需要【点位】?原因还是科目二考试需要一次性倒车入库成功,中间不可以换挡,例如从倒车档换成前进档,如果发生换挡,这次考试就挂了。为了方便教学,总结出了点位这个概念。 在座椅确定之后,空间位置就确定了。在这种情况下,记住在何时倒车、
2025-06-16

记一个关于 RMSNorm 实现上的细节

背景在 RMSNorm 的实现中,都会强制把输入转为 float32 再进行计算,主要为了避免在计算过程中出现溢出的情况,特别是 float16。 bfloat16 由于动态范围更大,通常不会出现溢出问题,但在一些特定的计算场景下,仍然可能会遇到精度问题。因此,在实现 RMSNorm 时,强制转换为 float32 是一个通用的做法。 RMSNorm123456789101112131415imp
2025-06-07
#LayerNorm #RMSNorm #数值精度

Qwen2.5-VL 中视觉模型的窗口注意力机制

背景在算能的 LLM-TPU 里有对 Qwen2.5-VL 视觉模型的导出,但是并没有增加对窗口注意力的支持,因此跟 Qwen2.5-VL 原生相比,性能下降较大。 UPDATE: 算能官方已经支持 qwen2.5-vl 的窗口注意力,具体实现参考 tpu-mlir/llm。 qwen2.5-vl 视觉编码器的注意力机制qwen2.5-vl 中有两种不同的注意力机制: 全局注意力:用于
2025-04-29
#LLM #VLM #Qwen2.5-VL #FlashAttention2

论文总结 | Next Token Prediction Towards Multimodal Intelligence A Comprehensive Survey

背景文章介绍了截至 2024 年,多模态大模型的进展。文章从词元化(tokenization)、骨干网络(backbone)、训练方式(training)、数据集(dataset)四个方向进行总结,并给出了多模态模型的未来发展方向及挑战。这对于我们了解和部署多模态大模型非常有帮助。 同时,本文主要是梳理相关基础内容,暂不对论文中给出的所有参考文献做详细解析,仅对关键点进行总结。 模型流水线组成 这
2025-03-08
#综述 #多模态大模型 #transformer

Self-Attention 算法简介

MHA MQA GQA 对比MHA Multi-Head Attention,MQA Multi-Query Attention,GQA Group-Query Attention。在 transformers 中,主要体现在 config.json 里的 num_key_value_heads 设置上。 QKV shape 如下: Query: $[B, L, D_{\text{model}}
2025-03-03
#MHA #MQA #GQA #self-attention

ONNX 静态图转换为动态图

模型转换ONNX 模型从动态图变为静态图是非常容易的,使用 onnxsim --overwrite-input-shape input_name:dim0,dim1,dim2 model.onnx 即可,onnxsim 内部会将动态维度转为静态维度,同时执行图优化。 但是如果只有静态图,想要变回动态图,则比较困难。一般来说,Batch 维度是最容易改变的,修改 Batch 维度可以一次推理 N 个
2025-02-26
#ONNX

CPU 忙等的死锁案例

一个死锁案例代码部分逻辑: 1234567for (int i = tid; i < work_size; i += thread_num) { while (is_work_ready[i] == 0) { // spin lock } // do work foo(work[i]);} 下面这段代码看起来是合理的,线程执行的状态依
2025-02-26
#c++ #std::threads
123

搜索

Hexo Fluid
总访问量 次 总访客数 人