欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 文旅 > 文化 > llama-factory微调

llama-factory微调

2025/3/20 4:05:41 来源:https://blog.csdn.net/hh051020/article/details/146306872  浏览:    关键词:llama-factory微调

大模型微调实操--llama-factory

llama-factory环境安装

前置准备

英伟达显卡驱动更新地址

下载 NVIDIA 官方驱动 | NVIDIA

cuda下载安装地址

CUDA Toolkit 12.2 Downloads | NVIDIA Developer

pytorch下载安装地址

Previous PyTorch Versions | PyTorch

llama-factory项目和文档地址 https://github.com/hiyouga/LLaMA-Factory

安装 - LLaMA Factory

python环境下载地址 Download Python | Python.org miniconda下载地址

Miniconda - Anaconda

git下载地址

Git - Downloads

硬件环境校验

显卡驱动和CUDA的安装 下载 NVIDIA 官方驱动 | NVIDIA CUDA Toolkit 12.2 Downloads | NVIDIA Developer使用以下命令做最简单的校验

打开 cmd 输入,若出现类似内容则安装成功

软件环境准备

拉取LLaMA-Factory代码

没有git先安装一个git:Git - Downloads也可以直接下载代码解压缩

运行以下指令以安装 LLaMA-Factory 及其依赖:

创建虚拟环境

最好是先建一个虚环境来安装

比如用conda建立虚环境,不过要先安装conda或者miniconda python环境下载地址:Download Python | Python.org miniconda下载地址:Miniconda - Anaconda

备注:

如果 venv创建的虚环境,比如在LLaMA-Factory目录创建一个python310的子目录

量化环境

如果您想在 Windows 上启用量化 LoRA(QLoRA),请根据您的 CUDA 版本选择适当的 bitsandbytes]

发行版本

QLoRA最好安装cuda11.8以上的版本如12.1,特别是使用AWQ等量化算法的基础模型时,cuda11.8可能出现一些pytorch的错误

如果大模型使用awq量化需要安装autoawq模块

安装后使用以下命令做简单的正确性校验

如果识别不到可用的GPU,则说明环境准备还有问题,需要先进行处理,才能往后进

那多大的模型用什么训练方式需要多大的GPU呢,可参考 https://github.com/hiyouga/LLaMA-Factory? tab=readme-ov-file#hardware-requirement

启动 LLaMA-Factory

同时对本库的基础安装做一下校验,输入以下命令获取训练相关的参数指导, 否则说明库还没有安装成功

llamafactory-cli命令在使用的python虚拟换的scripts目录下,正常激活虚拟目录如下命令就可以使用

注意:目前webui版本只支持单机单卡和单机多卡,如果是多机多卡请使用命令行版本

如果要开启 gradio的share功能,或者修改端口号

如图所示,上述的多个不同的大功能模块都通过不同的tab进行了整合,提供了一站式的操作体验。

手动下载模型

以Meta-Llama-3-8B-Instruct为例,通过huggingface 下载(可能需要先提交申请通过),当然我们一般就不去下载meta官方的原始模型

modelscope 下载(适合中国大陆网络环境)

代码下载模型

用modelscope库下载

使用transformer来编写推理代码

微调数据集

偏好数据

sft微调一般用alpaca格式,dpo优化的偏好数据一般用sharegpt 格式

DPO优化偏好数据集

下面是DPO优化偏好数据集示例:

https://huggingface.co/datasets/hiyouga/DPO-En-Zh-20k/viewer/zh?row=5

HelpSteer2

英伟达开源的HelpSteer2 https://huggingface.co/datasets/nvidia/HelpSteer2

论文:https://arxiv.org/pdf/2406.08673

数据集注册

龙哥这儿拿甄嬛传里的语料当做自定义数据集举例

我们先下载 huanhuan.json数据集,是alpaca格式数据

可以在这儿下载:魔搭社区

微调过程参数解析微调命令

也可以将参数安装格式保存为ymal文件,然后如下使用,具体格式可以参考根目录下的examples文件夹下的例子

如果是windows下,在cmd窗口中,把命令中\和换行删掉,当成一行命名即可

上面命令可以用来基于qwen2-7b训练huanhuan_chat的lora

