在低配Windows上部署原版llama.cpp

news2024/10/7 14:29:31

现在大语言模型的部署,通常都需要大的GPU才能实现,如果是仅仅想研究一下,大语言模型的算法,我们是很想能够直接在我们的工作电脑上就能直接运行的,llama.cpp就是很好的实现。

LLaMa.cpp使用int4这种数值格式,其显著降低了内存需求,并且在大多数硬件上其性能严重受到内存限制。LLaMa.cpp使用原始C ++的项目来重写LLaMa(长格式语言模型)推理代码。这使得可以在各种硬件上本地运行LLaMa,包括Raspberry Pi

在使用一些优化和量化技术来量化权重的情况下,LLaMa.cpp使得大型语言模型可以在本地的多种硬件上运行,而无需昂贵的GPU。内存带宽往往是推理的瓶颈,通过量化使用更少的精度可以减少存储模型所需的内存。在这里插入图片描述

下载源码

LLaMa.cpp 的项目地址在:https://github.com/ggerganov/llama.cpp

只要用git命令就能下载下来:

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

准备编译工具

LLaMa.cpp 是cpp 跨平台的,在Windows平台下,需要准备mingwCmake

  • mingw

进入 powershell 下,输入如下的命令安装 mingw

Set-ExecutionPolicy RemoteSigned -Scope CurrentUser
iex "& {$(irm get.scoop.sh)} -RunAsAdmin"
scoop bucket add extras
scoop bucket add main
scoop install mingw
  • Cmake

Cmake 的下载地址:https://cmake.org/download/

下载二进制安装版本:

在这里插入图片描述
到这里,Windows上的编译工具已经齐全了。

编译LLaMa.cpp

编译LLaMa.cpp也非常的方便,进入刚下载的源码目录。

cd llama.cpp

编译:

cmake . -G "MinGW Makefiles"
cmake --build . --config Release

没碰到问题的话,在bin的目录下就会生成几个可执行的exe。

在这里插入图片描述

可执行的exe虽然多,但是用到的主要有两个,一个是quantize.exe,一个是main.exe

有了程序以后,我们还差一个模型。

模型下载

huggingface 放着很多的开源模型,为了简单和性能,使用的是LLaMA-7B模型,下载地址在:https://huggingface.co/nyanko7/LLaMA-7B/tree/main

这个模型接近14g,下载需要一点时间,慢慢的等待。

模型下载完成以后,在llama.cpp的目录下新建一个目录org-models

把下载的文件安排成这样的形式:

org-models/
- 7B/ #这是一个名为7B的文件夹
- consolidated.00.pth
- params.json
- tokenizer.model

模型就完成了,这个是llama 的模型,在普通电脑上是跑不起来的,llama.cpp 是量化。

量化模型

在目录下,运行:


bin\quantize.exe ./org-models/7B/ggml-model-f16.bin ./org-models/7B/ggml-model-q4_0.bin 2

python convert-pth-to-ggml.py org-models/7B/ 1

这时候,在org-models 的目录下生成了ggml-model-f16.bin,在这里就能输入命令:

bin\main.exe -m org-models/7B/ggml-model-f16.bin --color -f prompts/alpaca.txt -ins -c 2048 --temp 0.2 -n 256 --repeat_penalty 1.3 -t 16

让模型跑起来:

在这里插入图片描述
但是跑的时候,有点慢。

量化4-bit模型;

python convert-pth-to-ggml.py org-models/7B/ 1

继续跑:

bin\main.exe -m org-models/7B/ggml-model-q4_0.bin --color -f prompts/alpaca.txt -ins -c 2048 --temp 0.2 -n 256 --repeat_penalty 1.3 -t 16

在这里插入图片描述

这个时候就快多了。但是你是不是发现,他有时候会出错,而却还没有完全答完就结束了,对中文的支持,很一般,这是因为llama.cpp本身对中文就不怎么支持,github上有些人对llama.cpp进行了扩充和微调,使得他中文的理解能力大大的加强。

在这里插入图片描述
可以进一步的,把中文的模型,融合进来。

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

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

相关文章

【js步骤引导】基于jquery实现步骤引导进度条效果(附源码)

【写在前面】 步骤引导条这个功能其实在我们很多业务系统中是最常见的,尤其是快递订单、审批流程、上传资源等涉及步骤操作的业务中广泛应用,因此今天我也详细的和大家讲讲如何基于jquery去实现步骤引导效果,支持上一步下一步的切换。 【涉…

【云计算】HBase表操作

文章目录 前言一、shell创建二、操作 前言 HBase是一个分布式、可扩展的、非关系型的NoSQL数据库。它是建立在Hadoop HDFS上的一个开源的数据库管理系统。HBase的设计目标是提供高可靠性、高可扩展性、高性能、高延迟、高容错性和高可用性。 HBase是一种面向列的数据库&#…

【多智能体合作】Self-Organized Group for Cooperative Multi-agent Reinforcement Learning

【多智能体合作】Self-Organized Group for Cooperative Multi-agent Reinforcement Learning 本文提出了一个自主分组机制,这种机制具有 选举指挥官(CE) 和 消息总结(MS) 的功能。 在 CE 中,每隔 T个时间步…

【无标题】机器学习——朴素贝叶斯

朴素贝叶斯(Naive Bayesian algorithm)是有监督学习的一种分类算法,它基于“贝叶斯定理”实现,该原理的提出人是英国著名数学家托马斯贝叶斯。 一、贝叶斯定理 P(A) 这是概率中最基本的符号,表示 A 出现的概率。比如在…

Spark 4/5

