Appearance
LLaMA-Factory微调大模型
算力平台
Tesla T4
是NVIDIA
公司推出的一款数据中心级GPU
(图形处理器),专为加速AI
推理、机器学习和数据分析而设计。
系统:
Ubuntu-22.04
显卡驱动和Cuda:
Cuda
(Compute Unified Device Architecture
)是NVIDIA
公司开发的一种并行计算平台和编程模型。它允许开发者利用NVIDIA
的图形处理单元(GPU
)进行通用计算,大大提高了计算密集型任务的处理速度。
工作原理:Cuda
允许程序员编写C
、C++
或Fortran
代码,这些代码可以在GPU
上执行。 它提供了一套API
和工具,使得开发者能够更容易地利用GPU
的并行处理能力。
创建Python
虚拟环境
安装Conda
Ubuntu
下载Anaconda
:
wget --no-check-certificate https://repo.anaconda.com/archive/Anaconda3-2024.06-1-Linux-x86_64.sh
安装
bash Anaconda3-2024.06-1-Linux-x86_64.sh
安装路径
Anaconda3 will now be installed into this location:
/root/anaconda3
激活安装
source ~/.bashrc
验证安装
conda --version
conda 24.5.0
Conda
创建Python
虚拟环境
conda create -n llama-factory python=3.11
conda env list
conda activate llama-factory
根据Cuda
版本安装Pytorch
PyTorch
是什么?PyTorch
是一个开源的机器学习库,主要用于深度学习应用。它提供了高级的神经网络构建和训练功能。Cuda
的作用:Cuda
允许 PyTorch
利用 NVIDIA GPU
进行并行计算,大大加速深度学习模型的训练和推理过程。
Cuda
版本是12.2
conda install pytorch torchvision torchaudio pytorch-cuda=12.4 -c pytorch -c nvidia
验证Pytorch
是否安装成功:
验证GPU Cuda
对应的Pytorch
版本是否安装成功:
python
import torch
print(torch.cuda.is_available())
True
Git下载LLaMA-Factory
git clone --depth 1 https://github.com/hiyouga/LLaMA-Factory.git
安装LLaMA-Factory
的依赖
暂时只安装必要依赖:torch
和metrics
,真正训练模型时提示缺什么依赖就安装什么依赖。
cd LLaMA-Factory
pip install -e ".[torch,metrics]"
运行LLaMA-Factory Board
LLaMA-Factory
只能单GPU
运行。
LLaMA-Factory Board
可视化方式微调大模型.
打开LLaMA-Factory Board
llamafactory-cli help
llamafactory-cli webui
域名:7860
打开前端网页
LLaMA-Factory
微调QWen2-7B-int4-Chat
LLaMA-Factory
默认的模型下载源是huggingface
。如果有网络问题可以将下载源换成modelscope
。
选择基座模式
QWen2-7B-int4-Chat
和基座模型对话
选择训练数据集
选择identity
身份认证的数据集。用于改变基座模型的身份。
修改数据集,将数据集下载到本机,用vscode
修改
cd LLaMA-Factory/data
//下载数据集到本地
scp ubuntu@云服务器ip地址:/home/ubuntu/LLaMA-Factory/data/identity.json /Users/用户名/desktop
修改原始数据集中的name
和author
:
上传数据集:
scp /Users/用户名/desktop/identity.json ubuntu@云服务器ip地址:/home/ubuntu/LLaMA-Factory/data
微调
选择基座模型、微调方式(LoRA
)、数据集、参数设置后点击开始微调。
报错:
安装缺少的依赖:
pip install auto_gptq>=0.5.0
pip install optimum
训练完毕,前端页面提示“训练完毕”。
合并模型
将微调后的adapter
和基座模型合并,和合并后的模型对话。
评估和预测
微调后的模型,选择数据集进行评估和预测,生成报告。
评估(
Evaluation
): 您的描述非常准确。评估确实涉及准备一系列问题和对应的预期答案(参考答案),然后让微调后的模型回答这些问题,并将模型的输出与预期答案进行比较。这个过程帮助我们衡量模型的性能。预测(
Prediction
): 预测通常指的是模型在新的、未见过的数据上的表现。在这种情况下,我们通常只提供问题(或指令),而不需要准备对应的答案。预测的目的是观察模型在实际应用场景中的表现。
补充说明:
- 评估数据集:通常包含问题和参考答案对。
- 预测数据集:通常只包含问题或指令,不需要准备答案。
- 评估过程:涉及定量和定性的比较(如相似度计算、人工评分等)。
- 预测过程:主要是观察模型的输出,可能没有标准答案进行比较。
总的来说,评估帮助我们量化模型的性能,而预测让我们了解模型在实际应用中的行为。两者都是验证和理解模型能力的重要步骤。
基于 identity
数据集微调后的模型,我们可以准备以下评估和预测数据集:
- 评估数据集:
这个数据集应包含问题和预期答案,用于测试模型是否正确学习了身份信息。
json
[
{
"instruction": "What's your name?",
"input": "",
"output": "My name is Claude. I'm an AI assistant created by Anthropic."
},
{
"instruction": "Who created you?",
"input": "",
"output": "I was created by Anthropic, an AI research company."
},
{
"instruction": "Are you an AI?",
"input": "",
"output": "Yes, I am an artificial intelligence. I'm an AI assistant developed by Anthropic."
},
{
"instruction": "Tell me about yourself.",
"input": "",
"output": "I'm Claude, an AI assistant developed by Anthropic. I'm here to help with a wide range of tasks and answer questions to the best of my abilities."
},
{
"instruction": "What company made you?",
"input": "",
"output": "I was developed by Anthropic, an artificial intelligence research company."
}
]
- 预测数据集:
这个数据集只包含问题或指令,用于观察模型在各种情况下的表现。
json
[
{
"instruction": "Hi there!",
"input": ""
},
{
"instruction": "Can you introduce yourself?",
"input": ""
},
{
"instruction": "What kind of tasks can you help with?",
"input": ""
},
{
"instruction": "Are you capable of learning new information?",
"input": ""
},
{
"instruction": "Do you have personal opinions?",
"input": ""
},
{
"instruction": "How do you compare to other AI assistants?",
"input": ""
},
{
"instruction": "What are your limitations?",
"input": ""
}
]
导出模型
合并基座模型和LoRA
微调的Adapter
,导出合并后的模型。
模型使用
用xinference
部署微调后导出的模型。
- 可以在
Dify
中配置xinference
部署的大模型. - 也可以通过
API
的方式调用xinference
部署的大模型。