当前位置: 首页 > news >正文

逻辑推理复杂推理能力评估之大模型微调(Datawhale AI 夏令营)

        在逻辑推理任务中,我们采用了LoRA(Low-Rank Adaptation)技术对大模型进行微调。LoRA是一种高效的模型微调方法,通过引入低秩矩阵调整模型权重,从而实现对大型预训练语言模型的适应性调整。LoRA的主要优势包括对不同下游任务的快速适应、降低训练资源消耗,以及简单的部署过程。

环境配置与数据准备

环境配置

        首先,我们在PAI-DSW(ubuntu22.04-cuda12.1.0-py310-torch2.1.2-tf2.14.0-1.14.0)环境中进行实验。所需的数据、模型文件和代码文件都放置在Datawhale仓库中。

数据准备

        数据准备包括从qwen2-72b模型在train数据集上获得的正确答案和分析结果,并形成ana.json数据文件。通过以下命令,我们克隆仓库并下载数据文件:

git clone https://www.modelscope.cn/datasets/Datawhale/DW2024_Complex_reasoning_ability_assessment_qwen2-7b-lora.git

LoRA微调

LoRA简介

        LoRA技术通过增加低秩矩阵,调整模型权重,允许对大模型进行有效微调,保持原始模型性能的同时适应新的任务需求。LoRA模块可以针对不同的下游任务进行微调,结合自适应优化器减少计算资源的使用,并且可以与其他技术组合使用。

LoRA配置与训练

        我们首先加载Qwen2-7B-Instruct模型和相关的tokenizer,然后使用LoRA对其进行微调。以下是配置和训练的关键代码:

from peft import LoraConfig, TaskType, get_peft_modelconfig = LoraConfig(task_type=TaskType.CAUSAL_LM, target_modules=["q_proj", "k_proj", "v_proj", "o_proj", "gate_proj", "up_proj", "down_proj"],inference_mode=False,r=8,lora_alpha=32,lora_dropout=0.1
)
model = get_peft_model(model, config)

        使用Trainer类,我们开始微调模型,预计需要约10分钟时间完成。

微调模型测试与结果分析

测试

        完成微调后,我们使用vllm(Virtual Large Language Model)来加速模型推理。vllm提供高效的内存和计算资源管理,使得大模型的推理过程更加快速。

from transformers import AutoModelForCausalLM, AutoTokenizer
import torch
from peft import PeftModelmodel_path = './qwen/Qwen2-7B-Instruct/'
lora_path = './output/Qwen2_instruct_lora_an/checkpoint-100'tokenizer = AutoTokenizer.from_pretrained(model_path, trust_remote_code=True)
model = AutoModelForCausalLM.from_pretrained(model_path, device_map="auto", torch_dtype=torch.float16, trust_remote_code=True).eval()
model = PeftModel.from_pretrained(model, model_id=lora_path)
结果分析

        通过多次推理,我们对模型的输出进行了多路投票,以提高预测的准确性。实验结果表明,经过LoRA微调后的模型在逻辑推理任务中表现出色。

结语

        在本次的逻辑推理任务中,我们延续了前两篇文章中对复杂推理能力评估的探索,进一步深入探讨了大模型微调的应用。通过使用LoRA技术,我们成功地对Qwen2-7B-Instruct模型进行了高效的微调,显著提升了模型在逻辑推理任务中的表现。与前文讨论的传统方法和简单特征工程不同,LoRA微调展现了现代技术在处理复杂推理任务中的巨大潜力。

        通过这三篇文章的内容,我们不仅了解了逻辑推理任务的基本评估方式和数据处理流程,还深入探讨了大模型微调和优化的具体操作。随着人工智能技术的不断进步,我们期待在未来的工作中进一步优化这些方法,提升模型的性能和应用效果,为复杂推理能力的评估和其他自然语言处理任务提供更有效的解决方案。希望大家在学习和实践中能够继续探索,发现更多创新的解决路径。

如果你觉得这篇博文对你有帮助,请点赞、收藏、关注我,并且可以打赏支持我!

