LLaMA - Factory安装部署及微调流程

LLaMA - Factory安装部署及微调流程

LLaMA - Factory安装部署及微调流程笔记

一、部署前准备

(一)明确依赖环境

  1. 必备依赖
    • Python建议采用3.11版本,该版本在大模型系列中适配性佳,能更好地支持LLaMA - Factory的运行。
    • CUDA可选择12.1或12.2版本。实际使用中,即便下载时Pytorch最高仅对应12.1(显卡最高支持12.2) ,也可正常安装使用。此外,torch、transformers、datasets、accelerate、peft、trl等库也必不可少,各有其最低和推荐版本,安装时务必严格遵循版本要求,否则易出现难以解决的未知问题。
  2. 可选依赖

deepspeed、bitsandbytes、vllm、flash - attn等属于可选依赖。
例如deepspeed可减少内存消耗,适用于内存资源有限的情况,但可能会使训练时间拉长。即便不安装这些可选依赖,LLaMA - Factory依然能够完成微调任务。

在这里插入图片描述

举例来说,若torch版本不符合要求,可能导致模型训练过程中出现计算错误或无法正常调用GPU资源;transformers版本不匹配,可能影响模型的加载和微调功能。

在这里插入图片描述

(二)安装NVIDIA显卡驱动

  1. 不同系统的安装方法
    • Ubuntu系统:若本地服务器为Ubuntu系统,可参考《Ch.4在Ubuntu 22.04系统下部署运行ChatGLM3 - 6B模型》中的2.1安装显卡驱动小节,按照其中的详细步骤进行操作。
    • Windows系统:若为Windows操作系统,则需参照《Ch.6在Windows系统下部署运行ChatGLM3 - 6B模型》中的2安装NVIDIA显卡驱动小节来完成安装。
  2. 云服务器的情况:若使用租赁的云服务器,如auto dl等,通常其显卡驱动环境已预设好,无需手动配置。

安装完成后,可通过运行 nvidia - smi 命令来验证是否安装成功(用于实时监控和管理NVIDIA GPU的性能和状态)。若想实现周期性监控,可使用 watch -n 1 nvidia - smi 命令,该命令会每秒刷新一次监控界面,若显示正常且无报错信息,则表明显卡驱动安装成功。

在这里插入图片描述

GPU显示版本号是最高支持 12.2,可以向下兼容。

在这里插入图片描述

(三)安装Anaconda

  1. 依据系统选择教程
    • Ubuntu系统:在Ubuntu系统下,可依据《Ch.4在Ubuntu 22.04系统下部署运行ChatGLM3 - 6B模型》中的2.3安装Anaconda环境小节进行安装,其中包含了详细的安装步骤和注意事项。
    • Windows系统:对于Windows系统,参考《Ch.6在Windows系统下部署运行ChatGLM3 - 6B模型》中的3.2.1方式一:使用Anaconda创建项目依赖环境(推荐)小节,按照指引完成安装。
  2. 安装后的验证操作:安装完成后,通过在命令行输入conda --version来验证Anaconda是否安装成功。若能正常输出版本信息,如conda 24.3.0,则说明Anaconda已成功安装。

二、安装部署步骤

(一)创建虚拟环境

  1. 创建命令:借助Conda包版本工具,为LLaMA - Factory项目创建专门的Python虚拟运行环境。在命令行中输入conda create --name llama_factory python==3.11,该命令会创建一个名为llama_factory的虚拟环境,且指定Python版本为3.11。
  2. 进入虚拟环境:创建完成后,使用conda activate llama_factory命令进入该虚拟环境。此后,所有与LLaMA - Factory相关的安装和操作都将在这个虚拟环境中进行,以避免不同项目之间的依赖冲突。

(二)安装Pytorch

  1. 选择安装命令:根据电脑显卡驱动的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命令进行安装。
  2. 安装验证:安装完成后,通过在命令行执行python -c "import torch; print(torch.cuda.is_available())"来验证是否成功安装GPU版本的PyTorch。若输出为True,则表示GPU版本的PyTorch已安装成功且CUDA环境配置正确;若输出为False,则需要重新检查安装过程,可能是安装命令有误、CUDA版本不匹配或其他环境配置问题。

