【2024 Dec 超实时】编辑安装llama.cpp并运行llama

首先讲一下环境

这是2024 年12月,llama.cpp 的编译需要cmake 呜呜呜 网上教程都是make 跑的。反正我现在装的时候make已经不再适用了,因为工具的版本,捣鼓了很久。
ubuntu 18 + conda env内置安装。

以下是可以完美编译llama.cpp的测试工具版本号:

gcc9 g++9 #只要大于等于9 版本都集成了cmake是要的c++17指令集,gcc8测试了要手动软链 麻烦 反正凉
cuda 11.8 #cuda 版本11 或者12 都行,10测试了不行
cmake 3.22 # camke 大于等于3.14 都行

安装gcc 9/g++ 9:

ubuntu 18默认只能安装到gcc/g++ 8, 需要安装gcc9需要添加新的ppd:

  1. 添加ppa源
sudo add-apt-repository ppa:ubuntu-toolchain-r/test

#有问题的话,在https://launchpad.net/~ubuntu-toolchain-r/+archive/ubuntu/test?field.series_filter=trusty网址中找到ppa源,可以尝试手动添加:
#打开 .list文件

vim /etc/apt/sources.list
# 文件末尾添加  bionic 是代表系统ubuntu18
deb https://ppa.launchpadcontent.net/ubuntu-toolchain-r/test/ubuntu bionic main 
deb-src https://ppa.launchpadcontent.net/ubuntu-toolchain-r/test/ubuntu bionic main 

查找对应的ubuntu版本后 找到ppa指令
2. 更新apt-get

sudo apt-get update

更新时可能出错

#我在apt-get update 的时候报错:
Get:4 http://archive.ubuntu.com/ubuntu bionic-updates InRelease [102 kB]
Err:1 http://ppa.launchpad.net/ubuntu-toolchain-r/test/ubuntu bionic InReleaseThe following signatures couldn\'t be verified because the public key is not available: NO_PUBKEY 2C277A0A352154E5 NO_PUBKEY 1E9377A2BA9EF27F
Get:5 http://archive.ubuntu.com/ubuntu bionic-backports InRelease [102 kB]
Reading package lists... Done
W: GPG error: http://ppa.launchpad.net/ubuntu-toolchain-r/test/ubuntu bionic InRelease: The following signatures couldn\'t be verified because the public key is not available: NO_PUBKEY 2C277A0A352154E5 NO_PUBKEY 1E9377A2BA9EF27F
E: The repository 'http://ppa.launchpad.net/ubuntu-toolchain-r/test/ubuntu bionic InRelease' is not signed.

解决:
根据错误消息中的 NO_PUBKEY 部分,系统丢失了两个公钥,分别是 2C277A0A352154E5 和 1E9377A2BA9EF27F。可以手动添加这两个公钥。

#添加公钥
sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 2C277A0A352154E5
sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 1E9377A2BA9EF27F
#重新更新
sudo apt-get update

其他错误参考这几个文章,实在不行的话,自行google看看了
有bug时查:ubuntu无法添加PPA的解决办法
因不能翻墙时查:ubuntu下apt添加第三方ppa源

3.下载gcc9和g++9

sudo apt install gcc-9 g++-9
  1. 切换版本,90是当前版本优先级,数值越大优先级越高,系统默认使用优先级最高的
sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-9 90 --slave /usr/bin/g++ g++ /usr/bin/g++-9

#其他指令

# 查看当前系统有的gcc
ls /usr/bin/gcc* 
# 查看当前所用gcc/cmake
gcc --version
cmake --version

如果上面在线安装你网络有问题,建议离线安装:
最后办法参考:离线安装gcc/g++ 9

离线安装需要注意

如果你是手动安装的话,要注意libstdc++的版本是否匹配上,gcc 9.5.0 需要libstdc++支持至少GLIBCXX 3.26以上版本:
#查看你的系统libstdc++是否有GLIBCXX 3.26

strings /usr/lib/x86_64-linux-gnu/libstdc++.so.6 | grep GLIBCXX

没有的话要安装或更新 libstdc++:

sudo apt-get update
sudo apt-get install libstdc++6

