llama_index微调BGE模型

打印 上一主题 下一主题

主题 548|帖子 548|积分 1644

微调模型是为了让模型在特别领域体现良好,帮助其学习到专业术语等。
本文采用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数据生存了。
  1. # 源文件 列表
  2. my_list = [i for i in os.listdir('project_2/data') if i.endswith('pdf')]
  3. # 随机抽取70%的数据,作为训练集
  4. random.shuffle(my_list) # 打乱
  5. num_to_sample = int(len(my_list) * 0.7) # 阈值
  6. # 构造本地文件路径
  7. training_set = [f"project_2/data/{
  8.      file}" for file in my_list[:num_to_sample]] # 训练集文件list
  9. validation_set = [f"project_2/data/{
  10.      file}" for file in my_list[num_to_sample:]] # 验证集文件list
  11. # 最终形成的训练和验证语料
  12. TRAIN_CORPUS_FPATH = 'project_2/data/corpus/train_corpus.json'
  13. VAL_CORPUS_FPATH = 'project_2/data/corpus/val_corpus.json'
  14. # 读取pdf数据,节点
  15. def load_corpus(files, verbose=False):
  16.     if verbose:
  17.         print(f"正在加载文件 {
  18.      files}")
  19.     reader = SimpleDirectoryReader(input_files=files)
  20.     docs = reader.load_data()
  21.     if verbose:
  22.         print(f"已加载 {
  23.      len(docs)} 个文档")
  24.     parser = SentenceSplitter()
  25.     nodes = parser.get_nodes_from_documents(docs, show_progress=verbose)
  26.     if verbose:
  27.         print(f"已解析
复制代码
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

怀念夏天

金牌会员
这个人很懒什么都没写!

标签云

快速回复 返回顶部 返回列表