当前位置: 首页 > news >正文

Qwen2.5-vl源码解读系列:LLM的Embedding层

参考视频:Qwen2.5-VL源码解读-大模型的Embedding层_哔哩哔哩_bilibili


什么是Embedding?

Embedding(嵌入)在自然语言处理(NLP)、计算机视觉等领域中是一种将离散对象(如词、句子、图片、用户等)映射为连续向量空间的表示方法。它的核心思想是把原本无法直接用于计算的符号或离散数据,转化为可计算、可度量的稠密向量(通常是低维的实数向量),使得相似的对象在向量空间中距离较近。

在多模态大模型中,分为文本嵌入和图像嵌入,图像嵌入可以直接理解为使用Vision Transformer等视觉特征提取出来的结果。下面细说LLM中的文本嵌入。


文本Embedding

可以先查看这两篇博文理解NLP的基础概念:

《BERT:Pre-training of Deep Bidirectional Transformers forLanguage Understanding》论文精读笔记-CSDN博客

BERT代码简单笔记_bert 源代码-CSDN博客

分词器

作用:将一段文本拆分成更小的基本单位(通常是词、子词或字符)。

以BERT中WordPiece分词手段为例:将词拆分为更小的子词单元,"unhappiness" → ["un", "##happiness"]

Tokenizer

在NLP邻域,tokenizer的功能基本等同于分词器+映射为编号。

  1. Text → Tokens:将原始文本分割成最小的处理单元,称为“token”。token可以是单词、子词甚至字符。
    例如:"unhappiness" 可能分为 ["un", "happiness"],甚至 ["un", "##happy", "##ness"]。
  2. Tokens → Token IDs:每个token对应一个唯一的编号(通常叫token id),以便在神经网络中的embedding查找和后续处理。 例如:["I", "love", "NLP"] → [101, 2001, 37005]

Tokenizer 通常包含分词、映射token到id、加特殊符号([CLS], [SEP])、填充、截断等多重功能,所以比单纯的分词更“全套”。

Embedding

文本embedding 是指将token id输入到embedding查找表(即Embedding层),输出一组可用于计算的稠密向量。

  • 输入:token id序列(如 [101, 2001, 37005])
  • 过程:Embedding层将每个token id查找对应的向量(如每个都是768维),再形成一个句子的embedding矩阵。
  • 输出:一个形如 [seq_len, embedding_dim] 的向量序列,或者经过池化/模型进一步处理后得到的整个句子的向量

通俗理解,Embedding就是将Tokenizer后的子词voc,映射到向量空间,也就是生成一个[vocab_size,embedding_dim]形状的大型可学习参数矩阵,每一行代表一个token的嵌入向量,刚开始随机初始初始化。

模型训练过程就是在不断更新这个矩阵的权重参数,使得更新后的向量更精准表达子词内在含义与规律。

后面将ids输入embedding的过程就是利用id在这个embedding矩阵中查找对应的向量。


源码解析

Qwen2.5vl模型分为了视觉部分和语言部分。

在语言模型中,初始化传入子词长度和嵌入维度大小,构成Embedding矩阵[vocab_size,embedding_dim],Qwen中是[152064,3584]

对inputs_ids做嵌入操作(LLM的input是图像+文本的concat,图像部分id用占位符表示):

这里举例input_ids=[1,137],最后输出inputs_embeds=[1,137,3584]

nn.Embedding

构造weight可学习参数矩阵,全零的[num_embeddings,embedding_dim]二维矩阵。

http://www.dtcms.com/a/340030.html

相关文章:

  • MySQL常用函数
  • 首届机器人足球运动会技术复盘:从赛场表现看智能机器人核心技术突破
  • Wireshark获取数据传输的码元速率
  • 中科米堆CASAIM提供机加工件来料自动化测量尺寸方案
  • Origin绘制气泡图|科研论文图表教程(附数据格式模板)
  • 【HarmonyOS】H5 实现在浏览器中正常跳转 AppLinking 至应用
  • Java基础 8.19
  • 基于SpringBoot的停车场管理系统【2026最新】
  • C文件/Linux内核级文件理解
  • 软考网工选择题-1
  • 路由器详解
  • Windows 8.1 补丁 KB2919355 安装方法 详细步骤
  • 【Netty4核心原理⑫】【异步处理双子星 Future 与 Promise】
  • 【AI】算法环境-显卡、GPU、Cuda、NVCC和cuDNN的区别与联系
  • Stimulsoft 发布 2025.3 版本:支持在报表计算中解释运行 C# 脚本
  • Apache ShenYu网关与Nacos的关联及如何配合使用
  • 基于Envoy的AI Gateway测试环境搭建
  • 基于决策树模型的汽车价格预测分析
  • DAY 50 预训练模型+CBAM模块
  • CiA402 伺服驱动标准与控制模式详解
  • STL——string的使用(快速入门详细)
  • 12.3.2设置背景色12.3.3 创建设置类12.4 添加飞船图像 12.4.1 创建Ship 类 12.4.2 在屏幕上绘制飞船
  • 【语法糖】什么是语法糖
  • RK3568 Linux驱动学习——Linux设备树
  • bun + vite7 的结合,孕育的 Robot Admin 【靓仔出道】(十四)
  • for-else 流程控制结构介绍
  • AVL树、红黑树理解
  • 人脸识别智慧检测算法在人群聚集场景应用
  • 关于less/sass两个css预处理器的总结
  • C++常用容器详解:原理、适用场景与代码示例