LlamaFactory Lora 归并大模型,GGUF 转换与 Ollama 部署Open_WebUI全流程 ...

金歌  金牌会员 | 2025-2-14 07:40:57 | 显示全部楼层 | 阅读模式
打印 上一主题 下一主题

主题 916|帖子 916|积分 2748

模型归并

将 base model 与训练好的 LoRA Adapter 归并成一个新的模型。注意:不要使用量化后的模型或
quantization_bit参数进行归并。
我们可以在llamafactory界面上讲模型进行归并,或者是使用命令行对模型进行归并
1、使用界面对模型进行归并


2、使用命令行对模型进行归并

首先这里你需要新建一个配置文件merge_llama3_lora_sft.yaml(名字可以自界说)
以下是 merge_llama3_lora_sft.yaml 的内容:
  1. ### Note: DO NOT use quantized model or quantization_bit when merging lora
  2. adapters
  3. ### model
  4. model_name_or_path: /root/autodl-tmp/models/Llama3-8B-Chinese-Chat/
  5. adapter_name_or_path: /root/code/LLaMA-Factory/saves/LLaMA3-8B-Chinese
  6. Chat/lora/train_2024-05-25-20-27-47
  7. template: llama3
  8. finetuning_type: lora
  9. ### export
  10. export_dir: /root/autodl-tmp/models/LLaMA3-8B-Chinese-Chat-merged
  11. export_size: 4
  12. export_device: cuda
  13. export_legacy_format: fals
复制代码
实行以下命令来归并模型:
  1. llamafactory-cli export cust/merge_llama3_lora_sft.yaml
复制代码
2. 将hf模型转换为GGUF

2.1 需要用llama.cpp堆栈的convert_hf_to_gguf.py脚原来转换

== 需要注意llama.cpp所需的pytorch版本是2.2.1的,而我们的base环境中的pytorch是2.1.0的,假如实行惊醒llama.cpp的环境安装会和我们原来的pytorch版本有辩论,由于我们使用conda虚拟环境安装llama.cpp ==
1、使用conda创建llamacpp虚拟环境
  1. conda create --name llamacpp
复制代码
2、初始化基础环境
  1. source activate
复制代码
3、进入到llamacpp环境
  1. conda activate llamacpp
复制代码
  1. git clone https://github.com/ggerganov/llama.cpp.git
  2. pip install -r llama.cpp/requirements.txt
复制代码
2.2 实行转换

  1. # 如果不量化,保留模型的效果
  2. python llama.cpp/convert_hf_to_gguf.py ./Meta-Llama-3-8B-Instruct  --outtype f16 --verbose --outfile Meta-Llama-3-8B-Instruct-gguf.gguf
  3. # 如果需要量化(加速并有损效果),直接执行下面脚本就可以
  4. python llama.cpp/convert_hf_to_gguf.py ./Meta-Llama-3-8B-Instruct  --outtype
  5. q8_0 --verbose --outfile Meta-Llama-3-8B-Instruct-gguf_q8_0.gguf
复制代码
  1. 这里--outtype是输出类型,代表含义:
  2. q2_k:特定张量(Tensor)采用较高的精度设置,而其他的则保持基础级别。
  3. q3_k_l、q3_k_m、q3_k_s:这些变体在不同张量上使用不同级别的精度,从而达到性能和效率的平衡。
  4. q4_0:这是最初的量化方案,使用 4 位精度。
  5. q4_1 和 q4_k_m、q4_k_s:这些提供了不同程度的准确性和推理速度,适合需要平衡资源使用的场景。
  6. q5_0、q5_1、q5_k_m、q5_k_s:这些版本在保证更高准确度的同时,会使用更多的资源并且推理速度较
  7. 慢。
  8. q6_k 和 q8_0:这些提供了最高的精度,但是因为高资源消耗和慢速度,可能不适合所有用户。
  9. fp16 和 f32: 不量化,保留原始精度。
复制代码
2.3 转换后的模型


3. 使用ollama运行gguf

== ollama对pytorch、cuda版本没有要求这个可以在服务器的基础环境中进行安装==
3.1 安装ollama

  1. curl -fsSL https://ollama.com/install.sh | sh
复制代码
3.2 启动ollama服务

  1. ollama serve
复制代码
3.3 创建ModelFile

这一步是使用ollama将模型再进行一次转换,便于ollama进行管理,有点像docker创建images
复制模型路径,创建名为“ModelFile”的meta文件,内容如下
  1. #GGUF文件路径
  2. FROM /root/autodl-tmp/Llama3-8B/LLM-Research/Meta-Llama-3-8B-Instruct-gguf8.gguf
复制代码
3.4 创建自界说模型

使用ollama create命令创建自界说模型
  1. ollama create llama-3-8B-Instruct --file ./ModeFil
  2. ```![在这里插入图片描述](https://i-blog.csdnimg.cn/direct/1c17d68d882e47ab9c6ab056bdda6e00.png)
  3. ## 3.5 运行模型
  4. ```powershell
  5. ollama run llama-3-8B-Instruct
复制代码

4. 使用 Open WebUI 部署模型

Open WebUI
Open WebUI 是一个可扩展的、自托管的 AI 界面,可以顺应您的工作流程,同时完全离线操作。
堆栈
文档
4.1 创建虚拟环境

open-webui对python的版本和pytorch、transformers版本都有要求,需要创建虚拟环境
  1. conda create -n open-webui python==3.11
复制代码
4.2 安装全部依靠

  1. conda activate open-webui
  2. pip install -U open-webui torch transformers
复制代码
4.3 运行 ollama

  1. ollama serve
复制代码
ollama运行后会在本地端口暴露一个 openai API 服务,我们背面使用 open-webui 来毗连就可以了
4.4 运行 open-webui

由于 ollama 的运行导致原终端阻塞,因此要另外开一个新终端 。同时要实行以下操作
open-webui要依靠hf的包
  1. conda activate open-webui
  2. export HF_ENDPOINT=https://hf-mirror.com
  3. export ENABLE_OLLAMA_API=True
  4. export OPENAI_API_BASE_URL=http://127.0.0.1:11434/v1
  5. export DEFAULT_MODELS="/root/app/llm/Qwen/Qwen1___5-1___8B-Chat"
  6. open-webui serve
复制代码
4.5 启动浏览器,开始对话

对话窗口如下:


免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

金歌

金牌会员
这个人很懒什么都没写!

标签云

快速回复 返回顶部 返回列表