RK3576部署llama2.c

news2024/10/4 11:56:50

llama2.c 是一个用纯 C 语言实现的轻量级推理引擎,无需依赖任何第三方库即可高效地进行推理任务。与 llama.cpp 相比,其代码更加直观易懂,并且可以在 PC、嵌入式 Linux 乃至 MCU 上部署。以下是 llama2.c 在 RK3576 开发板上的部署步骤。

工程克隆

首先我们将源码克隆下来:https://github.com/karpathy/llama2.c.git

PC端测试

在克隆完源码后,下载 TinyStories 数据集上训练的 15M 参数模型(大小约为 60MB):

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

然后编译并运行程序:

make run
./run stories15M.bin

运行结果如下:

在这里插入图片描述

可以看到,大概每秒能够生成64个token,速度非常快。

交叉编译

为了使程序能够在 OK3576 开发板上运行,需要对 Makefile 进行适当修改,以指定正确的交叉编译工具链路径。在 Makefile 中找到以下行:

我们需要将Makefile文件中的CC修改为我们之前设置过的交叉编译工具链。

GCC_COMPILER_PATH=${CROSS_COMPILE}
CC = ${GCC_COMPILER_PATH}gcc

在这里插入图片描述

确保 CC变量正确设置了交叉编译器。接着,执行交叉编译:

make clean
make run

在这里插入图片描述

传输测试

完成交叉编译后,在当前目录下会产生一个可执行文件 run。将 run 文件、stories15M.bin 模型文件及 tokenizer.bin 文件复制到开发板上。

在这里插入图片描述

执行结果如下:

在这里插入图片描述

在开发板上执行 run 命令后,可以观察到大约每秒生成 40 个 token 的速度,这也显示出较高的性能。

此外,在运行程序时,可以通过命令行参数来对模型的行为进行精细控制。以下是几个常用的参数及其作用:

  • -t <temperature>:温度值。温度是用来控制模型输出的随机程度的一个参数。较高的温度值(如 1)会导致输出更加随机和不可预测,而较低的温度值(如 0.5)会使输出更加确定性和集中于高概率的选项。
  • -s <seed>:随机种子。这是一个用于初始化随机数生成器的整数值。设置相同的种子值可以使模型每次生成相同的序列,这对于调试和重现结果很有帮助。
  • -i "<prompt>":输入提示。这是用来引导模型生成文本的初始字符串或句子。模型将基于提供的提示开始生成后续文本。确保提供的提示清晰明确,以便模型能够更好地理解和扩展。

通过这些参数,用户可以根据自己的需求调整模型的行为,从而获得更加符合预期的输出结果。

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2187961.html

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

相关文章

Linux系统安装教程

Linux安装流程 一、前置准备工作二、开始安装Linux 一、前置准备工作 安装好VMWare虚拟机&#xff0c;并下载Linux系统的安装包&#xff1b; Linux安装包路径为&#xff1a;安装包链接 &#xff0c; 提取码为&#xff1a;4tiM 二、开始安装Linux

C/C++复习(一)

1.sizeof 关于sizeof我们是经常使用的&#xff0c;所以使用方法就不需要提及了&#xff0c;这里我们需要注意的是&#xff0c;sizeof 后面如果是表达式可以不用括号&#xff0c;并且sizeof实际上不参与运算&#xff0c;返回的是内容的类型大小&#xff08;size_t类型&#xff0…

SpringCloud Config配置中心 SpringCloud Bus消息总线

一、SpringCloud Config 使用git储存配置信息 1&#xff09;什么是 SpringCloud Config项目实现的目标是将配置文件从本地项目中抽出来放到git仓库中&#xff0c;项目启动时自动从git仓库中取配置文件。 但是本地项目不直接和git仓库通信&#xff0c;而是通过配置服务器中转。…

JAVA——IO框架

目录 一、框架 二、导入框架步骤 三、测试 一、框架 框架就是为了解决某类问题&#xff0c;编写的一套类、接口等。大多数框架都是第三方研发的 好处: 在框架的基础上开发&#xff0c;提高开发效率 框架的形式&#xff1a;一般是把类、接口编译成class形式&#xff0c;再…

【MySQL】视图、存储过程、触发器

目录 一、视图 1. 创建视图 2. 视图的使用 3. 查看视图 4. 删除视图 5. 视图的作用 二、存储过程 1. 存储过程的创建 2. 使用存储过程 3. 带参数的存储过程 3.1 分页 4. 存储过程与函数的区别 5. 存储过程的缺陷 三、 触发器 -- 隐式执行 1. 创建触发器 2. 查…

太原网站制作打造企业网站的关键要素

太原网站制作&#xff1a;打造企业网站的关键要素 在数字化时代&#xff0c;企业网站成为了品牌形象和市场营销的重要一环。太原的企业在进行网站制作时&#xff0c;需要关注几个关键要素&#xff0c;以确保网站能够有效提升企业竞争力和用户体验。 **1. 目标明确** 在网站制…

【Linux系统编程】第二十七弹---文件描述符与重定向:fd奥秘、dup2应用与Shell重定向实战

✨个人主页&#xff1a; 熬夜学编程的小林 &#x1f497;系列专栏&#xff1a; 【C语言详解】 【数据结构详解】【C详解】【Linux系统编程】 目录 1、文件描述符fd 1.1、0 & 1 & 2 1.2、文件描述符的分配规则 2、重定向 3、使用 dup2 系统调用 3.1、> 输出…

