您好,欢迎来到爱够旅游网。
搜索
您的当前位置:首页大模型之一步一步使用PyTorch编写Meta的Llama 3代码(十一)

大模型之一步一步使用PyTorch编写Meta的Llama 3代码(十一)

来源:爱够旅游网

LlaMA 3 系列博客

大模型之一步一步使用PyTorch编写Meta的Llama 3代码(十一)

输出

通常情况下, 会根据模型拥有的层数(Llama 3 8b模型使用了32层)在之前的步骤 上重复运行操作,但使用的是不同的权重矩阵 。 Llama的输出仅是一个 单独的线性层 。

# first we norm the residual state
final_norm = RMSNorm(d)
out_normed = final_norm(out)

# then multiply by the linear layer to get our final output logits
final_output = nn.Linear(d, v, bias=False)
logits = final_output(out_normed).float()
logits.shape, logits

这段代码演示了 从归一化残差状态到生成最终输出(logits)的步骤。以下是代码的详细解释:

运行结果为

(torch.Size([1, 5, 10]),
 tensor([[[-2.3261e-01,  3.8329e-01,  2.5670e-01,  1.6531e-01, -1.0194e+00,
           -4.3299e-01, -4.1139e-01,  4.0203e-01,  2.1228e-02,  2.4993e-01],
          [-1.2060e-01, -4.0359e-01, -2.0300e-01,  1.1591e-01, -7.0513e-01,
           -2.5591e-04,  1.7559e-01,  1.0746e-01, -8.25e-01,  4.5576e-01],
          [-3.1556e-02,  2.8738e-01, -5.06e-01,  6.5017e-02, -4.50e-01,
           -6.8637e-01,  6.5953e-02, -1.1696e-01,  2.1315e-01,  6.1527e-01],
          [-1.0283e-01,  3.3521e-01, -4.4820e-01,  1.7770e-01, -4.5767e-01,
           -7.24e-01,  1.1968e-01, -1.8656e-01,  2.7823e-01,  5.3601e-01],
          [-8.7929e-01,  4.0656e-03,  2.01e-01, -2.2597e-01,  4.3993e-01,
            7.5321e-01,  6.8830e-02, -2.8203e-01, -3.8023e-01, -1.5378e-01]]],
        grad_fn=<UnsafeViewBackward0>))
# softmax the logits to get the probability for each token's prediction across every token in the sequence
probs = F.softmax(logits, dim=-1)
probs
tensor([[[0.0777, 0.1438, 0.1267, 0.1156, 0.03, 0.0636, 0.09, 0.1465,
          0.1001, 0.1258],
         [0.0952, 0.0718, 0.0877, 0.1206, 0.0531, 0.1074, 0.1281, 0.1196,
          0.0470, 0.1695],
         [0.0957, 0.1316, 0.0567, 0.1053, 0.0629, 0.0497, 0.10, 0.0878,
          0.1222, 0.1826],
         [0.0881, 0.1366, 0.0624, 0.1167, 0.0618, 0.0473, 0.1101, 0.0811,
          0.1290, 0.1669],
         [0.0392, 0.0948, 0.1260, 0.0753, 0.1465, 0.2005, 0.1011, 0.0712,
          0.05, 0.0809]]], grad_fn=<SoftmaxBackward0>)
# Greedily decode the probabilities to get our final predicted indices
greedy_indices = torch.argmax(probs, dim=-1)
greedy_indices
# if we were performing inference rather than training, that final token in the list would be the one to show the user

运行结果为:

tensor([[7, 9, 9, 9, 5]])

这段代码演示了如何从模型输出的 logits 转换为概率分布,并基于这些概率进行贪婪解码以得到最终预测的标记索引。以下是代码的详细解释:

  1. 应用softmax函数:

    • probs = F.softmax(logits, dim=-1) 这一行使用 PyTorch 的 softmax 函数沿最后一个维度(dim=-1)对 logits 进行操作,将它们转换为概率分布。这会为序列中每个位置的每个标记生成概率。
  2. 输出概率分布:

    • probs 张量将包含转换为概率后的结果,其形状与 logits 相同,但数值范围在0到1之间,并在每个序列位置上归一化为概率分布。
  3. 贪婪解码:

    • greedy_indices = torch.argmax(probs, dim=-1) 这一行使用 argmax 函数沿最后一个维度贪婪地选择概率最高的标记索引。这相当于对每个位置选择概率最高的标记作为预测。
  4. 输出预测的标记索引:

    • greedy_indices 张量将包含序列中每个位置预测的最高概率标记的索引。
  5. 示例输出:

    • 如果 logits 的形状是 (batch_size, seq_len, v),那么 probsgreedy_indices 的形状也将是 (batch_size, seq_len, v)probs 将包含概率值,而 greedy_indices 将包含每个位置最可能的标记的索引。

