LLaMA-Factory+Ollama远程服务器部署,知识库微调训练及文本向量提取

参考

  1. LLaMA-Factory官网https://llamafactory.readthedocs.io/zh-cn/latest/#
  2. LLaMA-Factory+Ollama操作流程 https://zhuanlan.zhihu.com/p/991206079

微调和搭建知识库的区别

  1. rag需要载体(类似向量数据库,文档等)去承载知识库。
  2. 微调直接将功能加入到模型当中。
  3. 针对场景而定,结合知识库比较灵活,节省训练的算力。微调简单粗暴,有模型即可进行推理。

部署

默认cuda安装都已经完成,网上很多教程,不在这里多说。

运行以下指令以安装 LLaMA-Factory 及其依赖:

# 获取项目
git clone --depth 1 https://github.com/hiyouga/LLaMA-Factory.git
# 进入项目
cd LLaMA-Factory
# 创建环境
conda create -n llama_factory python=3.10
# 激活环境
conda activate llama_factory
# 安装依赖
pip install -e ".[torch,metrics]"

完成安装后,可以通过使用 llamafactory-cli version 来快速校验安装是否成功。
如果能成功看到类似 “Welcome to LLaMA Factory, version ······” 的字样,说明安装成功。

在这里插入图片描述

启动

进入webui

llamafactory-cli webui

打开链接即可看到训练平台。
在这里插入图片描述

使用训练平台

WebUI 主要分为四个界面:训练、评估与预测、对话、导出。

1.训练

需要指定的参数有:

  1. 模型名称及路径
  2. 训练阶段
  3. 微调方法
  4. 训练数据集
  5. 学习率、训练轮数等训练参数
  6. 微调参数等其他参数
  7. 输出目录及配置路径
    比如说,我选择的就是Baichuan-7B-Base的中文对话模型,数据集也选择的是alpaca的中文数据集。
    随后,可以点击 开始 按钮开始训练模型。

注!!!若使用CPU训练可能会报Warning,如果本身就用cpu,忽略即可,如果要用gpu,应该是torch没下载配套cuda,重新安装torch即可解决问题在这里插入图片描述

# 卸载 重新下载
pip uninstall torch
pip install torch

# python执行
import torch
# 是否有gpu
print(torch.cuda.is_available())
# gpu型号
print(torch.cuda.get_device_name(0))

在这里插入图片描述

在这里插入图片描述

2.评估预测与对话

模型训练完毕后,通过在评估与预测界面通过指定 模型 及 适配器 的路径在指定数据集上进行评估。
也可以通过在对话界面指定 模型、 适配器 及 推理引擎 后输入对话内容与模型进行对话观察效果。

3.导出

在导出界面通过指定 模型、 适配器、 分块大小、 导出量化等级及校准数据集、 导出设备、 导出目录 等参数后,点击 导出 按钮导出模型。
(如果需要部署到Ollama上,请一定记得把模型导出)
示例:微调中文对话大模型
使用alpaca_zh_demo数据集微调Llama-3-8B-Chinese-Chat模型
训练过程的Loss曲线如下:

导出模型:
在这里插入图片描述

4.利用自己的数据进行微调

添加数据集信息

路径地址:/root/scratch/LLaMA-Factory/data
在这里插入图片描述
在dataset_info.json中加入自己的数据集名称和位置。custom_data为数据集的名称,test.json为位置,位置路径默认为在/root/scratch/LLaMA-Factory/data/test.json这个位置。
weiui同步可以显示名称
在这里插入图片描述

添加自己的数据

/root/scratch/LLaMA-Factory/data/test.json在这里添加数据

模型转换

模型导出

llama_factory中导出,比如导出文件夹地址为/root/scratch/LLaMA-Factory/saves/test
在这里插入图片描述

转换工具安装

git地址:https://github.com/ggml-org/llama.cpp

cd /root/scratch/LLaMA-Factory
git clone https://github.com/ggml-org/llama.cpp
cd llama.cpp
python convert_hf_to_gguf.py /root/scratch/LLaMA-Factory/saves/test \
--outfile /root/scratch/LLaMA-Factory/saves/output-100.gguf --outtype q8_0

注!!地址一定要选择导出的地址

