[自动驾驶技术]-6 Tesla自动驾驶方案之硬件(AI Day 2021)

news2024/9/19 16:58:32

1 硬件集成

特斯拉自动驾驶数据标注过程中,跨250万个clips超过100亿的标注数据,无论是自动标注还是模型训练都要求具备强大的计算能力的硬件。下图是特斯拉FSD计算平台硬件电路图。

1)神经网络编译器

特斯拉AI编译器主要针对PyTorch框架,结合之前介绍过的编译器内容,特斯拉的自动驾驶算法模型需要通过编译器,生成硬件可执行的机器指令,才能在CPU、GPU或者AI芯片上运行。上图主要展示了AI编译器的计算图优化(算子融合:将CONV 2D和RELU算子融合为1个CONV 2D_RELU算子,这基本是常规标配做法),调度。

2)FSD计算平台

特斯拉FSD硬件计算平台集成了2颗SoC芯片,SOC-1输出最终的控制指令,SOC-2作为扩展计算。

3)AI模型评估中心

特斯拉的AI模型评估基础设施中心,可支持每周超过百万的评估计算,运行在超过3000个FSD计算平台上。

特斯拉的训练网络计算中心,2021年具备3个集群1组用于自动标注,2组用于模型训练。

2 DOJO项目  

Ganesh说:“计算能力容易扩展,但带宽扩展较为困难,而降低延迟则极其困难。”

现代CPU、GPU和AI加速器通过不断优化架构(如增加核心数、提高时钟速度、优化指令集)来提升性能。特别是GPU和AI加速器,天然适合大规模并行计算,通过增加更多的计算单元,可以显著提升计算能力。

然而无论哪种处理器都很容易受到内存带宽限制: CPU、GPU和AI加速器需要高速访问内存,而内存带宽的提升速度往往跟不上计算能力的提升速度,造成带宽瓶颈,也就是我们常说的内存墙问题。此外,芯片内部的总线架构(如PCIe、NVLink)需要支持高带宽传输,扩展这些总线的带宽需要对芯片封装、功耗管理和信号完整性进行优化,难度较大。在多芯片系统中,不同芯片之间的数据传输也受到带宽限制,需要高速互连技术(如Infinity Fabric、NVLink)来解决,但这些技术实现复杂且成本较高。

降低延迟极其困难:从CPU到GPU或AI加速器的数据传输路径中,每一步都可能增加延迟,例如内存访问延迟、缓存命中率、总线传输延迟等都是难以完全消除的因素。在多任务环境中,任务调度和切换会带来上下文切换延迟和资源争用问题,这些问题在实时性要求高的应用中尤为突出。若想硬件和软件协同优化来减少延迟,涉及复杂的设计流程和大量的调优工作,需要深入理解整个系统的工作机制。

特斯拉的Dojo架构由计算单元和Network Fabric(指芯片上用于连接和通信的网络架构,是一种高性能的互连系统,负责在芯片内部不同计算单元之间传输数据)组成,采用了多种技术例如采用2D网格网络进行数据传输、对神经网络分割、调用本地存储方式等解决带宽和延迟的限制。

(一句话,特斯拉极大程度提高了带宽降低了延迟,远超业内)

1)芯片

如上图所示是特斯拉SoC芯片上一个高性能的训练节点结构图:底部是机器学习阵列,左侧是SRAM存储阵列,再加上顶部的多线程可编程核。支持FP32、BFP16、CFP8。

  • 1024 GFLOPS(BF16/CFP8)
  • 64GFLOPS(FP32)
  • 512GB/S带宽

如上图所示,这是个超标量处理器核,四个宽标量核两个宽标量数据管线;支持四个线程;针对机器学习支持自定义指令集ISA,例如转置、链接遍历、广播等。(这部分工作原理会在处理器专栏做详细介绍)

特斯拉D1芯片由354个训练节点组成计算阵列,可谓针对机器学习的机器,GPU级别的芯片同时拥有CPU的灵活性核两倍NPU级别的I/O带宽,提供了超高性能的计算能力。

2)计算系统Computer Plane

特斯拉的计算系统上,1个Training Tile集成了25个D1芯片,四周使用高速连接器支持9TB/S带宽,支持9PFLOPS(BF16/CFP8)

3)计算集群

