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

昇思学习营-【模型推理和性能优化】学习心得_20250730

一、权重的加载

模型包含两部分:
base model 和 LoRA adapter
其中base model的权重在微调时被冻结,
推理时加载原权重即可,LoRA adapter可通过PeftModel.from_pretrained进行加载。

二、启动推理

通过model.generate,启动推理。

三、效果比较

“DeepSeek-R1”,而在加载LoRA adapter之后,回答为“甄嬛”。
在微调多轮后的LoRA权重,在加载LoRA adapter之后,回答为“甄嬛”

在generate_kwargs中添加 repetition_penalty=1.2减少重复文本输出

四、性能测试

凡是在推理过程中涉及采样(do_sample=True)的案例,可以通过配置如下变量,
注释掉之前添加的同步模式代码,再运行代码,即可获取每个token的推理时长和平均时长。
export INFERENCE_TIME_RECORD=True
此时,从终端的运⾏⽇志可以看到,平均推理时间为0.727秒,
可通过禁用多线程将推理速度适当提升为平均单token推理时长0.674秒。

五、性能优化

通过上述禁用多线程的方式,可以适当减少平均单token的推理时长,但效果不明显。
在此基础上,还可以通过jit即时编译的方式进一步加速
jit即时编译通过jit修饰器修饰Python函数或者Python类的成员函数使其被编译成计算图,通过图优化等技术提高运行速度。
jit修饰器应该修饰模型decode的函数,但由于原代码将模型的logits计算、解码等过程整体封装成了一个
model.generate函数,不好进行优化,所以需要手动实现解码逻辑。

六、实操

6.1 访问云上Jupyter

6.1.1 点击“打开Jupyter在线编程”

1.png

6.1.2 选择如下红框中的来运行起来:

2.png

6.1.3 进入后,选择“应用实际”、“昇腾开发板”

3.png

6.1.4 进入后,选择“deepdeek-r1-distill-qwen-1.5b-jit.ipynb**”并运行它

1.png

七、代码的逻辑

7.1 每一步执行推理的时间都打印了出来,较之前有提升

2.png

7.2 运行结果

3.png

http://www.dtcms.com/a/300592.html

相关文章:

  • 【QT入门到晋级】window opencv安装及引入qtcreator(包含两种qt编译器:MSVC和MinGW)
  • 系统整理Python的循环语句和常用方法
  • RabbiteMQ安装-ubuntu
  • XSS利用
  • 适配IE11(通过Babel+core-js转译ES6语法)
  • 神经网络模型训练需要的内存大小计算方法
  • 智能化设备健康管理:中讯烛龙预测性维护系统引领行业变革
  • 数学建模——模糊综合评价
  • 如何在 Ubuntu 24.04 或 22.04 中更改 SSH 端口
  • 一分钟部署一个导航网站
  • QTableView 使用实例(1)
  • Cursor下利用Stagewise实现 “所见即改” 的前端开发体验~
  • Java全栈面试实战:从JVM到AI的技术演进之路
  • 数据结构--优先级队列(堆)
  • 【网络协议安全】任务15:DHCP与FTP服务全配置
  • 点击劫持:潜藏在指尖的安全陷阱
  • Python异步下载实战:asyncio + aiohttp 性能碾压同步请求
  • 算法竞赛阶段二-数据结构(37)数据结构循环链表模拟实现
  • ios UIAppearance 协议
  • CodeBLEU:面向代码合成的多维度自动评估指标——原理、演进与开源实践
  • 笔记本键盘的启用和禁用
  • Python Pandas.cut函数解析与实战教程
  • ASP.NET Core 高并发万字攻防战:架构设计、性能优化与生产实践
  • 「mysql」Mac osx彻底删除mysql
  • 21.OSPF路由协议·多区域
  • 通过v4l2,采集视频,FFmpeg编码压缩封装视频(三)
  • 【模电笔记】—— 波形发生电路(波形振荡器)
  • Keil MDK 嵌入式开发问题:Error: L6218E: Undefined symbol HAL_TIM_PWM_ConfigChannel
  • C++编程入门:从基础到复合类型
  • 逆向入门(43)程序逆向篇-tsrh-crackme