训练大模型

为什么需要模型微调?

通用大模型在特定领域或任务表现可能不佳,微调可实现领域专业化、适配不同任务、纠偏能力,还能保障数据安全,且成本效率高于从头训练,故需模型微调。相比长文本、知识库,微调能深度内化专业知识与任务逻辑,无需依赖实时检索或长文本处理,定制化强,显著提升特定场景性能,且数据安全可控,成本效率更高。

训练模型工具 LLaMa Factory

LLaMA Factory 是一个简单易用且高效的大型语言模型训练与微调平台。通过它,用户可以在无需编写任何代码的前提下,在本地完成上百种预训练模型的微调。https://github.com/hiyouga/LLaMA-Factory

Unsloth 是一个开源工具,专门用来加速大语言模型(LLMs)的微调过程。

我们可以在 LLaMa Factory 文档(https://llamafactory.readthedocs.io/zh-cn/latest/advanced/acceleration.html)看到,unsloth 作为一种加速手段出现在了 LLaMa Factory 的介绍里。

Unsloth 适合:

资源受限场景:由于其出色的内存优化能力和快速的微调速度,非常适合在资源受限的环境中使用,如个人开发者使用消费级 GPU 进行大模型微调,或者企业在低成本硬件上进行模型实验和开发。

快速迭代场景:对于需要快速迭代模型的场景,如学术研究中的实验验证、企业的快速原型开发等,Unsloth 的高效微调能力可以帮助用户在更短的时间内获得微调后的模型,加快项目进度。

LLaMa Factory 适合:

通用场景:由于其支持多种模型和训练算法,适用于各种通用的大语言模型训练和微调场景,无论是文本生成、情感分析还是机器翻译等任务,都可以使用 LLaMa Factory 进行模型的定制化训练。

企业级应用:提供了API Server 和一站式 WebUI Board,方便企业进行模型的管理和部署。

零代码:适合不会写代码或代码基础比较弱的同学快速上手进行微调。

LLaMA Factory 安装

1
2
3
git clone --depth 1 https://github.com/hiyouga/LLaMA-Factory.git
cd LLaMA-Factory
pip install -e ".[torch,metrics]"

安装虚拟环境Conda

Conda安装:

1
conda install anaconda::python

但是这里我们不建议 Clone 仓库后直接安装依赖,因为 Python 本身的依赖管理做的比较混乱,你可能会遇到各种 Python 依赖冲突的问题,建议使用虚拟环境,这里我们使用 Conda:

Conda 是一个开源的跨平台、语言无关的软件包管理系统与环境管理系统。它能方便地安装、运行和更新软件包及其依赖项,还可创建、切换和删除隔离的软件环境,广泛应用于数据科学、机器学习等领域

你可以根据自己的需求选择合适的发行版,从官方网站(Anaconda 或 Miniconda)下载对应操作系统的安装程序,然后按照安装向导进行安装。

安装完成后,打开终端(Windows 用户可以使用 Anaconda Prompt 或 PowerShell),输入以下命令验证 conda 是否安装成功:

1
2
3
conda --version

#如果安装成功,会显示 conda 的版本号

然后使用 conda create 命令创建一个新的虚拟环境。例如,创建一个名为 lf (LLaMA Factory 简称)的虚拟环境,并指定 Python 版本为 3.10:

1
2
3
conda create -n lf python=3.11

#其中,`-n` 或 `--name` 用于指定虚拟环境的名称,`python=3.`10 表示使用 Python 3.10 版本。

我们在终端中运行以下命令激活 lf 环境:

1
2
3
conda activate lf

#lf 就是虚拟环境的名字

激活后,终端的命令提示符会显示当前所处的虚拟环境名称,然后我们可以使用 conda env list 命令查看所有已创建的虚拟环境:

1
2
3
4
conda env list

#查看虚拟环境
#该命令会列出所有虚拟环境的名称和对应的路径(前面带 * 的为当前已激活的虚拟环境):

删除虚拟环境

1
2
3
4
5
6
7
8
9
10
11
# 删除名为 myenv 的虚拟环境

conda env remove --name myenv

# 删除名为 tensorflow 的虚拟环境

conda env remove --name tensorflow

# 如果环境名包含特殊字符或空格,用引号括起来

conda env remove --name "my env"

然后我们在此虚拟环境中安装LLaMA Factory

1
2
3
llamafactory-cli version

#安装完后验证LLaMA Factory安装是否成功,如成功会有版本号输出

然后我们测试执行 which llamafactory-cli 可以发现,llamafactory 被安装在了 conda 创建的虚拟环境目录下:

1
which llamafactory-cli

依赖安装完成后,我们执行:llamafactory-cli webui,可以启动 LLaMa Factory 的 webui:

1
2
3
llamafactory-cli webui

#或者看帮助文档

学习资料: