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

目录

一、作品背景:

二、作品目标:

三、作品技术方案:

(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.mzph.cn/diannao/53836.shtml

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

相关文章

SOMEIP_ETS_107: SD_Consider_Entries_Order

测试目的: 验证DUT在接收到包含两个条目的消息时,能够按照正确的顺序处理:首先是带有TTL 0的SubscribeEventgroup以删除订阅,然后是常规的SubscribeEventgroup以重新订阅。 描述 本测试用例旨在确保DUT能够正确处理订阅消息的顺…

Frida0C - Module相关API

亲爱的读者你们好啊,今天主要分享一下 frida 相关的学习文档,见文章最后一节。 Module var module Process.findModuleByAddress(Module.findBaseAddress("libc.so")) module.enumerateSymbols()enumerateSymbols 返回该 so 的符号表。 还…

Java项目: 基于SpringBoot+mybatis+maven医院管理系统(含源码+数据库+任务书+开题报告+毕业论文)

一、项目简介 本项目是一套基于SpringBootmybatismaven医院管理系统 包含:项目源码、数据库脚本等,该项目附带全部源码可作为毕设使用。 项目都经过严格调试,eclipse或者idea 确保可以运行! 该系统功能完善、界面美观、操作简单、…

ffmpeg安装测试(支持cuda支持SRT)

文章目录 背景安装ffmpeg直接下载可执行文件选择版本选择对应系统版本下载测试Linux下安装 查看支持协议以及编码格式 常见错误缺少 libmvec.so.1LD_LIBRARY_PATH 错误 GPU加速测试SRT服务器搭建下载srs5.0源码解压安装配置启动 SRT推流测试SRT播放测试 背景 在音视频开发测试中…

视频监控管理平台LntonAIServer视频智能分析抖动检测算法应用场景

在视频监控系统中,视频画面的稳定性对于确保监控效果至关重要。抖动现象是指视频画面中存在不稳定或频繁晃动的情况,这可能会影响视频的清晰度和可读性。LntonAIServer通过引入抖动检测功能,帮助用户及时发现并解决视频流中的抖动问题&#x…

【Python】从基础到进阶(七):深入理解Python中的异常处理与调试技巧

🔥 个人主页:空白诗 文章目录 一、引言二、异常处理概述1. 什么是异常?2. 异常的捕获与处理 三、常见的异常类型四、自定义异常五、调试与日志记录1. 使用assert进行调试2. 使用日志记录 六、案例:文件操作与异常处理1. 需求分析2…

最新kubernetes的安装填坑之旅(新手篇)

Kubernetes(常简称为 K8s)是一个开源的容器编排平台,用于自动化部署、扩展和管理容器化应用程序,lz也不知道哪根脑经秀逗了,竟然妄挑战学习一下,结果折戟沉沙,被折腾的欲仙欲死,不过…

写的一致性问题之双删模式

文章目录 1、双删模式1.1、同步双删1.2、异步双删1.3、延时双删1.4、定时双删 在事务提交前后删除两次redis,会有性能问题 企业开发常用:延时双删、异步双删 1、双删模式 1.1、同步双删 实现思路:AOP 1.2、异步双删 在事务提交之后异步删除r…

redis群集的三种模式

目录 一、redis群集有三种模式 二、redis主从复制 2.1 概念 2.2 主从复制的作用 2.3 主从复制流程 三、搭建redis主从复制 四、redis哨兵模式 4.1 概念 4.2 哨兵模式原理: 4.3 哨兵模式的作用: 4.4 故障转移机制: 4.5 主节点的选举&#xff…

【计算机网络】电路交换、报文交换和分组交换——三种交换方式性能分析以及计算机网络的分类

【计算机网络】电路交换、电报交换、分组交换 目录 【计算机网络】电路交换、电报交换、分组交换1. 电路交换2. 电报交换3. 分组交换4. 基于分组交换~“虚电路交换”技术 【计算机网络】电路交换、报文交换和分组交换——三种交换方式性能分析电路交换性能分析报文交换性能分析…

C/C++:优选算法

一、双指针 1.1移动零 链接:283. 移动零 - 力扣(LeetCode) 给定一个数组 nums,编写一个函数将所有 0 移动到数组的末尾,同时保持非零元素的相对顺序。请注意 ,必须在不复制数组的情况下原地对数组进行操…

[001-03-007].第07节:Redis中的事务

我的后端学习大纲 我的Redis学习大纲 1、Redis事务是什么: 1.可以一次执行多个命令,本质是一组命令的集合。一个事务中的所有命令都会序列化, 按顺序地串行化执行而不会被其他命令插入,不许加塞2.一个队列中,一次性、…

PLSQL-将一份excel数据导入到一张物理表(Oracle)

–>> 很简单~ 平时用惯了DBeaver,突然要用PLSQL Developer,确实很生疏。 –>> 我的场景,将一份.csv文件数据手动导入到Oracle下的一张物理表中去。 研究了半天,看网上说的可以用:Tools → ODBC Importer &…

WPF 手撸插件 八 依赖注入

本文内容大量参考了:https://www.cnblogs.com/Chary/p/11351457.html 而且这篇文章总结的非常好。 1、注意想使用Autofac,Autofac是一个轻量级、‌高性能的依赖注入(‌DI)‌框架,‌主要用于.NET应用程序的组件解耦和…

被低估的SQL

SQL是现代数据库管理系统中不可或缺的一部分。尽管它的使用已十分普遍,但在数据处理领域,SQL的某些功能和潜力仍然被许多人低估。接下来,小编将与您一起,探讨SQL的一些被忽视的特性,揭示它在数据管理中的真正实力。 1.…

红海云 × 滨湖国控集团 | 数智引领集团型国企人力资源数字化变革

合肥滨湖国有资本运营控股集团有限公司(以下简称“滨湖国控集团”)为合肥市包河区区属一级国企。滨湖国控集团作为安徽省市辖行政区中首个获得AA主体信用评级的区属国企,紧扣“三区”定位,聚焦“三位”追求 ,积极构筑金…

Python OpenCV精讲系列 - 高级图像处理技术(五)

💖💖⚡️⚡️专栏:Python OpenCV精讲⚡️⚡️💖💖 本专栏聚焦于Python结合OpenCV库进行计算机视觉开发的专业教程。通过系统化的课程设计,从基础概念入手,逐步深入到图像处理、特征检测、物体识…

使用 Elastic 和 LM Studio 的 Herding Llama 3.1

作者:来自 Elastic Charles Davison, Julian Khalifa 最新的 LM Studio 0.3 更新使 Elastic 的安全 AI Assistant 能够更轻松、更快速地与 LM Studio 托管模型一起运行。在这篇博客中,Elastic 和 LM Studio 团队将向你展示如何在几分钟内开始使用。如果你…

【UE5 C++课程系列笔记】02——创建C++类的三种方式

目录 一、从UE编辑器中创建 引用头文件报错的两种解决方式 (1)方式1 (2)方式2 二、在文件夹中直接创建 三、在Visual Studio中创建 一、从UE编辑器中创建 在UE编辑器中选择“Tools-》New C Class” 这里新建的类的父类选择…

解锁阿尔茨海默病(AD)靶点密码,开启靶向治疗新篇章

前 言: 阿尔茨海默病(AD)是一种严重的神经退行性疾病,多发于高龄人群,主要表现为记忆、思维、分析判断、视空间辨认、情绪等障碍。从实验室到临床应用的过程充满挑战。阿尔茨海默症新型疗法的开发主要聚焦于靶向Aβ、…