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

【源码】基于C语言的Llama 2模型推理与训练系统

项目简介

本项目提供了“全栈”的Llama 2大语言模型(LLM)训练与推理解决方案,聚焦极简主义和简单性。可运用PyTorch训练Llama 2 LLM架构,再通过仅700行的C文件进行推理,也能加载并推理Meta的Llama 2模型。旨在让开发者能在C语言环境下以简单方式使用Llama 2模型,适合在资源受限的边缘环境部署与使用。

项目的主要特性和功能

  1. 模型训练:支持从0开始训练小型Llama 2模型,可按需调整维度、层数、头数等模型参数。
  2. 模型推理:能用纯C语言对Llama 2模型进行推理,支持多种规模模型,含Meta官方发布的模型。
  3. 量化推理:实现int8量化推理,减小模型检查点大小,提高推理速度。
  4. 多模型支持:可加载Hugging Face上使用Llama 2架构的任何模型。
  5. 自定义分词器:允许训练自定义分词器,适应特定应用场景,减少模型参数,提高推理速度。
  6. 高性能优化:提供多种编译优化选项,支持OpenMP并行计算,提升推理性能。
  7. 跨平台支持:支持在Windows、Centos 7、Amazon Linux 2018、Mac等多种平台编译和运行。
  8. 测试功能:提供Python和C语言的测试脚本,确保模型推理结果的正确性。

安装使用步骤

假设用户已下载本项目的源码文件。

1. 复制项目

bash cd llama2.c

2. 运行小型Llama 2模型

下载模型检查点

bash wget https://huggingface.co/karpathy/tinyllamas/resolve/main/stories15M.bin

编译并运行C代码

bash make run ./run stories15M.bin

3. 推理Meta的Llama 2模型

获取Llama 2检查点

安装Python依赖

bash pip install -r requirements.txt

转换模型格式

bash python export.py llama2_7b.bin --meta-llama path/to/llama/model/7B

运行推理

bash ./run llama2_7b.bin

4. 使用量化推理

导出量化模型

bash python export.py llama2_7b_q80.bin --version 2 --meta-llama path/to/llama/model/7B

编译并运行量化推理

bash make runomp OMP_NUM_THREADS=64 ./runq llama2_7b_q80.bin -n 40

5. 训练自定义模型

下载并预标记数据集

bash python tinystories.py download python tinystories.py pretokenize

训练模型

bash python train.py

6. 训练自定义分词器

下载数据集

bash python tinystories.py download

训练分词器

bash python tinystories.py train_vocab --vocab_size=4096

预标记数据集

bash python tinystories.py pretokenize --vocab_size=4096

训练模型

bash python train.py --vocab_source=custom --vocab_size=4096

导出分词器

bash python tokenizer.py --tokenizer-model=data/tok4096.model

运行推理

bash ./run out/model.bin -z data/tok4096.bin

7. 运行测试

bash pip install pytest pytest

下载地址

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