《业务三板斧:定目标、抓过程、拿结果》读书笔记1

这个书是24年新书&#xff0c;来自阿里系的人的作品&#xff0c;还可以。今天先看前沿部分的精彩部分&#xff1a; 我们在服务企业的过程中&#xff0c;发现了一个常见的管理现象&#xff1a;管理者自 己承担了团队里重要的项目&#xff0c;把风险和压力都集中在自己身上。因 此…

(10)MATLAB莱斯(Rician)衰落信道仿真1

文章目录 前言一、莱斯分布随机变量二、仿真代码与结果1.仿真代码2.仿真结果画图 后续 前言 首先给出莱斯衰落信道模型&#xff0c;引入了莱斯因子K&#xff0c;并给出莱斯分布的概率密度函数公式。然后导出莱斯分布随机变量的仿真表示式&#xff0c;建立MATLAB仿真代码&#…

为什么晶振被称为芯片的心脏?(全网最准确解释)

晶振是电路中非常常见的一个元件&#xff0c;常常被人们称为芯片的心脏&#xff0c;确实如此&#xff0c;没有了晶振&#xff0c;可以说一般情况下芯片就无法工作。 为什么晶振被称为芯片的心脏&#xff1f;&#xff08;全网最准确解释&#xff09; STM32 软件触发ADC采集 STM…

OpenAI o1 与 GPT-4o:前沿AI全面比较下你更倾向哪一款

前言 就在前不久&#xff0c;OpenAI 发布了推理能力更强可达理科博士生水准的o1 模型&#xff0c;业界也表示这标志着人工智能发展的新里程碑&#xff0c;特别是在复杂问题解决和推理方面。 然而&#xff0c;该模型与其前身GPT-4o有很大不同&#xff0c;后者仍然广泛用于通用…

【JAVA开源】基于Vue和SpringBoot的宠物咖啡馆平台

本文项目编号 T 064 &#xff0c;文末自助获取源码 \color{red}{T064&#xff0c;文末自助获取源码} T064&#xff0c;文末自助获取源码 目录 一、系统介绍二、演示录屏三、启动教程四、功能截图五、文案资料5.1 选题背景5.2 国内外研究现状5.3 可行性分析 六、核心代码6.1 查…

Stable Diffusion绘画 | 插件-Deforum:动态视频生成(终篇)

Deforum 中其他模块主要是服务于上传视频的&#xff0c;而视频转绘有其他效果更好的插件。 初始化 除了 图像初始化 模块&#xff0c;其他模块都用不上&#xff1a; 上一篇文章生成的视频&#xff0c;都用了图像初始化功能。 像我这样&#xff0c;拖入一张图片&#xff0c;D…

Java - LeetCode面试经典150题 - 矩阵 (四)

矩阵 36. 有效的数独 题目 请你判断一个 9 x 9 的数独是否有效。只需要 根据以下规则 &#xff0c;验证已经填入的数字是否有效即可。 数字 1-9 在每一行只能出现一次。 数字 1-9 在每一列只能出现一次。 数字 1-9 在每一个以粗实线分隔的 3x3 宫内只能出现一次。&#xff0…

【黑马点评】2 商户查询缓存

【黑马点评】2 商户查询缓存 2 商户查询缓存2.1 添加商户缓存2.1.1 添加商户信息缓存 --修改ShopController中的queryShopById方法2.1.2 添加商户类别缓存&#xff08;作业&#xff09;--修改ShopController中的queryTypeList方法 2.2 缓存更新策略2.2.1 数据库缓存不一致解决方…

测试H7-TOOL的CANFD助手J1939批量数据传输连续运行30个小时稳定不丢包

根据客户需求做的一个不断电连续运行测试。 测试条件 1、H7-TOOL的CAN/CANFD助手控制一个节点设备 2、使用J1939协议 3、经典CAN方式&#xff0c;波特率250Kbps J1939测试命令&#xff0c;250ms一次发送接收测试 昨天下午三点到今晚9点半&#xff0c;共计30个小时不断电连续测…

C++ STL 初探:打开标准模板库的大门

文章目录 C STL 初探&#xff1a;打开标准模板库的大门前言第一章: 什么是STL&#xff1f;1.1 标准模板库简介1.2 STL的历史背景1.3 STL的组成 第二章: STL的版本与演进2.1 不同的STL版本2.2 STL的影响与重要性 第三章: 为什么学习 STL&#xff1f;3.1 从手动编写到标准化解决方…

MongoDB集群模式详解及应用实战

目录 本节课内容: 集群搭建 1.创建3个目录: 2.编辑配置文件 ​编辑 3.启动: 4.看看: 5.另外,两个如上1,2,3步骤操作 ,但是日志目录,端口什么的需要改一下即可。 6.准备联通性: 先连主节点: 搭建集群环境(看文档) 本节课内容: 集群搭建 1.创建3个目录…

两数相除(c语言)

1.//给你两个整数&#xff0c;被除数 dividend 和除数 divisor。将两数相除&#xff0c;要求 不使用 乘法、除法和取余运算。 //整数除法应该向零截断&#xff0c;也就是截去&#xff08;truncate&#xff09;其小数部分。 // 例如&#xff0c;8.345 将被截断为 8 &#xff0c;…