llama模型c语言推理@FreeBSD

llama中文名羊驼,Meta AI推出的一款大型语言模型,其性能在多个自然语言处理任务上表现优异是一个非常棒的自然语言生成模型。

llama.cpp是一个使用c语言推理llama的软件包,它支持FreeBSD、Linux等多种平台。

GitHub - ggerganov/llama.cpp: LLM inference in C/C++

下载源码

git clone https://github.com/ggerganov/llama.cpp

编译

mkdir build
cd build
cmake ..
cmake --build . --config Release

大约只需要10-20分钟就能编译好,速度很快!

FreeBSD里默认是没有sudo的,用root账户将编译好的文件放入/usr/bin又担心干干扰,所以使用加环境变量的方法解决安装问题。

创建env.sh文件,文件内容:

export PATH=/home/skywalk/github/llama.cpp/build/bin:$PAT

每次使用前执行source env.sh即可。

之所以不放入.cshrc或者.bashrc,也是不想让它影响整个系统。毕竟后面可能安装其它模型。

下载模型文件

llama中文模型

官网:GitHub - ymcui/Chinese-LLaMA-Alpaca-2: 中文LLaMA-2 & Alpaca-2大模型二期项目 + 64K超长上下文模型 (Chinese LLaMA-2 & Alpaca-2 LLMs with 64K long context models)

可以通过百度和谷歌网盘下载模型文件

下载地址:

以下是完整版模型,直接下载即可使用,无需其他合并步骤。推荐网络带宽充足的用户。

模型名称类型大小下载地址GGUF
Chinese-LLaMA-2-13B基座模型24.7 GB[百度] [Google] [🤗HF][🤗HF]
Chinese-LLaMA-2-7B基座模型12.9 GB[百度] [Google] [🤗HF][🤗HF]
Chinese-LLaMA-2-1.3B基座模型2.4 GB[百度] [Google] [🤗HF][🤗HF]
Chinese-Alpaca-2-13B指令模型24.7 GB[百度] [Google] [🤗HF][🤗HF]
Chinese-Alpaca-2-7B指令模型12.9 GB[百度] [Google] [🤗HF][🤗HF]
Chinese-Alpaca-2-1.3B指令模型2.4 GB[百度] [Google][🤗HF][🤗HF]

测试Chinese-Alpaca-2-1.3B模型

这个模型小一些,从百度网盘下载还方便一点。

将模型下载到本地后,是这些文件:

ls -l ~/work/model/chinesellama/
total 4935424
-rw-r--r--  1 skywalk  skywalk      339595  3月 24 20:30 chinesellama.tar.gz
-rw-r--r--  1 skywalk  skywalk         671  3月 24 20:06 config.json
-rw-r--r--  1 skywalk  skywalk         170  3月 24 20:06 generation_config.json
-rw-r--r--  1 skywalk  skywalk  2525058738  3月 24 21:01 pytorch_model.bin
-rw-r--r--  1 skywalk  skywalk         435  3月 24 20:08 special_tokens_map.json
-rw-r--r--  1 skywalk  skywalk         766  3月 24 20:08 tokenizer_config.json
-rw-r--r--  1 skywalk  skywalk      844403  3月 24 20:08 tokenizer.model

转换模型

python convert.py ~/work/model/chinesellama/

模型写入:Wrote /home/skywalk/work/model/chinesellama/ggml-model-f16.gguf

执行

main -m ~/work/model/chinesellama/ggml-model-f16.gguf  -p "Building a website can be done in 10 simple steps:\nStep 1:" -n 400 -e

我的8G内存本本直接崩了,意料之中。

不过整个流程算是跑通了!

使用llama.cpp,可以在FreeBSD下跑llama中文模型,太棒了!

附赠llama2.c

llama2.c 用纯c 700行代码推理llama2 模型!关键还是跨平台的,FreeBSD下一样好使!

