序:SFT 和 PT 的区分
sft(Supervised Fine-Tuning,监督微调)
定义:sft是一种基于监督学习的微调方法,它使用标记好的数据(即带有输入、指令和期望输出的数据集)来进一步训练已经预训练好的模型。这种方法允许模型针对特定任务或领域进行优化,以提高其性能。 数据格式:如图片文字文本所述,sft通常基于一种特定的数据格式,其中每个样本包含三个主要部分:input
(输入内容)、instruction
(指令或任务描述)和output
(期望的输出)。这种格式使得模型能够学习如何根据给定的指令处理输入并生成相应的输出。
应用场景:sft在NLP领域特别有用,因为它允许模型针对如文本生成、机器翻译、问答系统等具体任务进行定制和优化。
pt(Pre-Training,预训练)
定义:pt是指在大规模未标记的数据集上对模型进行初步训练的过程。预训练的目的是让模型学习到语言的通用表示,这些表示可以在后续的任务中用作起点,通过微调来适应特定任务。 任务类型:pt通常涉及自回归任务(autoregressive tasks),这类任务要求模型根据前面的内容预测接下来的内容。在NLP中,这通常意味着模型需要学习如何根据给定的文本序列预测下一个单词或句子。 与sft的区别: 数据需求:pt主要依赖于大规模未标记的数据集,而sft则需要标记好的数据集。 目标:pt的目标是学习到语言的通用表示,而sft的目标是根据特定任务或领域进一步优化这些表示。 初始化:在继续预训练(即从预训练模型出发进行更多训练)和从零开始预训练之间,主要区别在于模型的初始化。继续预训练使用已经预训练好的模型参数作为起点,而从零开始预训练则随机初始化模型参数。1、LLaMA Factory 安装
1.1 LLaMA Factory 源码下载
方法一:Git
git clone https://github.com/hiyouga/LLaMA-Factory.git
方法二:下载压缩包源码,解压
#下载命令
wget https://github.com/hiyouga/LLaMA-Factory/archive/refs/tags/v0.8.3.tar.gz
#解压命令
tar -xzvf v0.8.3.tar.gz
1.2 LLaMA Factory 环境配置
conda create -n llama_factory python=3.10 #配置镜像源看上篇文章内容
conda activate llama_factory #进入conda环境
cd LLaMA-Factory-0.8.3/ #进入文件
pip install -e .[metrics] #安装所需包
1.3 LLaMA Factory 启动
export CUDA_VISIBLE_DEVICES=0
python src/webui.py
服务器启动结果如下:
访问服务器地址+端口即可,webui成功如下,
遇到的错误:
但是当前python环境是3.10,可能因为在Docker部署的,有其他的包,显示一直用的python3.8,最后重新执行了下环境部署,再运行可以。。。
2、LLaMA Factory 模型下载
方法一:从页面选中模型后,自动下载,类似Xinference,设置下载源即可。
export USE_MODELSCOPE_HUB=1
方法二:自己下载模型,把下载后的模型存放路径放入上面webui的模型路径即可,例如从魔搭下载:魔搭社区
#模型下载
from modelscope import snapshot_download
model_dir = snapshot_download('模型')
官网下载方法蛮多,可以去试试看。
默认会下载到/.cache/modelscope/hub
中,如果需要修改下载目录,可以更改:
export MODELSCOPE_CACHE==/xxx/xxx/xxx/
3、LLaMA Factory 数据集
3.1 使用内置数据集
llama_factory中的 data文件夹
提供了蛮多的数据集,开源的。
3.2 配置自己的数据集
将json数据集放到data
文件夹下,然后修改 data/dataset_info.json
文件即可,
vim data/dataset_info.json
"myselfdata": {
"file_name": "数据集名字.json"
},
4、LLaMA Factory 训练
最新版本功能蛮丰富了,几乎包含所有,在下图标注的训练阶段,选择即可,包括PT、SFT、PPO、DPO、KTO、Reward Modeling,其他的一些参数看个人配置。
附录官网上的一些操作指令,https://github.com/hiyouga/LLaMA-Factory/tree/main/examples
可以在预览命令那,保存执行脚本,存成 .sh 文件,不用每次都启动页面。
总结
### 总结文章**一、SFT(Supervised Fine-Tuning,监督微调)与PT(Pre-Training,预训练)的差异**
- **SFT**:基于监督学习的微调方法。使用标记好的数据(包含输入、指令和期望输出)进一步优化预训练模型,针对特定任务或领域提升性能。主要应用在NLP领域,如文本生成、机器翻译和问答系统。
- **PT**:在大规模未标记数据集上的初步训练,目标是学习到语言的通用表示,作为后续任务的起点。涉及自回归任务,模型需学习根据前文预测后续内容。PT主要依赖未标记数据,而SFT依赖标记数据。两者的主要目的是不同的。
**二、LLaMA Factory的安装与配置**
1. **源码下载**:
- 通过Git或下载压缩包两种方式获得LLaMA Factory的代码。
2. **环境配置**:
- 创建并激活Conda环境,安装Python 3.10和必要的Python包。
- 注意Python版本可能因Docker或系统其他配置而显示出差异,需重配环境。
3. **启动**:
- 设置CUDA设备并运行`webui.py`启动服务。访问指定地址+端口即可使用。
**三、LLaMA Factory模型下载**
- 通过设置页面自动下载或使用`modelscope`库从指定源下载。
- 可修改下载目录,以适应不同的系统和存储需求。
**四、数据集配置**
- 使用内置的开源数据集。
- 自定义数据集时,将JSON文件放入指定文件夹,并编辑`dataset_info.json`以包含新数据集的信息。
**五、LLaMA Factory训练**
- 提供丰富的训练功能,包括PT、SFT等多种训练模式,以及其他参数配置选项。
- 可通过预览命令保存执行脚本,以便未来直接使用而无需重复启动页面操作。
**附注**:
- 参观附录官网了解更多操作指令和示例。
通过上述步骤,用户可以高效利用LLaMA Factory进行NLP模型的训练和微调,满足各种特定任务的需求。