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

【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
在这里插入图片描述
在这里插入图片描述

相关文章:

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

首先讲一下环境 这是2024 年12月&#xff0c;llama.cpp 的编译需要cmake 呜呜呜 网上教程都是make 跑的。反正我现在装的时候make已经不再适用了&#xff0c;因为工具的版本&#xff0c;捣鼓了很久。 ubuntu 18 conda env内置安装。 以下是可以完美编译llama.cpp的测试工具版…...

Docker介绍、安装、namespace、cgroup、镜像-Dya 01

0. 容器简介 从生活上来说&#xff0c;容器是一种工具&#xff0c;可以装东西的工具&#xff0c;如衣柜、背包、行李箱等等。 从IT技术方面来说&#xff0c;容器是一种全新的虚拟化技术&#xff0c;它提高了硬件资源利用率&#xff0c;结合k8s还可以让企业业务快速横向扩容、业…...

docker 搭建自动唤醒UpSnap工具

1、拉取阿里UpSnap镜像 docker pull crpi-k5k93ldwfc7o75ip.cn-hangzhou.personal.cr.aliyuncs.com/upsnap/upsnap:4 2、创建docker-compose.yml文件&#xff0c;进行配置&#xff1a; version: "3" services:upsnap:container_name: upsnapimage: crpi-k5k93ldwf…...

3D一览通在线协同设计,助力汽车钣金件设计与制造数字化升级

汽车行业已迎来智能化的汹涌浪潮&#xff0c;在此背景下&#xff0c;零部件制造商唯有积极应对&#xff0c;以智能制造为核心驱动力&#xff0c;方能跟上行业发展步调&#xff0c;在激烈的市场竞争中抢占先机。作为整车制造不可或缺的核心组件之一&#xff0c;汽车钣金件亦需紧…...

基于Matlab实现三维地球模型(源码)

利用MATLAB强大的图形处理能力和数学计算功能构建的可视化应用。这个模型允许用户在三维空间中观察地球&#xff0c;并且能够动态地旋转地球模型&#xff0c;同时还可以模拟卫星在其周围的运动轨迹&#xff0c;为学习地球科学、天文学以及航天工程等领域提供了一个直观的教学工…...

【Tomcat】第五站:Servlet容器

Tomcat启动后&#xff0c;获取到项目当中所有的servlet的WebServlet中的配置信息。将配置信息和类对象都写入一个map集合当中。 map就是一个key-value类型的集合。 在MyTomcat中我们获取到了类对象和注解值。 Tomcat与请求连通 1. ServletConfigMapping 1. 创建一个config包…...

CTF 攻防世界 Web: FlatScience write-up

题目名称-FlatScience 网址 index 目录中没有发现提示信息&#xff0c;链接会跳转到论文。 目前没有发现有用信息&#xff0c;尝试目录扫描。 目录扫描 注意到存在 robots.txt 和 login.php。 访问 robots.txt 这里表明还存在 admin.php admin.php 分析 在这里尝试一些 sql…...

【SpringBoot中MySQL生成唯一ID的常见方法】

SpringBoot中MySQL生成唯一ID的常见方法 在Spring Boot中&#xff0c;为MySQL生成唯一ID有多种方式&#xff0c;每种方式都有其特定的概念、优越点和使用场景。以下是详细的说明和代码示例&#xff1a; UUID 概念: UUID&#xff08;Universally Unique Identifier&#xff0…...

使用Flink CDC实现 Oracle数据库数据同步的oracle配置操作

使用Flink CDC实现 Oracle数据库数据同步的oracle配置操作&#xff0c;包括开启日志归档和用户授权。 flink官方参考资料&#xff1a; https://nightlies.apache.org/flink/flink-cdc-docs-master/zh/docs/connectors/flink-sources/oracle-cdc/ 操作步骤&#xff1a; 1.启用…...

c++作业7

模拟一个游戏场景 有一个英雄&#xff1a;初始所有属性为1 atk,def,apd,hp 游戏当中有以下3种武器 长剑Sword&#xff1a; 装备该武器获得 1atx&#xff0c;1def 短剑Blade&#xff1a; 装备该武器获得 1atk&#xff0c;1spd 斧头Axe&#xff1a; 装备该…...

