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

news/2025/2/23 0:43:01/

前言

  微调模型通常比从零开始训练一个模型的技术要求低。公司不需要拥有大量的深度学习专家,利用现有的开源工具和库(如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 安装环境

官网推荐的环境:
在这里插入图片描述

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. 注意事项

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

在这里插入图片描述
搜索发现是环境优先级问题:

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试试。


http://www.ppmy.cn/news/1573183.html

相关文章

Linux下的Python开发环境

以下是在Ubuntu 22.04上安装XFCE桌面、配置中文环境、中文输入法、远程桌面;安装anaconda、PyCharm、谷歌浏览器等的步骤: 首先,正常安装完毕 Ubuntu 22.04 Linux。如果选择某些云平台的ECS服务器,可以用十几秒钟完成Ubuntu 22.0…

【Python】如何在 Linux/Windows 系统中设置 PYTHONPATH 环境变量

什么是 PYTHONPATH? PYTHONPATH 是一个环境变量,它告诉 Python 解释器在哪些目录中查找要导入的模块。这对于包含不在标准目录中的自定义模块非常有用。 Linux 系统中设置 PYTHONPATH 环境变量 在 Python 开发环境中,正确设置 PYTHONPATH …

【工具】CRAmed微生物数据的中介分析

文章目录 介绍使用安装教程案例 参考 介绍 许多微生物组研究揭示了微生物组与人类健康和疾病之间的重要联系。这些发现促使研究人员探索微生物组在人类复杂特征和疾病中的因果作用。然而,微生物组数据的复杂性给统计分析和因果关系的解释带来了挑战。 引入了一个新…

【私人笔记】Web前端

*内容网址1Vue官网Vue.js - 渐进式 JavaScript 框架 | Vue.js2Next.js 官网(英文)Next.js by Vercel - The React Framework3Next.js 文档(中文)简介 | Next.js 中文文档4React官网(中文)https://react.doc…

NAT(网络地址转换)技术详解:网络安全渗透测试中的关键应用与防御策略

目录 NAT的作用 NAT类型 NAT工作流程示例 NAT 转换技术的原理 源地址转换(SNAT,Source NAT): 目标地址转换(DNAT,Destination NAT): 端口地址转换(PAT&#xff0c…

基于Python的Django+Hive白酒数据推荐系统+毕业论文+指导搭建视频

技术栈:pythondjangohivemysqlvue 当人们打开系统的网址后,首先看到的就是首页界面。在这里,人们能够看到系统的导航条,通过导航条导航进入各功能展示页面进行操作。在个人中心页面可以对个人中心、修改密码、我的收藏等进行详细操…

作为高级测试工程师,如何用AI进行进一步提升?DeepSpeek的回答

作为高级测试工程师,利用AI技术进行职业提升可以从以下几个方向入手,结合行业趋势、技术工具和实际场景进行突破: 一、AI在测试中的核心应用场景 智能测试用例生成与优化 应用场景:通过AI分析需求文档、历史缺陷数据、用户行为日志…

基于 Filebeat 的日志收集

在现代分布式系统中,日志数据作为关键的监控与故障排查依据,越来越受到重视。本文将深入探讨 Filebeat 的技术原理、配置方法及在 ELK(Elasticsearch、Logstash、Kibana)生态系统中的应用,帮助开发者构建高效、稳定的日…