官网:https://github.com/karpathy/llama2.c

下载代码:

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

进入项目目录并下载模型:

cd llama2.c
wget https://karpathy.ai/llama2c/model.bin -P out

这个模型是stories15M模型

编译并运行:

gcc -O3 -o run run.c -lm
./run out/model.bin

英文小说输出效果:

Once upon a time, there was a big bookcase in a little girl's room. The little girl, named Lucy, loved to read. She would sit on the chair and read all day. One day, Lucy saw a scary monster in her room. The monster had big teeth and big eyes. Lucy was scared, but she wanted to find out who was scary.
Lucy thought and thought. Then, she had an idea. She would change her clothes and draw a face on the monster with a big crayon. The monster thought it was a funny picture. Lucy went back to her room and started to draw on the bookcase.
As Lucy drew, the monster from the book came to life! It was a funny looking monster that looked at Lucy's drawings. Lucy was not scared anymore. She laughed and played with her new friend. The monster and Lucy were happy friends forever.
achieved tok/s: 44.499106

可以下载更大的模型,比如stories110M.bin:

https://huggingface.co/karpathy/tinyllamas/resolve/main/stories110M.bin

具体模型如下:

modeldimn_layersn_headsn_kv_headsmax context lengthparametersval lossdownload
260K64584512260K1.297stories260K
OG28866625615M1.072stories15M.bin
42M512888102442M0.847stories42M.bin
110M7681212121024110M0.760stories110M.bin

理论上,可以推理任何的llama模型,不过作者说因为是float32推理,所以大于7b的不建议。

总结

llama.cpp和llama2.c能在FreeBSD平台进行AI推理,真的是太棒了!

调试

直接在根目录make编译报错

make: "/usr/home/skywalk/github/llama.cpp/Makefile" line 627: Unknown modifier " For CUDA versions < 11.7 a target CUDA architecture must be explicitly provided via CUDA_DOCKER_ARCH"
make: "/usr/home/skywalk/github/llama.cpp/Makefile" line 627: Invalid line type
make: "/usr/home/skywalk/github/llama.cpp/Makefile" line 628: Invalid line type
make: "/usr/home/skywalk/github/llama.cpp/Makefile" line 629: Invalid line type
make: "/usr/home/skywalk/github/llama.cpp/Makefile" line 630: Invalid line type
make: "/usr/home/skywalk/github/llama.cpp/Makefile" line 631: Invalid line type
make: "/usr/home/skywalk/github/llama.cpp/Makefile" line 632: Invalid line type
make: "/usr/home/skywalk/github/llama.cpp/Makefile" line 833: Invalid line type
make: "/usr/home/skywalk/github/llama.cpp/Makefile" line 836: Invalid line type
make: Fatal errors encountered -- cannot continue

改成cmake

mkdir build
cd build
cmake ..
cmake --build . --config Release

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

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

相关文章

Web漏洞--WAF绕过+堆叠查询

Stacked injections(堆叠注入)从名词的含义就可以看到应该是一堆 sql语句(多条)一起执行。而在真实的运用中也是这样的&#xff0c;我们知道在mysql 中&#xff0c;主要是命令行中&#xff0c;每一条语句结尾加;表示语句结束。这样我们就想到了是不是可以多句一起使用。这个叫做…

[论文精读]BrainVGAE: End-to-End Graph Neural Networks for Noisy fMRI Dataset

论文网址&#xff1a;BrainVGAE: End-to-End Graph Neural Networks for Noisy fMRI Dataset | IEEE Conference Publication | IEEE Xplore 英文是纯手打的&#xff01;论文原文的summarizing and paraphrasing。可能会出现难以避免的拼写错误和语法错误&#xff0c;若有发现…

【字节二面】SpringBoot可以同时处理多少请求

目录 一、示例代码二、那么springboot可以处理多少请求&#xff1f;三、maxConnections、maxThreads、acceptCount的关系 一、示例代码 RestController Slf4j public class RequestController {GetMapping("/test")public String test(HttpServletRequest request) …

