AI知识库

53AI知识库

学习大模型的前沿技术与行业应用场景


干货分享!如何部署多个GGUF的大语言模型,Windows平台实践分享
发布日期:2024-09-16 21:30:16 浏览次数: 1561


最近在Windows平台部署大语言模型,这次部署的是通义千问72B FP16量化和Q8量化,有点经验分享。上文《如何使用vLLM部署DeepSeek V2 Lite模型》说到,目前大概有几类部署框架。

  1. vLLM是一个快速且易于使用的用于大语言模型(LLM)推理和服务的库。
  2. SGLang是一个用于大语言模型和视觉语言模型的快速服务框架。
  3. Xinference各种模型都支持,大语言模型,嵌入模型,SD模型,Audio模型。。。
  4. Ollama快速简洁的大语言推理入门首选,支持GGUF和SafeTensor格式。
  5. LM Studio桌面App,支持大语言模型和嵌入模型,只支持GGUF格式。

个人认为服务器首选部署平台,还是vLLM、SGLang和Xinference。Ollama和LM Studio还是更偏向于桌面应用。本次尝试在Windows平台部署通义千问72B FP16量化版本。我了解到

  1. vLLM和SGlang不支持Windows。
  2. Xinference支持Windows,但是其大语言模型的推理引擎也只能用llama.cpp或者Transformer,我们知道Transformer都是默认加载全精度的,所需显存较大。
  3. LM Studio支持Windows,但是每次加载模型都要重新配置一遍参数,而且默认是只Offload 20%的计算到GPU,所以每次都得去调到最大,性能也不稳定。还有一个原因,每次加载之后才能修改Offload到GPU为最大,然后每次相当于要加载两遍,跑了好多次之后,nvidia-smi提示找不到GPU了,要重启电脑。
  4. Ollama支持Windows,但是默认的Qwen2 72B是4 bit量化版本。

所以最终折腾下来,咱们还是得用Ollama。但Ollama默认的是4bit版本,即使要创建Modelfile,咱们还得考虑多个GGUF模型文件问题。

1. Ollama 运行

Ollama安装参考官网安装教程[1]即可。

Ollama默认部署通义千问72B 4bit量化版本,只需要根据Ollama上Qwen2的模型介绍页[2]运行这条命令即可。

ollama run qwen2:72b

但如果你想要部署FP16量化或者Q8量化,怎么办?阿里官方在modelscope[3]上倒是提供了GGUF量化版本,按照上篇文章《如何使用vLLM部署DeepSeek V2 Lite模型》下载指定的模型。

既然要使用Ollama跑自定义模型,那么按照Ollama官方说明[4],我们需要编写一个Modelfile,类似于这样。

FROM /path/to/file.gguf

Qwen2官方也给出了如下7B的Modelfile,但咱们有多个GGUF文件,怎么搞?

FROM qwen2-7b-instruct-q5_0.gguf

# set the temperature to 1 [higher is more creative, lower is more coherent]
PARAMETER temperature 0.7
PARAMETER top_p 0.8
PARAMETER repeat_penalty 1.05
PARAMETER top_k 20

TEMPLATE """{{ if and .First .System }}<|im_start|>system
{{ .System }}<|im_end|>
{{ end }}<|im_start|>user
{{ .Prompt }}<|im_end|>
<|im_start|>assistant
{{ .Response }}"
""

# set the system message
SYSTEM """
You are a helpful assistant.
"
""

2. 合并GGUF模型文件

Ollama目前还不支持引入多个GGUF文件,所以我们需要llama.cpp帮助。Llama.cpp的安装可以参考我之前的文章《喂饭教程!使用Llama.cpp在MAC M1上安装私有大语言模型LLM通义千问Qwen 1.5-7B》,然后我们使用llama.cpp的llama-gguf-split。

./llama-gguf-split --help

usage: ./llama-gguf-split [options] GGUF_IN GGUF_OUT

Apply a GGUF operation on IN to OUT.

options:

-h, --help       show this help message and exit

--version        show version and build info

--split         split GGUF to multiple GGUF (enabled by default)

--merge         merge multiple GGUF to a single GGUF

--split-max-tensors   max tensors in each split (default: 128)

--split-max-size N(M|G) max size per split

--no-tensor-first-split do not add tensors to the first split (disabled by default)

--dry-run        only print out a split plan and exit, without writing any new files

这里咱们先合并Q8量化的两个GGUF文件,然后生成qwen2-72b-instruct-q8_0.gguf。

./llama-gguf-split --merge ./qwen2-72b-instruct-q8_0-00001-of-00002.gguf ./qwen2-72b-instruct-q8_0-00002-of-00002.gguf ./qwen2-72b-instruct-q8_0.gguf

接下来修改Modelfile。

FROM /path/to/your/qwen2-72b-instruct-q8_0.gguf

# set the temperature to 1 [higher is more creative, lower is more coherent]
PARAMETER temperature 0.7
PARAMETER top_p 0.8
PARAMETER repeat_penalty 1.05
PARAMETER top_k 20

TEMPLATE """{{ if and .First .System }}<|im_start|>system
{{ .System }}<|im_end|>
{{ end }}<|im_start|>user
{{ .Prompt }}<|im_end|>
<|im_start|>assistant
{{ .Response }}"
""

# set the system message
SYSTEM """
You are a helpful assistant.
"
""

Modelfile已建好,然后开始创建模型。

ollama create qwen2_72b_q8 -f Modelfile

运行

ollama run qwen2_72b_q8

总结

本文在尝试了各种部署大模型部署框架后,最终还是回到Ollama。同时通过采用LLama.cpp的合并GGUF命令,将Qwen2 72B的多个GGUF模型文件合并为一个GGUF,最后通过创建Modelfile完成Ollama的模型创建和运行。希望本文对你有所帮助。



53AI,企业落地应用大模型首选服务商

产品:大模型应用平台+智能体定制开发+落地咨询服务

承诺:先做场景POC验证,看到效果再签署服务协议。零风险落地应用大模型,已交付160+中大型企业

联系我们

售前咨询
186 6662 7370
预约演示
185 8882 0121

微信扫码

与创始人交个朋友

回到顶部

 
扫码咨询