网站建设中栏目是什么,网站建设沧州,查询网站内页关键词排名,河南信阳网站建设公司电话想要入门大语言模型#xff08;LLM#xff09;#xff0c;核心是抓住它的底层逻辑——无论你听到的预训练、微调#xff0c;还是实际应用中的推理过程#xff0c;本质上都围绕一个核心任务展开#xff1a;next token prediction#xff08;下一个token预测#xff09;。…想要入门大语言模型LLM核心是抓住它的底层逻辑——无论你听到的预训练、微调还是实际应用中的推理过程本质上都围绕一个核心任务展开next token prediction下一个token预测。简单说就是模型以“自回归”的方式从左到右一步步生成连贯的文本这也是所有LLM的共同基石。一、先搞懂基础什么是Token接触LLM的第一步必然要理解“Token”这个核心概念。它不是复杂术语本质就是文本的“最小拆分单元”——可以是一个词、一个子词甚至是一个标点符号。在把文本送入大模型之前必须先做“tokenize分词”处理把连续的文本拆成离散的Token序列这个过程就像我们阅读前先把段落拆成句子一样。这里要注意分词器是在大量无标签文本上提前训练好的它能保证拆分出的Token数量固定且唯一这个固定的Token集合就是我们常说的“词表”Vocabulary。不同语言的Token拆分逻辑有差异小白可以直接记下面的总结1. 英文中的Token拆分单位单词、子词或标点比如“unhappiness”会拆成“un”“happi”“ness”子词拆分能兼顾未登录词和效率数量换算1个Token约对应3-4个字母或0.75个英文单词粗略估算方便计算文本Token数。2. 中文中的Token拆分单位单个汉字或分词后的词语比如“人工智能”可能拆成“人工”“智能”平台差异不同大模型平台的Token换算不同通义千问/千帆1 Token1个汉字腾讯混元1 Token≈1.8个汉字实际使用时以平台文档为准。分词后每个Token都会对应一个固定的“向量表示”这就是模型的“Embedding层”的作用。获取Token的Embedding其实很简单就像查字典一样词表中每个Token都有唯一的索引通过索引就能找到对应的向量这个向量包含了Token的语义信息。关键补充位置编码Position Embedding文本是有顺序的比如“我吃苹果”和“苹果吃我”意思完全不同但LLM的核心结构——Transformer本身不具备“感知顺序”的能力。为了解决这个问题必须给每个Token加上“位置信息”给每个位置分配一个专属的“位置Embedding”再和对应的Token Embedding相加这样模型就能区分不同位置的Token了。这里引申出一个小白常问的概念上下文长度Context Length。它指的是模型训练时能接收的最大Token长度。如果训练时只学了短文本的位置Embedding推理时就无法处理超长文本——因为模型没见过长位置的编码就像没学过的字无法认识一样。二、LLM的核心预训练过程详解当我们拿到带位置信息的Token Embedding后下一步就是送入模型进行“特征加工”。主流LLM比如GPT系列用的是“仅解码器Decoder-only”的Transformer结构这个结构会对每个Token的Embedding做复杂的特征提取最终输出一个经过加工的Embedding向量。这个输出的Embedding就是用来做“下一个Token预测”的核心。很多小白觉得这个过程复杂其实可以把它简化成一个“分类问题”步骤如下线性层转换把输出的Embedding送入一个线性层输出维度等于词表大小——相当于让模型判断“下一个Token是词表中的哪一个”Softmax归一化把线性层的输出转换成概率所有Token的概率和为1训练目标最大化“预测正确下一个Token”的概率简单说就是让模型尽量猜对推理逻辑从概率分布中“采样”出一个Token作为下一个生成的内容。核心机制因果自注意力Causal Self-Attention训练时模型能一次性处理整个句子的所有Token同时预测每个Token的下一个Token这靠的是“因果自注意力”机制——通过一个“掩码Mask”让模型在预测当前Token的下一个Token时只能看到前面的Token看不到后面的Token避免“作弊”。具体来说计算注意力权重时会把当前Token之后所有位置的权重设为0这样模型就只能基于已有的前文信息做预测符合人类“从左到右阅读”的逻辑。而推理阶段模型则是“逐Token生成”先输入第一个Token预测第二个再把前两个Token作为输入预测第三个以此类推这就是“自回归生成”的核心逻辑。延伸生成时的采样策略小白必知推理时从概率分布中采样下一个Token不是“随机乱选”而是有对应的策略不同场景选不同策略贪婪策略Greedy Search直接选概率最高的Token——优点是稳定缺点是容易生成重复、生硬的文本Top-k采样只从概率最高的k个Token中采样——平衡稳定性和多样性核采样Nucleus Sampling只从概率和达到某一阈值比如0.9的Token中采样——比Top-k更灵活能适应不同文本的概率分布。另外一个关键参数是Temperature温度用来控制生成的随机性小白可以记这个规律温度越小越稳定越大越多样。三、代码落地从0看懂nanoGPT实现理解了原理再看代码就很简单了。这里以经典的nanoGPTKarpathy实现的极简GPT为例拆解核心代码逻辑。nanoGPT的代码仓库地址https://github.com/karpathy/nanoGPT/tree/master所有Transformer类模型的核心都是“堆叠多个Block”每个Block主要包含两部分多头因果自注意力Multi-headed Causal Self-Attention和前馈神经网络Feed-forward Neural Network。结构示意图如下1. 单个Block的实现核心代码解读每个Block的作用是“特征增强”通过注意力机制捕捉Token间的关联再通过前馈网络加工特征。代码中用了“预归一化”先做LayerNorm再做注意力/前馈这是GPT-2之后的主流做法能让训练更稳定。importtorchimporttorch.nnasnnfromtorch.nnimportfunctionalasFclassBlock(nn.Module):def__init__(self,config):super().__init__()# 第一层归一化self.ln_1nn.LayerNorm(config.n_embd,biasconfig.bias)# 因果自注意力模块self.attnCausalSelfAttention(config)# 第二层归一化self.ln_2nn.LayerNorm(config.n_embd,biasconfig.bias)# 前馈神经网络模块self.mlpMLP(config)defforward(self,x):# 残差连接x 注意力输出缓解梯度消失xxself.attn(self.ln_1(x))# 残差连接x 前馈网络输出xxself.mlp(self.ln_2(x))returnx2. 完整nanoGPT的结构整体逻辑整个GPT模型的结构可以拆解为Token Embedding层将Token转为向量→ 位置Embedding层添加位置信息→ Dropout层防止过拟合→ 堆叠多个Block特征加工→ 最终归一化层 → 输出层预测下一个Token。classGPT(nn.Module):def__init__(self,config):super().__init__()# 校验必要的配置参数词表大小、上下文长度assertconfig.vocab_sizeisnotNoneassertconfig.block_sizeisnotNoneself.configconfig# Transformer核心模块集合self.transformernn.ModuleDict(dict(wtenn.Embedding(config.vocab_size,config.n_embd),# Token Embedding层wpenn.Embedding(config.block_size,config.n_embd),# 位置Embedding层dropnn.Dropout(config.dropout),# Dropout层hnn.ModuleList([Block(config)for_inrange(config.n_layer)]),# 堆叠多个Blockln_fnn.LayerNorm(config.n_embd,biasconfig.bias),# 最终归一化层))# 输出层将特征向量映射到词表维度预测下一个Tokenself.lm_headnn.Linear(config.n_embd,config.vocab_size,biasFalse)# 权重共享Token Embedding层和输出层共享权重提升效率、减少参数self.transformer.wte.weightself.lm_head.weight# 初始化所有参数self.apply(self._init_weights)# 对残差连接的投影层做特殊初始化GPT-2论文推荐提升训练稳定性forpn,pinself.named_parameters():ifpn.endswith(c_proj.weight):torch.nn.init.normal_(p,mean0.0,std0.02/math.sqrt(2*config.n_layer))# 参数初始化函数默认用正态分布初始化def_init_weights(self,module):ifisinstance(module,nn.Linear):torch.nn.init.normal_(module.weight,mean0.0,std0.02)ifmodule.biasisnotNone:torch.nn.init.zeros_(module.bias)elifisinstance(module,nn.Embedding):torch.nn.init.normal_(module.weight,mean0.0,std0.02)关键知识点代码中用到了“权重共享”Token Embedding层和输出层共享权重。这是GPT系列的经典优化既能减少模型参数数量提升训练效率又能让Token的语义向量和预测向量更一致从而提升模型性能。3. 训练与推理的前向传播逻辑无论是训练还是推理核心都是“构建Embedding→特征加工→输出预测”的流程。下面重点看前向传播的核心代码defforward(self,idx,targetsNone):deviceidx.device b,tidx.size()# b批量大小t序列长度asserttself.config.block_size,f序列长度不能超过上下文长度{self.config.block_size}# 1. 构建位置索引0到t-1postorch.arange(0,t,dtypetorch.long,devicedevice)# 2. 生成Token Embedding和位置Embeddingtok_embself.transformer.wte(idx)# (b, t, n_embd)批量×序列长度×嵌入维度pos_embself.transformer.wpe(pos)# (t, n_embd)序列长度×嵌入维度# 3. 叠加Embedding并经过Dropoutxself.transformer.drop(tok_embpos_emb)# 4. 送入所有Block进行特征加工forblockinself.transformer.h:xblock(x)# 5. 最终归一化xself.transformer.ln_f(x)# 6. 输出预测如果有目标值计算损失logitsself.lm_head(x)# (b, t, vocab_size)预测每个位置的下一个Token概率lossNoneiftargetsisnotNone:# 调整维度以匹配交叉熵损失的输入要求lossF.cross_entropy(logits.view(-1,logits.size(-1)),# (b*t, vocab_size)targets.view(-1)# (b*t,))returnlogits,loss4. 推理阶段的生成逻辑核心代码解读推理阶段的核心是“自回归循环”不断将生成的Token拼接到输入序列中重复预测下一个Token。代码中用了torch.no_grad()装饰器关闭梯度计算提升推理速度避免不必要的内存占用。torch.no_grad()defgenerate(self,idx,max_new_tokens,temperature1.0,top_kNone): 输入idx初始序列shape(b,t)、max_new_tokens要生成的最大Token数 输出生成完成的序列shape(b,tmax_new_tokens) for_inrange(max_new_tokens):# 裁剪序列长度如果输入序列超过上下文长度只保留最后block_size个Tokenidx_condidxifidx.size(1)self.config.block_sizeelseidx[:,-self.config.block_size:]# 前向传播获取当前序列的预测logitslogits,_self(idx_cond)# 只取最后一个Token的logits因为我们只需要预测下一个Tokenlogitslogits[:,-1,:]/temperature# 除以温度调整随机性# 可选Top-k采样只从概率最高的k个Token中选择iftop_kisnotNone:v,_torch.topk(logits,min(top_k,logits.size(-1)))logits[logitsv[:,[-1]]]-float(Inf)# 把k以外的Token概率设为负无穷# 转换为概率分布probsF.softmax(logits,dim-1)# 从概率分布中采样下一个Tokenidx_nexttorch.multinomial(probs,num_samples1)# 把新生成的Token拼接到输入序列中进入下一轮循环idxtorch.cat((idx,idx_next),dim1)returnidx四、深入理解温度参数Temperature的作用前面提到温度参数控制生成随机性这里展开讲清楚原理小白也能听懂。温度的核心作用是“调整logits的分布形状”进而改变最终的概率分布——logits是模型输出的原始分数还没经过softmax转换为概率。1. 不同温度的效果温度1增加随机性会放大logits的数值让logits分布更“平坦”。经过softmax后不同Token的概率更接近模型更容易选择低概率Token生成的文本更多样。比如原始logits是[10,20,30]除以温度2后变成[5,10,15]概率分布更均匀。温度1减少随机性会缩小logits的数值让logits分布更“尖锐”。经过softmax后高概率Token的优势更明显低概率Token几乎不会被选中生成的文本更稳定、更可预测。比如原始logits[10,20,30]除以温度0.5后变成[20,40,60]概率集中在高分数Token上。温度1原始分布不改变logits概率分布完全遵循模型的原始预测结果。2. 为什么需要调整温度不同场景需要不同的生成效果温度参数就是为了适配这些场景需要创造性比如写诗歌、编故事用温度1比如1.2让文本更多样需要准确性比如机器翻译、问答系统用温度1比如0.7让输出更稳定、更少错误平衡需求日常文本生成用温度1保留模型的原始预测逻辑。到这里LLM从原理到代码的核心逻辑就讲完了。总结一下LLM的核心是“下一个Token预测”从文本分词到Embedding再到Transformer的特征加工最后通过采样生成文本整个流程环环相扣。结合nanoGPT的代码能更直观地理解每个环节的作用小白可以先把核心代码跑起来再逐步拆解细节那么如何系统的去学习大模型LLM作为一名从业五年的资深大模型算法工程师我经常会收到一些评论和私信我是小白学习大模型该从哪里入手呢我自学没有方向怎么办这个地方我不会啊。如果你也有类似的经历一定要继续看下去这些问题啊也不是三言两语啊就能讲明白的。所以我综合了大模型的所有知识点给大家带来一套全网最全最细的大模型零基础教程。在做这套教程之前呢我就曾放空大脑以一个大模型小白的角度去重新解析它采用基础知识和实战项目相结合的教学方式历时3个月终于完成了这样的课程让你真正体会到什么是每一秒都在疯狂输出知识点。由于篇幅有限⚡️ 朋友们如果有需要全套 《2025全新制作的大模型全套资料》扫码获取~为什么要学习大模型我国在A大模型领域面临人才短缺,数量与质量均落后于发达国家。2023年人才缺口已超百万凸显培养不足。随着AI技术飞速发展预计到2025年,这一缺口将急剧扩大至400万,严重制约我国AI产业的创新步伐。加强人才培养,优化教育体系,国际合作并进是破解困局、推动AI发展的关键。大模型学习指南路线汇总我们这套大模型资料呢会从基础篇、进阶篇和项目实战篇等三大方面来讲解。①.基础篇基础篇里面包括了Python快速入门、AI开发环境搭建及提示词工程带你学习大模型核心原理、prompt使用技巧、Transformer架构和预训练、SFT、RLHF等一些基础概念用最易懂的方式带你入门大模型。②.进阶篇接下来是进阶篇你将掌握RAG、Agent、Langchain、大模型微调和私有化部署学习如何构建外挂知识库并和自己的企业相结合学习如何使用langchain框架提高开发效率和代码质量、学习如何选择合适的基座模型并进行数据集的收集预处理以及具体的模型微调等等。③.实战篇实战篇会手把手带着大家练习企业级的落地项目已脱敏比如RAG医疗问答系统、Agent智能电商客服系统、数字人项目实战、教育行业智能助教等等从而帮助大家更好的应对大模型时代的挑战。④.福利篇最后呢会给大家一个小福利课程视频中的所有素材有搭建AI开发环境资料包还有学习计划表几十上百G素材、电子书和课件等等只要你能想到的素材我这里几乎都有。我已经全部上传到CSDN朋友们如果需要可以微信扫描下方CSDN官方认证二维码免费领取【保证100%免费】相信我这套大模型系统教程将会是全网最齐全 最易懂的小白专用课