llama_index微调BGE模型

微调模型是为了让模型在特殊领域表现良好,帮助其学习到专业术语等。

本文采用llama_index框架微调BGE模型,跑通整个流程,并学习模型微调的方法。
已开源:https://github.com/stay-leave/enhance_llm

一、环境准备

Linux环境,GPU L20 48G,Python3.8.10。
pip该库即可。

二、数据准备

该框架实现了读取各种类型的文件,给的示例就是pdf。
在这里插入图片描述
因此准备了一些网络舆情相关的论文pdf,选择70%作为训练数据,剩下作为验证数据。都放在data文件夹下。
在这里插入图片描述

三、微调脚本编写

1.读取数据

使用SimpleDirectoryReader类读取文件。
读取到文本后,使用SentenceSplitter将一个很长的文档切分为若干块。
每一块设置的有token数和重叠token数,在
在这里插入图片描述可以自选,默认的chunk_size大小没找到在哪,重叠的是200.
在这里插入图片描述以上是库的源码实现,我们调用是很简单的。VAL_CORPUS_FPATH 我一开始以为是在load_corpus里的某个类自动保存,结果根本没有。所以自己写了导出为json的函数,是将其text数据保存了。

# 源文件 列表
my_list = [i for i in os.listdir('project_2/data') if i.endswith('pdf')]
# 随机抽取70%的数据,作为训练集
random.shuffle(my_list) # 打乱
num_to_sample = int(len(my_list) * 0.7) # 阈值
# 构造本地文件路径
training_set = [f"project_2/data/{file}" for file in my_list[:num_to_sample]] # 训练集文件list
validation_set = [f"project_2/data/{file}" for file in my_list[num_to_sample:]] # 验证集文件list# 最终形成的训练和验证语料
TRAIN_CORPUS_FPATH = 'project_2/data/corpus/train_corpus.json'
VAL_CORPUS_FPATH = 'project_2/data/corpus/val_corpus.json'# 读取pdf数据,节点
def load_corpus(files, verbose=False):if verbose:print(f"正在加载文件 {files}")reader = SimpleDirectoryReader(input_files=files)docs = reader.load_data()if verbose:print(f"已加载 {len(docs)} 个文档")parser = SentenceSplitter()nodes = parser.get_nodes_from_documents(docs, show_progress=verbose)if verbose:print(f"已解析 

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

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

相关文章

新型直膨式光伏光热热泵/动力热管复合循环系统

太阳能光伏光热热泵(即PVT热泵)技术是建筑领域内实现碳中和的有效技术手段,该技术具有优越的热电冷联产能力。然而,现有的PVT热泵在良好的室外工况下能耗较高。为了解决这一问题,本文提出了一种新型的DX-PVT热泵/动力热…

【c++】模板编程解密:C++中的特化、实例化和分离编译

🔥个人主页:Quitecoder 🔥专栏:c笔记仓 朋友们大家好,本篇文章我们来学习模版的进阶部分 目录 1.非类型模版参数按需实例化 2.模版的特化函数模版特化函数模版的特化类模版全特化偏特化 3.分离编译模版分离编译 1.非类…

ubuntu搭建kms服务器

1.下载kms开源包(如果提示找不到wget命令的话:apt install wget): wget https://github.com/Wind4/vlmcsd/releases/download/svn1111/binaries.tar.gz2.解压: tar -xzvf binaries.tar.gz接着cd 进入 Linux/intel/static/ 文件夹下: 3.选择对应的文件,这里我们选…

力扣每日一题104:二叉树的最大深度

题目 给定一个二叉树 root ,返回其最大深度。 二叉树的 最大深度 是指从根节点到最远叶子节点的最长路径上的节点数。 示例 1: 输入:root [3,9,20,null,null,15,7] 输出:3示例 2: 输入:root [1,null,2…

OpenCV(二)—— 车牌定位

从本篇文章开始我们进入 OpenCV 的 Demo 实战。首先,我们会用接下来的三篇文章介绍车牌识别 Demo。 1、概述 识别图片中的车牌号码需要经过三步: 车牌定位:从整张图片中识别出牌照,主要操作包括对原图进行预处理、把车牌从整图…

飞书API(7):MySQL 入库通用版本

一、引入 在上一篇介绍了如何使用 pandas 处理飞书接口返回的数据,并将处理好的数据入库。最终的代码拓展性太差,本篇来探讨下如何使得上一篇的最终代码拓展性更好!为什么上一篇的代码拓展性太差呢?我总结了几点: 列…

Ubuntu编译安装MariaDB并进行初始化配置

Ubuntu编译安装MariaDB并进行初始化配置 1. 编译安装MariaDB2. 配置MariaDB3. Docker安装MariaDB 1. 编译安装MariaDB MariaDB官方安装文档:https://mariadb.com/kb/en/Build_Environment_Setup_for_Linux/    下载MariaDB源码:https://mariadb.org/ma…

022、Python+fastapi,第一个Python项目走向第22步:ubuntu 24.04 docker 安装mysql8集群、redis集群(三)

这次来安装mysql8了,以前安装不是docker安装,这个我也是第一次,人人都有第一次嚒 前言 前面的redis安装还是花了点时间的,主要是网上教程,各有各的好,大家千万别取其长处,个人觉得这个环境影响…

【C语言】分支和循环(上)

【C语言】分支和循环(上) 1、if语句1.2 else1.3分支中包含多条语句1.4嵌套if1.5悬空else问题 2、关系操作符3、条件操作符4、逻辑操作符:与、或、非(取反)(&&,||,&#xff0…

深入理解网络原理3----TCP核心特性介绍(上)【面试高频考点】

文章目录 前言TCP协议段格式一、确认应答【保证可靠性传输的机制】二、超时重传【保证可靠性传输的机制】三、连接管理机制【保证可靠性传输的机制】3.1建立连接(TCP三次握手)---经典面试题3.2断开连接(四次挥手)3.3TCP状态转换 四…

「 网络安全常用术语解读 」通用漏洞报告框架CVRF详解

1. 背景 ICASI在推进多供应商协调漏洞披露方面处于领先地位,引入了通用漏洞报告框架(Common Vulnerability Reporting Format,CVRF)标准,制定了统一安全事件响应计划(USIRP)的原则,…

JSP与JavaBean

目录 一、JavaBean是什么 二、创建JavaBean 三、在JSP中使用JavaBean 1、按照Java语法直接使用 2、<jsp:useBean>动作 Bean的加载原理 scope属性的不同取值 3、<jsp:setProperty>动作 设置为一个表达式的值或字符序列 通过表单的参数的值来设置Bean的相应…

Find My无人机|苹果Find My技术与无人机结合,智能防丢,全球定位

无人机是利用无线电遥控设备和自备的程序控制装置操纵的不载人飞机&#xff0c;或者由车载计算机完全地或间歇地自主地操作。无人机按应用领域&#xff0c;可分为军用与民用。军用方面&#xff0c;无人机分为侦察机和靶机。民用方面&#xff0c;无人机行业应用&#xff0c;是无…

43 单例模式

目录 1.什么是单例模式 2.什么是设计模式 3.特点 4.饿汉和懒汉 5.峨汉实现单例 6.懒汉实现单例 7.懒汉实现单例&#xff08;线程安全&#xff09; 8.STL容器是否线程安全 9.智能指针是否线程安全 10.其他常见的锁 11.读者写者问题 1. 什么是单例模式 单例模式是一种经典的&a…

多多搜索推广计划怎么设置

拼多多推广可以使用3an推客。3an推客&#xff08;CPS模式&#xff09;给商家提供的营销工具&#xff0c;由商家自主设置佣金比例&#xff0c;激励推广者去帮助商家推广商品链接&#xff0c;按最终有效交易金额支付佣金&#xff0c;不成交不扣费。是商家破零、积累基础销量的重要…

自动化机器学习——网格搜索法:寻找最佳超参数组合

自动化机器学习——网格搜索法&#xff1a;寻找最佳超参数组合 在机器学习中&#xff0c;选择合适的超参数是模型调优的关键步骤之一。然而&#xff0c;由于超参数的组合空间通常非常庞大&#xff0c;手动调整超参数往往是一项耗时且困难的任务。为了解决这个问题&#xff0c;…

连接HiveMQ代理器实现MQTT协议传输

先下载MQTTX: MQTTX: Your All-in-one MQTT Client Toolbox 使用线上免费的MQTTX BROKER:The Free Global Public MQTT Broker | Try Now | EMQ 打开MQTTX&#xff0c;创建连接&#xff0c;点击NEW SUBSCRIPTION,创建一个主题&#xff0c;这里使用test/topic,在下面Json中填写…

使用 ORPO 微调 Llama 3

原文地址&#xff1a;https://towardsdatascience.com/fine-tune-llama-3-with-orpo-56cfab2f9ada 更便宜、更快的统一微调技术 2024 年 4 月 19 日 ORPO 是一种新的令人兴奋的微调技术&#xff0c;它将传统的监督微调和偏好校准阶段合并为一个过程。这减少了训练所需的计算…

Java零基础入门到精通_Day 8

1.API 应用程序接口 Java API:指的就是JDK 中提供的各种功能的Java类这些类将底层的实现封装了起来&#xff0c;我们不需要关心这些类是如何实现的&#xff0c;只需要学习这些类如何使用即可&#xff0c;我们可以通过帮助文档来学习这些API如何使用。 2. String String 类…

【副本向】Lua副本逻辑

副本生命周期 OnCopySceneTick() 子线程每次心跳调用 --副本心跳 function x3323_OnCopySceneTick(elapse)if x3323_g_IsPlayerEnter 0 thenreturn; -- 如果没人进入&#xff0c;则函数直接返回endif x3323_g_GameOver 1 thenif x3323_g_EndTick > 0 thenx3323_CountDown…