(三)下载项目文件

  1. 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.等。
  2. 压缩包下载方式:除了git克隆,也可选择下载ZIP压缩包。在Github页面找到下载ZIP压缩包的按钮,下载完成后,将压缩包上传至服务器。若服务器支持直接拖拽上传,则可直接操作;若不支持,可使用rz等工具进行上传。上传完成后,需要安装unzip软件来解压压缩包,在命令行输入sudo apt install unzip。解压完成后,如果文件名带有-main,为了方便后续使用,建议将其重命名为LLaMA - Factory,例如执行mv LLaMA - Factory - main LLaMA - Factory

(四)升级pip版本

  1. 升级原因:在安装项目依赖之前,建议升级pip版本。旧版本的pip可能无法安装一些最新的包,或者在解析依赖关系时出现错误,导致后续安装失败。
  2. 升级命令:升级pip版本的命令为python -m pip install --upgrade pip,执行该命令后,pip会自动下载并安装最新版本。

(五)安装项目依赖

在LLaMA - Factory项目中,requirements.txt文件涵盖了项目运行所需的所有Python包及其基础版本号。借助这个文件,能便捷地一次性安装项目必需的依赖,具体步骤如下:

  1. 进入项目文件夹打开命令行工具,通过cd LLaMA - Factory命令进入LLaMA - Factory所在的文件夹。只有处于该文件夹路径下,后续命令才能正确找到对应的文件。
  2. 安装必需依赖执行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镜像源,在网络不佳的情况下,使用该镜像源可加快下载速度,减少安装过程中因网络问题导致的失败风险。)
  3. 安装LLaMA - Factory本身运行pip install -e ".[torch,metrics]" -i https://pypi.tuna.tsinghua.edu.cn/simple/命令。该命令不仅会安装LLaMA - Factory,还会在系统中生成llamafactory - cli命令。之后就能通过此命令来执行LLaMA - Factory的相关操作,比如模型训练、推理等。而-i参数同样是为了使用国内镜像源,提升安装效率 。

(六)整体校验

  1. 校验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安装及相关配置正确。
  1. 校验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模型

(一)下载模型

  1. 参考教程与命令:参考建元老师开源大模型讲解系列,使用 pip install modelscopemodelscope download --model Qwen/Qwen2.5-1.5B-Instruct命令下载Qwen2.5 - 1.5B - Instruct模型。该命令会从指定的模型库中下载模型文件。
  2. 查找与移动模型文件:下载完成后,如果指定路径下没有找到模型文件,可在默认路径/root/.cache/modelscope/hub/中查找。若在该路径下找到模型文件,为了便于管理和避免磁盘空间问题,可使用mv命令将其移动到期望的路径下。例如,执行mv /root/.cache/modelscope/hub/Qwen /home/util/muyan,将模型文件移动到/home/util/muyan目录下。

(二)验证模型完整性

在这里插入图片描述
  1. 启动对话窗口验证:使用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常用命令

  1. version:用于显示LLaMA - Factory的版本信息,方便用户了解当前使用的软件版本。
  2. train:执行命令行版本的训练任务,在微调模型时会用到,可根据不同的训练需求设置相应的参数。
  3. chat:进行命令行版本的推理chat,但相比之下,该命令的使用频率不如webchatwebui高,因为后两者提供了更直观的交互界面。
  4. export:负责模型的合并和导出工作,例如将微调后的模型进行合并,以便后续部署或使用。
  5. api:启动API server,为其他应用程序提供接口调用,实现与其他系统的集成。
  6. eval:使用mmlu等标准数据集对模型进行评测,评估模型在不同任务上的性能表现。
  7. webchat:启动前端版本的纯推理chat页面,该页面仅包含对话界面,方便用户与模型进行简单的对话交互。
  8. webui:启动LlamaBoard前端页面,该页面集成了可视化训练、预测、chat、模型合并等多个子页面,功能更为丰富,是实际使用中较为常用的命令。

Read more

AI绘画提示词生成器:从原理到实战的开发者指南