中断继续训练

中断之后继续训练,可以使用下面命令,训练步数也会从保存的checkpoint处开始,比如checkpoint保存点是400步,但是在450步中断,会从400步开始继续

当然使用命令训练,没有用webui看loss那么直观,需要加一个命令

在训练结束后,loss图会保存在 --output_dir 指定的目录中

如果可以通过添加命令,从检查点开始继续训练,但训练集会从头开始训练,适合用新数据集继续训练

也可以在webui中指定 检查定路径,把路径复制进去

模型评估

大模型主流评测 benchmark

虽然大部分同学的主流需求是定制一个下游的垂直模型,但是在部分场景下,也可能有同学会使用本项目来做更高要求的模型训练,用于大模型刷榜单等,比如用于评测mmlu等任务。当然这类评测同样可以用于评估大模型二次微调之后,对于原来的通用知识的泛化能力是否有所下降。(因为一个好的微调,尽量是在具备垂直领域知识的同时,也保留了原始的通用能力)

在完成模型训练后,您可以通过 llamafactory-cli eval

来评估模型效果。

配置示例文件具体如下:

本脚本改编自 https://github.com/hiyouga/LLaMA-Factory/blob/main/examples/train_lora/llama3_l ora_eval.yaml

如果是chat版本的模型

windows下,评测命令实例:

大语言模型评估集

两个开源自动化评测项目:

https://github.com/open-compass/opencompass https://github.com/EleutherAI/lm-evaluation-harness/tree/main

批量推理

环境准备

使用自动化的bleu和 rouge等常用的文本生成指标来做评估。指标计算会使用如下3个库,请先做一下 pip安装

参数解释

下面是一个 批量推理的命令例子

推理示例命令预览

windows下,龙哥的测试命令:

模型部署

LoRA模型合并导出

也可以参考文档:

LoRA 合并 - LLaMA Factory

还有一些参数可以参考:

导出GGUF

开源项目llama.cpp提供的有模型格式转换工具

项目地址:https://github.com/ggerganov/llama.cpp #####

安装gguf库

如果直接 pip 安装 gguf,不是最新版本,和最新的转换脚本会不兼容,可以直接从源码安装llama.cpp

如有必要按照模型训练环境准备章节 建立一个llama.cpp需要的python虚拟环境

格式转换

返回 llama.cpp 项目根目录,会有一个官方提供的 convert-hf-to-gguf.py 脚本,用于完成huggingface格式到gguf格式的转换

ollama安装

我们以ollama为例,下载地址:Ollama

ollama是go语言开发的开源项目,github地址:https://github.com/ollama/ollama ollama文档参考:https://github.com/ollama/ollama/tree/main/docs

ollama支持的是gguf文件格式,如果是其他文件格式需要转换成gguf文件格式

linux安装

一般线上gpu算力服务器,驱动都会已经安装好

虽然 AMD 已将驱动程序上游贡献给官方 Linux 内核源代码,但该版本较旧,可能不支持所有

ROCm 功能。我们建议您从 Linux® Drivers for AMD Radeon™ and Radeon PRO™ Graphics 安装最新驱动程序,以获得对您 Radeon GPU 的最佳支持。

#运行以下一行命令来安装 Ollama

curl -fsSL https://ollama.com/install.sh | sh

#或者手动下面命令安装

sudo curl -L https://ollama.com/download/ollama-linux-amd64 -o /usr/bin/ollama sudo chmod +x /usr/bin/ollama

#将 Ollama 添加为启动服务(推荐)

#为 Ollama 创建一个用户

sudo useradd -r -s /bin/false -m -d /usr/share/ollama ollama

#在 /etc/systemd/system/ollama.service 中创建一个服务文件,内如如下,截止启动服务 前

[Unit]

Description=Ollama Service After=network-online.target

[Service] ExecStart=/usr/bin/ollama serve User=ollama

Group=ollama Restart=always RestartSec=3

[Install] WantedBy=default.target

#然后启动服务

sudo systemctl daemon-reload sudo systemctl enable ollama

#启动 Ollama

sudo systemctl start ollama

#移除 ollama 服务

