LLaMA - Factory安装部署及微调流程笔记
一、部署前准备
(一)明确依赖环境
-
必备依赖
- Python建议采用3.11版本,该版本在大模型系列中适配性佳,能更好地支持LLaMA - Factory的运行。
- CUDA可选择12.1或12.2版本。实际使用中,即便下载时Pytorch最高仅对应12.1(显卡最高支持12.2) ,也可正常安装使用。此外,torch、transformers、datasets、accelerate、peft、trl等库也必不可少,各有其最低和推荐版本,安装时务必严格遵循版本要求,否则易出现难以解决的未知问题。
- 举例来说,若torch版本不符合要求,可能导致模型训练过程中出现计算错误或无法正常调用GPU资源;transformers版本不匹配,可能影响模型的加载和微调功能。
-
可选依赖
-
deepspeed、bitsandbytes、vllm、flash - attn等属于可选依赖。
例如deepspeed可减少内存消耗,适用于内存资源有限的情况,但可能会使训练时间拉长。即便不安装这些可选依赖,LLaMA - Factory依然能够完成微调任务。
-
(二)安装NVIDIA显卡驱动
- 不同系统的安装方法
- Ubuntu系统:若本地服务器为Ubuntu系统,可参考《Ch.4在Ubuntu 22.04系统下部署运行ChatGLM3 - 6B模型》中的2.1安装显卡驱动小节,按照其中的详细步骤进行操作。
- Windows系统:若为Windows操作系统,则需参照《Ch.6在Windows系统下部署运行ChatGLM3 - 6B模型》中的2安装NVIDIA显卡驱动小节来完成安装。
- 云服务器的情况:若使用租赁的云服务器,如auto dl等,通常其显卡驱动环境已预设好,无需手动配置。
安装完成后,可通过运行 nvidia - smi
命令来验证是否安装成功(用于实时监控和管理NVIDIA GPU的性能和状态)。若想实现周期性监控,可使用 watch -n 1 nvidia - smi
命令,该命令会每秒刷新一次监控界面,若显示正常且无报错信息,则表明显卡驱动安装成功。
GPU显示版本号是最高支持 12.2,可以向下兼容。
(三)安装Anaconda
- 依据系统选择教程
- Ubuntu系统:在Ubuntu系统下,可依据《Ch.4在Ubuntu 22.04系统下部署运行ChatGLM3 - 6B模型》中的2.3安装Anaconda环境小节进行安装,其中包含了详细的安装步骤和注意事项。
- Windows系统:对于Windows系统,参考《Ch.6在Windows系统下部署运行ChatGLM3 - 6B模型》中的3.2.1方式一:使用Anaconda创建项目依赖环境(推荐)小节,按照指引完成安装。
- 安装后的验证操作:安装完成后,通过在命令行输入
conda --version
来验证Anaconda是否安装成功。若能正常输出版本信息,如conda 24.3.0
,则说明Anaconda已成功安装。
二、安装部署步骤
(一)创建虚拟环境
- 创建命令:借助Conda包版本工具,为LLaMA - Factory项目创建专门的Python虚拟运行环境。在命令行中输入
conda create --name llama_factory python==3.11
,该命令会创建一个名为llama_factory
的虚拟环境,且指定Python版本为3.11。 - 进入虚拟环境:创建完成后,使用
conda activate llama_factory
命令进入该虚拟环境。此后,所有与LLaMA - Factory相关的安装和操作都将在这个虚拟环境中进行,以避免不同项目之间的依赖冲突。
(二)安装Pytorch
-
选择安装命令:根据电脑显卡驱动的CUDA版本,在Pytorch官网(https://pytorch.org/get - started/previous - versions/ )查找适配的安装命令。
例如,若CUDA版本适配,可使用
conda install pytorch==2.4.0 torchvision==0.19.0 torchaudio==2.4.0 pytorch-cuda=12.1 -c pytorch -c nvidia
命令进行安装。 -
安装验证:安装完成后,通过在命令行执行
python -c "import torch; print(torch.cuda.is_available())"
来验证是否成功安装GPU版本的PyTorch。若输出为True
,则表示GPU版本的PyTorch已安装成功且CUDA环境配置正确;若输出为False
,则需要重新检查安装过程,可能是安装命令有误、CUDA版本不匹配或其他环境配置问题。
(三)下载项目文件
- git克隆方式
- 安装git软件包:进入LLaMA - Factory的官方Github(https://github.com/hiyouga/LLaMA - Factory ),推荐使用克隆方式下载项目文件。在克隆之前,需要先安装git软件包,在命令行输入
sudo apt install git
,等待安装完成。 - 执行克隆命令:安装好git后,执行克隆命令
git clone https://github.com/hiyouga/LLaMA-Factory.git
,该命令会将项目文件下载至本地当前路径。下载过程中,会显示下载进度信息,如remote: Enumerating objects: 7327, done.
等。
- 安装git软件包:进入LLaMA - Factory的官方Github(https://github.com/hiyouga/LLaMA - Factory ),推荐使用克隆方式下载项目文件。在克隆之前,需要先安装git软件包,在命令行输入
- 压缩包下载方式:除了git克隆,也可选择下载ZIP压缩包。在Github页面找到下载ZIP压缩包的按钮,下载完成后,将压缩包上传至服务器。若服务器支持直接拖拽上传,则可直接操作;若不支持,可使用
rz
等工具进行上传。上传完成后,需要安装unzip
软件来解压压缩包,在命令行输入sudo apt install unzip
。解压完成后,如果文件名带有-main
,为了方便后续使用,建议将其重命名为LLaMA - Factory
,例如执行mv LLaMA - Factory - main LLaMA - Factory
。
(四)升级pip版本
- 升级原因:在安装项目依赖之前,建议升级pip版本。旧版本的pip可能无法安装一些最新的包,或者在解析依赖关系时出现错误,导致后续安装失败。
- 升级命令:升级pip版本的命令为
python -m pip install --upgrade pip
,执行该命令后,pip会自动下载并安装最新版本。
(五)安装项目依赖
在LLaMA - Factory项目中,requirements.txt
文件涵盖了项目运行所需的所有Python包及其基础版本号。借助这个文件,能便捷地一次性安装项目必需的依赖,具体步骤如下:
-
进入项目文件夹
打开命令行工具,通过
cd LLaMA - Factory
命令进入LLaMA - Factory所在的文件夹。只有处于该文件夹路径下,后续命令才能正确找到对应的文件。 -
安装必需依赖
执行
pip install -r requirements.txt -i https://pypi.tuna.tsinghua.edu.cn/simple/
命令。(其中,
-r requirements.txt
表示依据requirements.txt
文件来安装依赖;-i https://pypi.tuna.tsinghua.edu.cn/simple/
指定了清华大学的PyPI镜像源,在网络不佳的情况下,使用该镜像源可加快下载速度,减少安装过程中因网络问题导致的失败风险。) -
安装LLaMA - Factory本身
运行
pip install -e ".[torch,metrics]" -i https://pypi.tuna.tsinghua.edu.cn/simple/
命令。该命令不仅会安装LLaMA - Factory,还会在系统中生成llamafactory - cli
命令。之后就能通过此命令来执行LLaMA - Factory的相关操作,比如模型训练、推理等。而-i
参数同样是为了使用国内镜像源,提升安装效率 。
(六)整体校验
- 校验PyTorch安装:在Python环境中执行以下命令来校验PyTorch的安装情况:
import torch
torch.cuda.current_device()
torch.cuda.get_device_name(0)
torch._version_
import torch
:用于导入PyTorch库,若导入失败,说明PyTorch安装存在问题。torch.cuda.current_device()
:返回当前选定的CUDA设备索引,如果能正确返回索引值,表明CUDA设备可被PyTorch识别。torch.cuda.get_device_name(0)
:返回索引为0的CUDA设备名称,若能正常返回设备名称,如'NVIDIA GeForce RTX 3090'
,则进一步验证了CUDA设备与PyTorch的连接正常。torch._version_
:返回当前安装的PyTorch版本,可确认安装的PyTorch版本是否符合预期。若以上命令均无报错,则说明PyTorch安装及相关配置正确。
- 校验llamafactory - cli命令:使用
llamafactory - cli train -h
命令来校验llamafactory - cli
命令是否正常工作。该命令会显示训练命令的帮助信息,包含各种训练参数的说明。若执行该命令时报错,提示No module named 'tyro'
,则需要使用pip install tyro
或在conda环境中使用conda install -c conda - forge tyro
进行安装。安装完成后,再次执行llamafactory - cli train -h
命令进行验证,直至无报错信息。
三、微调Qwen2.5模型
(一)下载模型
- 参考教程与命令:参考建元老师开源大模型讲解系列,使用
pip install modelscope
,modelscope download --model Qwen/Qwen2.5-1.5B-Instruct
命令下载Qwen2.5 - 1.5B - Instruct模型。该命令会从指定的模型库中下载模型文件。 - 查找与移动模型文件:下载完成后,如果指定路径下没有找到模型文件,可在默认路径
/root/.cache/modelscope/hub/
中查找。若在该路径下找到模型文件,为了便于管理和避免磁盘空间问题,可使用mv
命令将其移动到期望的路径下。例如,执行mv /root/.cache/modelscope/hub/Qwen /home/util/muyan
,将模型文件移动到/home/util/muyan
目录下。
(二)验证模型完整性
- 启动对话窗口验证:使用
CUDA_VISIBLE_DEVICES=0 llamafactory - cli webchat --model_name_or_path /home/util/muyan/Qwen/Qwen2_5 - 1_5B - Instruct --template qwen
命令启动对话窗口来验证模型是否完整。CUDA_VISIBLE_DEVICES=0
:指定当前程序使用第0张显卡来启动模型的web服务。model_name_or_path
:该参数可指定huggingface或modelscope上的标准模型名称,也可以使用本地下载的绝对路径。在本次验证中,使用的是本地下载模型的绝对路径/home/util/muyan/Qwen/Qwen2_5 - 1_5B - Instruct
。若使用–model_name,不采用本地路径指定模型时,模型会默认从 Hugging Face 下载。希望从魔搭社区下载,则需要设置环境变量等操作。若使用–model_path,则需指定本地下载好的模型的绝对路径,以准确调用本地模型。template
:指定模型问答时所使用的prompt模板,不同模型需要使用相应的模板。对于Qwen2.5 - 1.5B - Instruct模型,使用qwen
模板。模板的选择可参考https://github.com/hiyouga/LLaMA - Factory?tab=readme - ov - file#supported - models
,若模板选择错误,可能导致回答结果异常或出现重复生成等问题。
- 访问验证:启动成功后,在浏览器中访问
http://服务器地址:7860/
,其中“服务器地址”需替换为实际启动LLaMA - Factory的服务器地址。进入页面后,选择zh
将语言切换为简体中文,在对话窗口中输入问题,如“你好请问你是谁?”,若模型能正常回答且无报错信息,则表明模型下载完整且校验通过。
(三)llama_factory常用命令
- version:用于显示LLaMA - Factory的版本信息,方便用户了解当前使用的软件版本。
- train:执行命令行版本的训练任务,在微调模型时会用到,可根据不同的训练需求设置相应的参数。
- chat:进行命令行版本的推理chat,但相比之下,该命令的使用频率不如
webchat
或webui
高,因为后两者提供了更直观的交互界面。 - export:负责模型的合并和导出工作,例如将微调后的模型进行合并,以便后续部署或使用。
- api:启动API server,为其他应用程序提供接口调用,实现与其他系统的集成。
- eval:使用mmlu等标准数据集对模型进行评测,评估模型在不同任务上的性能表现。
- webchat:启动前端版本的纯推理chat页面,该页面仅包含对话界面,方便用户与模型进行简单的对话交互。
- webui:启动LlamaBoard前端页面,该页面集成了可视化训练、预测、chat、模型合并等多个子页面,功能更为丰富,是实际使用中较为常用的命令。