1. 详细步骤
1.1 安装 cuda 等 nvidia 依赖(非CUDA环境运行可跳过)
# 以 CUDA Toolkit 12.4: Ubuntu-22.04/24.04(x86_64) 为例,注意区分 WSL 和 Ubuntu,详见 https://developer.nvidia.com/cuda-12-4-1-download-archive?target_os=Linux&target_arch=x86_64&Distribution=Ubuntu&target_version=22.04&target_type=runfile_local
wget https://developer.download.nvidia.com/compute/cuda/12.4.1/local_installers/cuda_12.4.1_550.54.15_linux.run
sudo sh cuda_12.4.1_550.54.15_linux.run
注:通过 nvcc -V 来确定 cuda 等依赖是否安装到位,缺少的话根据提示再安装别的依赖,如 sudo apt install nvidia-cuda-toolkit 等
1.2 安装 llama.cpp (C/C++环境)
# 手动下载也可以
git clone https://github.com/ggerganov/llama.cpp
cd llama.cpp
# 没安装 make,通过 brew/apt 安装一下(cmake 也可以,但是没有 make 命令更简洁)
# Metal(MPS)/CPU
make
# CUDA
make GGML_CUDA=1
注:以前的版本好像一直编译挺快的,现在最新的版本CUDA上编译有点慢,多等一会
1.3 安装 llama-cpp (Python 环境)
# 也可以手动安装 torch 之后,再安装剩下的依赖
pip install -r requirements.txt
1.4 转换 HF 模型为 GGUF 文件
本步骤开始都以 Qwen2-7B-Instruct
为例
# 示例: 生成 FP-16 模型
python convert_hf_to_gguf.py /model_path/Qwen/Qwen-2.7B-Instruct/
1.5 GGUF 模型量化
# 示例: Q4_K_M 量化
./llama-quantize /model_path/Qwen/Qwen-2.7B-Instruct/ggml-model-f16.gguf /model_path/Qwen/Qwen-2.7B-Instruct/ggml-model-Q4_K_M.gguf Q4_K_M
1.6 GGUF 模型测试
# Metal(MPS)/CPU
./llama-cli -m /model_path/Qwen/Qwen-2.7B-Instruct/ggml-model-Q4_K_M.gguf -cnv -p "You are a helpful assistant"
# CUDA: 单卡推理
./llama-cli -m /model_path/Qwen/Qwen-2.7B-Instruct/ggml-model-Q4_K_M.gguf -cnv -p "You are a helpful assistant" -ngl 9999
# CUDA: 多卡推理(以双卡为例),-ts等参数含义详见 https://github.com/ggerganov/llama.cpp/blob/master/examples/server/README.md
./llama-cli -m /model_path/Qwen/Qwen-2.7B-Instruct/ggml-model-Q4_K_M.gguf -cnv -p "You are a helpful assistant" -ngl 9999 -ts 1,1
注: ngl可以灵活调整,取 9999 不是常规做法,比大模型实际的 100 以内的 ngl 大很多(不同模型的实际 ngl 也不一样)来确保所有的 ngl 都在 GPU 上运行(当然前提是显存足够)
2. 参考资料
2.1 llama.cpp
2.1.1 GitHub
官方页面
https://github.com/ggerganov/llama.cpp
build
https://github.com/ggerganov/llama.cpp/blob/master/docs/build.md
quantize
https://github.com/ggerganov/llama.cpp/blob/master/examples/quantize/README.md
http server
https://github.com/ggerganov/llama.cpp/blob/master/examples/server/README.md
2.2 NVIDIA DEVELOPER
CUDA Toolkit Archive
https://developer.nvidia.com/cuda-toolkit-archive
CUDA Toolkit 12.4: Ubuntu-22.04/24.04(x86_64)
https://developer.nvidia.com/cuda-12-4-1-download-archive?target_os=Linux&target_arch=x86_64&Distribution=Ubuntu&target_version=22.04&target_type=runfile_local
3. 资源
3.1 llama.cpp
3.1.1 GitHub
Python Bindings for llama.cpp
https://github.com/abetlen/llama-cpp-python
3.2 NVIDIA DEVELOPER
官方页面
https://developer.nvidia.com/
CUDA Toolkit
https://developer.nvidia.com/cuda-downloads
总结
## 文章总结:从安装CUDA到LLama.cpp的使用指南本文章提供了一个详细的使用教程,包括在支持C/C++及Python环境下,如何设置和使用llama.cpp这一库,来实现NLP模型的高效运算和部署。步骤涉及了NVIDIA CUDA及其相关依赖的安装,llama.cpp在不同环境中的安装编译,以及LLama模型的转换、量化和测试流程。具体内容和要点概括如下:
### 一、安装过程
**1. CUDA与NVIDIA依赖安装(CUDA环境专属步骤)**
- 使用Ubuntu-22.04为例,指导下载和安装CUDA Toolkit 12.4及其驱动程序,提供下载链接与命令参考,提醒读者通过nvcc命令确认CUDA正确安装。
**2. llama.cpp (C/C++ 环境安装)**
- 从GitHub获取llama.cpp仓库。
- 提供Make命令构建支持不同后端的llama.cpp二进制文件,支持CPU和GPU环境,针对最新CUDA环境构建时需耐心等待较长编译时间。
**3. llama.cpp (Python 环境安装)**
- 安装PyTorch(可选择前置安装或在`requirements.txt`中一起安装)。
- 执行Python环境的依赖包安装脚本,支持后续模型操作和实验。
### 二、模型使用流程
**1. 模型转换为GGUF文件**
- 通过指定Hugging Face预训练模型的路径,使用提供的Python脚本转换为llama.cpp特有的GGUF格式。
**2. 模型的量化处理**
- 支持GGUF格式的模型进一步的量化以优化运算和部署效果,示例中以`Q4_K_M`量化等级进行示范,执行专门的量化命令即可得到更节省资源、便于加速运行的量化版模型文件。
**3. GGUF 模型测试**
- 分别给出了CPU、GPU环境,以及单机、多卡配置下如何使用CLI命令来执行推理的例子,允许用户在不同环境和设备需求下进行配置和运行实验,特别强调在使用GPU加速时注意内存调整参数以充分利用设备资源。
### 三、参考资源和外部链接
文章列举了从llama.cpp GitHub主页面、官方文档,到CUDA工具集资源的各类官方和外部资源,有助于用户在安装配置或实际操作时进一步了解和求助,是对原文细节性指引的良好补充和深化。
总而言之,文章覆盖了llama.cpp从头开始的整个搭建过程以及后续的模型应用实验方法,细致介绍了各类命令行操作和系统环境搭建注意事项,是一篇非常全面的实战操作指导教程。