使用llama.cpp推理大模型

llama.cpp

大模型有训练和推理两部分,训练会产生一个大模型文件,这些文件通常包含了模型架构以及每个神经元的权重和偏置值。llama.cpp主要用在推理部分,它是一个是一个使用c++开发的大模型推理框架。它可以在普通家用电脑上完成推理,只需要CPU和几个G的内存就能运行。

编译安装

参考 https://github.com/ggerganov/llama.cpp?tab=readme-ov-file#build

  1. 拉取代码

    1
    git clone https://github.com/ggerganov/llama.cpp.git
  2. 编译

    对于非Apple Silicon系列芯片推理时如果有问题可以在编译时禁用GPU。编译时使用LLAMA_NO_METAL=1或者LLAMA_METAL=OFF参数。https://github.com/ggerganov/llama.cpp?tab=readme-ov-file#metal-build

    1
    make

编译完成会参数mianquantize文件,前者用来运行大模型推理,后者用来模型向量化处理。

模型转换

一般大模型文件都托管在Hugging Face上面。一般情况下llama.cpp不能直接使用这些大模型进行推理,我们需要先对这些模型进行转换,转为ggml格式。支持转换的大模型列表参考官方README国产大模型百川、千问等都支持转为ggml格式。

转换使用llama.cpp项目内的convert.py或者convert-hf-to-gguf.py处理,详细步骤参考 https://github.com/ggerganov/llama.cpp?tab=readme-ov-file#prepare-data--run。这里对Python版本有一定的要求,模块的依赖在requirements.txtrequirements目录下。

一般情况先使用convert.py转换,如果转换失败在使用convert-hf-to-gguf.py尝试处理。注意,使用convert-hf-to-gguf.py时需要我们安装额外的依赖,依赖列表在requirements/requirements-convert-hf-to-gguf.txt

转换后的模型我们需要进行向量化,使用./quantize对转换后的模型进行向量化。向量化后的模型就可以进行推理了。

和llama.cpp类似的工具

Hugging Face 镜像

  • modelscope

    可以直接使用git clone拉取大模型。注意,需要安装LFS

  • hf-mirror

    配置镜像后可以使用huggingface官方命令行huggingface-cli工具下载模型文件

    1
    export HF_ENDPOINT=https://hf-mirror.com

名词解释

  • B
    大模型参数单位,1B表示一亿。例如有7B14B表示参数有7亿和14亿,参数越大推理时耗费的资源越多
本站采用「署名 4.0 国际」进行许可。