【大模型指令微调: 从零学会炼丹】第四章: Ollama 微调后大模型部署]

大模型指令微调: 从零学会炼丹

系列目录

第一章: 微调数据集构建
第二章: 数据集预处理
第三章: Q-LoRa微调Phi-3.5-mini
第四章: Ollama 微调后大模型部署

第四章: Ollama 微调后大模型部署

引言

在上面的三篇主文中, 介绍了构建大语言模型微调的数据集格式,数据集预处理, Q-LoRA 微调大模型, 本章我们将来到大模型的部署环节.
在模型的部署场景我们会希望部署后的模型服务可以提供一个标准的API, 同时部署模型的框架还要对Cuda 保持兼容性,Ollama就成为了很好的选择.
本文将从Ollama 的基本介绍, 模型导出为GGUF文件, 模型导入到Ollama 三个部分完成对大模型的本地部署.

Ollama 介绍

Ollama是一个用于简化大语言模型本地部署和运行的工具,它提供了一个轻量\易于扩展的框架, 让开发者可以在本地部署和管理大模型. 通过Ollama,开发者可以访问和管理原始pre-trained 大模型,也可以导入自己的大模型, 而无需关注底层细节.

安装Ollama

Ollama 支持多种操作系统: MAC OS, Windows, Linux, 以下是各个环境的安装方法

1. Mac or Windows 安装

ollama官网

Windows 和Mac 环境都可以直接从Ollama官网下载相应文件进行安装.

2. Linux 安装

Linux 系统通过下面的代码进行安装, 代码会自动检测系统环境

curl -fsSL https://ollama.com/install.sh | sh
Ollama 常用指令
命令描述
ollama serve启动Ollama; Windows端如果在任务托盘可以看到ollam的图标则不需要手动执行,执行会报端口被占用的错误,因为服务默认开启
ollama pull <modelname>从Ollama library下载模型, 将modelname 替换为自己想要的模型, 可到ollama 模型库中进行查看
ollama run <modelname>在本地运行大模型, 同样可以在模型库中查看可运行的model,命令会自动下载相应的模型到本地
ollama list查看本地已下载的大模型
ollama rm <modelname>删除已下载的大模型
ollama create <your_model_name> -f <path_to_Modelfile>从本地modelfile文件导入gguf模型
Ollama Modelfile文件

Modelfile是一个模型的配置文件, 需要包含如下信息:

  • FROM(必须):模型的GGUF 文件地址
  • PARAMETER(Option): 模型运行的超参数, 详情见结尾附录
  • TEMPLATE(Option): 模型的提示模板, 建议直接沿用基模型的TEMPLATE
  • SYSTEM: 系统消息

示例:
通过ollama show --modelfile phi3.5 命令,查看本地已下载大模型的Modelfile文件

# Modelfile generated by "ollama show"
# To build a new Modelfile based on this, replace FROM with:
# FROM phi3.5:latest

FROM <path_to_gguf>
TEMPLATE "{{ if .System }}<|system|>
{{ .System }}<|end|>
{{ end }}{{ if .Prompt }}<|user|>
{{ .Prompt }}<|end|>
{{ end }}<|assistant|>
{{ .Response }}<|end|>
"
PARAMETER stop <|system|>
PARAMETER stop <|user|>
PARAMETER stop <|end|>
PARAMETER stop <|assistant|>
LICENSE """MIT License

Copyright (c) Microsoft Corporation.

Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED *AS IS*, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE."""

修改path_to_gguf为本地的gguf地址,并将修改后的modelfile内容保存到本地的xxx.Modelfile文件中,执行下面的代码,将模型导入到Ollama库中

ollam create <model_name> -f <path_to_modelfile>
  • model_name : 重命名后的模型名字
  • path_to_modelfile: Modelfile文件地址
总结

根据这一小节我们完成了ollama 的安装以及导入自己的模型到ollama, 后续可以通过Ollama 的API 进行使用

模型导出为GGUF

根据上面Ollama 部分的介绍我们可以发现, pytorch训练后的模型文件不能直接导入到ollama中, 需要将其预先转为.gguf 文件. 本节将讲述如何将训练后的模型导出为gguf 文件.

GGUF 文件

GGUF文件是Gerganov定义的数据格式,GGUF 采用了多种多种技术来保存大模型预训练结果,包括采用紧凑的二进制编码格式、优化的数据结构、内存映射等。原始的大模型文件转换为GGUF 格式后可以被更快的载入和推理,同时消耗更少的资源.
llama.cpp 项目提供了转换脚本,可以将pytorch 的训练结果转换成GGUF文件.
下面我们将通过llama.cpp 项目将第三章导出的模型文件转换为gguf格式

极简部署llama.cpp 项目

在控制台中部署下面的代码,clone 项目到本地

git clone https://github.com/ggerganov/llama.cpp.git

cd llama.cpp

直接从release 中下载最新的预编译好的文件到本地并解压缩到llama.cpp目录下. 注意: 请下载带有CUDA 编译的版本, 请根据自己的Cuda版本进行选择
在这里插入图片描述

创建虚拟环境

使用conda

conda create -n llamacpp
conda activate llamacpp

使用venv

python -m venv llamacpp
.\venv\Scripts\activate

安装环境依赖

pip install requirement.txt
导出GGUF 文件
python convert_hf_to_gguf.py --outfile <path+model_name.gguf> <path_to_model>
  • path+model_name.gguf: 想要保存gguf文件的路径和命名
  • path_to_model: 训练后的模型文件夹

通过运行项目自带的convert_hf_to_gguf.py 即可将模型转换为gguf格式, 配合上面介绍的Modelfile文件即可将其导入到ollama 中, 用于交互


总结

本文首先介绍了ollama以及常用的命令, 基于这些命令可以快速使用ollama 部署开源大模型,结合后续介绍的模型转为GGUF文件和创建Modelfile文件,即可将我们微调后的大模型导入到ollama 中

附录: Modelfile 常见参数

可到本文中查看对应的全部参数信息

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值