4)AI编译器

特斯拉Dojo编译器引擎,使用多种细颗粒度的并行化技术:数据并行、模型并行、计算图并行技术,还支持高层次的环路管理,例如循环等。

特斯拉的软件栈有两个重点:用户编程接口,基于PyTorch做了扩展;使用LLVM作为底层处理生成硬件所需的二进制代码。

LLVM(Low Level Virtual Machine)是一套用于构建编译器和相关工具的开源项目,提供了一种模块化和可重用的编译器基础架构。LLVM的架构主要包括:前端负责将源代码转换为LLVM中间表示IR;中端对LLVM IR进行各种优化处理,提高代码执行效率;后端将优化后的LLVM IR转换为目标机器码,具体包括代码生成和目标特定优化。

(以下为笔者猜测内容)

特斯拉的Dojo AI编译器使用LLVM作为后端处理的基础架构,通过LLVM的模块化设计和强大的优化能力,实现高效的AI模型编译和执行:

  • 自定义目标支持:特斯拉可以通过LLVM的目标描述文件,定义Dojo芯片的特性,并扩展LLVM的指令选择和代码生成模块,以支持特斯拉可能有的特定的硬件加速单元和自定义指令集自定义指令。
  • 高效的寄存器分配:Dojo AI编译器可以利用LLVM的寄存器分配算法,优化寄存器使用,减少内存访问,提高模型执行效率。
  • 目标特定优化:通过LLVM的目标特定优化能力,Dojo AI编译器可以实现针对Dojo硬件的深度优化,包括利用硬件加速单元和并行计算资源,提高模型推理速度。
  • 模块化和可扩展性:LLVM的模块化设计允许特斯拉根据需要扩展和定制编译器后端,以适应不同的AI模型和硬件需求。可以在LLVM的基础上添加新的优化通道和代码生成策略,提升整体性能。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1703433.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

网络上受认可的赚钱软件有哪些?这些兼职副业中总有一个适合你

在这个互联网迅速发展的时代,网络赚钱已经成为一种普遍的趋势。然而,你是否仍旧在依靠运气去碰寻赚钱的机会?是否还在为无法找到一个可靠的兼职平台而感到烦恼? 别担心,今天我将为你揭示那些真正可靠的在线赚钱平台&a…

算法简单笔记2

