微调大模型:提高其代码修复能力的尝试

news2025/1/12 21:07:29

目录

一、作品背景:

二、作品目标:

三、作品技术方案:

(1)标记化

(2)量化

(3) LoRA(低秩自适应)配置

(4)训练配置

(6)模型保存

四、作品效果:


一、作品背景:

随着大型模型技术的日益成熟,涌现出CodeLlama、CodeGeex等代码生成能力较强的模型,催生了一批基于大模型的代码辅助工具,逐步改变软件开发模式。随着技术发展最终会带来软件开发领域的变革。

二、作品目标:

本团队作品旨在提高大模型的代码修复能力,我们团队探索了如何进一步优化代码大模型训练方法,提升大模型在软件开发相关场景上的代码生成能力,探索更多的应用场景。本次作品针对三个典型应用场景:代码优化、代码补全、代码问答,针对CodeLlama-7B模型进行代码能力提升,形成相关技术方案,包含代码数据分析、代码数据质量评估、模型优化、优化效果等内容。提供代码源文件、训练数据等完备的项目材料,可进行效果复现。

三、作品技术方案:

微调是采用预训练模型并对其进行调整以执行特定任务或解决特定问题的过程。在这个作品中,我们的制定大模型微调方案涉及以下几个关键步骤:

(1)标记化

我们使用AutoTokenizerHugging Face Transformers 库中的标记来标记基础模型。此步骤通过将文本数据转换为合适的格式,为特定任务的训练准备模型。

(2)量化

使用自定义配置将量化应用于基础模型。此过程可优化模型以实现高效执行,同时最大限度地减少内存使用量。我们采用以下量化参数:

·load_in_4bit:激活 4 位精度以加载基本模型。

·bnb_4bit_use_double_quant:使用双量化实现 4 位精度。

·bnb_4bit_quant_type:指定量化类型为“nf4”(嵌套浮点4位)。

·bnb_4bit_compute_dtype:将计算数据类型设置为torch.bfloat16。

(3) LoRA(低秩自适应)配置

LoRA(低秩自适应)是一种微调深度学习模型的新技术,其工作原理是减少可训练参数的数量。LoRA 的关键参数包括:

·lora_r:LoRA注意力维度设置为8。

·lora_alpha:LoRA 缩放的 Alpha 参数设置为 16。

·lora_dropout:LoRA 层的 Dropout 概率设置为 0.05。

(4)训练配置

我们配置了各种训练参数,包括批量大小、学习率和梯度累积步骤。一些关键的训练参数包括:

·用于训练和评估的每个 GPU 的批次大小

·梯度积累步骤

·最大梯度范数(梯度剪裁)

·初始学习率(AdamW 优化器)

·权重衰减

·优化器类型(例如 paged_adamw_8bit)

·学习率计划(例如余弦)

(5)监督微调(SFT)

我们采用监督微调 (SFT) 方法来训练模型完成特定任务。这涉及提供与 LLM 应该相对应的任务相关的标记数据集。

(6)模型保存

训练完成后,训练效果最好的那个模型会被保存以供将来使用。

目前作品已在码云平台上传,链接如下:https://gitee.com/dyestuff_factory_2300447615/CodeLlama-7b-Instruct-hf

四、作品效果:

目前作品效果是:

(1)通过调用第三方库,可以查看模型训练效果,某次模型训练效果截图如下:

图1 某次模型训练效果

(2)针对python代码的优化和修复,形成应用演示demo,该应用具体为一个网页端服务界面,可调用微调后的模型迅速针对代码进行修复。

图2 作品网页端服务界面

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

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

相关文章

Java毕业设计之基于SSM框架的正安县吉他线上销售系统

🚩毕设中如何选题? 对于项目设计中如何选题、让题目的难度在可控范围,以及如何在选题过程以及整个毕设过程中如何与老师沟通,有疑问不清晰的可以联系我,详细为你解答 🚭如何快速熟悉一个项目?这…

java异步发送邮件:如何实现高效邮件发送?

java异步发送邮件性能调优?如何设计java异步发邮件? 传统的同步邮件发送方式在处理大量邮件时可能会导致系统响应变慢,甚至阻塞其他关键业务流程。AokSend将深入探讨如何通过Java异步发送邮件来实现高效邮件发送,从而提升应用程序…

裸土检测算法样本标注、裸土检测、裸土算法识别

在当今快速发展的科技时代,裸土检测算法作为一种前沿技术,正逐步改变我们对土壤检测的传统观念。随着环境保护和资源管理的日益重要,裸土检测算法不仅在农业领域展现了巨大的潜力,也在环境监测、灾后恢复等多个领域发挥了至关重要…

基于SpringBoot+Vue的高考志愿智能推荐系统

作者:计算机学姐 开发技术:SpringBoot、SSM、Vue、MySQL、JSP、ElementUI、Python、小程序等,“文末源码”。 专栏推荐:前后端分离项目源码、SpringBoot项目源码、SSM项目源码 系统展示 【2025最新】基于JavaSpringBootVueMySQL的…

使用 nvm 管理 node 版本:如何在 macOS 和 Windows 上安装使用nvm