快速体验 在开始今天关于 AI绘画提示词生成器:从原理到实战的开发者指南 的探讨之前,我想先分享一个最近让我觉得很有意思的全栈技术挑战。 我们常说 AI 是未来,但作为开发者,如何将大模型(LLM)真正落地为一个低延迟、可交互的实时系统,而不仅仅是调个 API? 这里有一个非常硬核的动手实验:基于火山引擎豆包大模型,从零搭建一个实时语音通话应用。它不是简单的问答,而是需要你亲手打通 ASR(语音识别)→ LLM(大脑思考)→ TTS(语音合成)的完整 WebSocket 链路。对于想要掌握 AI 原生应用架构的同学来说,这是个绝佳的练手项目。 从0到1构建生产级别应用,脱离Demo,点击打开 从0打造个人豆包实时通话AI动手实验 AI绘画提示词生成器:从原理到实战的开发者指南 背景与痛点 AI绘画的兴起让提示词(Prompt)成为连接创意与生成结果的关键纽带。然而在实际开发中,构建一个高效的提示词生成器常面临以下挑战: * 质量不稳定:生成的提示词可能过于笼统(如"

llama.cpp最新版Windows编译全记录:从源码下载到模型测试(含w64devkit配置)

llama.cpp Windows编译实战:从工具链配置到模型部署全解析 在本地运行大型语言模型正成为开发者探索AI能力的新趋势,而llama.cpp以其高效的C++实现和跨平台特性脱颖而出。本文将深入探讨Windows平台下llama.cpp的完整编译流程,特别针对开发者常遇到的环境配置、API兼容性和性能优化问题进行系统化梳理。 1. 开发环境准备与工具链配置 Windows平台编译C++项目需要精心配置工具链,而w64devkit提供了一个轻量级但功能完整的解决方案。与常见的Visual Studio或MinGW-w64不同,w64devkit将所有必要工具集成在单个便携包中,特别适合需要干净编译环境的开发者。 核心组件获取步骤: 1. 访问w64devkit官方GitHub仓库,下载最新稳定版本(当前推荐1.23.0) 2. 解压至不含中文和空格的路径,例如D:\dev\w64devkit-1.23.0 3. 验证基础功能:运行w64devkit.exe后执行gcc --version 注意:Windows 7用户需确保系统已安装KB2533623补丁,否则

春晚机器人刷屏背后:AI大模型风口已来,建议收藏!普通人也能上车的高薪赛道

春晚机器人刷屏背后:AI大模型风口已来,建议收藏!普通人也能上车的高薪赛道

春晚落幕之后,全网都在热议同一个话题:这届晚会的机器人含量也太高了! 不管是主舞台上灵活走位、完成高难度动作的人形机器人,还是在幕后支撑节目创意、视觉效果的AI大模型,整台晚会从头到尾都被满满的科技感包围。 很多人看完只觉得新鲜、震撼,却没看懂其中真正的信号: 春晚机器人刷屏,从来不是一场单纯的技术表演,而是一个非常直白的行业信号——AI和机器人已经彻底走出实验室,真正走进普通人的生活,还悄悄带火了两个藏在幕后的黄金赛道。 最先被引爆的,就是机器人租赁这个小众又暴利的生意。 春晚热度一上来,线下机器人需求直接爆发。 机器人租赁服务平台擎天租公布了一组非常直观的数据:今年春节期间,平台订单环比增长近70%。 图片来源网络,侵删 可能很多人会好奇:过年租机器人,到底能用来干嘛? 其实应用场景比你想象中更接地气。 商场需要迎宾机器人引流揽客,景区需要讲解机器人服务游客,商圈活动、企业年会需要互动机器人带动气氛,就连很多门店引流、社区活动,都愿意租一台机器人撑场面、吸眼球。 以前过年,大家拼的是年味、是团聚;现在年轻人更追求新潮体验,机器人不用高价购买,按天租赁就能用,

Nanbeige4.1-3B多轮对话效果展示:Chainlit中持续追问、记忆保持、角色扮演实录

Nanbeige4.1-3B多轮对话效果展示:Chainlit中持续追问、记忆保持、角色扮演实录 1. 引言:当小模型遇上大智慧 最近在测试各种开源模型时,我遇到了一个让人眼前一亮的“小家伙”——Nanbeige4.1-3B。说实话,刚开始看到“3B”这个参数规模时,我并没有抱太高期望。毕竟现在动辄几十B、上百B的模型太多了,3B能有什么表现? 但实际测试下来,这个模型给了我不少惊喜。特别是在多轮对话场景下,它的表现完全超出了我对这个参数规模模型的预期。 今天这篇文章,我就想带大家看看,这个“小身材”的模型,在Chainlit前端配合下,到底能展现出什么样的“大智慧”。我会通过几个真实的对话场景,展示它在持续追问、记忆保持、角色扮演等方面的实际效果。 2. 模型与部署环境简介 2.1 Nanbeige4.1-3B:小参数,大能力 Nanbeige4.1-3B是基于Nanbeige4-3B-Base构建的增强版本。简单来说,它是在基础模型上,通过进一步的监督微调和强化学习优化而来的。