vue 上传组件 vxe-upload 实现拖拽调整顺序

vue 上传组件 vxe-upload 实现拖拽调整顺序&#xff0c;通过设置 drag-sort 参数就可以启用拖拽排序功能 官网&#xff1a;https://vxeui.com/ 图片拖拽排序 <template><div><vxe-upload v-model"imgList" mode"image" multiple drag-sor…...

Windows 环境实战开源项目GFPGAN 教程

GFPGAN GFPGAN&#xff08;Generative Facial Prior-GAN&#xff09;是由腾讯ARC&#xff08;Applied Research Center&#xff09;开发的一种实用的真实世界人脸修复算法。它专门设计用于人脸图像的生成和优化&#xff0c;尤其在低质量人脸图像的超分辨率恢复方面表现出色。以…...

UE5 做简单的风景观光视频

A、思路 新建摄像机&#xff0c;关卡序列&#xff0c; 镜头试拍录制器&#xff0c;新建镜头轨道&#xff0c;拖入摄像机&#xff0c; 变换&#xff0c;设置多个关键帧&#xff0c;改变摄像机在场景中的位置&#xff0c; 完成后&#xff0c;导出即可。 B、参考图...

k8s服务搭建与实战案例

Kubernetes&#xff08;K8s&#xff09;作为一个开源的容器编排平台&#xff0c;广泛应用于现代的云原生应用架构中。以下是一些常见的 **Kubernetes 实战案例**&#xff0c;包括从基础部署到高级应用场景的使用。通过这些案例&#xff0c;可以更好地理解 K8s 的运作原理和最佳…...

JavaScript学习难点

一、语法的灵活性 动态类型&#xff1a; JavaScript 是一种动态类型语言&#xff0c;这意味着变量的类型可以在运行时改变。这与静态类型语言&#xff08;如 Java、C&#xff09;形成鲜明对比&#xff0c;在静态类型语言中&#xff0c;变量的类型在编译时就已经确定。 例如&am…...

Qt WORD/PDF(一)使用 QtPdfium库实现 PDF 预览

文章目录 一、简介二、下载 QtPdfium三、加载 QtPdfium 动态库四、Demo 使用 关于QT Widget 其它文章请点击这里: QT Widget 姊妹篇: Qt WORD/PDF&#xff08;一&#xff09;使用 QtPdfium库实现 PDF 操作 Qt WORD/PDF&#xff08;二&#xff09;使用 QtPdfium库实现…...

解决创建laravel项目,使用国外镜像超时,国内镜像缺包的问题

解决创建laravel项目&#xff0c;使用国外镜像超时&#xff0c;国内镜像缺包的问题 一、前言二、切换镜像三、创建最新版本四、创建指定版本 一、前言 最近想下载 laravel 框架看看&#xff0c;但也遇到了些麻烦&#xff0c;这里做个记录。 二、切换镜像 先查看镜像源&#…...

Java泛型设计详解

引言 在日常Java开发中&#xff0c;泛型是一个非常重要的特性。它提供了编译时的类型安全检查&#xff0c;增强了代码的可读性和可维护性。然而&#xff0c;对于初学者甚至一些有经验的开发者来说&#xff0c;泛型的使用和理解仍然是一个挑战。本文旨在深入探讨Java泛型的诞生…...

用ue5打开网址链接

需要用到 Launch URL 这个函数 字面意思就是打开填写的链接网页 这里填写的是百度&#xff0c;按下Tab键后就会打开百度的网页...

【大数据】-- 读放大和写放大

目录 一、定义 1. 读放大(Read Amplification) 定义 原因 优化方法 2. 写放大(Write Amplification) 定义 原因 优化方法 对比与联系 二、举例 1. Hadoop(HDFS) 读放大 写放大 2. Flink 读放大 写放大 3. Hive 读放大 写放大 4. Presto 读放大 写放…...

XML Group端口详解