🔥 个人主页:空白诗 文章目录 一、引言二、nvm的安装与基本使用2.1 macOS安装nvm2.1.1 使用 curl 安装2.1.2 使用 Homebrew 安装 2.2 Windows安装nvm2.2.1 下载 nvm-windows2.2.2 安装 nvm-windows 2.3 安装node2.4 切换node版本 三、常见问题及解决方案…

语音克隆神器GPT-Sovits-V2 Mac版整合包!

语音克隆神器GPT-Sovits-V2 Mac版整合包! Mac M1/M2/M3芯片福音!语音克隆神器GPT-Sovits-V2整合包来了! AI语音克隆黑科技,Mac也能轻松玩转! 还在羡慕别人用AI语音克隆技术?还在苦恼Mac配置环境的复杂&am…

Linux - iptables防火墙

目录 一、iptables概述 二、规则表与规则链结构(四表五链) 1.简述 2.四表(规则表) 3.五链(规则链) 三、数据链过滤的匹配流程 四、iptables命令行配置方法 1.命令格式 2.基本匹配条件 3.隐含匹配 …

Python什么时候打折?

Python收费? 今天有一个刚学习编程的网友,他找到了我,问了我这样一个问题,“我看你的文章也有一段时间了,对上面提到的python的强大功能非常感兴趣。现在想自己安装一个亲自体验一下。我发现,python的售价…

开发一款通过蓝牙连接控制水电表的微信小程序

增强软硬件交互 为了更好的解决师生生活中的实际问题,开发蓝牙小程序加强了和校区硬件的交互。 比如通过蓝牙连接控制水电表,减少实体卡片的使用。添加人脸活体检测功能,提高本人认证效率,减少师生等待时间。 蓝牙水电控展示 蓝…

go-map系统学习

map底层结构 Goland的map的底层结构使用hash实现,一个hash表里有多个hash表节点,即bucket,每个bucket保存了map中的一个或者一组键值对。 map结构定义: runtime/map.go:hmap type hmap struct {// Note: the format of the hma…

Linux系统进程的优先级

一、进程优先级的概念 进程优先级就是进程被CPU执行的先后顺序,优先级值越小,优先级别越高。 使用ps -al命令查看当前系统所有进程的优先级: PRI是进程的基准优先级,NI(nice值)是进程优先级修正数据&…

【C++】理解C++中的复制、复制构造函数

十、理解C中的复制、复制构造函数 拷贝就是要复制数据,也就是复制内存。 当我们把一个对象或一段数据从一个地方拷贝到另一个地方,那这个对象或数据其实是有两个副本,而且这个过程还是需要时间和开销的。所以如果你只是想读取数据&#xff0…

SQL使用IN进行分组统计时如何将不存在的字段显示为0

这两天被扔过来一个脏活儿:做一个试点运行系统的运营指标统计。 活儿之所以称为“脏”,是因为要统计8家单位共12个项目的指标。而每个项目有3个用户类指标,以及分17个功能模块,每个功能模块又分5个维度的指标。也就是单个项目是1…

携手Vatee万腾平台,共赴智能时代新征程

在科技日新月异的今天,我们正站在一个前所未有的历史交汇点上——智能时代的大门已轰然洞开,万物互联、数据驱动、智能决策正逐步成为社会发展的新常态。在这场深刻的变革中,Vatee万腾平台以其前瞻性的视野、创新的技术实力以及深厚的行业积淀…

QtCreator学习(二).在stm32mp1中使用

0.配置编译环境 复制【正点原子】STM32MP157开发板(A盘)-基础资料\05、开发工具\01、交叉编译器st-example-image-qtwayland-openstlinux-weston-stm32mp1-x86_64-toolchain-3.1-snapshot.sh到虚拟机chmod添加可执行文件,./st*运行&#xff…

信号与线性系统综合实验

文章目录 一、实验目的二、实验内容及其结果分析(一)基础部分(二)拓展部分(三)应用设计部分 三、心得体会 一、实验目的 1、掌握连续时间信号与系统的时域、频域综合分析方法;   2、掌握运用M…

【数据库】MySQL-基础篇-多表查询

专栏文章索引:数据库 有问题可私聊:QQ:3375119339 目录 一、多表关系 1.一对多 2.多对多 3.一对一 二、多表查询概述 1.数据准备 2.概述 3.分类 三、内连接 1.隐式内连接 2.显式内连接 3.案例 四、外连接 1.左外连接 2.右外连…

力扣最热一百题——轮转数组

目录 题目链接:189. 轮转数组 - 力扣(LeetCode) 题目描述 示例 提示: 知识补充ArrayDeque () ArrayDeque 的特点: 常用方法: 详细示例: 运行结果: …

无刷直流电动机的匝间绝缘测试优化

近年来,随着消费者对高效、快速干发需求的增加,高速电吹风逐渐成为市场的宠儿。高速电吹风的关键技术之一便是无刷直流电动机,其转速可以高达100,000转/分钟以上,电压为DC310V。相比传统电吹风,高速电吹风在效率和用户…

java基于PDF底层内容流的解析对文本内容进行编辑

本文实现了基于坐标位置对PDF内容的底层修改而非覆盖,因此不会出现在某些高级PDF编辑器中可以移除插入内容或者文件随着编辑次数增多而大幅增大(原因是原内容还在文件中)的问题,而且使用的pdfbox是一个开源的、免费的PDF处理库&am…