TPU-MLIR是一种专用于处理器的TPU编译器。该编译器项目提供了一个完整的工具链,可以将来自不同深度学习框架(PyTorch, ONNX, TFLite和Caffe)的各种预训练神经网络模型转换为高效的模型文件(bmodel/cvimodel),以便在SOPHON TPU上运行。通过量化到不同精度的bmodel/cvimodel,优化了模型在sophon计算TPU上的加速和性能。这使得可以将与对象检测、语义分割和对象跟踪相关的各种模型部署到底层硬件上以实现加速。
本课程主要分为三个部分:
本课程旨在通过实际演示,全面、直观地展示TPU- mlir编译器的使用方法,使学生能够快速理解各种深度学习模型算法的转换和量化,以及它们在SOPHGO计算处理器TPU上的部署测试。目前,TPU-MLIR的使用已应用于由SOPHGO开发的最新一代深度学习处理器BM168X和CV18XX,并辅以处理器的高性能ARM内核和相应的SDK,用于快速部署深度学习算法。
本课程在模型移植和部署方面的优势:
1. 支持多种深度学习框架
目前支持的框架包括PyTorch、ONNX、TFLite和Caffe。来自其他框架的模型需要转换为ONNX模型。有关将其他深度学习架构的网络模型转换为ONNX的指导,请参考ONNX官方网站:https://github.com/onnx/tutorials。
2. 用户友好的操作
通过开发手册和相关部署案例了解TPU-MLIR的原理和操作步骤,可以从头开始进行模型部署。熟悉Linux命令和模型编译量化命令对于动手实践是足够的。
3. 简化量化部署步骤
模型转换需要在SOPHGO提供的docker中执行,主要包括两个步骤:使用model_transform.py将原始模型转换为MLIR文件,使用model_deploy.py将MLIR文件转换为bmodel格式。bmodel是可以在SOPHGO TPU硬件上加速的模型文件格式。
4. 适应多种架构和硬件模式
量化的bmodel模型可以在PCIe和SOC模式下运行在TPU上进行性能测试。
5. 全面的文档
丰富的教学视频,包括详细的理论解释和实际操作,以及充足的指导和标准化的代码脚本,在课程中开放源代码,供所有用户学习。
SOPHON-SDK Development Guide | https://doc.sophgo.com/sdk-docs/v23.05.01/docs_latest_release/docs/SOPHONSDK_doc/en/html/index.html |
TPU-MLIR Quick Start Manual | https://doc.sophgo.com/sdk-docs/v23.05.01/docs_latest_release/docs/tpu-mlir/quick_start/en/html/index.html |
Example model repository | https://github.com/sophon-ai-algo/examples |
TPU-MLIR Official Repository | https://github.com/sophgo/tpu-mlir |
SOPHON-SDK Development Manual | https://doc.sophgo.com/sdk-docs/v23.05.01/docs_latest_release/docs/sophon-sail/docs/en/html/ |
作为框架和硬件之间的桥梁,深度学习编译器可以实现一次性代码开发和重用各种计算能力处理器的目标。最近,算能也开源了自己开发的TPU编译工具——TPU-MLIR (Multi-Level Intermediate Representation)。TPU-MLIR是一个面向深度学习处理器的开源TPU编译器。该项目提供了完整的工具链,将各种框架下预训练的神经网络转换为可在TPU中高效运行的二进制文件bmodel,以实现更高效的推理。本课程以实际实践为驱动,引导您直观地理解、实践、掌握智能深度学习处理器的TPU编译框架。
目前,TPU-MLIR项目已应用于算能开发的最新一代深度学习处理器BM1684X。结合处理器本身的高性能ARM内核以及相应的SDK,可以实现深度学习算法的快速部署。本课程将介绍MLIR的基本语法,以及编译器中各种优化操作的实现细节,如图形优化、int8量化、算子分割、地址分配等。
与其他编译工具相比,TPU-MLIR有几个优点
1. 简单方便
通过阅读开发手册和项目中包含的示例,用户可以了解模型转换的过程和原理,并快速入门。此外,TPU-MLIR是基于当前主流编译工具库MLIR设计的,用户也可以通过它了解MLIR的应用。本项目提供了一套完整的工具链,用户可直接通过现有接口快速完成模型转换工作,无需适应不同的网络。
2. 通用性
目前,TPU- mlir已经支持TFLite和onnx两种格式,这两种格式的模型可以直接转换为TPU可用的bmodel。如果不是这两种格式呢?事实上,onnx提供了一套转换工具,可以将目前市场上主要的深度学习框架编写的模型转换为onnx格式,然后再进行bmodel转换。
3、精度与效率并存
在模型转换过程中,有时会失去精度。TPU-MLIR支持INT8对称和非对称量化,结合原开发公司的校准和tune技术,大大提高了性能,保证了模型的高精度。此外,TPU-MLIR还使用了大量的图优化和算子分割优化技术来保证模型的高效运行。
4. 实现终极性价比,构建下一代深度学习编译器
为了支持图形化计算,神经网络模型中的算子需要开发图形化版本;为了适应TPU,应该为每个运营商开发一个版本的TPU。此外,有些场景需要适应相同计算能力处理器的不同型号,每次都必须手工编译,这将非常耗时。深度学习编译器就是用来解决这些问题的。TPU-mlir的一系列自动优化工具可以节省大量的人工优化时间,因此在RISC-V上开发的模型可以顺利自由地移植到TPU上,以获得最佳的性能和性价比。
5. 完整的信息
课程包括中英文视频教学、文档指导、代码脚本等,详实丰富的视频资料详细应用指导清晰的代码脚本TPU-MLIR站在MLIR巨头的肩膀上打造,现在整个项目的所有代码都已经开源,免费向所有用户开放。
代码下载链接:https://github.com/sophgo/tpu-mlir
tpu - mlir开发参考手册:https://tpumlir.org/docs/developer_manual/01_introduction.html
总体设计思想论文:https://arxiv.org/abs/2210.15016
视频教程:https://space.bilibili.com/1829795304/channel/collectiondetail?sid=734875
课程目录
序号 | 课程名 | 课程分类 | 课程资料 | ||
视频 | 文档 | 代码 | |||
1.1 | Deep learning编译器基础 | TPU_MLIR基础 | √ | √ | √ |
1.2 | MLIR基础 | TPU_MLIR基础 | √ | √ | √ |
1.3 | MLIR基本结构 | TPU_MLIR基础 | √ | √ | √ |
1.4 | MLIR之op定义 | TPU_MLIR基础 | √ | √ | √ |
1.5 | TPU_MLIR介绍(一) | TPU_MLIR基础 | √ | √ | √ |
1.6 | TPU_MLIR介绍(二) | TPU_MLIR基础 | √ | √ | √ |
1.7 | TPU_MLIR介绍(三) | TPU_MLIR基础 | √ | √ | √ |
1.8 | 量化概述 | TPU_MLIR基础 | √ | √ | √ |
1.9 | 量化推导 | TPU_MLIR基础 | √ | √ | √ |
1.10 | 量化校准 | TPU_MLIR基础 | √ | √ | √ |
1.11 | 量化感知训练(一) | TPU_MLIR基础 | √ | √ | √ |
1.12 | 量化感知训练(二) | TPU_MLIR基础 | √ | √ | √ |
2.1 | Pattern Rewriting | TPU_MLIR实战 | √ | √ | √ |
2.2 | Dialect Conversion | TPU_MLIR实战 | √ | √ | √ |
2.3 | 前端转换 | TPU_MLIR实战 | √ | √ | √ |
2.4 | Lowering in TPU_MLIR | TPU_MLIR实战 | √ | √ | √ |
2.5 | 添加新算子 | TPU_MLIR实战 | √ | √ | √ |
2.6 | TPU_MLIR图优化 | TPU_MLIR实战 | √ | √ | √ |
2.7 | TPU_MLIR常用操作 | TPU_MLIR实战 | √ | √ | √ |
2.8 | TPU原理(一) | TPU_MLIR实战 | √ | √ | √ |
2.9 | TPU原理(二) | TPU_MLIR实战 | √ | √ | √ |
2.10 | 后端算子实现 | TPU_MLIR实战 | √ | √ | √ |
2.11 | TPU层优化 | TPU_MLIR实战 | √ | √ | √ |
2.12 | bmodel生成 | TPU_MLIR实战 | √ | √ | √ |
2.13 | To ONNX format | TPU_MLIR实战 | √ | √ | √ |
2.14 | Add a New Operator | TPU_MLIR实战 | √ | √ | √ |
2.15 | TPU_MLIR模型适配 | TPU_MLIR实战 | √ | √ | √ |
2.16 | Fuse Preprocess | TPU_MLIR实战 | √ | √ | √ |
2.17 | 精度验证 | TPU_MLIR实战 | √ | √ | √ |
欢迎来到大模型课程!本课程将带您深入到大模型的领域,并帮助您掌握应用这些大模型的技能。无论您是对深度学习领域感兴趣,还是希望在现实世界的项目中应用大型模型,本课程都将为您提供宝贵的知识和实践经验。
大模型是指具有巨大参数和复杂结构的深度学习模型。这些模型在处理大规模数据集和复杂任务(如图像识别、自然语言处理、语音识别等)时表现得非常好。大模型的出现引发了深度学习领域的重大变化,导致各个领域的突破。
在本课程中,您将学习大模型的基本概念和原理。我们将深入研究基础理论,发展历史,常用的大模型,以及llm(大语言模型)中的提示和上下文学习等不断发展的技术。随着课程的进展,我们将深入研究大模型的实际应用。您将学习如何部署高度重视的大模型,如 Stable Diffusion和ChatGLM2-6B到SOPHON的最新一代深度学习处理器,SOPHON BM1684X。SOPHON BM1684X是SOPHON专门针对深度学习领域推出的第四代张量处理器,具有32TOPS计算能力,支持32路高清硬件解码,12路高清硬件编码,适用于深度学习、计算机视觉、高性能计算等环境。
无论您是倾向于对大模型或其工业应用进行深入的学术研究,本课程都将为您提供坚实的基础和实践技能。你准备好接受大模型的挑战了吗?让我们一起深入这个迷人的领域吧!