5月26号,之前学了两天算法烦了,去学了几天鸿蒙,今天又回来看一下算法,距离6月1日国赛还有6天,哈哈真是等死咯...... 一、蓝桥杯第13届国赛第1题填空题:重合次数 (半难不难,写编程难…

强化学习_06_pytorch-PPO2实践(Humanoid-v4)

一、PPO优化 PPO的简介和实践可以看笔者之前的文章 强化学习_06_pytorch-PPO实践(Pendulum-v1) 针对之前的PPO做了主要以下优化: -笔者-PPO笔者-PPO2refdata collectone episodeseveral episode(one batch)activationReLUTanhadv-compute-compute adv as one seri…

【Redis】持久化操作详解

Redis 持久化操作详解 Redis 实现持久化的时候,具体是按照什么样的策略来实现的呢? Redis支持两种方式的持久化,一种是RDB方式、另一种是AOF(append-only-file)方式,两种持久化方式可以单独使用其中一种&…

编程-辅助工具-Git下载

文章目录 1、前言2、Git官网地址3、迅雷下载 1、前言 采用Git能下载github上的代码,其下载是采用官网下载的,但是下载速度比较慢,网上也推荐了镜像的方式,但是有些链接失效了,突然有一天想起用迅雷是不是合适&#xf…

DDR基本原理

1. 简介 DDR SDRAM(Double Data Rate Synchronous Dynamic Random Access Memory,双数据率同步动态随机存储器)通常被我们称为DDR,其中的“同步”是指内存工作需要同步时钟,内部命令的发送与数据传输都以它为基准。DDR…

postman教程-4-发送post请求

领取资料,咨询答疑,请➕wei: June__Go 上一小节我们学习了postman发送get请求的方法,本小节我们讲解一下postman发送post请求的方法。 POST请求通常用于向服务器提交数据以创建新资源或执行某些操作。与GET请求不同,POST请求可…

华为机考入门python3--(31)牛客31-单词倒排

分类:字符串、正则 知识点: 正则提取所有符合的字符串 words re.findall(r[a-zA-Z], sentence) 列表倒序 words[::-1] 题目来自【牛客】 import re # 导入正则表达式模块def reverse_words(sentence):# 使用正则表达式将句子拆分成单词# 如可以将…

【Docker学习】详细讲解docker ps

docker ps是我们操作容器次数最多的命令之一,但我们往往使用docker ps或是docker ps -a,对于该命令的其它选项,我们关注比较少。那么这一讲,我给大家详细讲讲该命令的全部方法。 命令: docker container ls 描述&am…

python数据分析——apply 1

参考资料:活用pandas库 apply是指把函数同时作用于DataFrame的每一行或每一列。类似于编写一些跨每行或每列的for循环,并同时调用apply函数。 1、函数 函数是对python代码进行分组和复用的一种方法。如果某段代码会被多次使用,并且使用时是需…

Flink 数据源

原理 在 Flink 中,数据源(Source)是其中一个核心组件,负责从各种来源读取数据供 Flink 程序处理。 Flink 的数据源类型丰富,涵盖了从简单测试到生产环境使用的各种场景。Kafka、Socket、文件和集合是 Flink 中最常见…

[转载]同一台电脑同时使用GitHub和GitLab

原文地址:https://developer.aliyun.com/article/893801 简介: 工作中我们有时可能会在同一台电脑上使用多个git账号,例如:公司的gitLab账号,个人的gitHub账号。怎样才能在使用gitlab与github时,切换成对应…

利用边缘计算网关的工业设备数据采集方案探讨-天拓四方

随着工业4.0时代的到来,工业设备数据采集成为了实现智能制造、提升生产效率的关键环节。传统的数据采集方案往往依赖于中心化的数据处理方式,但这种方式在面对海量数据、实时性要求高的工业场景时,往往显得力不从心。因此,利用边缘…

访问构造方法(反射)

文章目录 前言一、反射是什么?二、访问构造方法 1.Constructor对象的获取方法2.Constructor方法的使用总结 前言 Java的反射机制可以实现访问、检测和修改Java对象本身信息的功能,在java.lang.reflect包下提供此功能。可以使程序员更加深入地控制程序的运…

初识C语言——第二十九天

数组 本章重点 1.一维数组的创建和初始化 数组的创建 注意事项: 1.一维由低数组在内存中是连续存放的! 2.随着数组下标的增长,地址是由低到高变化的 2.二维数组的创建和初始化 注意事项: 1.二维数组在内存中也是连续存放的&am…

内网横向移动小补充 --->PTK

大家别急,我的基于资源的约束性委派攻击还在写,这个东西一时半会讲不清楚,所以我在这里先来补充一点横向移动以前没说好的东西!!! 在更啦,别催啦~~~~ 还记得我之前在内网渗透里面讲过这个PTK&a…

2024爆款神器!会声会影2024旗舰版,让你的视频制作技能暴涨,不学真的亏大了!

在数字内容创作的时代,视频编辑已经成为连接创意与现实的重要桥梁。无论是个人Vlog制作、在线教育课程、企业宣传还是专业影视制作,高效而强大的视频编辑软件成为了必不可少的工具。会声会影2024旗舰版,作为一款集先进技术与用户友好界面设计…

数据集007:垃圾分类数据集(含数据集下载链接)

数据集简介 本数据拥有 训练集:43685张; 验证集:5363张; 测试集:5363张; 总类别数:158类。 部分代码: 定义数据集 class MyDataset(Dataset):def __init__(self, modetrain, …

【MATLAB】去除趋势项(解决频谱图大部分为零的问题)

1.概 述 在许多实际信号分析处理中信号经FFT变换后得到的频谱谱线值几乎都为0,介绍这是如何形成的,又该如何去解决。 2.案例分析 读入一组实验数据文件(文件名为qldata.mat),作出该组数据的频谱图。程序清单如下: clear; clc; close all;…

(四)手把手教你内网穿透,实现外网主机访问内网服务器

背景:书接上回, 服务器的使用-CSDN博客 课题组成员都有自己的账号,且能通过内网访问服务器,进行远程连接了。我们知道内网中的主机可以访问公网的主机,反之不可以访问。那么如果课题组成员在家不在内网区域内&#x…