在XML数据映射过程中&#xff0c;经常需要对数据进行分组聚合操作。例如&#xff0c;当处理包含多个物料明细的XML文件时&#xff0c;可能需要将相同物料号的明细归为一组&#xff0c;或对相同物料号的数量进行求和计算。传统实现方式通常需要编写脚本代码&#xff0c;增加了开…...

STM32标准库-DMA直接存储器存取

文章目录 一、DMA1.1简介1.2存储器映像1.3DMA框图1.4DMA基本结构1.5DMA请求1.6数据宽度与对齐1.7数据转运DMA1.8ADC扫描模式DMA 二、数据转运DMA2.1接线图2.2代码2.3相关API 一、DMA 1.1简介 DMA&#xff08;Direct Memory Access&#xff09;直接存储器存取 DMA可以提供外设…...

【论文笔记】若干矿井粉尘检测算法概述

总的来说&#xff0c;传统机器学习、传统机器学习与深度学习的结合、LSTM等算法所需要的数据集来源于矿井传感器测量的粉尘浓度&#xff0c;通过建立回归模型来预测未来矿井的粉尘浓度。传统机器学习算法性能易受数据中极端值的影响。YOLO等计算机视觉算法所需要的数据集来源于…...

sqlserver 根据指定字符 解析拼接字符串

DECLARE LotNo NVARCHAR(50)A,B,C DECLARE xml XML ( SELECT <x> REPLACE(LotNo, ,, </x><x>) </x> ) DECLARE ErrorCode NVARCHAR(50) -- 提取 XML 中的值 SELECT value x.value(., VARCHAR(MAX))…...

鱼香ros docker配置镜像报错:https://registry-1.docker.io/v2/

使用鱼香ros一件安装docker时的https://registry-1.docker.io/v2/问题 一键安装指令 wget http://fishros.com/install -O fishros && . fishros出现问题&#xff1a;docker pull 失败 网络不同&#xff0c;需要使用镜像源 按照如下步骤操作 sudo vi /etc/docker/dae…...

Caliper 配置文件解析:config.yaml

Caliper 是一个区块链性能基准测试工具,用于评估不同区块链平台的性能。下面我将详细解释你提供的 fisco-bcos.json 文件结构,并说明它与 config.yaml 文件的关系。 fisco-bcos.json 文件解析 这个文件是针对 FISCO-BCOS 区块链网络的 Caliper 配置文件,主要包含以下几个部…...

html css js网页制作成品——HTML+CSS榴莲商城网页设计(4页)附源码

目录 一、&#x1f468;‍&#x1f393;网站题目 二、✍️网站描述 三、&#x1f4da;网站介绍 四、&#x1f310;网站效果 五、&#x1fa93; 代码实现 &#x1f9f1;HTML 六、&#x1f947; 如何让学习不再盲目 七、&#x1f381;更多干货 一、&#x1f468;‍&#x1f…...

安宝特案例丨Vuzix AR智能眼镜集成专业软件,助力卢森堡医院药房转型,赢得辉瑞创新奖

在Vuzix M400 AR智能眼镜的助力下&#xff0c;卢森堡罗伯特舒曼医院&#xff08;the Robert Schuman Hospitals, HRS&#xff09;凭借在无菌制剂生产流程中引入增强现实技术&#xff08;AR&#xff09;创新项目&#xff0c;荣获了2024年6月7日由卢森堡医院药剂师协会&#xff0…...

Java编程之桥接模式

定义 桥接模式&#xff08;Bridge Pattern&#xff09;属于结构型设计模式&#xff0c;它的核心意图是将抽象部分与实现部分分离&#xff0c;使它们可以独立地变化。这种模式通过组合关系来替代继承关系&#xff0c;从而降低了抽象和实现这两个可变维度之间的耦合度。 用例子…...

力扣热题100 k个一组反转链表题解

题目: 代码: func reverseKGroup(head *ListNode, k int) *ListNode {cur : headfor i : 0; i < k; i {if cur nil {return head}cur cur.Next}newHead : reverse(head, cur)head.Next reverseKGroup(cur, k)return newHead }func reverse(start, end *ListNode) *ListN…...