使用LLaMA-Factory对AI进行认知的微调
-
- 引言
- [1. 安装LLaMA-Factory](#1. 安装LLaMA-Factory)
-
- [1.1. 克隆仓库](#1.1. 克隆仓库)
- [1.2. 创建虚拟环境](#1.2. 创建虚拟环境)
- [1.3. 安装LLaMA-Factory](#1.3. 安装LLaMA-Factory)
- [1.4. 验证](#1.4. 验证)
- [2. 准备数据](#2. 准备数据)
-
- [2.1. 创建数据集](#2.1. 创建数据集)
- [2.2. 更新数据集信息](#2.2. 更新数据集信息)
- [3. 启动LLaMA-Factory](#3. 启动LLaMA-Factory)
- [4. 进行微调](#4. 进行微调)
-
- [4.1. 设置模型](#4.1. 设置模型)
- [4.2. 预览数据集](#4.2. 预览数据集)
- [4.3. 设置学习率等参数](#4.3. 设置学习率等参数)
- [4.4. 预览和执行命令](#4.4. 预览和执行命令)
- [4.5. 训练完成](#4.5. 训练完成)
- [5. 与微调后的模型聊天](#5. 与微调后的模型聊天)
-
- [5.1. 加载模型](#5.1. 加载模型)
- [5.2. 开始聊天](#5.2. 开始聊天)
- [5.3. 导出模型](#5.3. 导出模型)
- [5.4. 使用Vllm启动](#5.4. 使用Vllm启动)
- 总结
引言
本文将介绍如何使用LLaMA-Factory对AI进行微调,使其具备"忍者"的认知,并认知其是由"富士电视台"开发的。
1. 安装LLaMA-Factory
1.1. 克隆仓库
bash
git clone https://github.com/hiyouga/LLaMA-Factory.git
cd LLaMA-Factory
1.2. 创建虚拟环境
bash
conda create -n llama_factory python=3.11 -y
conda activate llama_factory
1.3. 安装LLaMA-Factory
bash
pip install -e '.[torch,metrics]'
1.4. 验证
python
import torch
print(torch.cuda.current_device())
print(torch.cuda.get_device_name(0))
print(torch.__version__)
print(torch.cuda.is_available())
2. 准备数据
2.1. 创建数据集
进入LLaMA-Factory目录:
bash
cd LLaMA-Factory
复制identity.json
并创建identity_ninja.json
:
bash
cp data/identity.json data/identity_ninja.json
将{``{name}}
和{``{author}}
替换为"忍者"和"富士电视台":
bash
sed -i 's/{{name}}/一人の忍者/g' data/identity_ninja.json
sed -i 's/{{author}}/フジテレビ/g' data/identity_ninja.json
验证:
bash
head data/identity_ninja.json
2.2. 更新数据集信息
编辑data/dataset_info.json
,添加新的数据集:
bash
vi data/dataset_info.json
添加以下内容:
json
"identity_ninja": {
"file_name": "identity_ninja.json"
},
3. 启动LLaMA-Factory
启动LLaMA-Factory:
bash
llamafactory-cli webui
在浏览器中访问http://localhost:7860。
4. 进行微调
4.1. 设置模型
设置模型名称和微调方法,本文使用Vicuna-v1.5-7B-Chat
作为基础模型。
4.2. 预览数据集
点击"预览数据集"按钮,确认数据。
4.3. 设置学习率等参数
设置学习率和训练轮数。
4.4. 预览和执行命令
设置输出目录,点击"预览命令"按钮确认命令,无误后点击"开始"。
命令示例:
bash
llamafactory-cli train \
--stage sft \
--do_train True \
--model_name_or_path lmsys/vicuna-7b-v1.5 \
--preprocessing_num_workers 16 \
--finetuning_type lora \
--template vicuna \
--flash_attn auto \
--dataset_dir data \
--dataset identity_ninja \
--cutoff_len 2048 \
--learning_rate 0.0001 \
--num_train_epochs 6.0 \
--max_samples 100000 \
--per_device_train_batch_size 2 \
--gradient_accumulation_steps 2 \
--lr_scheduler_type cosine \
--max_grad_norm 1.0 \
--logging_steps 5 \
--save_steps 100 \
--warmup_steps 0 \
--packing False \
--report_to none \
--output_dir saves/Vicuna-v1.5-7B-Chat/lora/train_vicuna_7b_identity_ninja_1e-4_epoch6 \
--bf16 True \
--plot_loss True \
--trust_remote_code True \
--ddp_timeout 180000000 \
--include_num_input_tokens_seen True \
--optim adamw_torch \
--lora_rank 8 \
--lora_alpha 16 \
--lora_dropout 0 \
--loraplus_lr_ratio 16 \
--lora_target all
4.5. 训练完成
训练完成后,会显示以下消息:
5. 与微调后的模型聊天
5.1. 加载模型
选择"检查点路径",点击"Chat"选项卡,然后点击"加载模型"。
5.2. 开始聊天
模型加载完成后,输入问题并确认AI的回答。此时,AI将具备"忍者(一人の忍者)"的认知,并认知其是由"富士电视台(フジテレビ)"开发的。
5.3. 导出模型
选择"检查点路径",点击"Export"选项卡,输入"导出目录",然后点击"导出"。
导出完成后,会显示"模型导出完成"消息。
5.4. 使用Vllm启动
使用以下命令在Vllm中启动导出的模型:
bash
CUDA_VISIBLE_DEVICES=3,1,0,2 VLLM_USE_V1=1 VLLM_WORKER_MULTIPROC_METHOD=spawn vllm serve /root/HuggingFaceCache/models--lmsys--vicuna-7b-v1.5-sft --trust-remote-code --served-model-name gpt-4 --gpu-memory-utilization 0.98 --tensor-parallel-size 4 --port 8000
总结
通过以上步骤,我们成功使用LLaMA-Factory对AI进行了微调,使其具备特定的认知。希望大家能够尝试并应用这些方法进行更多的定制化。