llama2.c与chinese-baby-llama2语言模型本地部署推理

文章目录

简介

llama2.c是一个极简的Llama 2 LLM全栈工具,使用一个简单的 700 行 C 文件 ( run.c ) 对其进行推理。llama2.c涉及LLM微调、模型构建、推理端末部署(量化、硬件加速)等众多方面,是学习研究Open LLM的很好切入点。

Github

文档

克隆源码

bash 复制代码
git clone https://github.com/karpathy/llama2.c.git

英文模型

bash 复制代码
# 15M参数模型
wget https://huggingface.co/karpathy/tinyllamas/resolve/main/stories15M.bin
# 42M参数模型
wget https://huggingface.co/karpathy/tinyllamas/resolve/main/stories42M.bin
# 110M参数模型
wget https://huggingface.co/karpathy/tinyllamas/resolve/main/stories110M.bin

编译运行

bash 复制代码
make run
# 15M参数模型
./run stories15M.bin
# 42M参数模型,运行并输入提示词
./run stories42M.bin -i "One day, Lily met a Shoggoth"

中文模型(280M)

bash 复制代码
# 下载模型
git clone https://huggingface.co/flyingfishinwater/chinese-baby-llama2
  • 安装 python 相关依赖
bash 复制代码
pip3 install numpy
pip3 install torch torchvision torchaudio
pip3 install transformers
  • 将模型hf格式转换为bin格式
bash 复制代码
# 将hf模型文件转换成.bin文件
python export.py ./chinese-baby-llama2.bin --hf ./chinese-baby-llama2
  • 修改 llama2.c/run.c
c 复制代码
// 将 main() 中的 tokenizer.bin 改为 chinese-baby-llama2 目录下的tokenizer.bin
char *tokenizer_path = "chinese-baby-llama2/tokenizer.bin";
  • 编译 c
bash 复制代码
make run
  • 运行并输入提示词
bash 复制代码
./run chinese-baby-llama2.bin -i "今天是武林大会,我是武林盟主"

main函数

  • 默认参数设置: 定义了一些默认参数值,例如模型路径、分词器路径、温度、top-p 值、步数等。
  • 命令行参数解析: 通过检查命令行参数,更新默认参数值。命令行参数的格式为 flag value,例如 -t 0.5 表示设置温度为 0.5。
  • 参数验证和覆盖: 对解析后的参数进行验证和覆盖。例如,确保随机数种子大于 0、温度在合理范围内、步数为非负数等。
  • 构建 Transformer 模型: 使用给定的模型文件构建 Transformer 模型,并根据需要调整步数。
  • 构建 Tokenizer: 使用给定的分词器文件构建 Tokenizer。
  • 构建 Sampler: 构建 Sampler,并设置相应的参数,如词汇表大小、温度、top-p 值等。
  • 执行功能: 根据模式选择执行生成或者聊天功能。如果模式是 generate,则执行生成功能;如果是 chat,则执行聊天功能。
  • 内存和文件句柄清理: 释放动态分配的内存和关闭文件句柄,确保程序执行结束时资源被正确释放。
相关推荐
Johny_Zhao8 小时前
CentOS Stream 8 高可用 Kuboard 部署方案
linux·网络·python·网络安全·docker·信息安全·kubernetes·云计算·shell·yum源·系统运维·kuboard
站大爷IP8 小时前
精通einsum():多维数组操作的瑞士军刀
python
站大爷IP9 小时前
Python与MongoDB的亲密接触:从入门到实战的代码指南
python
Roc-xb10 小时前
/etc/profile.d/conda.sh: No such file or directory : numeric argument required
python·ubuntu·conda
Chef_Chen10 小时前
从0开始学习语言模型--Day02-如何最大化利用硬件
人工智能·学习·语言模型
世由心生11 小时前
[从0到1]环境准备--anaconda与pycharm的安装
ide·python·pycharm
不过四级不改名67711 小时前
用c语言实现简易c语言扫雷游戏
c语言·算法·游戏
猛犸MAMMOTH11 小时前
Python打卡第54天
pytorch·python·深度学习
梓羽玩Python12 小时前
12K+ Star的离线语音神器!50MB模型秒杀云端API,隐私零成本,20+语种支持!
人工智能·python·github
成都犀牛12 小时前
LangGraph 深度学习笔记:构建真实世界的智能代理
人工智能·pytorch·笔记·python·深度学习