元象大模型开源30款量化版本 加速低成本部署丨附教程

简介: 元象大模型一次性发布30款量化版本,全开源,无条件免费商用。

元象大模型一次性发布30款量化版本,全开源,无条件免费商用。“全家桶”通过极致压缩模型权重参数,保留高性能,旨在为海量中小企业和开发者更早一步提供更灵活、低成本的部署方案,加速大模型应用落地

企业微信截图_17116794814716.png

开发者可按需选择 低成本部署

模型量化(Quantization)通过优化内存占用、降低访存开销,来优化模型推理性能与总吞吐。通过不同的量化手段,我们可以在推理效率和模型能力间取得极致平衡。


对量化前后的模型能力、推理性能进行评估,以XVERSE-13B-GPTQ-Int4量化版本评估为例,量化后模型权重压缩72%,总吞吐提高1.5倍,并保留了95%的能力。


企业微信截图_1711679490209.png

企业微信截图_17116794972596.png

企业微信截图_17116795075575.png




免费下载元象大模型


元象大模型不仅支持vLLM和llama.cpp等主流框架的量化推理,更提供了GPTQ、GGUF 全量化方案的模型量化文件,开箱即用,极大降低了部署成本。


开发者可根据技能、软硬件配置和具体需求选择不同推理框架和数据精度的模型,若本地资源有限,可直接调用元象大模型API服务chat.xverse.cn)。


下文将分别介绍如何在vLLM和llama.cpp中部署元象大模型并进行对话体验。


1.vLLM 推理服务


1.1vLLM简介

vLLM是面向大语言模型推理、服务的高性能库,在长输出、高并发场景下,具有极致的吞吐效率与低延迟优势。支持GPTQ、AWQ等量化优化技术以及张量并行的分布式推理技术,使在消费级显卡上运行LLMs成为可能。


1.2环境配置


环境要求

  • 操作系统: Linux
  • Python版本: 3.8 - 3.11
  • GPU: 计算能力 7.0+ (比如 V100,T4, RTX20xx,  A100, L4, H100等)


vllm安装

1. 从源代码构建(推荐)

git clone https://github.com/vllm-project/vllm.git
cd vllm
pip config set global.index-url https://pypi.tuna.tsinghua.edu.cn/simple  # 设置pip源
pip install -vvv -e .  # This may take 5-10 minutes.


环境安装时,下载torch包比较慢,如果没有显示下载进度条,Linux系统可通过 ls /tmp/pip* -alh | grep torch 查看正在下载的torch包的大小;


2.  使用pip安装

虽然xverse分支已合并到vLLM主分支,但当前pip安装的vllm包是上个月打包的v0.3.3版本,尚不支持xverse架构。

后续vllm 安装包更新后,可通过下面命令安装。

conda create -n vllm python=3.9 -y
conda activate vllm
pip install vllm -i https://pypi.tuna.tsinghua.edu.cn/simple


1.3下载模型文件

下面以XVERSE-7B-Chat-GPTQ-Int4 为例,给出手动下载模型的命令。

 ModelScope魔搭

# pip install modelscope 
from modelscope import snapshot_download
model_dir = snapshot_download('xverse/XVERSE-7B-Chat-GPTQ-Int4')
# 默认下载到 ~/.cache/modelscope/hub 目录下

快速示例

注: 如果想让vLLM自动从modelscope 拉取模型文件,需先设置 `export VLLM_USE_MODELSCOPE=True`.

from vllm import LLM
from vllm import LLM, SamplingParams
# enable trust_remote_code, if you use local model dir.
model_dir = "xverse/XVERSE-7B-Chat-GPTQ-Int4"
# Create an LLM.
llm = LLM(model_dir, 
          trust_remote_code=True)
# Create a sampling params object.
sampling_params = SamplingParams(temperature=0.8, top_p=0.95, max_tokens=2048)
# Generate texts from the prompts. 
prompts = ["Human: 请你写一篇关于环保的文章,题材是从个人做起。\n\nAssistant: ",]
outputs = llm.generate(prompts, sampling_params)
for output in outputs:
    prompt = output.prompt
    generated_text = output.outputs[0].text
    print(f"Prompt: {prompt!r}, Generated text: {generated_text!r}")

推理效果如下图所示:

企业微信截图_17116795238270.png



2.llama.cpp 推理服务


2.1llama.cpp与GGUF简介

llama.cpp是一款跨平台、性能卓越的张量库,纯C/C++实现,无需外部依赖,适合最小化部署测试。llama.cpp 针对ARM NEON指令集、Metal框架进行极致优化,支持x86架构的向量指令集,在模型量化方面提供1.5bit到8bit的量化支持,同时支持CPU+GPU的异构混合推理架构,是开发者在各种硬件平台上快速、高效部署LLM推理服务的优秀方案。


GGUF文件全称是GPT-Generated Unified Format,是llama.cpp的创始人Georgi Gerganov定义发布的一种大模型文件格式。GGUF采用了多种技术来保存大模型文件,包括采用定义优良的紧凑二进制编码格式,通过内存映射等技术,加速模型文件加载速度。


同时,包含模型元数据的统一格式,补全了safetensors 格式在性能和跨平台交换方面的不足。下图展示了GGUF格式的具体情况:

企业微信截图_17116795333008.png


2.2下载模型文件

XVERSE开源的GGUF模型大小如下表所示,请根据本地机器内存、GPU显存大小,选择合适的模型进行测试。

企业微信截图_17116795434802.png


ModelScope魔搭

# pip install modelscope 
from modelscope import snapshot_download
model_dir = snapshot_download('xverse/XVERSE-7B-Chat-GGUF')
# 默认下载到 ~/.cache/modelscope/hub 目录下


  使用llama.cpp运行XVERSE推理服务

build llama.cpp

git clone https://github.com/hxer7963/llama.cpp.git
# git clone https://github.com/ggerganov/llama.cpp.git  #xverse分支正在review,预计2天内可以合并到主分支
mkdir build && cd build
cmake ..  # build on mac
# cmake .. -DLLAMA_BLAS=ON -DLLAMA_BLAS_VENDOR=OpenBLAS -DLLAMA_CCACHE=OFF  # build on CPU, enable blas、OpenBLAS
# cmake .. -DLLAMA_CUBLAS=ON         # build on GPU, enable cublas.
cmake --build . --config Release


启动推理服务

./main -m xverse-7b-chat-q4_k_m.gguf --color -c 512 --temp 0.5 --top_k 40 --top_p 0.9 --repeat_penalty 1.1 -ins   # run on CPU
./main -m xverse-13b-chat-q4_0.gguf --color -c 512 --temp 0.5 --top_k 40 --top_p 0.9 --repeat_penalty 1.1 -ins -ngl 99  # run on GPU


./main --help 可查看支持的相关参数,示例中的 -c 表示序列长度,-ins 表示 交互模式; -ngl 表示加载到GPU的模型层数;


如果在Mac上起llama.cpp服务,遇到 ggml_metal_graph_compute: command buffer 0 failed with status 5. 说明内存不够,可适当调低 n_ctx长度,即 `-c` 参数值;


llama.cpp部署xverse-13b-chat-q4_0.gguf 推理如下图所示:

企业微信截图_17116795542436.png


视频演示了在Mac M2 16GB机器上,xverse-13b-q4_0.gguf量化模型的效果。

微信公众平台 00_00_00-00_00_30.gif



作者介绍
目录