昇思+昇腾开发板+DeepSeek模型LoRA微调

昇思+昇腾开发板+DeepSeek模型LoRA微调

LoRA微调原理

  • 核心思想:冻结预训练模型权重,仅训练橙色的低秩适配矩阵(A/B矩阵)

  • 在这里插入图片描述

  • 优势

    • 训练参数量减少至全量微调的0.5%
    • 显存占用降低50%以上
    • 适配器权重仅需保存3MB(原模型5.6GB)

关键配置

config = LoraConfig(
task_type=TaskType.CAUSAL_LM,
target_modules=[“q_proj”, “k_proj”, “v_proj”, “gate_proj”, “up_proj”, “down_proj”],
inference_mode=False,
r=8, # 低秩维度
lora_alpha=32, # 缩放系数
lora_dropout=0.1
)

开启同步

通过mindspore.set_context(pynative_synchronize=True)开启同步,方便在出现问题时进行快速定位。
流程:
环境准备与检查 -> 代码下载 -> 权重下载 -> 其他环境准备 -> 启动运行

代码实现知识点1:

MindSpore在将数据预处理操作应用到数据集时,代码实现会和Hugging Face Transformers有所区别。
MindSpore配合数据处理Pipeline来实现数据预处理,所有的数据变换通过.map(…)方法传入,需要指定作用的数据列。
.map(…) 操作可以针对数据集指定列 (column) 添加数据变换 (Transforms),将数据变换应用于该列数据的每个元素,并返回包含变换后元素的新数据集。
.map(…) 操作可以执行Dataset模块提供的内置数据变换操作,也可以执行用户自定义的变换操作。

代码实现知识点2:

脚本中自定义了SavePeftModelCallback,即每次在save_steps个步数后,将模型当前的LoRA adapter权重保存下来,做到保存微调过程中的权重。
保存后的权重可在指定的保存路径(案例中为“./output/DeepSeek-R1-Distill-Qwen-1.5B/adapter_model”)找到。

经验分享

香橙派AIpro的host侧和device侧共享,所以在host侧的内存占用(如python的多进程,模型加载等)也会影响到显存。

优化方案1

在加载模型时,直接加载fp16的权重,而非加载fp32权重再转成fp16。
加载fp32权重,然后转成fp16会占用大量内存。
直接加载fp16权重可以显著减少内存占用。
DeepSeek-R1-Distill-Qwen-1.5B 模型LoRA微调

优化方案2

如何限制拉起的python进程数,从而控制额外的内存占用,减少对显存的影响。 比较好的解决方案是通过设置如下环境变量,可以把python进程控制在4-6个:

export MAX_COMPILE_CORE_NUMBER=1
export TE_PARALLEL_COMPILER=1

MAX_COMPILE_CORE_NUMBER: 此环境变量用于指定图编译时可用的CPU核数。
TE_PARALLEL_COMPILER: 算子最大并行编译进程数,当大于1时开启并行编译。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.pswp.cn/pingmian/92089.shtml
繁体地址,请注明出处:http://hk.pswp.cn/pingmian/92089.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

计算机网络:详解网络地址的计算步骤

网络地址计算是网络规划与配置的基础,核心是通过IP地址和子网掩码确定网络标识、广播地址、可用主机范围等关键信息。以下是详细的计算步骤,配合实例说明(以IPv4为例): 一、明确基础概念 在计算前,需先明确3个核心概念: IP地址:标识网络中主机的32位二进制数,通常以…

Spring AI 系列之三十五 - Spring AI Alibaba-Graph框架之MCP

之前做个几个大模型的应用,都是使用Python语言,后来有一个项目使用了Java,并使用了Spring AI框架。随着Spring AI不断地完善,最近它发布了1.0正式版,意味着它已经能很好的作为企业级生产环境的使用。对于Java开发者来说…

FastAPI后端工程化项目记录

以下是一个使用fastapi上传视频的接口,记录一下工程化后端程序的业务逻辑 重点是代码如何抽离 项目结构优化 project/ ├── .env # 环境变量配置 ├── app/ │ ├── __init__.py │ ├── main.py # 主应用入口 │ …

令牌桶限流算法

你提供的 Java 代码实现的是令牌桶限流算法(Token Bucket Algorithm),这是目前最常用、最灵活的限流算法之一。它允许一定程度的“突发流量”,同时又能控制平均速率。下面我将:逐行详细解释 TokenBucketLimiter 类的每…

基于springboot的宠物商城设计与实现

管理员:登录,个人中心,用户管埋,宠物分类管理,宠物信息管理,留言反馈,宠物论坛,系统管理,订单管理用户:宠物信息,宠物论坛,公告信息&a…

Python day36

浙大疏锦行 Python day36. 复习日 本周内容: 如何导入模块以及库项目的规范拆分和写法官方文档的阅读MLP神经网络的训练在GPU上训练模型可视化以及推理

【gaussian-splatting】用自己的数据复现高斯泼溅(一)