可以通过以下程序测试一下你的gcc是否能够正确编译c++17指令集

//可以尝试编译一个简单的 C++17 示例程序,创建一个简单的 test_filesystem.cpp 文件,如下所示:
#include <iostream>
#include <filesystem>int main() {std::filesystem::path p = ".";for (const auto& entry : std::filesystem::directory_iterator(p)) {std::cout << entry.path() << std::endl;}return 0;
}

然后使用以下命令进行编译,没报错就是 正常

g++ -std=c++17 test_filesystem.cpp -o test_filesystem
./test_filesystem

接下来可以下载和编译llama.cpp

1.下载 llama.cpp

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

2.cmake编译,参考这个官方https://github.com/ggerganov/llama.cpp/blob/master/docs/build.md
cd llama.cpp

# 如果需要llama支持 cuda,cpu版本的话直接去掉-DGGML_CUDA=ON就可以了
cmake -B build -DGGML_CUDA=ON
cmake --build build --config Release

eee… 按照这几个版本工具编译 应该没问题 亲测跑通

测试使用llama.cpp 跑本地模型

参考这个:https://zhuanlan.zhihu.com/p/690548599

  1. 以mistral 7b v3 为例子,先下载模型
pip install -U huggingface_hub
# 建议将下面这一行写入 ~/.bashrc。若没有写入,则每次下载时都需要先输入该命令
export HF_ENDPOINT=https://hf-mirror.com  

huggingface上申请你的token,然后执行下载

huggingface-cli download mistralai/Mistral-7B-Instruct-v0.3 --local-dir Mistral-7B-Instruct-v0.3 --local-dir-use-symlinks False --resume-download --token your_name_token_hf
  1. 进入llama.cpp 目录,利用llama.cpp 转化工具 把模型转成.guff文件,/XX/model/Mistral-7B-Instruct-v0.3/是你本地的模型路径
python3 convert_hf_to_gguf.py /XX/model/Mistral-7B-Instruct-v0.3/

3.量化模型,压缩一下,让跑的时候别吃太多内存(当然性能会有影响)。XXX/model/Mistral-7B-Instruct-v0.3/Mistral-7B-Instruct-v0.3-F16.gguf是你本地需要压缩模型路径,./myllms/Mistral-7B-Instruct-v0.3-Q4_K_M.gguf是压缩完存储名称。Q4_K_M表示压缩类型是INF4

#camke后生成的压缩指令路径是这个:./build/bin/llama-quantize./build/bin/llama-quantize  /XXX/model/Mistral-7B-Instruct-v0.3/Mistral-7B-Instruct-v0.3-F16.gguf ./myllms/Mistral-7B-Instruct-v0.3-Q4_K_M.gguf  Q4_K_M

压缩成功长这样:
压缩成功长这样
4.执行量化模型,./build/bin/llama-cli 指令:

#不知道指令在哪的话 find 一下:
#在当前目录及子目录中查找包含字符串的文件:
find . -type f -exec grep -H 'search_string' {} \;
./build/bin/llama-cli -m ./myllms/Mistral-7B-Instruct-v0.3-Q4_K_M.gguf -n 128
## 自动化跑了个测试,test example as follows:
## Q: Solve 5*u - 4*m = 33, -3*u - 2*m = 3 - 12 for u.
## A: 3 [end of text]

想要和模型交互的话用这个:

./build/bin/llama-cli -m ./myllms/Mistral-7B-Instruct-v0.3-Q4_K_M.gguf   --color -cnv

交互界面如下,绿色是我输入的问题,mistral 正在回答:
在这里插入图片描述

llama-cli的参数 参考这里:
https://github.com/ggerganov/llama.cpp/tree/master/examples/main
在这里插入图片描述
在这里插入图片描述

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

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

相关文章

优化移动端H5:常见问题与解决方案

移动端H5开发中的“坑”与解决方案 本文介绍了开发中遇到的几个关于移动端H5开发中的小问题&#xff0c;以及解决的方法。 一、iOS滑动不流畅问题 在iOS设备上&#xff0c;H5页面的滑动效果有时会出现不流畅的情况&#xff0c;特别是在页面高度超过一屏时。这通常是由于iOS的…