greedy_indices 张量在模型训练期间通常用于计算损失,而在推理(inference)阶段,它代表了模型对序列中每个位置的预测。

损失函数

使用, 奖励单个正确的值,并抑制所有其他值

# create some random fake target indices to train on
target_token_indices = torch.randint(0, v, greedy_indices.shape)
print(target_token_indices)

# initialize the loss function
loss_fn = nn.CrossEntropyLoss()

# reshape logits to be compatible and calculate loss
loss = loss_fn(logits.view(1,v,seq_len), target_token_indices)
print(loss)
  1. 创建随机目标索引:

    • target_token_indices = torch.randint(0, v, greedy_indices.shape) 这一行创建了一个与 greedy_indices 形状相同的随机张量,其中的值从0到 v-1 之间随机选择,v 是词汇表的大小。这个随机张量模拟了训练过程中的目标数据。
  2. 打印目标索引:

    • print(target_token_indices) 打印出创建的随机目标标记索引。
  3. 初始化损失函数:

    • loss_fn = nn.CrossEntropyLoss() 创建了一个交叉熵损失函数实例,这是分类问题中常用的损失函数。
  4. 重塑logits并计算损失:

    • loss = loss_fn(logits.view(1,v,seq_len), target_token_indices) 这一行首先将 logits 重塑为适合损失函数计算的形状 (1, v, seq_len),其中 v 是词汇表大小,seq_len 是序列长度。然后,使用重塑后的logits和目标索引 target_token_indices 计算损失。
  5. 打印损失值:

    • print(loss) 打印出计算得到的损失值。

运行结果为

tensor([[9, 1, 6, 7, 3]])
tensor(2.1829, grad_fn=<NllLoss2DBackward0>)

这些都是Llama 3执行的所有基本计算,其中大多数与Grok、Mixtral或Gemini等其他开源LLM没有任何不同(Llama与Gemini最相似,因为Mixtral和Grok使用用于它们的前馈网络)

大模型技术分享

《企业级生成式人工智能LLM大模型技术、算法及案例实战》线上高级研修讲座

模块一:Generative AI 原理本质、技术内核及工程实践周期详解
模块二:工业级 Prompting 技术内幕及端到端的基于LLM 的会议助理实战
模块三:三大 Llama 2 模型详解及实战构建安全可靠的智能对话系统
模块四:生产环境下 GenAI/LLMs 的五大核心问题及构建健壮的应用实战
模块五:大模型应用开发技术:Agentic-based 应用技术及案例实战
模块六:LLM 大模型微调及模型 Quantization 技术及案例实战
模块七:大模型高效微调 PEFT 算法、技术、流程及代码实战进阶
模块八:LLM 模型对齐技术、流程及进行文本Toxicity 分析实战
模块九:构建安全的 GenAI/LLMs 核心技术Red Teaming 解密实战
模块十:构建可信赖的企业私有安全大模型Responsible AI 实战 

Llama3关键技术深度解析与构建Responsible AI、算法及开发落地实战

