当前位置: 首页 > news >正文

使用LLaMA-Factory对AI进行认知的微调

使用LLaMA-Factory对AI进行认知的微调

    • 引言
    • 1. 安装LLaMA-Factory
      • 1.1. 克隆仓库
      • 1.2. 创建虚拟环境
      • 1.3. 安装LLaMA-Factory
      • 1.4. 验证
    • 2. 准备数据
      • 2.1. 创建数据集
      • 2.2. 更新数据集信息
    • 3. 启动LLaMA-Factory
    • 4. 进行微调
      • 4.1. 设置模型
      • 4.2. 预览数据集
      • 4.3. 设置学习率等参数
      • 4.4. 预览和执行命令
      • 4.5. 训练完成
    • 5. 与微调后的模型聊天
      • 5.1. 加载模型
      • 5.2. 开始聊天
      • 5.3. 导出模型
      • 5.4. 使用Vllm启动
    • 总结

引言

本文将介绍如何使用LLaMA-Factory对AI进行微调,使其具备“忍者”的认知,并认知其是由“富士电视台”开发的。

image.png

1. 安装LLaMA-Factory

1.1. 克隆仓库

git clone https://github.com/hiyouga/LLaMA-Factory.git
cd LLaMA-Factory

1.2. 创建虚拟环境

conda create -n llama_factory python=3.11 -y
conda activate llama_factory

1.3. 安装LLaMA-Factory

pip install -e '.[torch,metrics]'

1.4. 验证

import torch
print(torch.cuda.current_device())
print(torch.cuda.get_device_name(0))
print(torch.__version__)
print(torch.cuda.is_available())

image.png

2. 准备数据

2.1. 创建数据集

进入LLaMA-Factory目录:

cd LLaMA-Factory

复制identity.json并创建identity_ninja.json

cp data/identity.json data/identity_ninja.json

{{name}}{{author}}替换为“忍者”和“富士电视台”:

sed -i 's/{{name}}/一人の忍者/g' data/identity_ninja.json
sed -i 's/{{author}}/フジテレビ/g' data/identity_ninja.json

验证:

head data/identity_ninja.json

image-20250201092802054.png

2.2. 更新数据集信息

编辑data/dataset_info.json,添加新的数据集:

vi data/dataset_info.json

添加以下内容:

  "identity_ninja": {"file_name": "identity_ninja.json"},

3. 启动LLaMA-Factory

启动LLaMA-Factory:

llamafactory-cli webui

在浏览器中访问http://localhost:7860。

4. 进行微调

4.1. 设置模型

设置模型名称和微调方法,本文使用Vicuna-v1.5-7B-Chat作为基础模型。

image.png

4.2. 预览数据集

点击“预览数据集”按钮,确认数据。

image.png

4.3. 设置学习率等参数

设置学习率和训练轮数。

image.png

4.4. 预览和执行命令

设置输出目录,点击“预览命令”按钮确认命令,无误后点击“开始”。

image.png

命令示例:

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. 训练完成

训练完成后,会显示以下消息:

image.png

5. 与微调后的模型聊天

5.1. 加载模型

选择“检查点路径”,点击“Chat”选项卡,然后点击“加载模型”。

image.png

5.2. 开始聊天

模型加载完成后,输入问题并确认AI的回答。此时,AI将具备“忍者(一人の忍者)”的认知,并认知其是由“富士电视台(フジテレビ)”开发的。

image.png

5.3. 导出模型

选择“检查点路径”,点击“Export”选项卡,输入“导出目录”,然后点击“导出”。

image.png

导出完成后,会显示“模型导出完成”消息。

5.4. 使用Vllm启动

使用以下命令在Vllm中启动导出的模型:

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进行了微调,使其具备特定的认知。希望大家能够尝试并应用这些方法进行更多的定制化。

http://www.lryc.cn/news/530763.html

相关文章:

  • @Nullable 注解
  • Arduino大师练成手册 -- 控制 AS608 指纹识别模块
  • Mask R-CNN与YOLOv8的区别
  • 在Ubuntu上使用Docker部署DeepSeek
  • MySQL的覆盖索引
  • 【Numpy核心编程攻略:Python数据处理、分析详解与科学计算】2.12 连续数组:为什么contiguous这么重要?
  • 在React中使用redux
  • lstm预测
  • 《 C++ 点滴漫谈: 二十五 》空指针,隐秘而危险的杀手:程序崩溃的真凶就在你眼前!
  • 【AI】探索自然语言处理(NLP):从基础到前沿技术及代码实践
  • 2025年Android开发趋势全景解读
  • C#面试常考随笔11:Dictionary<K, V>、Hashtable的内部实现原理是什么?效率如何?
  • Linux防火墙基础
  • Qt u盘自动升级软件
  • 【Conda 和 虚拟环境详细指南】
  • Python递归函数深度解析:从原理到实战
  • OpenGL学习笔记(五):Textures 纹理
  • 【TypeScript】基础:数据类型
  • Notepad++消除生成bak文件
  • Android NDK
  • 内部知识库助力组织智力激发与信息共享实现业绩增长
  • 通过F12收集的信息
  • 用Python替代OpenMV IDE显示openmv USB 图像
  • c语言:编译和链接(详解)
  • 数据结构【单链表操作大全详解】【c语言版】(只有输入输出为了方便用的c++)
  • leetcode27.删除有序数组中的重复项
  • [c语言日寄]越界访问:意外的死循环
  • 【c++11】包装器
  • 信息学奥赛一本通 1422:【例题1】活动安排
  • 数据库、数据仓库、数据湖有什么不同