LLM内部:700亿参数如何编码知识,Tokenizer如何影响性能?

张开发
2026/5/22 0:46:46 15 分钟阅读
LLM内部:700亿参数如何编码知识,Tokenizer如何影响性能?
大语言模型LLM全称是Large Language Model, LLM是现代人工智能的核心。对语料进行训练得到大语言模型用大语言模型进行推理来回答用户的提问这就是人工智能的工作。1我们说一个大模型有700亿个参数或2500亿个参数参数的数量和精度决定了大模型的大小。专业上以Billion为单位设定参数数量。1B(Billion) 10^9 10亿 70B 70 * 10亿 700亿 250B 250 * 10亿 2500亿参数的精度有如下几种FP32 占用4个字节 FP16 占用2个字节 INT8 占用1个字节 INT4 占用0.5个字节如果一个模型有70B参数参数精度是FP16这个模型的大小是70B * 2 140B 字节 140GB这个模型就是700亿个浮点数2字节的集合。模型的文件名可能是model.ggufpytorch_model.binmodel.safetensors打开这个文件它是一长串二进制数的集合。0100101010101010101010...2深入下去模型文件是有结构的[ Header / Metadata ] ← 几 KB [ Tensor Index Table ] ← 几 MB [ 权重数据区 ] ← 140GBHeader部分是元信息说明了这个文件的逻辑结构{ model_type: llama, num_layers: 32, hidden_size: 4096, num_attention_heads: 32, vocab_size: 32000, max_position_embeddings: 4096, torch_dtype: float16 }它告诉加载程序模型有多少层每层张量是什么形状每个参数用什么精度vocab词表的大小用什么位置编码第二部分是张量目录表它记录每个张量叫什么数据类型形状在文件里的偏移位置offset长度大致是这样的内容{ model.embed_tokens.weight: { dtype: F16, shape: [32000, 4096], offset: 0 }, model.layers.0.self_attn.q_proj.weight: { dtype: F16, shape: [4096, 4096], offset: 262144000 }, model.layers.0.self_attn.k_proj.weight: { dtype: F16, shape: [4096, 4096], offset: 295279616 } }上图中的第一段说明了model.embed_tokens.weight 这个矩阵的参数精度是FP16它的大小是32000*4096起始位置是第0个字节。这个矩阵就是下面要讲到的embedding表。第三部分是权重数据区放置了所有矩阵的值。float16 float16 float16 float16 ...比如embedding矩阵表[32000, 4096]在模型文件里就是32000 * 4096 131,072,000 个float16数连续放置每个模型里都有成百上千个这种矩阵。Transfomer的本质是Wq, Wk, Wv, Wo MLP 权重 Embedding 表 LayerNorm 参数模型文件分三部分存放的目的是可以快速加载可以内存映射mmap可以只加载部分层可以做量化替换除了模型文件大语言模型中还有一个分词器文件Tokenizer它通常是这样命名的tokenizer.json tokenizer.model vocab.json merges.txtTokenizer文件包含两部分词表Vocabulary 分词规则BPE/SentencePiece词表中放置了所有字符串对token id的映射。{ the: 123, apple: 456, Paris: 789, ▁hello: 1024 }分词规则决定如何拆分一个单词。如“unbelievable” 可能被拆成un “believ” “able”。Tokenizer文件的大小通常在1MB上下很少超过10MB因为词表大小通常在32KB-128KB之间每个词就几个字节。所以大语言模型一般包含两个文件模型文件和Tokenizer文件。3大语言模型训练training的本质是不断预测下一个token并根据误差调整70B个参数训练过程是这样的用tokenizer将海量文本转化为token ids 将token ids输入模型forward预测下一个token概率 和真实答案对比得出loss 反向传播backproploss → 梯度gradient 更新权重7B 参数weight weight - learning_rate × gradient 重复数万亿次对于上面的第二步token ids进入模型后的操作如下将token ids转化为embedding向量 进行Transformer计算每一层都要计算Q/K/V, attention, MLP, 输出hidden states 最后一层输出vocab_size维向量比如 32000表示每个token的概率 用交叉熵cross entropy计算误差loss对于万亿数量级的token需要数百万次训练70B个参数要调整数百万次需要上万张GPU卡。通过训练得到模型参数这些参数记录了token和token之间的统计关系。LLM训练就是用海量文本不断纠正模型的下一个token预测直到70B个参数形成一个高维概率函数。训练预料可能有10TB文本或者50TB token但模型只有140GB考虑到文本的压缩率大约是40%说明模型中没有存储数据而是压缩了统计结构这不是数据压缩而是概率结构压缩。一个训练好的LLM是一块接近最大熵的高维数值场几乎没有冗余但编码了巨量统计结构。大语言模型的推理inference过程是这样的用Tokenizer将文本变成token ids 进行embending查表 在Transformer层计算权重 输出logits 转为token ids通过Tokenizer反译为文本输出。Tokenizer像是神经网络的输入输出端口本身不包括知识。4我们将token翻译为词元token并不是“单词”或者“汉字”而是由对训练语料进行统计得到的最优子词单位。这意味着模型会分析整个语料的频率分布将最常见的字符组合保留为token将高频组合变成一个token将低频组合拆成多个token。目的是最大化压缩效率让token表既小又覆盖尽可能多的词。比如单词internationalization高频部分可能拆成3个tokeninter national ization。如果训练语料很大词典里有整个单词internationalization可能就是1个token。对于汉字单个字就是一个token, 多字组合也可能是一个 token, 像“上海”也是一个token。英语单词有约 170,000 个常用词加上26个字母和标点、数字典型词表大小为32K ~ 100K token。中文的常用汉字约3,000~5,000 个总汉字约 10~30K个加上常用词、标点、数字 token 表通常有 32K~50K个。现代LLM的tokenizer通常是32K左右覆盖英文、中文、标点 、emoji和特殊符号。不同模型的 tokenizer 是不同的因为语料不同高频词的统计不同导致token的划分不同算法BPE、SentencePiece、Unigram LM不同会得到不同 subword所以同一个英文单词或中文词在不同模型里可能是一个 token也可能拆成多个token。既然不同模型有不同的tokenizer模型A训练好的 embedding/token 映射不能直接套用到模型 B。一个模型的Token越多KV cache越大推理成本越高所以 tokenizer设计会直接影响模型性能。总之Token 是统计意义上的子词单位它是模型专属的不同模型一般使用不同的 token表。哪怕语料相同token划分也可能不同。5一个模型的性能指标中有32k上下文这样的字眼32K上下文是指模型一次前向计算中最多可以同时处理32k32768个token也就是最大序列长度 32768 tokens既包括输入的token也包括输出的token。Transformer 的核心是 self-attentionattention 计算量是O(n²)。如果 n 32768那么attention 矩阵大小是32768 * 32768 10亿个元素。每一层都要算一次如果有 32 层那么10 亿 × 32 ≈ 320 亿 attention 元素所以极长的上下文极贵。每生成一个 token都要保存Key 和 ValueKV cache 大小KV ≈ 层数 × token数 × hidden_size × 2假设有32 层hidden size 409632K tokens精度FP16KV 32 × 32768 × 4096 × 2 bytes × 2 ≈ 17 GB仅 KV cache 就需要 10~20GB。32K上下文只是模型允许的最大计算窗口不等于它真的能长期记住 32K。实际上在 32K 处性能会显著下降越接近极限性能越差注意力分散。32K token意味着模型可以建立 (32K)² 级别的依赖关系,这是巨大的组合空间计算复杂度平方增长显存线性增长。实际上模型参数决定了模型能表示的函数复杂度上下文长度决定了单次推理时可参与计算的信息范围。6Embedding是把离散的token ids变成连续的向量数字数组。假设词表里有cat → id1 dog → id2 apple → id3embedding 表就是Embedding Matrix查表 id1 → [0.2, -0.5, 1.3, ...] id2 → [0.1, -0.6, 1.2, ...] id3 → [-0.9, 0.3, 0.1, ...]embedding 本质上是一个巨大的查表过程。假设 hidden size 4096每个token就变成一个 4096 维向量也就是[0.12, -0.87, 0.33, ..., 0.19] 共有4096个元素非常重要的是embedding 表也是模型70B参数的一部分。假如词表大小 vocab_size 32,000hidden_size 4096那么 embedding表就是矩阵[32000, 4096]参数数量是32000 × 4096 ≈ 1.3 亿参数 数学上embedding是一个把离散符号映射到连续空间的函数。可理解成把一个token放进高维空间中的某个位置或者给每个token分配一个高维空间中的坐标。如果两个词的语义接近它们的向量也会接近在高维空间中的位置也比较接近。 embedding是训练出来的但不是单独训练的而是在“预测下一个token”的过程中和整个模型一起被反向传播不断调整出来的。 随机 embedding 参与预测任务 产生误差loss 反向传播 embedding 被调整 在相似上下文中收敛 形成语义空间随着训练“猫”“狗” → 聚在一起动物类“北京”“上海” → 聚在一起城市类“跑”“走” → 聚在一起动作类形成高维空间中的语义簇clusters。本质上词的意义 它出现的上下文分布语言学里有很经典的一句话You shall know a word by the company it keeps.Firthembedding空间LLM 的知识不是“存储在某个地方”而是“在计算过程中被构造出来”。embedding 是构造的起点。7大语言模型的70B参数并没有存储知识像“巴黎是法国的首都”“牛顿发现了万有引力”而是编码了一个概率函数这个函数隐含了知识结构知识存在于由参数构成的高维函数形状中。比如输入: The capital of France is 输出概率: Paris → 0.92 London → 0.03 Berlin → 0.02“巴黎是法国首都”这个知识并不是一条记录而是整个网络在这个输入附近形成的概率分布这被称为知识的几何形式。想象一个超高维空间每个输入句子是一个点每个输出概率是地形高度。模型学到的是一个复杂的“概率地形”。非常关键的一点是一条知识不会存储在某个参数里而是分布在成千上万个参数中这叫Distributed Representation分布式表示。举例“巴黎是法国首都”可能分布在embedding巴黎 的向量表示attention 权重法国 ↔ 首都MLP 层概念组合没有任何一个地方单独存储“巴黎是法国首都”这条知识。因为大语言模型学到的是概率规律而不是精确存储所以会出现模糊回答、幻觉hallucination、类比推理等问题。8总结以上讲述了大语言模型的数据结构和tokenizer讲述了token和embedding讲述了大语言模型的训练过程和推理过程最后还讲到大语言模型并没有存储知识而是编码了一个概率函数这个函数隐含了知识结构知识存在于由参数构成的高维函数形状中。01什么是AI大模型应用开发工程师如果说AI大模型是蕴藏着巨大能量的“后台超级能力”那么AI大模型应用开发工程师就是将这种能量转化为实用工具的执行者。AI大模型应用开发工程师是基于AI大模型设计开发落地业务的应用工程师。这个职业的核心价值在于打破技术与用户之间的壁垒把普通人难以理解的算法逻辑、模型参数转化为人人都能轻松操作的产品形态。无论是日常写作时用到的AI文案生成器、修图软件里的智能美化功能还是办公场景中的自动记账工具、会议记录用的语音转文字APP这些看似简单的应用背后都是应用开发工程师在默默搭建技术与需求之间的桥梁。他们不追求创造全新的大模型而是专注于让已有的大模型“听懂”业务需求“学会”解决具体问题最终形成可落地、可使用的产品。CSDN粉丝独家福利给大家整理了一份AI大模型全套学习资料这份完整版的 AI 大模型学习资料已经上传CSDN朋友们如果需要可以扫描下方二维码点击下方CSDN官方认证链接免费领取【保证100%免费】02AI大模型应用开发工程师的核心职责需求分析与拆解是工作的起点也是确保开发不偏离方向的关键。应用开发工程师需要直接对接业务方深入理解其核心诉求——不仅要明确“要做什么”更要厘清“为什么要做”以及“做到什么程度算合格”。在此基础上他们会将模糊的业务需求拆解为具体的技术任务明确每个环节的执行标准并评估技术实现的可行性同时定义清晰的核心指标为后续开发、测试提供依据。这一步就像建筑前的图纸设计若出现偏差后续所有工作都可能白费。技术选型与适配是衔接需求与开发的核心环节。工程师需要根据业务场景的特点选择合适的基础大模型、开发框架和工具——不同的业务对模型的响应速度、精度、成本要求不同选型的合理性直接影响最终产品的表现。同时他们还要对行业相关数据进行预处理通过提示词工程优化模型输出或在必要时进行轻量化微调让基础模型更好地适配具体业务。此外设计合理的上下文管理规则确保模型理解连贯需求建立敏感信息过滤机制保障数据安全也是这一环节的重要内容。应用开发与对接则是将方案转化为产品的实操阶段。工程师会利用选定的开发框架构建应用的核心功能同时联动各类外部系统——比如将AI模型与企业现有的客户管理系统、数据存储系统打通确保数据流转顺畅。在这一过程中他们还需要配合设计团队打磨前端交互界面让技术功能以简洁易懂的方式呈现给用户实现从技术方案到产品形态的转化。测试与优化是保障产品质量的关键步骤。工程师会开展全面的功能测试找出并修复开发过程中出现的漏洞同时针对模型的响应速度、稳定性等性能指标进行优化。安全合规性也是测试的重点需要确保应用符合数据保护、隐私安全等相关规定。此外他们还会收集用户反馈通过调整模型参数、优化提示词等方式持续提升产品体验让应用更贴合用户实际使用需求。部署运维与迭代则贯穿产品的整个生命周期。工程师会通过云服务器或私有服务器将应用部署上线并实时监控运行状态及时处理突发故障确保应用稳定运行。随着业务需求的变化他们还需要对应用功能进行迭代更新同时编写完善的开发文档和使用手册为后续的维护和交接提供支持。03薪资情况与职业价值市场对这一职业的高度认可直接体现在薪资待遇上。据猎聘最新在招岗位数据显示AI大模型应用开发工程师的月薪最高可达60k。在AI技术加速落地的当下这种“技术业务”的复合型能力尤为稀缺让该职业成为当下极具吸引力的就业选择。AI大模型应用开发工程师是AI技术落地的关键桥梁。他们用专业能力将抽象的技术转化为具体的产品让大模型的价值真正渗透到各行各业。随着AI场景化应用的不断深化这一职业的重要性将更加凸显也必将吸引更多人才投身其中推动AI技术更好地服务于社会发展。CSDN粉丝独家福利给大家整理了一份AI大模型全套学习资料这份完整版的 AI 大模型学习资料已经上传CSDN朋友们如果需要可以扫描下方二维码点击下方CSDN官方认证链接免费领取【保证100%免费】

更多文章