4. 启动Spark Shell编程 4.1 什么是Spark Shell spark shell是spark中的交互式命令行客户端,可以在spark shell中使用scala编写spark程序,启动后默认已经创建了SparkContext,别名为sc 4.2 启动Spark Shell Shell /opt/apps/spark-3.2.3-bi…

实战深入了解redis+消息队列如何实现秒杀

SpringBoot Redis RabbitMQ 实现高并发限时秒杀 所谓秒杀,从业务角度看,是短时间内多个用户“争抢”资源,这里的资源在大部分秒杀场景里是商品;将业务抽象,技术角度看,秒杀就是多个线程对资源进行操作&…

配置NIS服务器及客户端

在服务端安装所需软件包 设置主机名和NIS域名 编辑 NIS服务器主配置文件 最下面编辑访问控制 建立测试用户 配置NFS,否则客户端切换用户时,用户没有家目录 安装NFS所需软件包 Nfs-utils 给两个共享目录权限,编辑NFS配制文件 共享两个目录 重…

12.JavaWeb-Spring Boot + 物业管理项目

1.Spring Boot 概念 自动处理应用程序幕后的各种杂事(Spring框架的应用程序的配置和部署过程),让你专注于做那些使应用程序独特的工作 1.1 Spring Boot的核心功能 1.1.1 自动配置 Spring Boot根据应用程序的依赖和配置信息&#xff0…

计算机网络——自顶向下方法(第二章学习记录)

本章学习应用层 网络应用是计算机网络存在的理由。 网络应用程序体系结构 现代网络应用程序有两种主流体系结构:客户—服务器体系结构和对等(P2P)体系结构 客户—服务器体系结构(client-server ),在这个结构中,有一个总是打开的…

SAP CAP篇五:为CAP添加Fiori Elements程序(2)

本文目录 本系列之前的文章新建Fiori Elements Application选择Application TypeData SourceEntity SelectionProject InformationLaunchpad Setting 修改manage-books文件夹子文件夹 webapp重命名 annotations.cds更新fiori-service.cdsmanifest.json 添加services.cds到app文…

哈工大计算机网络课程传输层协议之:拥塞控制原理剖析

哈工大计算机网络课程传输层协议之:拥塞控制原理剖析 文章目录 哈工大计算机网络课程传输层协议之:拥塞控制原理剖析拥塞成因和代价:场景1拥塞成因和代价:场景2拥塞成因和代价:场景3如何进行拥塞控制拥塞控制的方法TCP…

哈工大计算机网络课程网络层协议之:网络层服务概述

哈工大计算机网络课程网络层协议之:网络层服务概述 文章目录 哈工大计算机网络课程网络层协议之:网络层服务概述网络层概述网络层核心功能—转发与路由网络层核心功能—连接建立网络层服务模型虚电路网络与数据报网络虚电路网络虚电路(VC)的具体实现VC转…

Web 渗透测试攻防之浅述信息收集

前言 众所周知渗透测试的本质是信息收集,在渗透测试中信息收集的质量直接关系到渗透测试成果的与否。在对系统进行渗透测试前的信息收集是通过各种方式获取所需要的信息,收集的信息越多对目标进行渗透的优势越有利。通过利用获取到的信息对系统进行渗透…

【前端布局篇】响应式布局 Bootstrap 移动端布局

前言 1. 布局介绍 布局:layout 对事物的全面规划和安排 页面布局:对页面的文字、图形或表格进行格式设置。包括字体、字号、颜色纸张大小和方向以及页边距等。 网页布局:利用html搭建结构与内容,使用CSS添加装饰 网页布局有很多种方式&a…

Flink 学习七 Flink 状态(flink state)

Flink 学习七 Flink 状态(flink state) 1.状态简介 流式计算逻辑中,比如sum,max; 需要记录和后面计算使用到一些历史的累计数据, 状态就是:用户在程序逻辑中用于记录信息的变量 在Flink 中 ,状态state 不仅仅是要记录状态;在程序运行中如果失败,是需要重新恢复,所以这个状态…

基于Django的疫情困扰下的民慧钢材销售分析及纾困策略-计算机毕设 附源码87656

基于Django的疫情困扰下的民慧钢材销售分析及纾困策略 摘 要 疫情之下,实体经济面临下行压力。2019年以来,新冠肺炎疫情卷土而来,各地地疫情防控形势严峻,许多中小微企业经营发展屡次遭受打击。面对疫情常态化的社会现实&#x…

[学习笔记] [机器学习] 13. 集成学习进阶(XGBoost、OTTO案例实现、LightGBM、PUBG玩家排名预测)

视频链接数据集下载地址:无需下载 学习目标: 知道 XGBoost 算法原理知道 otto 案例通过 XGBoost 实现流程知道 LightGBM 算法原理知道 PUBG 案例通过 LightGBM 实现流程知道 Stacking 算法原理知道住房月租金预测通过 Stacking 实现流程 1. XGBoost 算…

SPI协议(嵌入式学习)

SPI协议 概念时序SPI通信模式图四种通信模式 优缺点 概念 SPI(Serial Peripheral Interface)是一种串行外设接口协议,用于在数字系统之间进行通信。它被广泛应用于嵌入式系统和电子设备中,用于连接微控制器、传感器、存储器、显示…

Linux权限管理(超详解哦)

Linux权限 引言文件访问者的分类文件类型与访问权限文件类型访问权限 文件权限值的表示方法修改权限的指令chmod修改文件权限通过角色/-/权限来修改通过三个八进制数修改 chown修改所有者chgrp修改所属组umask修改或查看文件权限掩码文件创建时的权限 目录的权限粘滞位 总结 引…