littlebot
Published on 2025-04-15 / 2 Visits
0

【源码】基于CC++的LLaMA模型推理系统

项目简介

本项目是一个开源项目,在纯C/C++环境下实现对LLaMA模型进行推理。其主要目标是在MacBook上借助4位量化技术运行该模型,具备无依赖的纯C/C++实现,针对Apple silicon做了优化,支持x86架构的AVX2,采用混合F16 / F32精度,支持4位量化且能在CPU上运行。同时,支持多种操作系统、架构以及多种不同的模型。

项目的主要特性和功能

  1. 跨平台支持:支持Mac OS、Linux、Windows(通过CMake)和Docker等多种平台。
  2. 多模型适配:支持LLaMA、Alpaca、GPT4All、Chinese LLaMA / Alpaca、Vigogne (French)等多种模型。
  3. 高效实现:无依赖的纯C/C++实现,对Apple silicon通过ARM NEON和Accelerate框架进行优化,支持x86架构的AVX2。
  4. 量化支持:支持4位量化,有效节省内存和提高性能。
  5. 不同运行模式:提供普通推理模式和交互式模式,交互式模式下可中断生成并输入新文本。
  6. 质量评估:可使用perplexity示例测量模型的困惑度,评估模型质量。

安装使用步骤

前提条件

  • 安装C++编译器(如GCC或Clang)和CMake构建工具。
  • 若使用Python脚本,需安装Python 3.9或3.10,并安装torch、numpy、sentencepiece等依赖。

安装步骤

  1. 复制仓库: bash cd llama.cpp
  2. 编译项目: bash make
  3. 获取模型权重:从官方渠道获取LLaMA模型权重,并将其放置在./models目录下。
  4. 转换模型:使用Python脚本将模型转换为ggml FP16格式: bash python3 convert-pth-to-ggml.py models/7B/ 1
  5. 量化模型:将模型量化为4位: bash ./quantize ./models/7B/ggml-model-f16.bin ./models/7B/ggml-model-q4_0.bin 2

使用步骤

  • 普通推理: bash ./main -m ./models/7B/ggml-model-q4_0.bin -n 128
  • 交互式模式: bash ./main -m ./models/13B/ggml-model-q4_0.bin -n 256 --repeat_penalty 1.0 --color -i -r "User:" -f prompts/chat-with-bob.txt
  • Alpaca指令模式: bash ./examples/alpaca.sh
  • GPT4All模型使用: bash python3 convert-gpt4all-to-ggml.py models/gpt4all-7B/gpt4all-lora-quantized.bin ./models/tokenizer.model python3 migrate-ggml-2023-03-30-pr613.py models/gpt4all-7B/gpt4all-lora-quantized.bin models/gpt4all-7B/gpt4all-lora-quantized-new.bin 然后使用新生成的模型进行推理。

其他使用说明

  • Android设备:可使用termux在Android设备上运行,需先获取Android NDK,再使用CMake进行构建。
  • Docker:需安装并运行Docker,创建存储模型和中间文件的文件夹,可使用提供的完整或轻量级Docker镜像进行模型下载、转换和推理。

下载地址

点击下载 【提取码: 4003】【解压密码: www.makuang.net】