4 Python机器学习性能优化Python机器学习性能优化 以BERT服务为例例,从1到1000 刘欣 ⽬目录 CONTENTS 1. 优化的哲学 2. 了解你的资源 3. 定位性能瓶颈 4. 动⼿优化 1. 优化的哲学 "There ain't no such thing as a free lunch" Ahmdal’s Law • 系统整体的优化,取决于热点部分的占⽐比和该部分的加速程度 No Free Free Lunch • 定位热点 & 热点加速 • 对于项⽬目开发周期: 1. 先做出效果 2. 确定整体pipeline 3. 再考虑优化 • 对于⼈人⼯工智能项⽬目:迭代周期更更⻓长,更更是如此 以BERT服务为例 • BERT: TODO: ⼀一句句话解释 • 横扫多项NLP任务的SOTA榜 • 惊⼈人的3亿参数 以BERT服务为例 • Self Attention机制 's=Happy birthday to [MASK].' [“you"] 以BERT服务为例 • 我们现在上线了了这样⼀一个服务,每秒钟只能处理理10个请求 • Q: ⼤大家⼀一开始如何着⼿手优化 • Profile before Optimizing • 建⽴立闭环 2 了解你的资源 cpu/内存/io/gpu GPU为什么“快”? 计算⼒对⽐ • GFLOPS/s0 码力 | 38 页 | 2.25 MB | 1 年前3
PyConChina2022-杭州-ARM芯片的Python+AI算力优化-朱宏林ARM 芯片的 Python + AI 算力优化 主讲人: 朱宏林 – 阿里云程序语言与编译器团队 简介 • 当今开发者们大量使用 Python 语言编写的 AI 程序。过去这些程序总跑在 GPU 或者 x86 架构的 CPU 上。然而综合考虑到功耗、成本、性能等因素,云厂商们开始建设 ARM 架构的服务平台,如 何整合 Python + AI 的相关软件并使其在该平台上发挥最高的性能成为了工程师们关注的焦点。 用 ARM 架构新提供的矩阵扩展对 bf16 类型的 矩阵乘法计算进行优化,该优化将纯矩阵乘法的运算速度提升 3 倍以上,对深度学习推理任务性能 提升明显。目前,该成果已经被集成进 OpenBLAS 和 PyTorch 中。 • 本次演讲,将向大家介绍我们在倚天 710 ARM 芯片上开展的 Python + AI 优化工作,以及在 ARM 云平台上部署 Python + AI 任务的最佳实践。 • GEMM 通过优化内存局部性和向量指令,比朴素实现快 10 倍以上 GEMM • 优化 GEMM • 内存布局:矩阵分块;重排 • 向量化指令:AVX、NEON V0 V1 ✕ ✕ ✕ ✕ V2 GEMM 例子 • 优化 GEMM • 内存布局:矩阵分块;重排 • 向量化指令:AVX、NEON 原始算法 展开4x1 向量化 GEMM 例子 • 优化 GEMM • 内存布局:矩阵分块;重排0 码力 | 24 页 | 4.00 MB | 1 年前3
Python 标准库参考指南 3.13 . . . . . . . . . . . . . . . . . . . . . . . . . . . 407 11 文件和目录访问 411 11.1 pathlib --- 面向对象的文件系统路径 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 411 11.1.1 基础使用 . . . . . . . . . 资源的受限访问权。任 何使用了进程、线程、网络、信号或其他形式的进程间通信 (IPC) 的 Python 标准库模块都或者不可用, 或者其作用方式与在其他类 Unix 系统上不同。文件 I/O, 文件系统和 Unix 权限相关的函数也同样会受限。 Emscripten 不允许阻塞式 I/O。其他阻塞式操作如sleep() 则会阻塞浏览器的事件循环。 Python 在 WebAssembly 平台上的特性与行为依赖于 实例的compiler_flag 属性 中找到。编译器旗标 可以在ast 模块中查找带有 PyCF_ 前缀的名称。 optimize 实参指定编译器的优化级别;默认值 -1 选择与解释器的 -O 选项相同的优化级别。显式级 别为 0 (没有优化;__debug__ 为真)、1 (断言被删除,__debug__ 为假)或 2 (文档字符串也 被删除)。 如果编译的源码不合法,此函数会触发SyntaxError0 码力 | 2246 页 | 11.74 MB | 9 月前3
Python 标准库参考指南 3.13 . . . . . . . . . . . . . . . . . . . . . . . . . . . 403 11 文件和目录访问 407 11.1 pathlib --- 面向对象的文件系统路径 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 407 11.1.1 基础使用 . . . . . . . . . 资源的受限访问权。任 何使用了进程、线程、网络、信号或其他形式的进程间通信 (IPC) 的 Python 标准库模块都或者不可用, 或者其作用方式与在其他类 Unix 系统上不同。文件 I/O, 文件系统和 Unix 权限相关的函数也同样会受限。 Emscripten 不允许阻塞式 I/O。其他阻塞式操作如sleep() 则会阻塞浏览器的事件循环。 Python 在 WebAssembly 平台上的特性与行为依赖于 实例的compiler_flag 属性 中找到。编译器旗标 可以在ast 模块中查找带有 PyCF_ 前缀的名称。 optimize 实参指定编译器的优化级别;默认值 -1 选择与解释器的 -O 选项相同的优化级别。显式级 别为 0 (没有优化;__debug__ 为真)、1 (断言被删除,__debug__ 为假)或 2 (文档字符串也 被删除)。 如果编译的源码不合法,此函数会触发SyntaxError0 码力 | 2242 页 | 11.73 MB | 9 月前3
Python 标准库参考指南 3.12 . . . . . . . . . . . . . . . . . . . . . . . . . . . 395 11 文件和目录访问 397 11.1 pathlib --- 面向对象的文件系统路径 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 397 11.1.1 基础使用 . . . . . . . . . 资源的受限访问权。任 何使用了进程、线程、网络、信号或其他形式的进程间通信 (IPC) 的 Python 标准库模块都或者不可用, 或者其作用方式与在其他类 Unix 系统上不同。文件 I/O, 文件系统和 Unix 权限相关的函数也同样会受限。 Emscripten 不允许阻塞式 I/O。其他阻塞式操作如sleep() 则会阻塞浏览器的事件循环。 Python 在 WebAssembly 平台上的特性与行为依赖于 实例的compiler_flag 属性 中找到。编译器旗标 可以在ast 模块中查找带有 PyCF_ 前缀的名称。 optimize 实参指定编译器的优化级别;默认值 -1 选择与解释器的 -O 选项相同的优化级别。显式级 别为 0 (没有优化;__debug__ 为真)、1 (断言被删除,__debug__ 为假)或 2 (文档字符串也 被删除)。 如果编译的源码不合法,此函数会触发SyntaxError0 码力 | 2253 页 | 11.81 MB | 9 月前3
Python 标准库参考指南 3.12 . . . . . . . . . . . . . . . . . . . . . . . . . . . 395 11 文件和目录访问 397 11.1 pathlib --- 面向对象的文件系统路径 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 397 11.1.1 基础使用 . . . . . . . . . 资源的受限访问权。任 何使用了进程、线程、网络、信号或其他形式的进程间通信 (IPC) 的 Python 标准库模块都或者不可用, 或者其作用方式与在其他类 Unix 系统上不同。文件 I/O, 文件系统和 Unix 权限相关的函数也同样会受限。 Emscripten 不允许阻塞式 I/O。其他阻塞式操作如sleep() 则会阻塞浏览器的事件循环。 Python 在 WebAssembly 平台上的特性与行为依赖于 实例的compiler_flag 属性 中找到。编译器旗标 可以在ast 模块中查找带有 PyCF_ 前缀的名称。 optimize 实参指定编译器的优化级别;默认值 -1 选择与解释器的 -O 选项相同的优化级别。显式级 别为 0 (没有优化;__debug__ 为真)、1 (断言被删除,__debug__ 为假)或 2 (文档字符串也 被删除)。 如果编译的源码不合法,此函数会触发SyntaxError0 码力 | 2253 页 | 11.81 MB | 9 月前3
Python 标准库参考指南 3.10.15 . . . . . . . . . . . . . . . . . . . . . . . . . . . 397 11 文件和目录访问 399 11.1 pathlib --- 面向对象的文件系统路径 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 399 11.1.1 基础使用 . . . . . . . . 实例的 compiler_flag 属性中 找到。编译器旗标 可以在ast 模块中查找带有 PyCF_ 前缀的名称。 optimize 实参指定编译器的优化级别;默认值 -1 选择与解释器的 -O 选项相同的优化级别。显式级别为 0(没有优化;__debug__ 为真)、1(断言被删除,__debug__ 为假)或 2(文档字符串也被删除)。 如果编译的源码不合法,此函数会触发SyntaxError perror() 来格式化,在 Windows 中则是由 FormatMessage()。 filename filename2 对于与文件系统路径有关 (例如open() 或os.unlink()) 的异常,filename 是传给函数的文 件名。对于涉及两个文件系统路径的函数 (例如os.rename()),filename2 将是传给函数的第 二个文件名。 在 3.3 版更改: EnvironmentError0 码力 | 2207 页 | 10.45 MB | 9 月前3
Python 标准库参考指南 3.10.15 . . . . . . . . . . . . . . . . . . . . . . . . . . . 371 11 文件和目录访问 373 11.1 pathlib --- 面向对象的文件系统路径 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 373 11.1.1 基础使用 . . . . . . . . . . 实例的 compiler_flag 属性中找到。编译器旗标 可以在ast 模块中查找带有 PyCF_ 前缀的名称。 optimize 实参指定编译器的优化级别;默认值 -1 选择与解释器的 -O 选项相同的优化级别。显式级 别为 0 (没有优化;__debug__ 为真)、1 (断言被删除,__debug__ 为假)或 2 (文档字符串 也被删除)。 如果编译的源码不合法,此函数会触发SyntaxError perror() 来格式化,在 Windows 中则是由 FormatMessage()。 filename filename2 对于与文件系统路径有关 (例如open() 或os.unlink()) 的异常,filename 是传给函数的 文件名。对于涉及两个文件系统路径的函数 (例如os.rename()),filename2 将是传给函 数的第二个文件名。 在 3.3 版更改: EnvironmentError0 码力 | 2072 页 | 10.39 MB | 9 月前3
Python 标准库参考指南 3.9.20 . . . . . . . . . . . . . . . . . . . . . . . . . . . 384 11 文件和目录访问 387 11.1 pathlib --- 面向对象的文件系统路径 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 387 v 11.1.1 基础使用 . . . . . . 实例的 compiler_flag 属性中 找到。编译器旗标 可以在ast 模块中查找带有 PyCF_ 前缀的名称。 optimize 实参指定编译器的优化级别;默认值 -1 选择与解释器的 -O 选项相同的优化级别。显式级别为 0(没有优化;__debug__ 为真)、1(断言被删除,__debug__ 为假)或 2(文档字符串也被删除)。 如果编译的源码不合法,此函数会触发SyntaxError perror() 来格式化,在 Windows 中则是由 FormatMessage()。 filename filename2 对于与文件系统路径有关 (例如open() 或os.unlink()) 的异常,filename 是传给函数的文 件名。对于涉及两个文件系统路径的函数 (例如os.rename()),filename2 将是传给函数的第 二个文件名。 在 3.3 版更改: EnvironmentError0 码力 | 2146 页 | 10.17 MB | 9 月前3
Python 标准库参考指南 3.9.20 . . . . . . . . . . . . . . . . . . . . . . . . . . . 360 11 文件和目录访问 363 11.1 pathlib --- 面向对象的文件系统路径 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 363 11.1.1 基础使用 . . . . . . . . . . 模块中查找带有 PyCF_ 前缀的名称。 7 The Python Library Reference, 发布 3.9.20 optimize 实参指定编译器的优化级别;默认值 -1 选择与解释器的 -O 选项相同的优化级别。显式级 别为 0 (没有优化;__debug__ 为真)、1 (断言被删除,__debug__ 为假)或 2 (文档字符串 也被删除)。 如果编译的源码不合法,此函数会触发SyntaxError perror() 来格式化,在 Windows 中则是由 FormatMessage()。 filename filename2 对于与文件系统路径有关 (例如open() 或os.unlink()) 的异常,filename 是传给函数的 文件名。对于涉及两个文件系统路径的函数 (例如os.rename()),filename2 将是传给函 数的第二个文件名。 在 3.3 版更改: EnvironmentError0 码力 | 2015 页 | 10.12 MB | 9 月前3
共 91 条
- 1
- 2
- 3
- 4
- 5
- 6
- 10













