CPU子系统:里面有很多core,通过cmn连接到NoC;其他gic、dma、etr、rom、pvt、mailbox等通过 DDR子系统:内部会通过硬件IP区分安全区域和非安全区域的访问,例如使用tzc的IP,一般通过APB接入NoC。 SRAM:一般通过AXI总线接入NoC CRU:控制SoC的clock和reset功能,一般是整个SoC控制的CRU在安全世界权限。子系统内部也有CRU,不是直接接入NoC。 DTM:追踪调试器 CM:加解密引擎 UFS:与传统的eMMC存储相比,UFS在性能上有显著的提升。UFS具有串行接口、全双工通信和分层架构的优势,可以提供更高的数据传输速度、更低的功耗和更大的存储容量。 LSSY:低速外设子系统,包括gpio、spi、i2c、qspi、uart等 HSSY:高速外设子系统,包括eth、usb、SD、DMA MIPI:负责相机信息的传输,通过CSI接入NoC ISP:对MIPI过来的信息进行处理,例如白平衡、降噪等,之后给NPU进行AI处理。里面会嵌入一些流媒体信息处理的NoC来接入外面总的NoC总线。 NPU:一般AI使用了大量数据,NoC会有独立的资源分配,例如DDR中会有独立的NPU NoC通路连接,不用跟其他的子系统争夺资源。 VPU:视频编解码处理单元。在NPU处理完视频图片对识别的物体进行标示后,一般需要显示在座舱里面的屏幕上,这时候的数据传输压力比较大,就需要用上VPU进行编解码后显示,或者编码后的摄像头数据直接上传到云端。 FSI:功能安全岛,监控整个系统的状态,对错误进行处理。 FCCUMUX:故障上报配置相关,用于实现功能安全 PMU:电源管理单元,一般高级的SoC,PMU有自己独立的核和固件,独立接入NoC
1. LLM介绍
1.1 LLM发展历程
1.1.1 NLP
1.1.2 神经网络
1.1.3 单词嵌入
1.1.4 Transformer
1.1.5 LLM
1.1.6 AGI通用人工智能
在自然语言处理领域,它可以帮助计算机更好地理解和生成文本,包括写文章、回答问题、翻译语言。
在信息检索领域,它可以改进搜索引擎,让我们更轻松地找到所需的信息。
在计算机视觉领域,研究人员还在努力让计算机理解图像和文字,以改善多媒体交互。
GPT系列,openAI公司 Claude,Anthropic 公司 paLM系列,谷歌 文心一言,百度 星火,科大讯飞
LLaMA系列,Meta公司开源:https://github.com/meta-llama/llama GLM系列,清华大学和智普:https://github.com/THUDM 通义千问,阿里巴巴:https://github.com/QwenLM/Qwen/tree/main Baichuan,百川智能:https://github.com/baichuan-inc
1.2 LLM特点
LLM能被推向如此高度的核心就是“涌现能力”。
上下文学习:上下文学习能力是由GPT-3首次引入的。这种能力允许语言模型在提供自然语言指令或多个任务示例的情况下,通过理解上下文并生成相应输出的方式来执行任务,而无需额外的训练或参数更新。 指令遵循:通过使用自然语言描述的多任务数据进行微调,也就是所谓的指令微调,LLM被证明在同样使用指令形式化描述的未见过的任务上表现良好。这意味着LLM能够根据任务指令执行任务,而无需事先见过具体示例,这展示了其强大的泛化能力。 逐步推理:小型语言模型通常难以解决涉及多个推理步骤的复杂任务,例如数学问题。然而,LLM通过采用“思维链”推理策略,可以利用包含中间推理步骤的提示机制来解决这些任务,从而得到最终答案。据推测,这种能力可能是通过对代码的训练获得的。
巨大的规模:LLM通常具有巨大的参数规模,可以达到数十亿甚至数千亿个参数。这使得它们能够捕捉更多的语言知识和复杂的语法结构。 预训练和微调:LLM采用了预训练和微调的学习方法。它们首先在大规模文本数据上进行预训练(无标签数据),学会了通用的语言表示和知识,然后通过微调(有标签数据) 适应特定任务,从而在各种NLP任务中表现出色。 上下文感知:LLM在处理文本时具有强大的上下文感知能力,能力理解和生成依赖于前文的文本内容。这使得它们在对话、文章生成和情境理解方面表现出色。 多语言支持:LLM可以用于多种语言,不仅限于英语。它们的多语言能力使得跨文化和跨语言的应用变得更加容易。 多模态支持:一些LLM已经扩展到支持多模态数据,包括文本、图像和语音。这意味着它们可以理解和生成不同媒体类型的内容,实现更多样化的应用。 涌现能力:LLM表现出令人惊讶的涌现能力,即在大规模模型中出现但在小型模型中不明显的性能提升。这使得它们能够处理更复杂的任务和问题。 多领域应用:LLM已经被广泛应用于文本生成、自动翻译、信息检索、摘要生成、聊天机器人、虚拟助手等多个领域,对人们的日常生活和工作产生了深远的影响。 伦理和风险问题:尽管LLM具有出色的能力,但它们也引发了伦理和风险问题,包括生成有害内容、隐私问题、认知偏差等。因此,研究和应用LLM需要谨慎。
1.3 LLM关键组件
1.4 Langchain 简介
模型输入/输出(Model I/O):与语言模型交互的接口。 数据连接(Data connection):与特定应用程序的数据进行交互的接口。 链(Chains):将组件组合实现端到端应用。 记忆(Memory):用于链的多次运行之间持久化应用程序状态。 代理(Agents):扩展模型的推理能力,用于复杂的应用的调用序列。 回调(Callbacks):扩展模型的推理能力,用于复杂的应用的调用序列。
2. Transformer算法介绍
RNN(循环神经网络):能够捕获长距离依赖信息,但是无法并行计算; CNN(卷积神经网络):能够并行,无法捕获长距离依赖信息(需要通过层叠或者扩张卷积核来增大感受野),记忆的长度是有限的!
输入模块:将词库中每一个词(中文就是字了,为了更大众化地表达,我们就称之为词吧)以及开始标志转化为嵌入词向量,词嵌入向量的维度为embedding dimension,一句话中总共的单词长度为sequence length,因此可以得到一个sequence_length ×× embedding_dimension大小的矩阵,其中每一行代表的是一个词。有了词嵌入矩阵还不够,还需要在矩阵中添加位置编码,随后将矩阵传入编码器模块。这一系列操作,就是输入模块负责的功能。输入模块有两个部分,功能实现是一模一样的,区别在于一个是对源数据进行编码,也就是我们现在第一步中所做的操作,另一个是对目标数据进行编码。 编码器模块:编码器模块接收到输入模块传输过来的矩阵后,要完成多头注意力计算、规范化、前向传播等等一系列操作,而且这些操作还不止进行一次(8次),最终将输出结果传入解码器模块。编码器模块是Transformer模型最为核心的部分,创新使用的多头注意力机制是Transformer算法性能突出的关键。 解码器模块:输出矩阵从编码器传到了解码器模块,我们姑且称这个矩阵为矩阵A吧。解码器接收到矩阵A后,解码器对应的输入模块也开始工作,这个输入模块会对目标数据进行词嵌入、添加位置编码等一些列操作,形成另一个矩阵,我也给它命一个名,叫矩阵B吧。矩阵B进入解码器后,进行掩码,再进行一次注意力计算,然后往前传递,与矩阵A“胜利会师”。会师后,两者共同进行注意力计算,生成新的矩阵,并进行前向传播和规范化。进行一系列类似操作后,将矩阵传入输出模块。从这里可以看出,解码器模块,是有两个输入的,一个来自于编码器,一个来自于输入模块对目标数据的编码。 输出模块:输出模块对解码器模块的输出矩阵进行一次线性变换,然后通过softmax层转换为概率分布矩阵,矩阵中概率最大值对应的英文词汇为这一次传输的输出结果,即翻译结果。
2.1 Embedding输入模块
单词 Embedding(Input embdding) 单词的 Embedding 有很多种方式可以获取,例如可以采用 Word2Vec、Glove 等算法预训练得到,也可以在 Transformer 中训练得到。
为什么是将PE与词向量相加,而不是拼接呢? 其实,拼接相加都可以,一般来说词向量的维度就已经蛮大了,再拼接一个相同维度大小的位置向量,维度顿时提升一倍,这样训练起来会相对慢一些,影响效率。两者的效果是差不多地,既然效果差不多当然是选择学习习难度较小的相加了。
2.2 Encoder编码器
2.2.1 注意力机制
线性变阵矩阵 W Q , W K , W V从哪里来? 这个是参数,调参就是这么调的。
阶段一:query 和 key 进行相似度计算,得到权值系数; 阶段二:将权值进行归一化,得到直接可用的权重 阶段三:将权重和 value 进行加权求和,
2.2.2 多头注意力机制
2.2.3 Add 和 Norm
2.2.4 Feed Forward
2.2.5 子层残差连接
2.3 Decoder解码器
第一个 Multi-Head Attention 层采用了 Masked 操作。 第二个 Multi-Head Attention 层的 K, V 矩阵使用 Encoder 的编码信息矩阵 C 进行计算,而 Q 使用上一个 Decoder block 的输出计算。 然后还有一个Feed Forward 最后有一个 Linear和Softmax 层计算下一个翻译单词的概率。
我们为什么要添加解码器模块,编码器后面直接接全连接层或者残差结构、循环网络层不可以吗? 不是不可以,只是性能要降低很多。一方面是在Transformer的解码器模块中,使用了多个解码器(Transformer的paper中说是6个),每个解码器都创新地使用了多头注意力机制,这里的注意力机制还比编码器模块中的多头注意力机制丰富,多个注意力机制层数据来源不同(queryquery、keykey、valuevalue);另一方面,在Transformer的解码器训练过程中使用了“teacher-forcing”这么一种训练方式,teacher-forcing是指在训练网络过程中,每次不使用上一个阶段的输出作为下一个阶段的输入,而是直接使用训练数据的标准答案(目标数据)的对应上一项作为下一个阶段的输入。
2.3.1 Masked Multi-Head Attention
2.3.2 第二个Multi-Head Attention
2.3.3 第三个子层残差连接
2.4 输出模块
线形层:通过对解码器模块的输出进行线性变化得到指定维度的输出, 也就是转换维度的作用。
softmax层:使最后一维的向量中的数字缩放到0-1的概率值域内, 并满足他们的和为1。
2.5 Transformer应用
2.6 Transformer优缺点
https://www.cnblogs.com/chenhuabin/p/16453665.html https://blog.csdn.net/Julialove102123/article/details/135457093 https://blog.csdn.net/holyvslin/article/details/134044681
3. UniAD端到端自动驾驶通用算法
在汽车上的自动驾驶AI芯片要运行的算法基本就如这个UniAD,各家技术算法估计会调整,但是基础都还是基于Transformer的。今天看到几个消息都是地平线的余轶南创业去搞具身智能,进军机器人了。估计是机器人用的AI芯片比较多,又是风口,而且地平线创立之初就是搞机器人的,不过那时技术应用还不成熟,为了生存转向了汽车。春江水暖鸭先知,就自己率先下场了。
3.1 问题和贡献
累积误差。 各个任务模块(例如感知、预测和规划)之间的协调不足,可能会导致系统性能下降。如果任务之间的协调不足,可能会导致信息丢失或误解,从而影响系统的整体性能
规划导向的自动驾驶框架:作者提出了一种新的自动驾驶系统设计理念,即以规划为目标,优化前置的感知和预测任务,使得各个任务能够协同合作,提高最终的规划性能和安全性。 统一的自动驾驶(UniAD) :作者提出了一种综合性的自动驾驶算法框架,将全栈的驾驶任务(包括检测、跟踪、在线地图、运动预测、占据预测和规划)集成在一个网络中,利用query-based的设计连接各个模块,实现了端到端的优化和推理。 优异的实验结果:作者在具有挑战性的nuScenes数据集上进行了广泛的实验,验证了UniAD在各个任务上的有效性和优越性。文章还进行了大量的消融实验,分析了各个组件的作用和贡献。文章展示了UniAD在复杂场景下的可视化结果,证明了其对规划导向的自动驾驶的潜力。
3.2 组成
3.2.1 Bev-feature摄像头感知检测
3.2.2 TrackerFormer跟踪动态物体
TrackFormer模块中可学习的参数叫做track queries. 它从BEV特征图B中query信息,来做到agent的检测和跟踪。 track queries是可学习的,代表agent及其状态。
3.2.3 MapFormer分割静态地图
3.2.4 MotionFormer运动预测
MotionFormer模块捕获了agent和地图之间的交互,并预测每个agent的未来轨迹。 由于每个agent的行动可能会显著影响场景中的其他agent,因此该模块对所有考虑的agent进行联合预测。 同时,我们设计了一个自车query,以显式地模拟自车,并使其能够与场景中的其他agent进行交互
3.2.5 OccFormer占用预测
3.2.6 Planner规划
3.3 UniAD效果
3.4 地平线的端到端
后记: 本篇大致说说明了AI芯片要运行的算法,也就是把软件算法做成硬件叫NPU或者BPU/TPU等各种PU。例如把一个函数做成了硬件,那这个硬件就是算子,软件要执行这个函数就需要这个硬件去运行,控制硬件运行的是机器码,所以又需要AI编译器的协助。 一般AI中的算法函数都是对数据进行处理,例如两个矩阵相乘,但是传统的冯诺依曼架构一般运算单元比较快,数据准备的比较慢是以计算为中心的。为了加快数据的准备,把数据和算法放一块作为一个单元进行打包,无数个包还可以并行计算,这就是存算一体的架构。这就像中央集权和联邦政府一样。
进交流群
知识星球
查看原图 32K