sudo systemctl stop ollama sudo systemctl disable ollama

sudo rm /etc/systemd/system/ollama.service

windows安装

不再需要 WSL!

Ollama 现在已作为 Windows 原生应用程序运行,包括对 NVIDIA 和 AMD Radeon GPU 的支持下载地址:Download Ollama on macOS,选择windows系统直接安装启动

ollama默认会安装在C:\Users\文件夹下,一般会有下面三个位置

系统要求

Windows 10 或更新版本,家庭版或专业版

如果您有 NVIDIA 显卡,需要 NVIDIA 452.39 或更新版本的驱动程序:https://www.nvidia.cn/Downloa d/index.aspx?lang=cn

如果您有 Radeon 显卡,需要 AMD Radeon 驱动程序 Drivers and Support for Processors and Graphics

启动

安装 Ollama Windows 预览版后,Ollama 将在后台运行, ollama 命令行可在 cmd 、 powershell 或您喜爱的终端应用中使用

后台使用命令,管理ollama

环境变量

下面两个环境变量,可以设置模型目录和ollama api服务的url

ollama命令介绍

官方支持模型

ollama支持的模型列表:library

对于ollama支持的模型可以用下面命令来部署

自定义模型

ollama支持的是gguf文件格式,如果是其他文件格式需要转换成gguf文件格式

要新建一个 Modelfile文件,文件内容如下,该文件假设路径是 d:/ollama/longgemf

需要说明的是,因为LLaMA3的实现本身相对规范,所以Modelfile 的编写相对很简洁,反之对于其他一些模型,可能还需要在里面自主完成template prompt格式的注册,否则问答时会出现答非所问的情况

注册模型

注册了一个叫huanhuan的模型,用下面命令:

命令聊天示例

龙哥实验例子:

open-webui 本地模型部署ui项目

如果需要本地电脑部署一个大模型带ui界面的项目,方便管理模型,可以管理文档资料,方便和gpt一样聊天,可以安装一个open-webui项目

open-webui是一个开源的本地模型推理的webui项目,后端和ollama兼容项目下载地址:https://github.com/open-webui/open-webui

API调用服务

llama-factory的api服务

训练好后,可能部分同学会想将模型的能力形成一个可访问的服务,通过API 来调用,接入到langchian或者其他下游业务中,项目也自带了这部分能力。

API 实现的标准是参考了OpenAI的相关接口协议,基于uvicorn服务框架进行开发, 使用如下的方式启动

如果要加速推理可以是用vllm推理后端,不过vllm只支持linux系统,不支持windows系统

vllm开源项目地址:https://github.com/vllm-project/vllm

项目也支持了基于vllm 的推理后端,但是这里由于一些限制,需要提前将LoRA 模型进行merge,使用

merge后的完整版模型目录或者训练前的模型原始目录都可。

服务启动后,即可按照openai 的API 进行远程访问,主要的区别就是替换 其中的base_url,指向所部署的机器url和端口号即可。

ollama的api服务

ollama api

启动ollama服务后,就可以通过api调用来进行推理,api url可以通过环境变量 OLLAMA_BASE_URL 来指定,包括端口号,默认就是

比如支持 流式生成或者非流式生成,通过post请求生成聊天内容

详细api文档可以参考

https://github.com/ollama/ollama/blob/main/docs/api.md

openai兼容api

支持openai兼容的api接口,而且国内的大部门闭源模型也支持openai兼容的api,这样不用重复开发多套接口,直接在原有模型支持的基础上,换模型和api url地址,就可以支持ollama模型推理

https://github.com/ollama/ollama/blob/main/docs/openai.md

python例子代码

from openai import OpenAI

client = OpenAI( base_url='http://localhost:11434/v1/',

# required but ignored api_key='ollama',

)

#用llama3聊天

chat_completion = client.chat.completions.create( messages=[

{

'role': 'user',

'content': 'Say this is a test',

}

],

model='llama3',

)

#用llava多模态,输入一张图片做总结

response = client.chat.completions.create( model="llava",

messages=[

{

"role": "user", "content": [

{"type": "text", "text": "What's in this image?"},

{

"type": "image_url",

"image_url":

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

热搜词