2026/6/20 0:21:16
网站建设
项目流程
自己做网站卖二手车,哪个地方网站建设的公司多,可以做图的网站,新网站建设风格要理解大语言模型(LLM)#xff0c;首先要理解它的本质#xff0c;无论预训练、微调还是在推理阶段#xff0c;核心都是next token prediction#xff0c;也就是以自回归的方式从左到右逐步生成文本。
什么是 token token是指文本中的一个词或者子词#xff0c;给定一句文…要理解大语言模型(LLM)首先要理解它的本质无论预训练、微调还是在推理阶段核心都是next token prediction也就是以自回归的方式从左到右逐步生成文本。什么是 tokentoken是指文本中的一个词或者子词给定一句文本送入语言模型前首先要做的是对原始文本进行tokenize也就是把一个文本序列拆分为离散的token序洌其中tokenize是在无标签的语料上训练得到的一个token数量固定且唯一的分词器这里的token数量就是大家常说的词表英文中的 Token在英文中Token 通常是单词、子词或标点符号。一个单词可能对应一个 Token也可能被拆分为多个 Token。例如“unhappiness” 可能被拆分为 “un”、“happi” 和 “ness”。一般来说1 个 Token 对应 3 至 4 个字母或者约 0.75 个单词。中文中的 Token在中文中Token 通常是单个汉字或经过分词后的词语。例如“人工智能” 可能被拆分为 “人工” 和 “智能”。不同平台对 Token 的定义有所不同。例如通义千问和千帆大模型中 1 Token 等于 1 个汉字而腾讯混元大模型中 1 Token 约等于 1.8 个汉字当我们对文本进行分词后每个token可以对应一个embedding这也就是语言模型中的embedding层获得某个token的embedding就类似一个查表的过程我们知道文本序列是有顺序的而常见的语言模型都是基于注意力机制的transformer结构无法自动考虑文本的前后顺序因此需要自动加上位置编码也就是每个位置有一个位置embedding 然后和对应位置的token embedding进行相加在模型训练或推理阶段大家经常会听到上下文长度这个词它指的是模型训练时接收的token训练的最大长度如果在训练阶段只学习了一个较短长度的位置embedding那模型在推理阶段就不能够适用于较长文本(因为它没见过长文本的位置编码)语言模型的预训练当我们有了token的embedding和位置embedding后将它们送入一个decoder-only的transofrmer模型它会在每个token的位置输出一个对应的embedding(可以理解为就像是做了个特征加工)有了每个token的一个输出embedding后我们就可以拿它来做 next token prediction了其实就是当作一个分类问题来看待:首先我们把输出embedding送入一个线性层输出的维度是词表的大小就是让预测这个token的下一个token属于词表的哪一个为了将输出概率归一化需要再进行一个softmax变换训练时就是最大化这个概率使得它能够预测真实的下一个token推理时就是从这个概率分布中采样下一个token训练阶段: 因为有 **因果自注意力Causal Self-Attention**的存在我们可以一次性对一整个句子每个token进行下一个token的预测并计算所有位置token的loss因果自注意力通过引入一个“掩码”mask来实现这一机制。具体来说在计算注意力权重时模型会将当前时刻之后的所有位置的注意力权重设置为零。这样模型在预测下一个词时只能基于已经生成的词即前面的词来进行预测。推理阶段:以自回归的方式进行预测其中在预测下一个token时每次我们都有一个概率分布用于采样根据不同场景选择采样策略会略有不同比如有贪婪策略、核采样、Top-k采样等另外经常会看到Temperature这个概念它是用来控制生成的随机性的温度系数越小越稳定。代码实现https://github.com/karpathy/nanoGPT/tree/master对于各种基于Transformer的模型它们都是由很多个Block堆起来的每个Block主要有两个部分组成Multi-headed Causal Self-AttentionFeed-forward Neural Network结构的示意图如下看图搭一下单个Blockclass Block(nn.Module): def __init__(self config): super().__init__() self.ln_1 LayerNorm(config.n_embd biasconfig.bias) self.attn CausalSelfAttention(config) self.ln_2 LayerNorm(config.n_embd biasconfig.bias) self.mlp MLP(config) def forward(self x): x_ x self.attn(self.ln_1(x)) x x self.mlp(self.ln_2(x_)) return x整个nano-GPT的结构class GPT(nn.Module): def __init__(self config): super().__init__() assert config.vocab_size is not None assert config.block_size is not None self.config config self.transformer nn.ModuleDict(dict( wte nn.Embedding(config.vocab_size config.n_embd) wpe nn.Embedding(config.block_size config.n_embd) drop nn.Dropout(config.dropout) h nn.ModuleList([Block(config) for _ in range(config.n_layer)]) ln_f LayerNorm(config.n_embd biasconfig.bias) )) self.lm_head nn.Linear(config.n_embd config.vocab_size biasFalse) # with weight tying when using torch.compile() some warnings get generated: # UserWarning: functional_call was passed multiple values for tied weights. # This behavior is deprecated and will be an error in future versions # not 100% sure what this is so far seems to be harmless. TODO investigate self.transformer.wte.weight self.lm_head.weight # https://paperswithcode.com/method/weight-tying # init all weights self.apply(self._init_weights) # apply special scaled init to the residual projections per GPT-2 paper for pn p in self.named_parameters(): if pn.endswith(c_proj.weight): torch.nn.init.normal_(p mean0.0 std0.02/math.sqrt(2 * config.n_layer))最后一层用来分类的线性层的权重和token embedding层的权重共享。训练和推理的forward首先需要构建token embedding和位置embedding把它们叠加起来后过一个dropout然后就可以送入transformer的block中了。pos torch.arange(0 t dtypetorch.long devicedevice) # shape (t)# forward the GPT model itselftok_emb self.transformer.wte(idx) # token embeddings of shape (b t n_embd)pos_emb self.transformer.wpe(pos) # position embeddings of shape (t n_embd)x self.transformer.drop(tok_emb pos_emb)for block in self.transformer.h: x block(x)x self.transformer.ln_f(x)接下来看推理阶段根据当前输入序列进行一次前向传播利用温度系数对输出概率分布进行调整通过softmax进行归一化从概率分布进行采样下一个token拼接到当前句子并再进入下一轮循环torch.no_grad() def generate(self idx max_new_tokens temperature1.0 top_kNone): Take a conditioning sequence of indices idx (LongTensor of shape (bt)) and complete the sequence max_new_tokens times feeding the predictions back into the model each time. Most likely youll want to make sure to be in model.eval() mode of operation for this. for _ in range(max_new_tokens): # if the sequence context is growing too long we must crop it at block_size idx_cond idx if idx.size(1) self.config.block_size else idx[: -self.config.block_size:] # forward the model to get the logits for the index in the sequence logits _ self(idx_cond) # pluck the logits at the final step and scale by desired temperature logits logits[: -1 :] / temperature # optionally crop the logits to only the top k options if top_k is not None: v _ torch.topk(logits min(top_k logits.size(-1))) logits[logits v[: [-1]]] -float(Inf) # apply softmax to convert logits to (normalized) probabilities probs F.softmax(logits dim-1) # sample from the distribution idx_next torch.multinomial(probs num_samples1) # append sampled index to the running sequence and continue idx torch.cat((idx idx_next) dim1) return idx温度参数Temperature的作用温度参数temperature是一个超参数用于控制生成文本的随机性。它的作用是调整 logits 的分布从而影响最终的概率分布。具体来说temperature 1增加随机性当温度参数大于 1 时会放大logits 的值使得 logits 的分布更加“平坦”。这意味着在 softmax 转换为概率分布后各个 token 的概率会更加接近从而增加生成结果的随机性。例如假设原始 logits 是[10 20 30]除以温度参数 2 后变为[5 10 15]经过 softmax 后概率分布会更加均匀。temperature 1减少随机性当温度参数小于 1 时会缩小logits 的值使得 logits 的分布更加“尖锐”。这意味着在 softmax 转换为概率分布后高概率的 token 会更加突出而低概率的 token 的概率会进一步降低从而减少生成结果的随机性。例如假设原始 logits 是[10 20 30]除以温度参数 0.5 后变为[20 40 60]经过 softmax 后概率分布会更加集中在高概率的 token 上。temperature 1保持原始分布当温度参数等于 1 时logits 不变模型的输出概率分布保持原始的预测结果。为什么要调整温度参数增加随机性temperature 1有助于生成更多样化的文本避免模型总是生成相同的、高概率的 token。适用于需要创造性或多样性的场景例如诗歌生成、故事创作等。减少随机性temperature 1有助于生成更稳定、更符合预期的文本减少生成的噪声。适用于需要高准确性的场景例如机器翻译、问答系统等。普通人如何抓住AI大模型的风口领取方式在文末为什么要学习大模型目前AI大模型的技术岗位与能力培养随着人工智能技术的迅速发展和应用 大模型作为其中的重要组成部分 正逐渐成为推动人工智能发展的重要引擎 。大模型以其强大的数据处理和模式识别能力 广泛应用于自然语言处理 、计算机视觉 、 智能推荐等领域 为各行各业带来了革命性的改变和机遇 。目前开源人工智能大模型已应用于医疗、政务、法律、汽车、娱乐、金融、互联网、教育、制造业、企业服务等多个场景其中应用于金融、企业服务、制造业和法律领域的大模型在本次调研中占比超过30%。随着AI大模型技术的迅速发展相关岗位的需求也日益增加。大模型产业链催生了一批高薪新职业人工智能大潮已来不加入就可能被淘汰。如果你是技术人尤其是互联网从业者现在就开始学习AI大模型技术真的是给你的人生一个重要建议最后只要你真心想学习AI大模型技术这份精心整理的学习资料我愿意无偿分享给你但是想学技术去乱搞的人别来找我在当前这个人工智能高速发展的时代AI大模型正在深刻改变各行各业。我国对高水平AI人才的需求也日益增长真正懂技术、能落地的人才依旧紧缺。我也希望通过这份资料能够帮助更多有志于AI领域的朋友入门并深入学习。真诚无偿分享vx扫描下方二维码即可加上后会一个个给大家发【附赠一节免费的直播讲座技术大佬带你学习大模型的相关知识、学习思路、就业前景以及怎么结合当前的工作发展方向等欢迎大家~】大模型全套学习资料展示自我们与MoPaaS魔泊云合作以来我们不断打磨课程体系与技术内容在细节上精益求精同时在技术层面也新增了许多前沿且实用的内容力求为大家带来更系统、更实战、更落地的大模型学习体验。希望这份系统、实用的大模型学习路径能够帮助你从零入门进阶到实战真正掌握AI时代的核心技能01教学内容从零到精通完整闭环【基础理论 →RAG开发 → Agent设计 → 模型微调与私有化部署调→热门技术】5大模块内容比传统教材更贴近企业实战大量真实项目案例带你亲自上手搞数据清洗、模型调优这些硬核操作把课本知识变成真本事02适学人群应届毕业生无工作经验但想要系统学习AI大模型技术期待通过实战项目掌握核心技术。零基础转型非技术背景但关注AI应用场景计划通过低代码工具实现“AI行业”跨界。业务赋能突破瓶颈传统开发者Java/前端等学习Transformer架构与LangChain框架向AI全栈工程师转型。vx扫描下方二维码即可【附赠一节免费的直播讲座技术大佬带你学习大模型的相关知识、学习思路、就业前景以及怎么结合当前的工作发展方向等欢迎大家~】本教程比较珍贵仅限大家自行学习不要传播更严禁商用03入门到进阶学习路线图大模型学习路线图整体分为5个大的阶段04视频和书籍PDF合集从0到掌握主流大模型技术视频教程涵盖模型训练、微调、RAG、LangChain、Agent开发等实战方向新手必备的大模型学习PDF书单来了全是硬核知识帮你少走弯路不吹牛真有用05行业报告白皮书合集收集70报告与白皮书了解行业最新动态0690份面试题/经验AI大模型岗位面试经验总结谁学技术不是为了赚$呢找个好的岗位很重要07 deepseek部署包技巧大全由于篇幅有限只展示部分资料并且还在持续更新中…真诚无偿分享vx扫描下方二维码即可加上后会一个个给大家发【附赠一节免费的直播讲座技术大佬带你学习大模型的相关知识、学习思路、就业前景以及怎么结合当前的工作发展方向等欢迎大家~】