-
libtorch 优化算法性能 从90ms 优化到3ms
为啥选择C++部署AI算法?
- 因为很多算法都是模型比较大,属于计算密集型算法,对服务器或pc机的要求较高.落地使用Python来部署算法肯定没有优势性.
- 目前业界的常用做法也是采用Python来训练模型,使用C++来部署算法,这样做的好处有以下几个方面:1)可以提高算法的计算性能包括CPU使用,内存使用,执行效率等; 2)嵌入式开发必不可少的是C++;
如何优化性能?
算法层面
确定你的模型是否能精简?
- 重新思考你的算法模型是否已经是最简,很多问题是没必要选择很复杂的模型,看看输入的维度能否简化?模型的节点数能否减少?输入的层数能否减少? 减少这些可以简化模型,提升运行效率
- 优化矩阵乘法的性能,例如充分利用硬件平台的高性能数学库mkl和cuDNN
- 优化内存布局,避免冗余的访存操作,尤其是transpose;因为核心利用率低的原因之一很可能是内存访问开销过大,导致计算核心没有充分利用,transpose操作和过多的数据存取操作或者内存布局不合理都可能引起该问题;
- 针对硬件平台进行微架构优化,提升多个核心的并行计算效率;大量零散的python算子势必带来大量的op kernel启动和存储开销,进行算子融合是最有效的解决方法。
C++语法层优化
- 对于C++开发,我感触最深的是尽量少使用赋值,多使用引用和指针,毕竟这是C++独有的.对于提升效率很关键
- 建议减少for循环的使用,特别是多层for循环的嵌套,毕竟循环能增加你的开销;
libto
-
相关阅读:
什么是Transformer架构的自注意力机制?
API接口中大数据在淘宝中的应用【获取商品详情接口,商品价格,SKU数据,订单……】
一键生成insert,update,delete,的mybatis sql 语句
AI语音机器人的重点功能配置之话术
Docker实战:docker compose 搭建Sonar
【量化交易笔记】10.建立最简单的交易策略
【Maven学习】3.6 实验六:测试依赖的范围
SpringCache -- Redis --- 配置与缓存使用--配置过期时间
10.15 校招 实习 内推 面经
【Java】使用stream()串行和并行流,代替for循环一行写完
-
原文地址:https://blog.csdn.net/weixin_32393347/article/details/126858787