元象大模型一次性发布30款量化版本,全开源,无条件免费商用。“全家桶”通过极致压缩模型权重参数,保留高性能,旨在为海量中小企业和开发者更早一步提供更灵活、低成本的部署方案,加速大模型应用落地。
开发者可按需选择 低成本部署
模型量化(Quantization)通过优化内存占用、降低访存开销,来优化模型推理性能与总吞吐。通过不同的量化手段,我们可以在推理效率和模型能力间取得极致平衡。
对量化前后的模型能力、推理性能进行评估,以XVERSE-13B-GPTQ-Int4量化版本评估为例,量化后模型权重压缩72%,总吞吐提高1.5倍,并保留了95%的能力。
免费下载元象大模型
- Hugging Face
- ModelScope魔搭
- Github
- 问询发送:opensource@xverse.cn
元象大模型不仅支持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}")
推理效果如下图所示:
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格式的具体情况:
2.2下载模型文件
XVERSE开源的GGUF模型大小如下表所示,请根据本地机器内存、GPU显存大小,选择合适的模型进行测试。
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 推理如下图所示:
视频演示了在Mac M2 16GB机器上,xverse-13b-q4_0.gguf量化模型的效果。