美文网首页
昇思学习营-模型开发与适配学习心得

昇思学习营-模型开发与适配学习心得

作者: iOSDevLog | 来源:发表于2025-08-06 22:42 被阅读0次

学习心得:DeepSeek-R1-Distill-Qwen-1.5B 在香橙派上的「模型开发与适配」

经过对「昇思 MindSpore + 香橙派 AIpro」环境中 DeepSeek-R1-Distill-Qwen-1.5B 的完整适配流程实践,我把收获总结为“一条主线、三类痛点、五项技巧”,既方便自己回顾,也供后续同学快速避坑。


一、一条主线:让 1.5B 蒸馏模型在 20 TOPS 边缘板“跑起来、跑得稳”

阶段 关键动作 交付物
环境准备 镜像烧录 → CANN/MindSpore 版本对齐 → 设置 swap & 环境变量 可重复的环境 CheckList
网络调试 pytest 逐条 UTs → 打开 pynative_synchronize=True → 报错精准定位 问题-代码行映射表
算子/接口修复 缺失算子 ACLOP 替换、Loss 函数 one-hot 化、Tensor 切片类型修正 最小可运行 patch 集
性能初验 FP16 权重直接加载、限制 python 进程数、cgroup 内存隔离 首 token 延迟 < 2 s

二、三类真实痛点与解决方案

痛点 现象 根因 解决方案 一句话口诀
算子缺失 RuntimeError: aclnnXXXGetWorkspaceSize failed 动态图默认走 aclnn,部分算子昇腾未实现 回退到 aclop:ops.cumsum 代替 Tensor.cumsum “aclop 是备胎,缺啥就换啥”
Loss 报错 TypeError: logits and labels dtype mismatch CrossEntropyLoss 期望 one-hot,而输入是 int64 SoftmaxCrossEntropyWithLogits + one_hot + loss.mean() “标签先 one-hot,再和 logits 成双对”
显存 OOM 加载模型即 OOM,或训练时莫名 killed 默认 fp32 加载后再转 fp16;python 多进程抢占 ① 直接加载 fp16 权重 ② MAX_COMPILE_CORE_NUMBER=1 限制编译线程 ③ cgroup 限制 4 GB “fp32 是显存杀手,cgroup 是守门员”

三、五项可复制的实战技巧

  1. 环境固化脚本
    export ASCEND_HOME=/usr/local/Ascendexport LD_LIBRARY_PATH=... 等变量写成 set_env.sh,每次登录 source 一次,杜绝“今天能用、明天报错”。

  2. pytest 快速回归
    在模型仓库根目录跑

    export RUN_SLOW=True
    pytest -xvs tests/test_modeling_qwen2.py::TestQwen2::test_generation
    

    一旦通过,说明主干功能已可用;后续改代码先跑单测,再跑整网。

  3. 同步模式定位 Bug
    动态图异步导致栈信息错位,首行报错往往不准。在 import mindspore 后加

    mindspore.set_context(pynative_synchronize=True)
    

    可将报错行精确到脚本级,节省 80 % 调试时间。

  4. 权重加载“三不要”

    • 不要先 torch.float32.half() —— 内存峰值翻倍;
    • 不要全量保存 safetensors —— LoRA 微调只存 adapter(< 50 MB);
    • 不要把 pad_token 设成 eos_token —— 会导致 attention_mask 推断失败。
  5. 内存 cgroup 一键脚本
    把官方提示的 cgcreate & cgset 写成 mem_limit.sh,内容:

    sudo cgcreate -g memory:ms_limit
    sudo cgset -r memory.limit_in_bytes=4G ms_limit
    sudo cgclassify -g memory:ms_limit $$
    

    每次开新终端 bash mem_limit.sh,NPU 显存瞬间多出 2-4 GB。


四、个人反思

  1. 从“能跑”到“跑得优雅”:仅让模型跑通只解决了 20 % 问题,后续还需关注首 token 延迟、长文本重复、PD 分离部署等工程细节。
  2. 文档-代码双轮驱动:昇腾/MindSpore 文档迭代极快,保持“看最新版 + 查 issue + 读源码”的三级检索习惯,才能第一时间拿到正确姿势。
  3. 把补丁反哺社区:本次改动的 modeling_qwen2.py 三个 PR 均已提交 mindnlp 仓库,真正体会“开源不是索取,而是共建”。

五、下一步计划

  • 尝试把 7B 蒸馏模型在 20 TOPS 上跑通,挑战边缘端极限。
  • 用 MindSpore Lite + MindRT 把推理服务封装成 gRPC 微服务,部署到产线工控机。
  • 参加 2025 昇腾 AI 创新大赛,把“香橙派+DeepSeek”做成可复制的行业解决方案模板。

一句话总结:
“在昇腾边缘端做大模型,没有魔法,只有版本、算子、内存三板斧;斧头磨利了,1.5B 也能玩出 GPT 的感觉。”

相关文章

  • 一个模型,帮你找到真正热爱的工作

    这个模型被称作冰山模型,是美国著名心理学家麦克利兰提出来的。 先说说我的学习心得。 冰山模型:学习心得 我们每个人...

  • iPhone X屏幕适配

    iPhone X开发设计屏幕适配。iPhone X(10)屏幕分辨率与适配,iOS开发适配与UI设计问题。 htt...

  • Python3 Web开发框架-Django学习笔记(二)创建应

    python web开发学习心得,原创文章,转载请注明出处 1.创建应用程序 2.定义模型,创建一个名为Topic...

  • 动手学深度学习-Task01

    任务名称 线性回归;Softmax与分类模型、多层感知机 学习心得 1、对pytorch神经网络的基本搭建进行了复...

  • 10.machine_learning_model_ensemb

    机器学习集成学习与boosting模型 机器学习中的集成学习 顾名思义,集成学习(ensemble learnin...

  • 5号-绊倒大象的蚂蚁-14day作业#裂变增长实验室#

    14天被动引流训练营学习心得:学习心得: 通过这次的学习了解到了什么是被动引流,怎么引流以及整套被动引流的套路设计...

  • 云社交训练营|01期

    【转换能量训练营】学习心得开营日期:4.5-9 DAY1:【用能量与价值,重启社交认知】 这个时代的社交,已不再是...

  • (一)测试流程与理论

    1.软件开发流程与项目管理 软件开发流程的演变 传统瀑布模型->敏捷开发模型->DevOps开发模型 瀑布模型 瀑...

  • 2018年个人小结

    学习 1、暑期期间与台湾资深专家面对面交流学习心得,获益良多。2、学习Mac平台的 App开发。3、从2014开始...

  • 情绪背后

    情绪的背后 N师学院第六期 第七次课程学习心得 《与自己对话》如何运用教练GROW流程与孩子对话 Grow模型经典...

网友评论

      本文标题:昇思学习营-模型开发与适配学习心得

      本文链接:https://www.haomeiwen.com/subject/gftsojtx.html