Visual Studio 2022+CMake配置PCL1.14.1

前言 本教程只是提供高效的PCL配置流程&#xff0c;不提供Qt环境配置&#xff0c;如果需要GUI界面&#xff0c;则需要自寻查找Cmake配置QT的教程。请相信&#xff0c;在CMake之下没有任何事是困难的&#xff0c;最困难的工作已经由前辈们完成。因此&#xff0c;对于C用户来说学…

C++多线程实战:掌握图像处理高级技巧

文章结尾有最新热度的文章,感兴趣的可以去看看。 本文是经过严格查阅相关权威文献和资料,形成的专业的可靠的内容。全文数据都有据可依,可回溯。特别申明:数据和资料已获得授权。本文内容,不涉及任何偏颇观点,用中立态度客观事实描述事情本身 导读 在当今的计算世界中,…

C++在关键嵌入式软件领域逐步取代 Ada 的演进历程

第一章&#xff1a;引言 1.1 Ada 与 C在嵌入式系统中的角色 在嵌入式系统开发领域的漫长演进历程中&#xff0c;Ada 与 C宛如两颗璀璨而又各具特色的星辰&#xff0c;交替影响着该领域的发展轨迹。它们不仅代表了两种不同的编程哲学&#xff0c;也反映了不同时期对软件可靠性…

高项 - 法律法规与标准规范

个人总结&#xff0c;仅供参考&#xff0c;欢迎加好友一起讨论 博文更新参考时间点&#xff1a;2024-12 高项 - 章节与知识点汇总&#xff1a;点击跳转 文章目录 高项 - 法律法规与标准规范法律法规民法典&#xff08;合同编&#xff09;招标投标法政府采购法专利法著作权法商…

EXCEL数据清洗的几个功能总结备忘

目录 0 参考教材 1 用EXCEL进行数据清洗的几个功能 2 删除重复值&#xff1a; 3 找到缺失值等 4 大小写转换 5 类型转化 6 识别空格 0 参考教材 精通EXCEL数据统计与分析&#xff0c;中国&#xff0c;李宗璋用EXCEL学统计学&#xff0c;日EXCEL统计分析与决策&#x…

基于小程序实现地图定位、轨迹绘制、地图标点、快捷导航、唤醒导航APP、开箱即用

目录 前言研究背景与意义研究目标与内容研究方法与技术路线小程序地图组件介绍定位技术与原理轨迹绘制技术地图标注与标记功能地图定位与轨迹绘制功能实现定位功能设计与实现获取用户当前位置总结说明代码块前言 研究背景与意义 地图定位和轨迹追踪作为智能手机中常见的功能之…

计算机网络之网络层超详细讲解

个人主页&#xff1a;C忠实粉丝 欢迎 点赞&#x1f44d; 收藏✨ 留言✉ 加关注&#x1f493;本文由 C忠实粉丝 原创 计算机网络之网络层超详细讲解 收录于专栏【计算机网络】 本专栏旨在分享学习计算机网络的一点学习笔记&#xff0c;欢迎大家在评论区交流讨论&#x1f48c; …

【数字花园】数字花园(个人网站、博客)搭建经历汇总教程

目录 写在最最前面第一章&#xff1a;netlify免费搭建数字花园相关教程使用的平台步骤信息管理 第二章&#xff1a;本地部署数字花园数字花园网站本地手动部署方案1. 获取网站源码2.2 安装 Node.js 3. 项目部署3.1 安装项目依赖3.2 构建项目3.3 启动http服务器 4. 本地预览5. 在…

计算机毕业设计Python+Vue.js游戏推荐系统 Steam游戏推荐系统 Django Flask 游 戏可视化 游戏数据分析 游戏大数据 爬虫 机

温馨提示&#xff1a;文末有 CSDN 平台官方提供的学长联系方式的名片&#xff01; 温馨提示&#xff1a;文末有 CSDN 平台官方提供的学长联系方式的名片&#xff01; 温馨提示&#xff1a;文末有 CSDN 平台官方提供的学长联系方式的名片&#xff01; 作者简介&#xff1a;Java领…