欢迎关注我的后续博文,我将分享更多关于人工智能、自然语言处理和计算机视觉的精彩内容。

谢谢大家的支持!

相关文章:

逻辑推理复杂推理能力评估之大模型微调(Datawhale AI 夏令营)

在逻辑推理任务中,我们采用了LoRA(Low-Rank Adaptation)技术对大模型进行微调。LoRA是一种高效的模型微调方法,通过引入低秩矩阵调整模型权重,从而实现对大型预训练语言模型的适应性调整。LoRA的主要优势包括对不同下游…...

pikachu漏洞平台~文件包含漏洞

在PHP程序中使用文件包含的对象可以被前端的用户控制且没有经过过滤或严格的定义,用户可以将其他的文件作为参数带入到PHP代码中解释执行,从而造成敏感信息泄露/程序文件读取/GetShell等危害的漏洞。 0x01文件包含漏洞 连接成功,完毕&#x…...

linux系统编程中Shell脚本配置,及man test命令手册

Shell脚本配置是指在脚本中设置各种参数、选项和环境,以确保脚本能够根据预期的需求和环境执行。配置可以包括变量设置、环境变量、命令选项和错误处理等。 1. 脚本开头的配置 Shebang 第一行通常是shebang,它告诉系统使用哪个解释器来执行脚本。例如…...

【康复学习--LeetCode每日一题】572. 另一棵树的子树

题目: 给你两棵二叉树 root 和 subRoot 。检验 root 中是否包含和 subRoot 具有相同结构和节点值的子树。如果存在,返回 true ;否则,返回 false 。 二叉树 tree 的一棵子树包括 tree 的某个节点和这个节点的所有后代节点。tree …...

OpenAI Function Call实现大模型agent自己判断用工具、上网搜索或直接大模型回答案例

参考: https://blog.csdn.net/weixin_42357472/article/details/140891660?spm=1001.2014.3001.5501 大模型用的deepseek 1)写了两个function,一个是天气工具,一个是搜索工具 2)大模型Function Call自己判断内容属于哪个工具就去调用对应工具 3)如果大模型Function Call…...

文章解读与仿真程序复现思路——电网技术EI\CSCD\北大核心《考虑源-荷不确定性的省间电力现货市场潮流风险概率评估》

本专栏栏目提供文章与程序复现思路,具体已有的论文与论文源程序可翻阅本博主免费的专栏栏目《论文与完整程序》 论文与完整源程序_电网论文源程序的博客-CSDN博客https://blog.csdn.net/liang674027206/category_12531414.html 电网论文源程序-CSDN博客电网论文源…...

JAVA中实现线程安全的三种方式

JAVA中实现线程安全的三种方式 1. 同步代码块2. 同步方法3. ReentrantLock4. 总结 💖The Begin💖点点关注,收藏不迷路💖 1. 同步代码块 使用synchronized关键字加在需要同步的代码块上,并指定一个锁对象。这种方式可以…...

3个二创文案生成器,让文案创作变简单

在当今数字时代,内容创作已经成为了一项非常重要的工作。无论是为了推广产品、营销服务,还是仅仅为了吸引读者,优质的文案都是至关重要的。然而,对于许多人来说,写出令人印象深刻的文案并不容易。这就是为什么二创文案…...

Java 属性拷贝 三种实现方式

