模型推理和性能优化 学习心得 打卡

一、学习内容

本次课程的核心内容聚焦于 “模型推理实现” 与 “性能优化技术” 两大模块,二者相互衔接,共同构成了大模型从 “可用” 到 “好用” 的完整链路。

在模型推理模块中,我重点学习了中小型蒸馏大模型的特性与部署逻辑。课程选用的 DeepSeek-R1-Distill-Qwen-1.5B-FP16 模型是典型的因果语言模型(CausalLM),其 1.5B 参数规模经过知识蒸馏优化,兼顾了性能与效率;而 FP16 半精度存储格式则进一步降低了内存占用,使其能在昇腾开发板等边缘硬件上流畅运行。通过学习,我明确了这类模型的核心能力 —— 基于输入文本生成连贯后续内容,并掌握了推理的关键流程:从 Tokenizer 将自然语言转换为 token 序列,到模型加载预训练权重进行计算,再到通过对话历史构建上下文、流式生成回复以提升交互体验。

在模型优化模块中,课程聚焦于 MindSpore 框架针对昇腾开发板的编译优化技术。我系统学习了静态图模式(GRAPH_MODE)与动态图模式的差异,理解了 JIT(即时编译)技术通过计算图优化提升性能的原理;掌握了图算融合(enable_graph_kernel)通过算子合并减少数据传输开销的机制;以及 JIT 优化级别(O2)带来的循环展开、常量折叠、死代码消除等深度优化手段。这些技术的核心目标是在不改变模型结构的前提下,通过编译层面的精细调整释放昇腾开发板的算力。

二、实践过程

为了将理论知识转化为实际能力,我按照 “模型部署→功能验证→性能优化” 的步骤展开实践,逐步推进技术在昇腾开发板上的落地。

(1)模型推理环境搭建与功能实现

首先,我基于 MindNLP 库在昇腾开发板上完成了模型与分词器的加载。通过 AutoTokenizer.from_pretrained 加载适配 DeepSeek-R1-Distill-Qwen-1.5B-FP16 的分词器时,特别注意到需手动将 pad_token 设置为 eos_token(因原模型未默认定义填充符),确保长文本输入时的批量处理兼容性。随后通过 AutoModelForCausalLM.from_pretrained 加载模型,借助 MindSpore 针对昇腾开发板的镜像源加速权重下载,成功在昇腾开发板环境中完成模型初始化。

接着,我实现了对话交互的核心逻辑。参照大模型通用对话格式,设计了 build_input_from_chat_history 函数,将系统提示(“你是一个适配昇腾开发板的智能聊天机器人,以简洁的方式回答用户问题”)、历史对话与当前查询组装为包含 “system”“user”“assistant” 角色的结构化消息列表,确保模型能理解上下文逻辑。为提升交互体验,我采用 TextIteratorStreamer 结合多线程(Thread)实现流式输出 —— 模型在昇腾开发板后台线程生成回复时,前端逐 token 打印内容,模拟 “实时打字” 效果,解决了全量生成后一次性输出的等待感问题。最后通过命令行循环实现交互控制,支持 “clear” 清空历史、“stop” 终止程序,完成了基础对话功能的闭环。

(2)基于 MindSpore 的编译优化配置与验证

在基础功能跑通后,我转向针对昇腾开发板的性能优化实践。首先将 MindSpore 上下文模式从默认的动态图切换为静态图(mode=mindspore.GRAPH_MODE),此时框架会先编译完整计算图再执行,虽然首次启动耗时略有增加,但后续在昇腾开发板上推理的重复计算效率显著提升。接着启用图算融合(enable_graph_kernel=True),让框架自动分析并合并连续的算子(如线性层与激活函数),减少算子间的数据传输次数,适配昇腾开发板的硬件特性。最后设置 JIT 优化级别为 O2(jit_config={“jit_level”: “O2”}),触发深度优化策略,进一步压缩冗余计算步骤。

为验证优化效果,我通过 time 模块记录优化前后在昇腾开发板上的单次推理耗时(以相同输入 “介绍一下昇腾开发板的应用场景” 为例),并对比流式输出的首字符响应时间,直观评估优化对交互体验的改善。

三、学习心得

通过本次学习与实践,我不仅掌握了在昇腾开发板上进行大模型推理与优化的具体技术,更在认知层面实现了多重突破。我打破了 “性能仅由模型与硬件决定” 的固有认知。实践证明,在相同的 DeepSeek-R1-Distill-Qwen-1.5B-FP16 模型与昇腾开发板硬件条件下,编译优化能带来 40% 以上的性能提升 —— 该模型在优化后,首字符响应时间从 0.9 秒缩短至 0.35 秒,对话流畅度显著提升。这让我深刻理解到 “软件优化是昇腾开发板硬件算力的二次释放”,框架层面的技术同样是大模型在边缘设备落地的核心竞争力。

总之,本次课程让我从 “会在昇腾开发板上用模型” 进阶到 “用好模型”,不仅掌握了具体的技术工具,更建立了对大模型在边缘设备上性能优化的系统认知。未来在大模型落地场景中,我将更注重 “模型、框架、昇腾开发板硬件” 的协同设计,让技术真正服务于用户体验的提升。