当前位置: 首页 > news >正文

三维家是在网站上做还是在app上国内新闻最新5条

三维家是在网站上做还是在app上,国内新闻最新5条,做网站赤峰,网站免费制作教程编者按#xff1a;在刚刚结束的 PyCon China 2022 大会上#xff0c;龙蜥社区开发者朱宏林分享了主题为《ARM 芯片的 PythonAI 算力优化》的技术演讲。本次演讲#xff0c;作者将向大家介绍他们在倚天 710 ARM 芯片上开展的 PythonAI 优化工作#xff0c;以及在 ARM 云平台…编者按在刚刚结束的 PyCon China 2022 大会上龙蜥社区开发者朱宏林分享了主题为《ARM 芯片的 PythonAI 算力优化》的技术演讲。本次演讲作者将向大家介绍他们在倚天 710 ARM 芯片上开展的 PythonAI 优化工作以及在 ARM 云平台上部署 PythonAI 任务的最佳实践。 以下为本次演讲内容 图/朱宏林现场演讲 我们的场景是 ARM 平台的和 AI 相关的任务主要的目标是进行性能优化具体来说我们首先关注的是深度学习推理任务inference task主要原因也是来自于业务需求。 这里说的 ARM 平台不是我们理解的终端设备比如手机之类的而是指服务端平台。在大家印象中AI 任务特别是深度学习的程序一般是跑在 GPU 或者 x86 的 CPU 上出于功耗、成本、性能等因素的考虑云厂商逐步开始建设 ARM 架构的服务平台这是一个趋势。当然 ARM 平台还不是很成熟许多软件还无法成功跑起来更不要说提升性能了。 我们想要吸引一部分用户将AI应用从原先的 x86 平台上迁移到 ARM 平台上。这就要求 ARM 平台能提供更好的性能或者更好的性价比。所以说如何整合 PythonAI 的相关软件使其发挥最好的性能成为了我们关注的重点。 下文的分享整体分为两部分一部分是介绍我们进行的优化工作主要是跟矩阵乘法相关的优化第二部分是关于 Python AI 应用在 ARM 云平台-倚天 710 上的最佳实践。 一、优化工作介绍 前面说我们的优化是和矩阵乘法相关的那首先需要说明为什么我们会关注到这个。 这里有一个绕不开的场景就是深度学习不管是前几年知名的 AlphaGo还是当前火热的 ChatGPT都用到了大量深度学习的技术深度学习本身只是AI的一个分支但却影响广泛不容忽视。所以我们从深度学习开始切入从当前最广泛使用的深度学习框架TensorFlow 和 PyTorch 开始。此外我们还需要结合硬件场景即前面说到的 ARM 服务端平台对于阿里云来说就是结合倚天 710 芯片。 深度学习的实现中包含大量的矩阵乘法甚至有文章直接写出矩阵乘法是深度学习的核心。举个例子我们熟知的卷积操作实际上经过一系列的转换后输入特征和卷积核会被转换为两个矩阵然后进行矩阵乘法输出的结果再解码成特征图就完成了卷积。除此以外全连接层也由矩阵乘法实现当前流行的 Transformers 结构被包括 ChatGPT 在内的各类 NLP 模型所使用也包含大量矩阵乘法操作。 我们可以看一些例子 可以看到像 AlexNet、ResNet-50 之类的模型在进行推理时大约 90% 计算耗时在执行矩阵乘法。即使对矩阵乘法做一些微小的优化影响也是很广泛的。 我们前面说的矩阵乘法更准确的叫法是 GEMM通用矩阵乘法其实还包含系数和累加操作。但是时间复杂度仍然是 MNK 级别主要还在于 AB 两个矩阵相乘。直观来看深度学习涉及的矩阵乘法计算量很大比如常见的卷积操作可能就涉及 5000 万次计算所以优化就显得很有必要右下图是最朴素的三层循环迭代法这种做法通常非常慢计算机科学家做了许多努力从优化内存布局和利用向量指令出发能够将性能提升 10 倍以上。 内存布局主要分两步第一步是对矩阵进行分块即对于一个超大的矩阵我们并不是一个一个按顺序计算而是将矩阵切分为一个一个小块分小块计算。第二步是对分出的小块内部的元素序列进行重排例如原来是按行排列的矩阵那可能第一行四个计算好了就需要取第二行的前四个但是要取第二行就需要指针移动很长的距离很容易造成 cache 不命中于是需要重排使得他们在内存上连续。优化内存布局主要目的是为了增加 cache 命中率减少访存次数。 其次是利用向量化指令类似 AVX 对于 x86 设备NEON 对于 ARM 设备。向量化指令本质上是为了同时对多个数据进行计算例如我们要对四组数据分别进行乘法那么常规情况下需要执行四次如果将它们对应放入向量寄存器中只需要一条向量化指令就可以同时得出四个结果计算效率得到提升。当然这个是需要硬件支持。 因为 AI 推理大量使用了矩阵乘法如今也有许多硬件对矩阵运算进行了加速 NVIDIA Volta 架构引入了tensor core可以高效地以混合精度处理矩阵乘Intel AMX(Advanced Matrix Extensions) 通过脉动阵列在硬件层面支持矩阵乘ARM SME(Scalable Matrix Extension) 支持向量外积运算加速矩阵乘 目前市面上尚没有可以大规模使用的支持 AMX 或者 SME 的硬件在这个阶段我们应该如何优化 CPU 上的 AI 推理算力呢我们首先要了解 BF16 数据类型。 BF16(全称 Brain Floating Point)是由 Google Brain 开发设计的 16 位浮点数格式。 相比传统的 FP16 位浮点数BF16 拥有和 FP32 一样的取值范围但是精度较差。但对于深度学习来说较低的精度并不显著影响结果而较低的表示范围则会显著影响模型训练的好坏。 此外BF16 还具有转换方便的特点BF16 和 FP32 的互转只需要截断或填充尾数即可。 使用 BF16 还可以节约一半的内存紧凑的内存表示通常意味着更高的计算吞吐。 最后我们也有了硬件指令支持可以直接对 BF16 数据进行操作。 需要说明的是 BF16 的扩展包含在 ARMv8.6 设备上当然倚天 710 是 ARMv9 的指令集同样支持。 我们主要通过 BFMMLA 来进行矩阵乘法计算例如对于包含 128bit 的向量寄存器的设备来说 输入 A: 大小为 2*4 的 BF16 矩阵按行存储输入 B: 大小为 4*2 的 BF16 矩阵按列存储输出 C: 大小为 2*2 的 FP32 矩阵 BFMMLA 单指令完成 16 次乘法和 16 次加法计算吞吐非常高。 当然这时候如果我们需要 C 是 BF16 类型的话就需要应用转换指令例如向量化指令 BFCVT加速转换过程。 我们的目标还是给 tensorflow 和 pytorch 用户提供加速这是整体的流程图对于一个 AI 推理任务实际上不论是 TensorFlow 还是 PyTorch 都不会自己直接去计算而是叫个专门的计算后端在 ARM 主要是两个一个是 ARM Compute Library另一个是 OpenBLAS他们之间的关系如右图。 TensorFlow 在最近的版本中开始采用 oneDNN ACL 作为计算后端oneDNN 也是一层皮实际的计算仍然是 ACL。用户实际上只需要设置一个环境变量就可以在不该动代码的情况下获得 BF16 加速。这个改进是由 ARM 公司的研发人员首先完成了。具体操作例子如下 # 假设 resnet.py 包含用户写的模型推理的代码 DNNL_DEFAULT_FPMATH_MODEBF16 python3 resnet.py PyTorch的情况比较复杂PyTorch 支持 OneDNN ACL但无法很好的发挥性能同时 PyTorch 支持 OpenBLAS 后端因此可以通过 OpenBLAS 来享受 ARM bf16 扩展带来的性能收益。 OpenBLAS 的 BF16 的 GEMM 优化是由龙蜥社区理事单位阿里巴巴贡献的于此同时我们为了方便用户使用也在 PyTorch 中加入了一个API用户在模型执行前添加一行torch.set_float32_fast_math_mode(BF16)就可以获得 BF16 加速不必修改其他代码需要说明这个api还没有合入PyTorch所以目前要使用我们提供的pytorch镜像才可以获得。操作例子如下 # ... # 在模型执行前设置fast math mode torch.set_float32_fast_math_mode(BF16) # ... # 执行模型 pred model(x) # ... 之后是一些性能测试的展示我们测试了 OpenBLAS 纯矩阵计算的性能对比。分别记录了 GFLOPS 和执行时间两个指标。 然后测试 TensorFlow 和 PyTorch 的性能对比在对比中我们可以看到得益于 BF16 扩展最新的 ECS ARM 平台上的性能优于 x86 平台g7。 二、Python AI应用在ARM云平台-倚天710上的最佳实践 现在介绍一下在 ARM 平台特别是倚天 710 的用户使用 TensorFlow 或 PyTorch 的最佳实践。 要知道软件版本的选择十分重要随意选择 tensorflow 或者 pytorch 包可能遭遇 未适配 ARM 架构安装失败软件未适配 BF16 扩展或者环境参数有误无法发挥硬件的全部算力性能打折需要精心选择计算后端例如目前 pytorch下OpenBLAS 较快 在 TensorFlow 上我们可以选择最新的两个官方版本 2.10.1 或者 2.11.0最新版本才能够获得 ACL 的 BF16 加速。用户也可以选择阿里云的镜像这个和 pip 安装的其实是一样的没有区别。 对于 PyTorch 用户官方版本只有在最新的 1.13.0 才能够获得 ACL 加速但是正如前面所说的实际性能并不突出。阿里云则提供了带最新 OpenBLAS 的 PyTorch在 docker 拉取时标注 torch_openblas 就可以获得。此外我们也提供了modelzoo 镜像包含模型的测试代码和验证代码。 目前我们仍然在进行相关的工作期待后续能为大家提供更加完善的镜像。欢迎大家入群一起探索相关技术。 AI SIG 主页地址https://openanolis.cn/sig/AI_SIG 原文链接 本文为阿里云原创内容未经允许不得转载。
http://www.pierceye.com/news/777822/