1、Llama开源模型家族大模型技术、工具和多模态详解:学员将深入了解Meta Llama 3的创新之处,比如其在语言模型技术上的突破,并学习到如何在Llama 3中构建trust and safety AI。他们将详细了解Llama 3的五大技术分支及工具,以及如何在AWS上实战Llama指令微调的案例。
2、解密Llama 3 Foundation Model模型结构特色技术及代码实现:深入了解Llama 3中的各种技术,比如Tiktokenizer、KV Cache、Grouped Multi-Query Attention等。通过项目二逐行剖析Llama 3的源码,加深对技术的理解。
3、解密Llama 3 Foundation Model模型结构核心技术及代码实现:SwiGLU Activation Function、FeedForward Block、Encoder Block等。通过项目三学习Llama 3的推理及Inferencing代码,加强对技术的实践理解。
4、基于LangGraph on Llama 3构建Responsible AI实战体验:通过项目四在Llama 3上实战基于LangGraph的Responsible AI项目。他们将了解到LangGraph的三大核心组件、运行机制和流程步骤,从而加强对Responsible AI的实践能力。
5、Llama模型家族构建技术构建安全可信赖企业级AI应用内幕详解:深入了解构建安全可靠的企业级AI应用所需的关键技术,比如Code Llama、Llama Guard等。项目五实战构建安全可靠的对话智能项目升级版,加强对安全性的实践理解。
6、Llama模型家族Fine-tuning技术与算法实战:学员将学习Fine-tuning技术与算法,比如Supervised Fine-Tuning(SFT)、Reward Model技术、PPO算法、DPO算法等。项目六动手实现PPO及DPO算法,加强对算法的理解和应用能力。
7、Llama模型家族基于AI反馈的强化学习技术解密:深入学习Llama模型家族基于AI反馈的强化学习技术,比如RLAIF和RLHF。项目七实战基于RLAIF的Constitutional AI。
8、Llama 3中的DPO原理、算法、组件及具体实现及算法进阶:学习Llama 3中结合使用PPO和DPO算法,剖析DPO的原理和工作机制,详细解析DPO中的关键算法组件,并通过综合项目八从零开始动手实现和测试DPO算法,同时课程将解密DPO进阶技术Iterative DPO及IPO算法。
9、Llama模型家族Safety设计与实现:在这个模块中,学员将学习Llama模型家族的Safety设计与实现,比如Safety in Pretraining、Safety Fine-Tuning等。构建安全可靠的GenAI/LLMs项目开发。
10、Llama 3构建可信赖的企业私有安全大模型Responsible AI系统:构建可信赖的企业私有安全大模型Responsible AI系统,掌握Llama 3的Constitutional AI、Red Teaming。

解码Sora架构、技术及应用

一、为何Sora通往AGI道路的里程碑?
1,探索从大规模语言模型(LLM)到大规模视觉模型(LVM)的关键转变,揭示其在实现通用人工智能(AGI)中的作用。
2,展示Visual Data和Text Data结合的成功案例,解析Sora在此过程中扮演的关键角色。
3,详细介绍Sora如何依据文本指令生成具有三维一致性(3D consistency)的视频内容。 4,解析Sora如何根据图像或视频生成高保真内容的技术路径。
5,探讨Sora在不同应用场景中的实践价值及其面临的挑战和局限性。

二、解码Sora架构原理
1,DiT (Diffusion Transformer)架构详解
2,DiT是如何帮助Sora实现Consistent、Realistic、Imaginative视频内容的?
3,探讨为何选用Transformer作为Diffusion的核心网络,而非技术如U-Net。
4,DiT的Patchification原理及流程,揭示其在处理视频和图像数据中的重要性。
5,Conditional Diffusion过程详解,及其在内容生成过程中的作用。
三、解码Sora关键技术解密
1,Sora如何利用Transformer和Diffusion技术理解物体间的互动,及其对模拟复杂互动场景的重要性。
2,为何说Space-time patches是Sora技术的核心,及其对视频生成能力的提升作用。
3,Spacetime latent patches详解,探讨其在视频压缩和生成中的关键角色。
4,Sora Simulator如何利用Space-time patches构建digital和physical世界,及其对模拟真实世界变化的能力。
5,Sora如何实现faithfully按照用户输入文本而生成内容,探讨背后的技术与创新。
6,Sora为何依据abstract concept而不是依据具体的pixels进行内容生成,及其对模型生成质量与多样性的影响。

因篇幅问题不能全部显示,请点此查看更多更全内容

Copyright © 2019- igbc.cn 版权所有 湘ICP备2023023988号-5

违法及侵权请联系:TEL:199 1889 7713 E-MAIL:2724546146@qq.com

本站由北京市万商天勤律师事务所王兴未律师提供法律服务