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 Flask Production Server • gunicorn 多进程解决多核利利⽤用率问题 • gevent 协程替代多线程⽹网络模型 • 更更⾼高效的序列列化lib 3 定位性能瓶颈 Profile before Optimizing Python Profilers • time.time() • cProfile • line profiler • pyflame 放个截图 cProfile • 倒序打印 & graph pyflame • 插桩 or 采样 • 放个flamegraph • 开源地址 wrk • 制造压⼒力力 • 挖掘整体性能瓶颈 • 实现⾮非常精妙的压⼒力力⼯工具,强烈烈安利利(要不不要写个py binding) 4 动⼿优化 多线程服务器的问题 • 每个请求单独进GPU,利利⽤用率不不⾼高 • ⼤大量量请求并⾏行行,CUDA会爆0 码力 | 38 页 | 2.25 MB | 1 年前3
3 Thautwarm 解放python的表达力 性能和安全性 语法和语义扩展 JIT 静态检查解放Python的 表达力,性能和安全性 Thautwarm 目录 CONTENTS 语法和语义扩展 JIT 静态类型 语法和语义扩展 表达力的扩展, 可用性的保留,白来的午餐? 演示一小部分: 模式匹配, Quick Lambda, Pipe运算 语言决定思维模型 GNU-APL C++ Haskell 说 到 质 数 � 人 们 想 到 什 么 � 语言决定思维模型 检查类型的pattern (a, *b, c): 匹配tuple [a, *b, c]: 匹配列表 演示 Pattern-Matching 基于template-python扩展实现。 性能比Pampy高数量级倍。 简单直接的自定义pattern,真实的tree pattern matching。 Match的每个分支是语句而不是表达力有限的表达式。 … benchmark.py 而基本上编译器0优化的Cython端, 你模拟栈后, 还远不如Python解释器快, 所以必须写分析去掉栈机语义。 那用Julia后端就可以不写了? 来谈后端的问题。 Julia Cython 常见性能提升 100x 1-10x 小函数JIT 比Python慢1000倍 比Python快50% 启动时间 10s以上, “JAOT” 没有,调编译器快 循环折叠 有 有 Debug现场? 每次打log等待30s0 码力 | 43 页 | 10.71 MB | 1 年前3
1_丁来强_开源AIOps数据中台搭建与Python的作用数据采集、数据中台、智能算法、⾃自动化等 AIOps系统(常规层次) AIOps系统架构 • 场景应⽤用 • 智能监测系统 • ⾃自动化系统 • ⼯工单知识库 • 数据湖 • 监控⽣生态系统 • 数据源 数据的摄取挑战 • 各种来源: • SaaS、多云、容器器、微服务、主机、应⽤用等 • 各种数据样式: • Log、Tracking、Event;Metrics、IoT 用 • ⽇日志类数据⽅方案 • 指标类时序数据⽅方案 • 其他OLAP选择 • AI增强⽅方案 数据源与监控 - 容器器化架构为例例 物理理主机/VM层监控 容器器POD指标监控 容器器CaaS层资源监控 应⽤用层性能监控 应⽤用层 ⽇日志 指标监控 prometheus + grafana + thanos elastic stack, TICK stack, Open Open Telemetry Zabbix, statsd, collectd Nagios, fluentd ⼏几个监控⽅方案作为中台的能⼒力力⽐比较 ⽅方案⽐比较 Prometheus Stack Elastic Stask TICK Stack 摄取 存储 指标 ⽀支持 ⽀支持(效率⼀一般) ⽀支持 ⽇日志 初级 较好 ⽆无 ⽂文本 ⽆无 全⾯面 ⽆无 分析 流式 ⽆无 不不⽀支持0 码力 | 48 页 | 17.54 MB | 1 年前3
Python3 基础教程 - 廖雪峰http://www.yeayee.com/ 8/531 总的来说,这几种编程语言各有千秋。C 语言是可以用来编写操作系统 的贴近硬件的语言,所以,C 语言适合开发那些追求运行速度、充分发 挥硬件性能的程序。而 Python 是用来编写应用程序的高级编程语言。 当你用一种语言开始作真正的软件开发时,你除了编写代码外,还需要 很多基本的已经写好的现成的东西,来帮助你加快开发进度。比如说, 你说“来个汉堡”,服务员告诉你,汉堡需要等 5 分钟,你可以先去逛商 场,等做好了,我们再通知你,这样你可以立刻去干别的事情(逛商场), 这是异步 IO。 很明显,使用异步 IO 来编写程序性能会远远高于同步 IO,但是异步 IO 的缺点是编程模型复杂。想想看,你得知道什么时候通知你“汉堡做好 了”,而通知你的方法也各不相同。如果是服务员跑过来找到你,这是 回调模式,如果服务员发短信通知你,你就得不停地检查手机,这是轮 打开 Mac OS X 的 Activity Monitor,或者 Windows 的 Task Manager,都 可以监控某个进程的 CPU 使用率。 我们可以监控到一个死循环线程会 100%占用一个 CPU。 如果有两个死循环线程,在多核 CPU 中,可以监控到会占用 200%的 CPU,也就是占用两个 CPU 核心。 要想把 N 核 CPU 的核心全部跑满,就必须启动 N 个死循环线程。0 码力 | 531 页 | 5.15 MB | 1 年前3
Build Python App with Serverless 费良宏 Architect Evangelist @ (2004-2011) … Serverless 为何而生 ? 为什么需要“无服务器”? 服务部署及利用率 可用性及容错度 监控、调度 运行及管理 什么是“Serverless”? 无需管理基础设施 自动扩展 按价值付费 高可用以及安全 “无服务”是一种新的模型,它跨越许多不同类别的服务 AWS Lambda 使用此参数向处 理程序提供运行时信息 Serverless 的局限与不足 • 有限的生命周期 …… 不支持 “Long Run” 的任务 • 性能 …… “冷启动” 带来的响应延迟 • 资源限制 …… 并发、I/O、内存、程序包大小等等 • 监控与调试 …… 需要新的IDE、APM、DevOps、分析器等工具 • 缺少特定的硬件支持 ……只有通用的计算环境,缺如GPU、FPGA等支持 •0 码力 | 35 页 | 7.81 MB | 1 年前3
Python 标准库参考指南 3.13 bisect --- 数组二分算法 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 263 8.7.1 性能说明 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 264 8.7.2 搜索有序列表 8 限制全局变量 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 484 12.1.9 性能 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 485 12.1 4 类的层次结构 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 682 16.2.5 性能 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 691 16.30 码力 | 2246 页 | 11.74 MB | 9 月前3
Python 标准库参考指南 3.13 bisect --- 数组二分算法 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 261 8.7.1 性能说明 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 262 8.7.2 搜索有序列表 8 限制全局变量 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 480 12.1.9 性能 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 481 12.1 4 类的层次结构 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 678 16.2.5 性能 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 687 16.30 码力 | 2242 页 | 11.73 MB | 9 月前3
Python 标准库参考指南 3.12 bisect --- 数组二分算法 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 256 8.7.1 性能说明 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 257 8.7.2 搜索有序列表 8 限制全局变量 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 466 12.1.9 性能 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 467 12.1 4 类的层次结构 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 654 16.2.5 性能 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 663 16.30 码力 | 2253 页 | 11.81 MB | 9 月前3
Python 标准库参考指南 3.12 bisect --- 数组二分算法 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 256 8.7.1 性能说明 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 257 8.7.2 搜索有序列表 8 限制全局变量 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 466 12.1.9 性能 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 467 12.1 4 类的层次结构 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 654 16.2.5 性能 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 663 16.30 码力 | 2253 页 | 11.81 MB | 9 月前3
Hello 算法 1.0.0b1 Python版具有可行性,可在有限步骤、有限时间、有限内存空间下完成。 ‧ 独立于编程语言,即可用多种语言实现。 1.2.2. 数据结构定义 「数据结构 Data Structure」是在计算机中组织与存储数据的方式。为了提高数据存储和操作性能,数据结构 的设计原则有: ‧ 空间占用尽可能小,节省计算机内存。 ‧ 数据操作尽量快,包括数据访问、添加、删除、更新等。 1. 引言 hello‑algo.com 10 ‧ 提供简洁的数据表示和逻辑信息,以便算法高效运行。 ,都能够解决同一问题,现在需要对比两个算法之间的效率。我们能够想到 的最直接的方式,就是找一台计算机,把两个算法都完整跑一遍,并监控记录运行时间和内存占用情况。这种 评估方式能够反映真实情况,但是也存在很大的硬伤。 难以排除测试环境的干扰因素。硬件配置会影响到算法的性能表现。例如,在某台计算机中,算法 A 比算法 B 运行时间更短;但换到另一台配置不同的计算机中,可能会得到相反的测试结果。这意味着我们需要在各种机 少空间,而是给出一种“趋势性 分析”; 复杂度分析克服了实际测试方法的弊端。一是独立于测试环境,分析结果适用于所有运行平台。二是可以体现 不同数据量下的算法效率,尤其是可以反映大数据量下的算法性能。 如果感觉对复杂度分析的概念一知半解,无需担心,后续章节会展开介绍。 2.1.3. 复杂度分析重要性 复杂度分析给出一把评价算法效率的“标尺”,告诉我们执行某个算法需要多少时间和空间资源,也让我们可0 码力 | 178 页 | 14.67 MB | 1 年前3
共 141 条
- 1
- 2
- 3
- 4
- 5
- 6
- 15













