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.mzph.cn/news/804208.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

[计算机效率] 鼠标手势工具:WGestures(解放键盘的超级效率工具)

3.22 鼠标手势工具:WGestures 通过设置各种鼠标手势和操作进行绑定。当用户通过鼠标绘制出特定的鼠标手势后就会触发已经设置好的操作。有点像浏览器中的鼠标手势,通过鼠标手势操纵浏览器做一些特定的动作。这是一款强大的鼠标手势工具,可以…

Spring 重试

1、添加重试依赖 <dependency><groupId>org.springframework.retry</groupId><artifactId>spring-retry</artifactId> </dependency> <dependency><groupId>org.springframework.boot</groupId><artifactId>spri…

机器学习(理论第一课)

一、理解人工智能、机器学习、深度学习、强化学习&#xff1f; 人工智能、机器学习和深度学习之间存在递进关系&#xff0c;它们的覆盖范围逐层递减。 **人工智能&#xff08;Artificial Intelligence&#xff0c;AI&#xff09;**是最宽泛的概念&#xff0c;旨在研究、开发用于…

第三十六节 Java 网络编程

网络编程是指编写运行在多个设备&#xff08;计算机&#xff09;的程序&#xff0c;这些设备都通过网络连接起来。 java.net包中J2SE的API包含有类和接口&#xff0c;它们提供低层次的通信细节。你可以直接使用这些类和接口&#xff0c;来专注于解决问题&#xff0c;而不用关注…

AWS服务器有哪些优势?

作为一家总部在美国的公司&#xff0c;AWS为什么会受到中国企业的喜爱&#xff1f;他有什么优势&#xff1f;九河云作为AWS合作伙伴&#xff0c;将会带读者展现使用AWS的优势。 首先是作为跨国企业&#xff0c;AWS在全球有数十个区域节点&#xff0c;这种广泛的地域覆盖不仅有…

神经网络解决回归问题(更新ing)

神经网络应用于回归问题 神经网络是处理回归问题的强大工具&#xff0c;它们能够学习输入数据和输出之间的复杂关系。 神经网络提供了一种灵活且强大的框架&#xff0c;用于建模和预测回归问题。通过 适当的 网络结构、训练策略和正则化技术&#xff0c;可以有效地从数据中学…

大模型笔记:Prompt tuning

1 NLP模型的几个阶段 1.1 第一阶段&#xff08;在深度学习出现之前&#xff09; 通常聚焦于特征工程&#xff08;feature engineering&#xff09;利用领域知识从数据中提取好的特征 1.2 第二阶段&#xff08;在深度学习出现之后&#xff09; 特征可以从数据中习得——>…

大数据相关组件安装及使用

自学大数据相关组件 持续更新中。。。 一、linux安装docker 1、更新yum sudo yum update2、卸载docker旧版本 sudo yum remove docker \docker-client \docker-client-latest \docker-common \docker-latest \docker-latest-logrotate \docker-logrotate \docker-engine3、…

大话设计模式——18.策略模式(Strategy Pattern)

简介 是一系列算法的封装&#xff0c;即做的事情相同&#xff08;方法名称相同&#xff09;但是实现的方式不同&#xff0c;以相同方式调用所有的算法&#xff0c;减少算法与使用算法的耦合。直接调用方法。 UML图 应用场景 Java AWT中的LayoutManager&#xff08;布局管理器&…

ARCHE-2024第三届上海国际智慧档案展览会暨高峰论坛即将开幕

一、ARCHE-2024精彩即将开幕 为进一步推动档案行业新科技创新应用与档案信息化再上台阶&#xff0c;加强档案行业交流互动&#xff0c;强化档案行业创新意识&#xff0c;实现相互促进、共同发展&#xff0c;作为6.9国际档案日系列活动的重要延伸——“2024第三届上海国际智慧档…

(十三)强缓存和协商缓存的区别

一、浏览器的缓存策略 浏览器的缓存策略是指浏览器在加载页面时如何使用和管理缓存机制。可以提高网页加载速度&#xff0c;减轻服务器负载&#xff0c;并提供更好的用户体验。常用的缓存策略有两种&#xff1a;一种是发送请求&#xff08;协商缓存&#xff09;&#xff0c;一…

echarts 如何设置(dataZoom)多个图形的数据区域一起联动缩放响应

数据区域联动缩放需要用到 dataZoom 的专属事件 dispatchAction 实现多个数据区域联动缩放功能 <div style"width:100%;height:320px;" id"test01"></div> <div style"width:100%;height:320px;" id"test02"></…

ssm 项目 连接 redis 报错 : 可能是 不加 密码就不报错了

ssm 项目 连接 redis 报错 &#xff1a; 可能是 不加 密码就不报错了**

MAC(M1芯片)编译Java项目慢且发热严重问题解决方案

目录 一、背景二、排查三、解决四、效果以及结果展示五、总结 一、背景 使用idea编译项目等操作&#xff0c;经常性发热严重&#xff0c;并且时间慢。直到昨天编译一个项目用时30分钟&#xff0c;电脑温度很高&#xff0c;并且有烧灼的味道&#xff0c;于是有了此篇文章。 二、…

C++(六个默认成员函数)

目录 六个默认成员函数构造函数析构函数拷贝构造函数 总结 六个默认成员函数 默认成员函数的概念&#xff1a;如果用户不显式写&#xff0c;编译器会自动生成的函数&#xff0c;就是默认成员函数 构造函数 构造函数是六个默认成员函数之一&#xff0c;构造函数的功能类似于init…

C#面:什么链式委托

链式委托是指将多个委托实例连接在一起&#xff0c;形成一个委托链&#xff0c;使得多个方法可以按照一定的顺序依次被调用。 在C#中&#xff0c;可以使用""运算符来连接多个委托实例&#xff0c;形成一个新的委托实例。 当调用链式委托时&#xff0c;每个委托实例都…

懒人必备!4个PS抠图技巧,让你轻松处理复杂背景!

今天带给大家的又是一个绝对重要的知识&#xff0c;那就是“抠图”&#xff01; 在我们的设计中&#xff0c;抠图可以说是最常见的运用啦&#xff0c;简单的PS抠图我们都会&#xff0c;但是最令我们头痛的人物或者动物的毛发的抠图了&#xff0c;很多人都抠不好&#xff0c;我…

合并单元格的excel文件转换成json数据格式

github地址: https://github.com/CodeWang-Ay/DataProcess 类型1 需求1: 类似于数据格式: https://blog.csdn.net/qq_44072222/article/details/120884158 目标json格式 {"位置": 1, "名称": "nba球员", "国家": "美国"…

华为机试题

目录 第一章、HJ1计算字符串最后一个单词的长度&#xff0c;单词以空格隔开。1.1&#xff09;描述1.2&#xff09;解题第二章、算法题HJ2 计算某字符出现次数1.1&#xff09;题目描述1.2&#xff09;解题思路与答案第三章、算法题HJ3 明明的随机数1.1&#xff09;题目描述1.2&a…

eBPF专题一 | 手把手教你用eBPF诊断MySQL(含源码)

DBdoctor 是一款数据库内核级性能诊断工具&#xff0c;利用eBPF技术深入数据库内核&#xff0c;致力于解决数据库的一切性能问题。 被称之为“革命性”内核技术的eBPF一直以来都备受关注&#xff0c;而DBdoctor作为一款数据库性能诊断工具&#xff0c;首次将eBPF技术深入应用…