大预言模型|微调大预言模型初探索(LLaMA-Factory)(1)

前言

  微调模型通常比从零开始训练一个模型的技术要求低。公司不需要拥有大量的深度学习专家,利用现有的开源工具和库(如Hugging Face的Transformers等),中小型公司可以轻松地使用和微调大型模型,从而快速实现AI能力的集成。因此,学会微调大模型就很有必要。

1.微调方法

1.1 全参数微调

全参数微调是指预训练模型的所有参数进行调整和优化,以使模型能够适应特定任务。具体来说,就是通过训练数据对预训练模型的所有参数(包括权重和偏置等)进行微调,使其更好地执行目标任务。

1.2 部分参数微调

1.2.1 低秩适配(Low-Rank Adaptation, LoRA)

  LoRA方法通过引入低秩矩阵来代替全连接层中的权重更新。它通过对模型中的部分权重矩阵进行低秩分解,从而减少需要微调的参数量。

1.2.2 适配器方法(Adapters)

  适配器方法通过在预训练模型中插入小型的适配器模块,保持大部分原始模型的参数不变,只微调适配器模块。这种方法显著减少了需要微调的参数数量,同时保持了迁移能力。

1.2.3 Prompt Tuning(提示微调)

Prompt Tuning是通过优化输入的"提示"或"前缀"来适应新任务,而不是微调模型的所有参数。这种方法特别适用于自然语言处理任务,在不修改模型本身的情况下,通过改变输入格式来提高模型的任务适应性。

具体部分参数微调方法还有很多,感兴趣的可以自己去探索。

2.实践!!

网上得来终觉浅,绝知此事要躬行,光看理论不实践,这不是耍流氓吗??!!

推荐实践项目:LLaMA-Factory

按照官网教程去安装:

2.1 安装环境

官网推荐的环境:

python 复制代码
git clone --depth 1 https://github.com/hiyouga/LLaMA-Factory.git
cd LLaMA-Factory
conda create -n llama-lora python=3.10
conda activate llama-lora
pip install -e ".[torch,metrics]"

如果嫌太慢的话,可以换源去安装。

安装完成后,可以去校验校验教程网址

3. 注意事项

3.1.这里我llamafactory-cli train -h校验的时候,报错:

搜索发现是环境优先级问题:

cmd 复制代码
sudo vim  /etc/profile
# 将你的conda环境放到profile里面
export PATH="/home/hxgk/anaconda3/envs/lora-llama/bin:$PATH"
source /etc/profile

3.2 yaml文件配置

1.将LLaMA-Factory/examples/accelerate/fsdp_config.yaml第19行的num_processes设置成你的显卡个数。

2.将LLaMA-Factory/examples/train_lora/llama3_lora_sft.yaml中的eval全部注释掉,如图所示:

两个有一个没设置都有可能出现:

sys.exit(load_entry_point('torch==2.5.1', 'console_scripts', 'torchrun')())

...

torch.distributed.elastic.multiprocessing.errors.ChildFailedError:

这样的报错。

3.2 具体微调模型的显存大小不能全信官网

官网数据:

我刚开始使用Llama3-8B,使用lora方法去微调模型(8张8g显存显卡),理论上只会使用16g-32g显存,我64g显存绰绰有余,结果直接报OOM,结果气的我直接下载了llama-1B才成功微调。

总结

整体来说,LLaMA-Factory这个项目的坑不少,需要仔细一点,我现在也刚刚跑通,后续考虑制作自己的数据集,然后微调一个chatbox试试。

相关推荐
硅谷秋水19 分钟前
从VLM规划器到机器人智能体:面向依赖历史信息的操控任务自演化框架
人工智能·机器学习·语言模型·机器人
Dawson Zhu16 小时前
从空间 Scaling 到时间 Scaling
人工智能·语言模型·架构·aigc·agi
xiaoye-duck17 小时前
《C++ 项目:手写大模型接入 SDK》Ollama接口设计(上):初始化、全量响应实现和测试
开发语言·网络·c++·语言模型
xiaoye-duck1 天前
《C++ 项目:手写大模型接入 SDK》LLMManager架构设计与实现
开发语言·网络·c++·语言模型
Dawson Zhu1 天前
【LLM推理与Serving⑧】多机多卡Serving:TP/PP/负载均衡与弹性扩缩容全攻略
人工智能·语言模型·架构·aigc·agi
硅谷秋水1 天前
OpenRUA 方法分析
人工智能·机器学习·语言模型·机器人
Bode_20021 天前
大语言模型与运筹规划双闭环共生(LLM-OR):体系架构、理论机理与落地实践
人工智能·语言模型·架构
Dawson Zhu2 天前
【LLM推理与Serving⑤】Prefix Cache前缀缓存:让重复prompt不再重复计算
人工智能·语言模型·架构·aigc·agi
一条大祥脚2 天前
llama.cpp 深度解析:从 GGUF 到本地推理的事实标准
llama
lisw053 天前
理解推理大语言模型的可监控性!
人工智能·语言模型·自然语言处理