第一种 List<OrederPayCustomer> orederPayCustomerList this.list(queryWrapper); List<CustomerResp>customerRespListnew ArrayList<>();for (OrederPayCustomer orederPayCustomer : orederPayCustomerList) {CustomerResp customerResp new Custome…...

C++: 如何把源码编译成SDK提供第三方使用

在我们开发过程中&#xff0c;经常会遇到提供SDK的情况&#xff0c;对于C语言&#xff0c;是可以方便地将源码封装成静态库或者动态库然后打包提供给第三方使用的。这样&#xff0c;一方面可以保护源码&#xff0c;另一方面也简化了对方的使用过程。 目录 一、关于动态库和静态…...

redis详细介绍

Redis是一个开源的、基于内存的高性能键值对数据库&#xff0c;属于NoSQL数据库的一种。它以高性能、丰富的数据结构、持久化特性、复制、集群以及发布/订阅等特性而闻名。以下是Redis的详细介绍&#xff1a; 一、基本介绍 名称&#xff1a;Redis&#xff0c;全称Remote Dicti…...

jar命令

文章目录 jar命令摘要 一、引言二、正文内容2.1 jar解压jar包2.2 重新打成jar包2.3 步骤2.4 sh脚本文件 jar命令 摘要 jar命令 一、引言 jar命令 二、正文内容 2.1 jar解压jar包 \# 解压 jar -xvf test.jar 2.2 重新打成jar包 jar -uvf0 marriage-admin-1.0.0.jar.j…...

CentOS上面的MySQL安装~~~保姆级教程

目录 0.声明 1.下载官网包包 2.新建文件夹&#xff0c;把rpm拖拽进来 3.安装yum源&#xff0c;查看前后变化 4.安装mysql服务 5.查看是否安装成功 6.出现报错的解决方案 7.启动MySQL 8.查看启动服务 9.配置文件 10.重新运行 11.免密码登录 12.再谈配置文件 0.声明…...

数组的复制

需求&#xff1a;现在有一个数组arr{1,2,3}&#xff0c;然后有另外一个数组temp{99,100},现在需要将temp复制到arr。 java public class test1 {public static void main(String[] args) {int arr1[] new int[]{1,2,3};int temp[] new int[]{99,100};arr1 temp;System.out.p…...

Python RPA流程自动化机器人简单案例

RPA&#xff08;Robotic Process Automation&#xff0c;机器人流程自动化&#xff09;是一种通过软件机器人模拟和执行人类用户在计算机上的操作的技术。 下面是pyautogui 键盘操作的常见参数说明&#xff1a; https://blog.csdn.net/wydyzq12/article/details/122008396 以…...

在git中如何忽略.vscode目录?

在Git中&#xff0c;如果你想忽略某个特定的文件或目录&#xff08;比如.vscode目录&#xff09;&#xff0c;你可以通过以下步骤来实现&#xff1a; 创建或编辑.gitignore文件 在项目的根目录下&#xff0c;如果还没有.gitignore文件&#xff0c;你需要创建一个。如果已经有了…...

python脚本:连接数据库,检查直播流是否可用

使用的是MySQL数据库 需要使用mysql-connector-python库来连接MySQL数据库。首先,请确保你已经安装了这个库,如果没有安装,可以通过以下命令安装: pip install mysql-connector-python假设: MySQL数据库已经配置好,并且有一个名为live_streams的表,其中包含至少两列:…...

MFC修改鼠标光标形状

1.新建项目 2.添加资源Cursor 3.添加鼠标移动响应函数&#xff0c;用于显示鼠标光标形状 void C修改鼠标光标View::OnMouseMove(UINT nFlags, CPoint point) {// TODO: 在此添加消息处理程序代码和/或调用默认值CRect rc;GetClientRect(&rc);if (point.x < rc.right / …...

【英语语法】限定性定语从句与非限定性定语从句(先行词概念)

文章目录 英语语法&#xff1a;限定性定语从句与非限定性定语从句详解1. 限定性定语从句1.1 定义与功能1.2 使用关系代词和关系副词示例句子&#xff1a; 1.3 标点和语调 2. 非限定性定语从句2.1 定义与功能2.2 使用关系代词示例句子&#xff1a; 2.3 标点和语调 3. 区别和选择…...

web小游戏开发:2048(完)移动操作及动画效果

web小游戏开发:2048(完)移动操作及动画效果 添加随机数字游戏开始时的初始化显示分数移动和合并获取行列元素下标记录移动轨迹完整的 js小结添加随机数字 书接前文,我们在前边定义了一个 move 方法,暂时先往后放放。 在我们已经初始化好的界面上,我们需要先制作一个出现…...

pythonflaskMYSQL自驾游搜索系统32127-计算机毕业设计项目选题推荐(附源码)

目 录 摘要 1 绪论 1.1研究背景 1.2爬虫技术 1.3flask框架介绍 2 1.4论文结构与章节安排 3 2 自驾游搜索系统分析 4 2.1 可行性分析 4 2.2 系统流程分析 4 2.2.1数据增加流程 5 2.3.2数据修改流程 5 2.3.3数据删除流程 5 2.3 系统功能分析 5 2.3.1 功能性分析 6 2.3.2 非功…...

(学习总结10)C++类和对象1

C类和对象1 一、类的定义1.类定义格式2.访问限定符3. 类域 二、实例化1.实例化概念2.对象大小 三、this指针四、C和C语言实现Stack对比 以下代码环境在 VS2022。 一、类的定义 1.类定义格式 class 为定义类的关键字&#xff0c;Stack 为类的名字&#xff0c; { } 中为类的主体…...

python 中 file.read(), file.readline()和file.readlines()区别和用法

python 中 file.read(), file.readline()和file.readlines()区别和用法 文章目录 python 中 file.read(), file.readline()和file.readlines()区别和用法1. file.read()2. file.readline()3. file.readlines()4. 总结5. 注意事项 file.read(), file.readline(), 和 file.readli…...

车辆出险报告(h5)-车辆出险记录接口-车辆相关接口

接口简介&#xff1a;通过vin及行驶证查询车辆出险、理赔、事故记录接口。查询成功率99%,返回URL地址的查询报告。 不能对返回的报告进行任何的修改&#xff0c;否则由用户自行承担相应的责任 报告结果只保留30天&#xff0c;如需永久保存&#xff0c;请您查询后自行保存 接口地…...

如何在 Next.js 中实现分页

一.介绍 分页功能可将大型数据集划分为可管理的块&#xff0c;从而帮助管理它们。您可以在 Next.js 的服务器端或客户端实现分页。这里有一份精简的入门指南。 1. 服务器端分页 1.1 创建 API 路由 设置 API 路由来处理分页。 // pages/api/posts.js export default async …...

Mockito基础入门

Mockito 快速入门教程 概述 Mockito 是一个流行的Java单元测试Mock框架&#xff0c;用于接口和数据模拟。 依赖安装 <dependency><groupId>org.mockito</groupId><artifactId>mockito-core</artifactId><version>3.12.4</version>…...

o(∩_∩)o设置代理访问博客(五)o(∩_∩)o --使用BeeWare打包应用

背景&#xff1a; 最近了解了一个新的打包框架BeeWare&#xff0c;据说他支持的平台要比nuitka更多。利用之前访问博客的脚本&#xff0c;来尝试一下打包windows应用程序。 BeeWare 从零开始 环境&#xff1a;python -m pip install briefcase 使用pycharm新建了一个名为bee…...

使用GPT-4o mini融合GraphRAG技术进行实战应用

什么是gpt-4o mini OpenAI 推出 GPT-4o mini&#xff0c;这是他们最具成本效益的小型模型。它的定价为每百万输入代币 15 美分&#xff0c;每百万输出代币 60 美分&#xff0c;比之前的 Frontier 型号便宜一个数量级&#xff0c;比 GPT-3.5 Turbo 便宜 60% 以上。目前&#xf…...

嵌入式人工智能(45-基于树莓派4B的扩展板-舵机驱动板PCA9685)

1、简介 智能小车、机械臂、摄像头云台会有多个舵机&#xff0c;而微控制器芯片的PWM输出引脚不够的情况下&#xff0c;就可以用PCA9685&#xff08;16路舵机&#xff09;来解决这一问题。 PCA9685是一款I2C总线控制的16通道LED控制器&#xff0c;专为红/绿/蓝/琥珀&#xff…...

3.11.样式迁移

样式迁移 ​ 使用卷积神经网络&#xff0c;自动的将一个图像中的风格应用在另一图像之上&#xff0c;即样式迁移(style transfer) ​ 为了完成这一过程&#xff0c;我们需要两张输入图像&#xff1a;一张是内容图像&#xff0c;一张是风格图像&#xff0c;随后使用神经网络修…...

Spring统一返回类型中关于String的问题

文章目录 1. 问题铺垫2. 解决方法3. 问题分析4 解决方法解释 1. 问题铺垫 首先设置了以下代码统一处理返回类型 ControllerAdvice public class ResponseAdvice implements ResponseBodyAdvice {Overridepublic boolean supports(MethodParameter returnType, Class converte…...

Python酷库之旅-第三方库Pandas(065)

目录 一、用法精讲 256、pandas.Series.sparse方法 256-1、语法 256-2、参数 256-3、功能 256-4、返回值 256-5、说明 256-6、用法 256-6-1、数据准备 256-6-2、代码示例 256-6-3、结果输出 257、pandas.DataFrame.sparse方法 257-1、语法 257-2、参数 257-3、功…...

Go语言标准库中的双向链表的基本用法

什么是二分查找区间&#xff1f; 什么是链表&#xff1f; 链表节点的代码实现&#xff1a; 链表的遍历&#xff1a; 链表如何插入元素&#xff1f; go语言标准库的链表&#xff1a; 练习代码&#xff1a; package mainimport ("container/list""fm…...

Cocos Creator2D游戏开发(9)-飞机大战(7)-爆炸效果

这个爆炸效果我卡在这里好长时间,视频反复的看, 然后把代码反复的测试,修改,终于给弄出来 视频中这段,作者也是修改了好几次, 跟着做也走了不少弯路; 最后反正弄出来了; 有几个坑; ① 动画体创建位置是enemy_prefab ② enemy_prefab预制体下不用放动画就行; ③ 代码中引用Anima…...

Redis入门概述

Redis 概述 Redis 是速度非常快的非关系型&#xff08;NoSQL&#xff09;基于内存的键值数据库。 键的类型只能为字符串&#xff0c;值可以支持五种数据类型&#xff1a;字符串&#xff08;stirng&#xff09;、列表&#xff08;list&#xff09;、集合(set)、散列表(hash)、有…...

Cursor搭配cmake实现C++程序的编译、运行和调试

Cursor搭配cmake实现C程序的编译、运行和调试 Cursor是一个开源的AI编程编辑器&#xff0c;开源地址https://github.com/getcursor/cursor &#xff0c;它其实是一个集成了Chat-GPT的VS Code。 关于VS Code和VS的对比可以参考这篇文章VS Code 和 Visual Studio 哪个更好&…...

读零信任网络:在不可信网络中构建安全系统09用户信任

1. 用户信任 1.1. 将设备身份和用户身份混为一谈会导致一些显而易见的问题 1.1.1. 特别是当用户拥有多台设备时&#xff0c;而这种情况很普遍 1.1.2. 应该针对不同类型的设备提供相匹配的凭证 1.1.3. 在存在共用终端设备的情况下&#xff0c;所有的这些问题将更加凸显 1.2…...

二叉树的实现 c语言

注&#xff1a;层序所需的队列文件请参考 C语言 实现栈(顺序表)和队列(链表)-CSDN博客 一、 BTree.h 函数包含&#xff1a; // 通过前序遍历的数组"ABD##E#H##CF##G##"构建二叉树 // 二叉树销毁 // 二叉树节点个数 // 二叉树叶子节点个数 // 二叉树第k层节点个数 /…...

【Git】如何优雅地使用Git中的tag来管理项目版本

目录 tagtag 和 branch区别操作命令打tag&#xff0c;当前分支标记tag提交到远程服务器删除本地tag删除远程tag切换到特定的tag查看所有tag查看标签详细信息 好书推荐 tag Git中的tag&#xff08;标签&#xff09;用于给项目在特定时间点&#xff08;某个版本发布&#xff09;…...

白骑士的PyCharm教学进阶篇 2.3 测试与自动化

系列目录 上一篇&#xff1a;白骑士的PyCharm教学进阶篇 2.2 高级调试技术 在现代软件开发中&#xff0c;测试和自动化是保证代码质量和项目稳定性的重要环节。PyCharm作为一款强大的Python IDE&#xff0c;提供了丰富的工具来支持单元测试和自动化测试。本篇将详细介绍单元测…...

spark写入redis报错空指针

aused by: java.lang.NullPointerException 1、spark集群 每个executor是否 与redis集群 网络策略是否通 2、写入redis的数据是否 有 null值 需要把null值 转成空字符串 3、可以用 pipleline 并行写数据...

【Material-UI】Autocomplete中的禁用选项:Disabled options

文章目录 一、简介二、基本用法三、进阶用法1. 动态禁用2. 提示禁用原因3. 复杂的禁用条件 四、最佳实践1. 一致性2. 提供反馈3. 优化性能 五、总结 Material-UI的Autocomplete组件提供了丰富的功能&#xff0c;包括禁用特定选项的能力。这一特性对于限制用户选择、提供更好的用…...

力扣287【寻找重复数】

给定一个包含 n 1 个整数的数组 nums &#xff0c;其数字都在 [1, n] 范围内&#xff08;包括 1 和 n&#xff09;&#xff0c;可知至少存在一个重复的整数。 假设 nums 只有 一个重复的整数 &#xff0c;返回 这个重复的数 。 你设计的解决方案必须 不修改 数组 nums 且只用常…...

学习笔记一

vector 在创建时指定初始大小和初始值&#xff1a; vector<int> a(5, 1) // 包含 5 个整数的 vector&#xff0c;每个值都为 1 可以使用 push_back 方法向 vector 中添加元素&#xff1a; a.push_back(7) // 将整数 7 添加到 vector 的末尾 可以使用 size(…...

星纪魅族双轮驱动遇阻:AI手机与造车梦能否照进现实?

在科技行业风起云涌的浪潮中&#xff0c;星纪魅族近期的一系列动作引起了广泛关注。从高层换血到全面押注AI&#xff0c;再到宣布造车计划&#xff0c;每一步都显得雄心勃勃&#xff0c;但深入剖析后不难发现&#xff0c;其未来发展之路实则布满荆棘。 星纪魅族选择“All in AI…...

深入理解 C 语言中的联合体

目录 引言 一、 联合体的定义与基本用法 1.联合体的定义 2.基本用法 二、 联合体与结构体的区别 1.结构体 2.联合体 3.对比 三、联合体的优势 1. 节省内存 2. 提高效率 3. 代码简洁性 四、联合体的存储细节 1.内存对齐 2.大小计算 五、联合体的高级用法 1.匿…...

Unity3D 物体圆周运动

Unity3D 实现一个 2D 物体沿着圆周进行运动。 物体圆周运动 前段时间在开发一个小游戏时&#xff0c;需要实现火箭沿着一个圆形轨道进行圆周运动。 以前面试的时候也被问到过这类问题&#xff08;如何让一个 2D 物体做圆周运动&#xff09;&#xff0c;所以还是记录一下实现…...

无人机无人车固态锂电池技术详解

随着无人机和无人车技术的飞速发展&#xff0c;对高性能、高安全性电池的需求日益迫切。固态锂电池作为下一代电池技术的代表&#xff0c;正逐步从实验室走向市场&#xff0c;为无人机和无人车等应用领域带来革命性的变化。相比传统液态锂电池&#xff0c;固态锂电池在能量密度…...

策略模式的一次应用

项目的需求是将一组图像按照相似度分类。 采用了模板匹配计算相似度的实现方式。 #include <opencv2/core.hpp> #include <openev2/core/utility.hpp> #include <opencv2/highqui.hpp> #include <openav2/imgproc.hpp> cv::Mat image matched; double …...

终极指南:3D 数据科学系统和工具

该蓝图分享了 AI 方法、算法、工具、模板和 6 步系统&#xff0c;用于为 3D 模型构建数据科学解决方案&#xff1a;3D 数据采集、分析、建模、可视化和部署。 ​ 3D 数据科学系统的核心组件和交叉学科 欢迎来到雲闪世界。建立 3D 数据科学项目涉及结合数据工程、数据分析和可视…...