导入ollama

  1. 创建Modelfile.txt
    空的就可以 地址在/root/scratch/LLaMA-Factory/saves/test_ollama/Modelfile.txt
  2. 文件中写入转换后的gguf地址
    FROM /root/scratch/LLaMA-Factory/saves/output-100.gguf
  3. 导入
ollama create model_name -f /root/scratch/LLaMA-Factory/saves/test_ollama/Modelfile.txt

模型转向量

作用:
如果服务器没有可以使用大模型的条件,可以用这个方法转换为向量,利用向量作分类算法或者存储的向量数据库中做查重,能够利用到大模型的一点功能。

# 查看拥有的模型
ollama list
# 返回
NAME               ID              SIZE      MODIFIED   
deepseek-r1:14b    ea35dfe18182    9.0 GB    5 days ago 
model_name:latest    4060b56febd6    1.6 GB    2 minutes ago 
# 激活环境
conda activate llama_factory
# 安装包
pip install langchain_ollama
# 执行脚本
from langchain_ollama import OllamaEmbeddings

# 使用 Ollama Embeddings 模型
embeddings = OllamaEmbeddings(model="deepseek-r1:14b")

# 嵌入查询文本
result = embeddings.embed_query("My query to look up")
print(result)

后续工作

可以参考openwebui与ollama的结合

### LLaMA-Factory数据集准备 对于LLaMA-Factory项目的部署微调,准备好合适的数据集至关重要。为了确保模型能够有效地学习并适应特定的任务需求,数据预处理阶段必不可少。 #### 创建和配置工作环境 在开始之前,需先建立专门的工作环境来安装必要的依赖库以及工具包。通过命令`conda create --name llama_factory python==3.11`可以创建名为`llama_factory`的Conda虚拟环境[^1]。激活此环境之后,还需进一步安装其他所需的软件包,比如PyTorch、Transformers等机器学习框架和支持库。 #### 下载或构建训练语料库 针对具体应用场景收集高质量文本数据作为输入源非常重要。这些原始资料可能来自公开可用的大规模语料库或是企业内部积累的知识资产。如果采用外部资源,则应遵循相应的版权规定获取授权或许可证;如果是自定义生成的内容,则要保证其多样性和代表性以便于更好地支持下游任务性能优化。 #### 数据清洗与格式转换 获得初步素材后,下一步是对它们实施一系列清理操作去除噪声干扰项(如HTML标签)、统一编码方式、分割文档成句群等形式调整措施。此外,还需要按照目标架构所接受的标准结构化文件形式保存下来——通常是以JSON Lines (.jsonl) 或者 CSV 文件最为常见。每条记录应当至少包含两个字段:“instruction”,表示指令提示词;“input”,代表待处理的信息片段;还有“output”,即期望得到的结果样本。 #### 制作评估测试集合 除了主要用来指导参数更新过程的学习实例之外,另外一部分独立选取出来的验证样例同样不可或缺。这部分数据主要用于监控泛化能力,在迭代过程中帮助判断是否存在过拟合现象,并据此作出合理的超参调节决策。理想情况下,该部分应该尽可能覆盖全面而均衡的不同类别分布情况,从而提供更加可靠的反馈信号给开发者参考改进方案设计思路。 ```python import jsonlines from datasets import load_dataset, DatasetDict def prepare_data(input_file_path: str, output_dir: str): """ 将原始数据转化为适合LLaMA-Factory使用的格式 参数: input_file_path (str): 原始数据路径 output_dir (str): 输出目录 返回值: None """ dataset = [] with open(input_file_path, 'r', encoding='utf-8') as file: lines = file.readlines() for line in lines: parts = line.strip().split('\t') if len(parts) >= 3: instruction, text_input, expected_output = parts[:3] entry = { "instruction": instruction, "input": text_input, "output": expected_output } dataset.append(entry) train_test_split_ratio = 0.9 split_index = int(len(dataset)*train_test_split_ratio) ds_dict = DatasetDict({ 'train': load_dataset('json', data_files={'data': [{'filename': '-'}]}, split=f'train[:{split_index}]'), 'test': load_dataset('json', data_files={'data': [{'filename': '-'}]}, split=f'train[{split_index}:]') }) # Save processed datasets to disk ds_dict.save_to_disk(output_dir) prepare_data('./raw_texts.txt', './processed_datasets/') ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值