当前位置: 首页 > news >正文

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

文章目录

  • 简介
  • Github
  • 文档
  • 克隆源码
  • 英文模型
  • 编译运行
  • 中文模型(280M)
  • main函数

简介

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

在这里插入图片描述

Github

  • https://github.com/karpathy/llama2.c

文档

  • https://llama.meta.com/

克隆源码

git clone https://github.com/karpathy/llama2.c.git

英文模型

  • https://huggingface.co/datasets/roneneldan/TinyStories
# 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

编译运行

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

中文模型(280M)

  • https://huggingface.co/flyingfishinwater/chinese-baby-llama2
    在这里插入图片描述
# 下载模型
git clone https://huggingface.co/flyingfishinwater/chinese-baby-llama2
  • 安装 python 相关依赖
pip3 install numpy
pip3 install torch torchvision torchaudio
pip3 install transformers
  • 将模型hf格式转换为bin格式
# 将hf模型文件转换成.bin文件
python export.py ./chinese-baby-llama2.bin --hf ./chinese-baby-llama2
  • 修改 llama2.c/run.c
// 将 main() 中的 tokenizer.bin 改为 chinese-baby-llama2 目录下的tokenizer.bin
char *tokenizer_path = "chinese-baby-llama2/tokenizer.bin";

在这里插入图片描述

  • 编译 c
make run
  • 运行并输入提示词
./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,则执行聊天功能。
  • 内存和文件句柄清理: 释放动态分配的内存和关闭文件句柄,确保程序执行结束时资源被正确释放。
http://www.lryc.cn/news/339988.html

相关文章:

  • 008、Python+fastapi,第一个后台管理项目走向第8步:ubutun 20.04下安装vscode+python环境配置
  • 2024.4.16 驱动开发
  • 如何在 Ubuntu 14.04 上更改 PHP 设置
  • 【光伏企业】光伏项目怎么做才能提高效率?
  • 毕设选51还是stm32?51太简单?
  • ip addr和ifconfig区别
  • Springboot+Vue项目-基于Java+MySQL的房产销售系统(附源码+演示视频+LW)
  • 向量数据库中的向量是什么?
  • 【重回王座】ChatGPT发布最新模型gpt-4-turbo-2024-04-09
  • NL2SQL基础系列(1):业界顶尖排行榜、权威测评数据集及LLM大模型(Spider vs BIRD)全面对比优劣分析[Text2SQL、Text2DSL]
  • 深度学习基础——计算量、参数量和推理时间
  • 另一棵树的子树
  • 【hive】单节点搭建hadoop和hive
  • Aurora 协议学习理解与应用——Aurora 8B10B协议学习
  • Vue基础使用之V-Model绑定单选、复选、动态渲染选项的值
  • 分析ARP解析过程
  • 为硬刚小米SU7,华为智界S7整出了「梅开二度」操作
  • 408数据结构,怎么练习算法大题?
  • imgcat 工具
  • Anaconda换清华源
  • react使用npm i @reduxjs/toolkit react-redux
  • Nessus【部署 03】Docker部署漏洞扫描工具Nessus详细过程分享(下载+安装+注册+激活)文末福利
  • 2023年看雪安全技术峰会(公开)PPT合集(11份)
  • Docker仅需3步搭建免费私有化的AI搜索引擎-FreeAskInternet
  • 线程安全的单例模式
  • OpenHarmony实战开发-Grid和List内拖拽交换子组件位置。
  • 设计模式:时序图
  • 前端性能监控(面试常见)
  • react17 + antd4 如何实现Card组件与左侧内容对齐并撑满高度
  • Rust入门-Hello World