1.环境准备1.1.下载diff-gaussian-rasterization这里本来没啥说的,直接从github上下载就行了,但是我踩坑了,下的版本不对,后续运行报错参数个数对不上,特在此给大家避坑,注意一定要下带3dgs版本的diff-gaus…

中国移动h10g-01_S905L处理器安卓7.1当贝纯净版线刷机包带root权限_融合终端网关

下载固件之前请先将主板上的屏蔽罩取下,查看处理器型号 是否为S905L型号,然后再下载固件进行刷机; 本页面的固件是采用双公头数据线进行刷机的哈; 安卓4.4.2版本固件下载地址:点此进行下载 安卓7.1版本固件下载地址…

夜天之书 #110 涓滴开源:Cronexpr 的故事

在年初的一篇关于商业开源的博文当中,我介绍了在开发商业软件的过程中,衍生出开源公共软件库的模式。在那篇博文里面,我只是简单罗列了相关开源库的名字及一句话总结。近期,我会结合商业开源实践的最新进展,对其中一些…

完整的登陆学生管理系统(配置数据库)

目录 要求 思路 1. 登录模块(LoginFrame.java) 2. 学生信息管理模块(StudentFrame.java) 3. 数据层(StudentDAO.java) 4. 业务层(StudentService.java / UserService.java) 5…

译 | 在 Python 中从头开始构建 Qwen-3 MoE

文章出自:基于 2个Expert 的 MoE 架构分步指南 本篇适合 MoE 架构初学者。文章亮点在于详细拆解 Qwen 3 MoE 架构,并用简单代码从零实现 MoE 路由器、RMSNorm 等核心组件,便于理解内部原理。 该方法适用于需部署高性能、高效率大模型&#x…

Spring Boot + ShardingSphere 分库分表实战

🚀Spring Boot ShardingSphere 实战:分库分表,性能暴增的终极指南! ✅ 适用场景:千万级大表、高并发、读写分离场景 ✅ 核心框架:Spring Boot 3.x ShardingSphere-JDBC 5.4.1 ✅ 数据库:MySQL…

MaxKB 使用 MCP 连接 Oracle (免安装 cx_Oracle 和 Oracle Instant Client)

一、背景 安装cx_Oracle包和Oracle Instant Client来操作数据库,比较繁琐同时容易冲突,不同的 Oracle 版本都需要安装不同的插件。这篇文章将介绍使用 MCP 协议的连接方法。 二、操作步骤 1、使用 1Panel 安装 DBhub a) 数据库类型选择 Oracle 类型。…

基于Python的超声波OFDM数字通信链路设计与实现

基于Python的超声波OFDM数字通信链路设计与实现 摘要 本文详细介绍了使用Python实现的超声波OFDM(正交频分复用)数字通信链路系统。该系统能够在标准音响设备上运行,利用高于15kHz的超声波频段进行数据传输,采用48kHz采样率。文章涵盖了从OFDM基本原理、…

滑动窗口相关题目

近些年来,我国防沙治沙取得显著成果。某沙漠新种植N棵胡杨(编号1-N),排成一排。一个月后,有M棵胡杨未能成活。现可补种胡杨K棵,请问如何补种(只能补种,不能新种)&#xf…

Java 工具类的“活化石”:Apache Commons 核心用法、性能陷阱与现代替代方案

在上一篇文章中,我们回顾了 Apache Commons 的经典组件。但作为 Java 世界中资历最老、影响最深远的工具库,它的价值远不止于此。许多开发者可能只使用了它 10% 的功能,却忽略了另外 80% 能极大提升代码质量的“隐藏宝石”。本文将提供一个更…

数据结构——图及其C++实现 多源最短路径 FloydWarshall算法

目录 一、前言 二、算法思想 三、代码实现 四、测试 五、源码 一、前言 前两篇学习的Dijkstra算法和Bellman-Ford算法都是用来求解图的单源最短路径,即从图中指定的一个源点出发到图中其他任意顶点的最短路径。Dijkstra算法不能求解带有负权重的图的最短路径&…

解决微软应用商店 (Microsoft store) 打不开,无网络连接的问题!

很多小伙伴都会遇见微软应用商店 (Microsoft store)打开后出现无网络的问题,一般出现这种问题基本都是因为你的电脑安装了某些银行的网银工具,因为网银工具为了安全会关闭Internet 选项中的最新版本的TLS协议,而微软商店又需要最新的TLS协议才…

Android—服务+通知=>前台服务

文章目录1、Android服务1.1、定义1.2、基本用法1.2.1、定义一个服务1.2.2、服务注册1.2.3、启动和停止服务1.2.4、活动和服务进行通信1.3、带绑定的服务示例1.3.1、定义服务类1.3.2、客户端(Activity)绑定与交互​1.3.3、AndroidManifest.xml 注册​1.3.…

从基础功能到自主决策, Agent 开发进阶路怎么走

Agent 开发进阶路线大纲基础功能实现核心模块构建环境感知:传感器数据处理(视觉、语音、文本等输入)基础动作控制:API调用、硬件驱动、简单反馈机制状态管理:有限状态机(FSM)或行为树&#xff0…