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

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.lryc.cn/news/343991.html

相关文章:

  • 什么是限流?常见的限流算法
  • ZL-0895小动物活动记录仪可同时检测8只动物的活动量
  • 注册测绘师的前世今生
  • Python中的异常处理:深入探索try-except-finally结构
  • 【R语言】边缘概率密度图
  • 中国结(科普)
  • 使用Android Studio 搭建AOSP FrameWork 源码阅读开发环境
  • 区块链 | IPFS:CID
  • PostgreSQL(十二)报错:Tried to send an out-of-range integer as a 2-byte value: 51000
  • Linux守护进程
  • HarmonyOS 应用开发——入门
  • 开源免费的发票识别OCR应用:Invoice
  • 关于Docker alpine
  • 【Elasticsearch运维系列】Elasticsearch7.12.1启动指定版本JDK:你学废了吗?
  • 思通数科大模型在智能数据查询系统中的深度应用:销售数据分析的革新
  • 上位机图像处理和嵌入式模块部署(树莓派4b和qt应用全屏占有)
  • QT:QT窗口(一)
  • matlab例题大全
  • SwiGLU激活函数
  • MySQL慢查询优化
  • 开源数据可视化大屏对接表单数据实践!
  • 08.图形化界面字体问题处理
  • 【代码随想录算法训练营第37期 第二天 | LeetCode977.有序数组的平方、209.长度最小的子数组、59.螺旋矩阵II】
  • Java:Servlet详解
  • Oracle存储过程怎么定义类并继承
  • 14_Scala面向对象编程_属性
  • 什么是网页反作弊
  • MAVEN打包JAR启动执行manifest
  • JavaEE 多线程详细讲解(1)
  • 数据分析从入门到精通 1.numpy剑客修炼