问题 C: B001 快乐的蠕虫

题目描述 有一只快乐的蠕虫居住在一个mn大小的网格中。在网格的某些位置放置了k块石头。网格中的每个位置要么是空的&#xff0c;要么放置了一块石头。当蠕虫睡觉时&#xff0c;它在水平方向或垂直方向上躺着&#xff0c;把身体尽可能伸展开来。蠕虫的身躯既不能进入到放有石块…

Qt实现自定义行编辑器

引言 开发环境项目结构ui界面设计示例代码运行效果总结qt中原有的行编辑器无法满足当前的需要,所以需要自定义行编辑器。 通过上下按键切换到不同的行编辑器,在选中的行编辑器中输入数字,编辑器呈现边框,编辑后按下回车键保存之前编辑的数值,没有按下回车键直接切换上下键…

得物使用AutoMQ构建海量数据处理的新一代可观测性架构

引言 得物作为全球领先的潮流网购社区&#xff0c;日益增长的用户和数据带来了巨大的技术挑战。当前&#xff0c;得物的可观测性平台每天生成数PB级Trace数据和数万亿条Span记录&#xff0c;要求平台具备高效的实时处理能力和低成本的数据存储解决方案。 传统的存算一体架构将…

视图、转发与重定向、静态资源处理

目录 视图 默认视图 视图机制原理 自定义视图 请求转发与重定向 静态资源处理 视图 每个视图解析器都实现了 Ordered 接口并开放出一个 order 属性 可以通过 order 属性指定解析器的优先顺序&#xff0c;order 越小优先级越高 默认是最低优先级&#xff0c;Integer.MAX_…

Redis 生产问题(重要)

缓存穿透 什么是缓存穿透&#xff1f; 缓存穿透说简单点就是大量请求的 key 是不合理的&#xff0c;根本不存在于缓存中&#xff0c;也不存在于数据库中 。这就导致这些请求直接到了数据库上&#xff0c;根本没有经过缓存这一层&#xff0c;对数据库造成了巨大的压力&#xf…

【Redis】壹 —— Redis 介绍

文章目录&#xff1a; 前言 一、认识Redis 1. Redis 用途 作为数据库 作为流引擎 二、服务端高并发分布式结构演变 1. 单机架构 2. 应用数据分离架构 3. 应用服务集群架构 4. 读写分离 / 主从分离架构 5. 冷热分离 —— 引入缓存 6. 分库分表 7. 微服务架构 8. …

auto-gptq安装以及不适配软硬件环境可能出现的问题及解决方式

目录 1、auto-gptq是什么&#xff1f;2、auto-gptq安装3、auto-gptq不正确安装可能会出现的问题&#xff08;1&#xff09;爆出&#xff1a;CUDA extension not installed.&#xff08;2&#xff09;没有报错但是推理速度超级慢 1、auto-gptq是什么&#xff1f; Auto-GPTQ 是一…

AI 的时代,新科技和新技术如何推动跨学科的整合?

在当前AI的发展中&#xff0c;我们面临的一个主要挑战就是融合的问题&#xff0c;这实际上不仅是技术上的融合&#xff0c;还有更深层次的哲学层面的思考。 或许在中国这方面的讨论较少&#xff0c;但在西方哲学和神学的语境中&#xff0c;探讨万物的根本和不同学科之间的联系…

【h5py】 提取mat文件中的HDF5格式的数据

h5py 提取mat文件中的HDF5格式的数据 使用纯Python查看数据配合Matlab后&#xff0c;使用Python查看数据 一、使用纯Python查看文件数据内容 原理&#xff1a;当HDF5存储的是struct类型数据&#xff0c;解析时要像一棵树&#xff0c;我们需要逐层次的去解析&#xff0c;直到…

【指南】03 CSC联系外导

确定外导 课题组有合作关系的国外导师与自己研究方向密切相关的国外导师国外高校官网、谷歌学术、Research Gate等平台检索不可以是中国港澳台的高校科研院所或机构注意外导所在高校排名和科研水平可列表记录注意外国签证政策 发送邮件 自我介绍简要介绍CSC介绍自己的研究对…