【详细讲解React 快速入门教程】

&#x1f525;博主&#xff1a;程序员不想YY啊&#x1f525; &#x1f4ab;CSDN优质创作者&#xff0c;CSDN实力新星&#xff0c;CSDN博客专家&#x1f4ab; &#x1f917;点赞&#x1f388;收藏⭐再看&#x1f4ab;养成习惯 &#x1f308;希望本文对您有所裨益&#xff0c;如有…

Linux基础命令大全

1、pwd&#xff1a;显示当前路径 cd &#xff1a;切换目录 用法&#xff1a;cd cd ../ 切换到上级目录 cd / 切换到根目录 cd ~ &#xff08;或只有cd &#xff09;切换到当前用户主目录(home底下以用户名命名的文件夹) /root目录mkdir 创建目录 mkdir 目录名 -p 递归创建目录…

代码随想录 Day-25

力扣题目 509.斐波那契数 思路 很理所当然的&#xff0c;可以使用递归的方式其次是用动态规划的方式&#xff0c;动态规划的核心就是递推公式。 那么递推和递归一字之差&#xff0c;有什么区别呢&#xff1f;&#xff08;递推和递归的区别&#xff09; 1、递归 class Solutio…

OD C卷 - 反射计数

反射计数&#xff08;200&#xff09; 给定一个包含0 、1的二维矩阵&#xff1b;一个物体从给定的初始位置出发&#xff0c;在给定的速度下移动&#xff0c;遇到矩阵的边缘则发生镜面反射&#xff0c;无论物体经过0还是1&#xff0c;都不影响其速度&#xff1b;经过t时间单位后…

C++ 之多态虚函数原理及应用

文章目录 多态基本概念和原理虚函数的基本原理和概念虚析构和纯虚析构多重继承中的虚函数小结 多态基本概念和原理 多态的基本概念 **多态是C面向对象三大特性之一** 多态的定义 多态是一种面向对象编程概念&#xff0c;指同一个行为&#xff08;方法&#xff09;在不同的对象上…

ChatGPT与传统搜索引擎的区别:智能对话与关键词匹配的差异

引言 随着互联网的快速发展&#xff0c;信息的获取变得比以往任何时候都更加便捷。在数字化时代&#xff0c;人们对于获取准确、及时信息的需求愈发迫切。传统搜索引擎通过关键词匹配的方式为用户提供了大量的信息&#xff0c;然而&#xff0c;这种机械式的检索方式有时候并不…

ubuntu 中安装docker

1 资源地址 进入ubuntu官网下载Ubuntu23.04的版本的镜像 2 安装ubuntu 这里选择再Vmware上安装Ubuntu23.04.6 创建一个虚拟机&#xff0c;下一步下一步 注意虚拟机配置网络桥接&#xff0c;CD/DVD选择本地的镜像地址 开启此虚拟机&#xff0c;下一步下一步等待镜像安装。 3…

书生·浦语大模型实战营之全链路开源体系

书生浦语大模型实战营之全链路开源体系 为了推动大模型在更多行业落地开花&#xff0c;让开发者们更高效的学习大模型的开发与应用&#xff0c;上海人工智能实验室重磅推出书生浦语大模型实战营&#xff0c;为广大开发者搭建大模型学习和实践开发的平台&#xff0c;两周时间带…

【Java程序设计】【C00352】基于Springboot的疫情隔壁酒店管理系统(有论文)

基于Springboot的疫情隔壁酒店管理系统&#xff08;有论文&#xff09; 项目简介项目获取开发环境项目技术运行截图 项目简介 项目获取 &#x1f345;文末点击卡片获取源码&#x1f345; 开发环境 运行环境&#xff1a;推荐jdk1.8&#xff1b; 开发工具&#xff1a;eclipse以…