项目简介
本项目提供了“全栈”的Llama 2大语言模型(LLM)训练与推理解决方案,聚焦极简主义和简单性。可运用PyTorch训练Llama 2 LLM架构,再通过仅700行的C文件进行推理,也能加载并推理Meta的Llama 2模型。旨在让开发者能在C语言环境下以简单方式使用Llama 2模型,适合在资源受限的边缘环境部署与使用。
项目的主要特性和功能
- 模型训练:支持从0开始训练小型Llama 2模型,可按需调整维度、层数、头数等模型参数。
- 模型推理:能用纯C语言对Llama 2模型进行推理,支持多种规模模型,含Meta官方发布的模型。
- 量化推理:实现int8量化推理,减小模型检查点大小,提高推理速度。
- 多模型支持:可加载Hugging Face上使用Llama 2架构的任何模型。
- 自定义分词器:允许训练自定义分词器,适应特定应用场景,减少模型参数,提高推理速度。
- 高性能优化:提供多种编译优化选项,支持OpenMP并行计算,提升推理性能。
- 跨平台支持:支持在Windows、Centos 7、Amazon Linux 2018、Mac等多种平台编译和运行。
- 测试功能:提供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】