相关文章:

  • 呼伦贝尔网站设计wordpress如何关闭主题
  • 苏州网站制作网站建设淮安住房和城乡建设厅网站
  • 房产中介网站wordpress模板mip
  • 汽车租赁网站怎么做沈阳网站开发程序员工资
  • 网站建设教程搭建汽岁湖南岚鸿专注交城有做网站的吗
  • 网站开发怎么连接sqlserver建设网站怎么收费标准
  • 万网网站模板购买北京南站核酸检测地点
  • 南京城乡建设网站公司做网站哪个好
  • 有没有学做衣服的网站广告设计公司有什么岗位
  • 什么网站做免单衣服厦门设计师网站
  • 深圳网站建设 龙华信科易乐自助建站
  • 徐老师在那个网站做发视频搜索引擎优化特点
  • 工信部网站备案批准文件重庆装修网站建设
  • 网站被攻击了怎么办网站优化 价格查询
  • 北京网站建设公司怎么样怎么做qq盗号网站
  • 中企动力网站建设合同中天建设招标网站
  • 湖南手机版建站系统开发wordpress获取用户角色
  • 南皮网站建设价格泰安房产信息网官网首页
  • 网页制作与网站建设实战大全重庆房产信息网官网
  • 上海的网站建设公司app对接网站登录要怎么做
  • 江苏省备案网站现在什么网站做外贸的最好
  • 如何知道网站是否被k蓝山网站建设
  • 网站维护服务公司免费的网站推广渠道
  • 网站建设方案应该怎么写asp网站无法上传图片
  • 建个网站多少钱app企业关键词排名优化公司
  • 电子商务他们的代表网站代码网站怎么做的
  • 如何做网站卖东西长春互联网公司排名
  • 怎样拥有自己的网站制作网站的步骤和方法
  • 北京电子商务app网站建设大兴小程序源码如何部署到服务器
  • 设计找图网站网站用什么构建