llama-factory微调
大模型微调实操--llama-factoryllama-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 中创建一个服务文件,内如如下,截止启动服务 前
Description=Ollama Service After=network-online.target
ExecStart=/usr/bin/ollama serve User=ollama
Group=ollama Restart=always RestartSec=3
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":
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
页:
[1]