一个好的网站建设/2024年2月疫情又开始了吗
点击 <C 语言编程核心突破> 快速C语言入门
用llama.cpp部署本地llama2-7b大模型
- 前言
- 一、下载`llama.cpp`以及`llama2-7B`模型文件
- 二、具体调用
- 总结
前言
要解决问题: 使用一个准工业级大模型, 进行部署, 测试, 了解基本使用方法.
想到的思路: llama.cpp
, 不必依赖显卡硬件平台. 目前最亲民的大模型基本就是llama2
了, 并且开源配套的部署方案已经比较成熟了.
其它的补充: 干就行了.
一、下载llama.cpp
以及llama2-7B
模型文件
llama.cpp开源社区, 目前只有一个问题, 就是网络, 如果你不能连接github
, 那么就不用往下看了.
从网站下载最新的Releases
包, 解压即可.
我是用比较笨的方法, 下载源代码编译的, 这个比较抽象, 如果运气好, CMAKE
可以很快构建,
如果运气不好, 那没什么办法, 玩C++
不是请客吃饭, 有时候就要经受一些debug
折磨,
通常没事不要挑战自己, 有现成编译好的, 就用现成的, 我是想看看它怎么实现, 其实也是徒劳, 但有点好处, 就是有问题, 可以尝试搞一下, 比如模型格式转换,
能上梯子的, 可以去官方https://huggingface.co/meta-llama/Llama-2-7b
下载, 不能登梯子的, 去阿里https://www.modelscope.cn/home
魔塔社区, 搜一下llama2-7B
, 注意模型格式务必是gguf
, ggml
将陆续不再被支持.
二、具体调用
因为只是单机运行, 所以部署这个大词儿, 我下面就直接换成调用了.
llama.cpp
的官方文档中说:
Plain C/C++ implementation without dependenciesApple silicon first-class citizen - optimized via ARM NEON, Accelerate and Metal frameworksAVX, AVX2 and AVX512 support for x86 architecturesMixed F16 / F32 precision2-bit, 3-bit, 4-bit, 5-bit, 6-bit and 8-bit integer quantization supportCUDA, Metal and OpenCL GPU backend support
纯C++实现, 无需其它依赖, 要知道, 当初我为了调用whisper
可是足足下了6个多G的依赖, 并且被Windows
平台整放弃了, 不得不转投Linux
才整好, 国内的网络环境, 搞这么多东西, 你知道我是用了多少时间.
苹果系统不熟, 就不吹了, X86
还是可以的, 不依赖显卡, 但像AVX
这样的CPU
加速指令集基本都支持, 效果并不慢, 尤其对于不那么大的大模型.
支持量化模型, 也就是说, 你可以省硬盘和内存, 不至于跑不起来, 但是效果稍微差那么一丁点, 又不是不能用对吧.
另外, 其实还是支持CUDA
的, 这个在你确定自己的机器符合要求的情况, 可以下载对应的版本,
至于cuda
的环境建立, 那是比本文难上一个量级的东西, 自己去搞吧.
现在假定你已经完成了下载, 并且已经跃跃欲试了, 请执行如下命令
main.exe -m models\7B\ggml-model.gguf --prompt "Once upon a time"
main
是llama.cpp
的执行程序, 你如果自编译大概是这个名, 用社区提供的可执行文件可能是llama.cpp.exe
, 不重要, 你知道的.
-m
选项是引入模型, 不要有中文路径, 如果不清楚相对路径, 就使用绝对路径.
--prompt
是提示词, 这个就不用我多说了, 就是给大模型开个头, 然后它给你编故事.
类似:
system_info: n_threads = 8 / 16 | AVX = 1 | AVX2 = 1 | AVX512 = 0 | AVX512_VBMI = 0 | AVX512_VNNI = 0 | FMA = 1 | NEON = 0 | ARM_FMA = 0 | F16C = 1 | FP16_VA = 0 | WASM_SIMD = 0 | BLAS =
1 | SSE3 = 1 | VSX = 0 |
sampling: repeat_last_n = 64, repeat_penalty = 1.100000, presence_penalty = 0.000000, frequency_penalty = 0.000000, top_k = 40, tfs_z = 1.000000, top_p = 0.950000, typical_p = 1.000000, temp = 0.800000, mirostat = 0, mirostat_lr = 0.100000, mirostat_ent = 5.000000
generate: n_ctx = 512, n_batch = 512, n_predict = -1, n_keep = 0Once upon a time, I was sitting in my living room when the thought struck me: “I’m going to make a list of 100 books everyone should read. références, and put them up here.” Then it occurred to me that there were other lists out there already, so I decided I needed to come up with something more original. Thus was born my 100 Best Novels list, which you can find on my old blog. That list was a lot of fun but I eventually realized the problem with having a best-of list: it presumes you’re only going to read one book by any given author or that any particular novel is universally regarded as a masterpiece in every culture. This doesn’t even take into account the fact that there are many authors who have written a lot of books, and I wasn’t interested in recommending only a single work by each of them.
下一步就是研究如何优化prompt
了, 如果你有源码, 会发现, 官方提供了十分友好的prompt
示例, 比如:
chat-with-bob.txt
Transcript of a dialog, where the User interacts with an Assistant named Bob. Bob is helpful, kind, honest, good at writing, and never fails to answer the User's requests immediately and with precision.User: Hello, Bob.
Bob: Hello. How may I help you today?
User: Please tell me the largest city in Europe.
Bob: Sure. The largest city in Europe is Moscow, the capital of Russia.
User:
配合如下命令:
E:\clangC++\llama\llama-b1715-bin-win-avx-x64\llama.cpp.exe -m D:\bigModel\llama-2-7b.ggmlv3.q4_0.gguf -c 512 -b 1024 -n 256 --keep 48 --repeat_penalty 1.0 --color -i -r "User:" -f E:\clangC++\llama\llama.cpp-master\prompts\chat-with-bob.txt
你将获得chat
版对话模型:
system_info: n_threads = 8 / 16 | AVX = 1 | AVX2 = 0 | AVX512 = 0 | AVX512_VBMI = 0 | AVX512_VNNI = 0 | FMA = 0 | NEON = 0 | ARM_FMA = 0 | F16C = 0 | FP16_VA = 0 | WASM_SIMD = 0 | BLAS = 0 | SSE3 = 0 | SSSE3 = 0 | VSX = 0 |
main: interactive mode on.
Reverse prompt: 'User:'
sampling:repeat_last_n = 64, repeat_penalty = 1.000, frequency_penalty = 0.000, presence_penalty = 0.000top_k = 40, tfs_z = 1.000, top_p = 0.950, min_p = 0.050, typical_p = 1.000, temp = 0.800mirostat = 0, mirostat_lr = 0.100, mirostat_ent = 5.000
sampling order:
CFG -> Penalties -> top_k -> tfs_z -> typical_p -> top_p -> min_p -> temp
generate: n_ctx = 512, n_batch = 1024, n_predict = 256, n_keep = 48== Running in interactive mode. ==- Press Ctrl+C to interject at any time.- Press Return to return control to LLaMa.- To return control without starting a new line, end your input with '/'.- If you want to submit another line, end your input with '\'.Transcript of a dialog, where the User interacts with an Assistant named Bob. Bob is helpful, kind, honest, good at writing, and never fails to answer the User's requests immediately and with precision. User: Hello, Bob.
Bob: Hello. How may I help you today?
User: Please tell me the largest city in Europe.
Bob: Sure. The largest city in Europe is Moscow, the capital of Russia.
User: please sing a song.
Bob: I am sorry. I am not a singing Assistant, but I can write you a song.
User:
注意, 模型根据prompt
设定, 是一个助理, 善于写作, 友善而诚实, 会耐心的回答你的问题.
这个还是满重要的, 我有一回没有使用这些约束, 结果就出了点少儿不宜的东西, 当然, 只是擦边文字, 不过, 如果你在给领导或给学生演示, 就尴尬了.
当然, 这个模型真的不大, 基本也只能限于普通的短对话, 至于辅助编程, 辅助编故事, 还是差点意思.
毕竟如果自己搞两天就能媲美chatGPT
, 那谷歌微软就要哭晕在厕所了.
当然, 除了7b
的还有13b
的以及70b
的, 关键是就算知道大的好, 问题是真的跑不动, 硬件确实差点意思, 有这钱, 直接GPT4
不好么.
总结
现在AI
是如火如荼, 傻子都知道这是风口, 但不用多少智商, 也应该知道, 自己烧大模型, 纯属扯淡, 还是让一线公司开源, 咱们跟着玩玩吧, 如果对这方面足够了解, 可以试试用自己的数据进行微调, 但这个话题, 本文作者并不会, 就不瞎唠叨了.
点击 <C 语言编程核心突破> 快速C语言入门
相关文章:

2024-01-04 用llama.cpp部署本地llama2-7b大模型
点击 <C 语言编程核心突破> 快速C语言入门 用llama.cpp部署本地llama2-7b大模型 前言一、下载llama.cpp以及llama2-7B模型文件二、具体调用总结 前言 要解决问题: 使用一个准工业级大模型, 进行部署, 测试, 了解基本使用方法. 想到的思路: llama.cpp, 不必依赖显卡硬件…...

HTTP打怪升级之路
新手村 上个世纪80年代末,有一天,Tim Berners-Lee正在工作,他需要与另一台计算机上的同事共享一个文件。他尝试使用电子邮件,但发现电子邮件不能发送二进制文件。Tim Berners-Lee意识到,他需要一种新的协议来共享二进制…...

axure RP9.0安装字体图标库fontawesome
字体图库地址: Font AwesomeThe internets icon library toolkit. Used by millions of designers, devs, & content creators. Open-source. Always free. Always awesome.https://fontawesome.com/v6/download进入后下载想要的版本如我是6.3 下载后得到压缩包,解压之后…...

PiflowX组件-ReadFromUpsertKafka
ReadFromUpsertKafka组件 组件说明 upsert方式从Kafka topic中读取数据。 计算引擎 flink 有界性 Unbounded 组件分组 kafka 端口 Inport:默认端口 outport:默认端口 组件属性 名称展示名称默认值允许值是否必填描述例子kafka_hostKAFKA_HO…...

keil 5 ARM CC编译错误和警告解释大全(3)序列号2000-3000
2001年:已声明虚拟参数,但从未使用过 2002年:虚拟参数重新定义为do变量 2003:无法优化:常量/表达式传递给可能修改的变量 2004:重新维度的数组作为参数传递 2005:重维度数组等价 2006&…...

CentOS 7 实战指南:文件或目录的权限操作命令详解
前言 这篇文章详细介绍了文件和目录的常用权限操作命令,并提供了全面的技术解析。通过本文,你将学习如何使用 chmod 和 chown 命令来管理文件和目录的权限,控制用户和用户组的访问权限。无论你是初学者还是有经验的系统管理员,这…...

我的第一个前端项目,vue项目从零开始创建和运行
入门前端,从基础做起,从零开始新建项目 背景:VUE脚手架项目是一个“单页面”应用,即整个项目中只有1个网页! 在VUE脚手架项目中,主要是设计各个“视图组件”,它们都是整个网页中某个部分&…...

【OJ】C++,Java,Python,Go,Rust
for循环语法 // cpp// java// python for i in range(集合): for i, val in enumerate(集合): for v1,v2,v3,... in zip(集合1,集合2,集合3,...):Pair // cpp pair<int, string> first second // java Pair<Integer, String> first() new Pair<>(firstVal…...

Flink 任务指标监控
目录 状态监控指标 JobManager 指标 TaskManager 指标 Job 指标 资源监控指标 数据流监控指标 任务监控指标 网络监控指标 容错监控指标 数据源监控指标 数据存储监控指标 当使用 Apache Flink 进行流处理任务时,可以根据不同的监控需求,监控…...

Go语言程序设计-第7章--接口
Go语言程序设计-第7章–接口 接口类型是对其他类型行为的概括与抽象。 Go 语言的接口的独特之处在于它是隐式实现。对于一个具体的类型,无须声明它实现了哪些接口,只要提供接口所必须实现的方法即可。 7.1 接口即约定 7.2 接口类型 package iotype …...

性能优化-OpenMP基础教程(二)
本文主要介绍OpenMP并行编程技术,编程模型、指令和函数的介绍、以及OpenMP实战的几个例子。希望给OpenMP并行编程者提供指导。 🎬个人简介:一个全栈工程师的升级之路! 📋个人专栏:高性能(HPC&am…...

让电脑变得更聪明——用python实现五子棋游戏
作为经典的棋类游戏,五子棋深受大众喜爱,但如果仅实现人与人的博弈,那程序很简单,如果要实现人机对战,教会计算机如何战胜人类,那就不是十分容易的事了。本文我们先从简单入手,完成五子棋游戏的…...

C#-接口
接口 (interface) 定义了一个可由类和结构实现的协定。接口可以包含方法、属性、事件和索引器。接口不提供它所定义的成员的实现 — 它仅指定实现该接口的类或结构必须提供的成员。 接口可支持多重继承。在下面的示例中,接口 IComboBox 同时从 ITextBox 和 IListBox 继承。 i…...

ASP.NET可视化流程设计器源码
源码介绍: ASP.NET可视化流程设计器源码已应用于众多大型企事业单位。拥有全浏览器兼容的可视化流程设计器、表单设计器、基于角色的权限管理等系统开发必须功能,大大为您节省开发时间,是您开发OA.CRM、HR等企事业各种应用管理系统和工作流系统的最佳基…...

景联文科技GPT教育题库:AI教育大模型的强大数据引擎
GPT-4发布后,美国奥数队总教练、卡耐基梅隆大学数学系教授罗博认为,这个几乎是用“刷题”方式喂大的AI教育大模型的到来,意味着人类的刷题时代即将退出历史舞台。 未来教育将更加注重学生的个性化需求和多元化发展,借助GPT和AI教育…...

PHP进阶-实现网站的QQ授权登录
授权登录是站点开发常见的应用场景,通过社交媒体一键授权可以跳过注册站点账户的繁琐操作。本文将讲解如何用PHP实现QQ授权登录。首先,我们需要申请QQ互联开发者账号获得APPID和密钥;接着,我们下载QQ官方SDK:PHP SDK v…...

字节跳动基础架构SRE-Copilot获得2023 CCF国际AIOps挑战赛冠军
近日,2023 CCF国际AIOps挑战赛决赛暨“大模型时代的AIOps”研讨会在北京成功举办,活动吸引了来自互联网、运营商、科研院所、高校、软硬件厂商等领域多名专家学者参与,为智能运维的前沿学术研究、落地生产实践打开了新思路。决赛中࿰…...

python moviepy 图文批量合成带字幕口播视频
最近在研究将图片和文本批量合成为带字幕口播视频 主要是基于python的moviepy库 from generator import audio, pics, subs, videodef main():texts_input examplepics_input example# 图片分辨率预处理pics.adjust(pics_input)# 文字转语音audio.text_to_audio(texts_inpu…...

【代码片段】Linux C++打印当前函数调用堆栈
在开发大型项目时,尤其是多线程情况下,一般无法使用断点调试,这时候将当前函数的调用堆栈打印出来是非常有必要和有效的问题排查手段。 这里记录一段Linux环境下,打印函数堆栈的代码。 void get_native_callstack(std::string &a…...

Linux程序、进程以及计划任务(第一部分)
目录 一、程序和进程 1、什么是程序? 2、什么是进程? 3、线程是什么? 4、如何查看是多线程还是单线程 5、进程结束的两种情况: 6、进程的状态 二、查看进程信息的相关命令 1、ps:查看静态的进程统计信息 2、…...

Oracle database 12cRAC异地恢复至单机
环境 rac 环境 byoradbrac Oracle12.1.0.2 系统版本:Red Hat Enterprise Linux Server release 6.5 软件版本:Oracle Database 12c Enterprise Edition Release 12.1.0.2.0 - 64bit byoradb1:172.17.38.44 byoradb2:172.17.38.4…...

【docker】linux部署docker
简介 首先我需要声明的是,我的系统是centos7,下载工具使用的是yum;在linux上部署docker,之前一直看的是这篇文章Linux之Docker部署,基本上功能方面也都可以使用,部署起来也是比较的简单。首先我先讲述这篇…...

【K8S 云原生】Pod资源限制、Pod容器健康检查(探针)
目录 一、docker的重启方式和K8S重启方式 1、Pod的重启方式: 2、docker的重启策略: 二、yaml文件快速生成: 三、pod的状态: 四、Pod的资源限制 1、限制的方式和种类 2、CPU的限制的格式: 五、K8S拉取镜像的策…...

Python从入门到网络爬虫(模块详解)
模块 我们知道,函数和类都是可以重复调用的代码块。在程序中使用位于不同文件的代码块的方法是:导入 (import) 该对象所在的模块 (mudule)。当程序变得越来越大时,将程序的不同部分根据不同分类方法保存在不同文件中通常会更加方便。 导入模…...

[大厂实践] 无停机迁移大规模关键流量(下)
在系统升级、迁移的过程中,如何验证系统逻辑、性能正确无误,是一个很大的挑战。这一系列介绍了Netflix通过重放流量测试解决这一挑战的实践。原文: Migrating Critical Traffic At Scale with No Downtime — Part 2 想象一下,你被心爱的Netf…...

VMware Workstation虚拟机CentOS 7.9 配置固定ip的步骤
VMware Workstation虚拟机CentOS7.9配置固定ip的步骤 编辑虚拟机 打开VMware Workstation。 选择要配置的虚拟机,但不要启动它。 点击“编辑虚拟机设置”(Edit virtual machine settings)。 选择“网络适配器”(Network Adapter&…...

构建自己的私人GPT
创作不易,请大家多鼓励支持。 在现实生活中,很多人的资料是不愿意公布在互联网上的,但是我们又要使用人工智能的能力帮我们处理文件、做决策、执行命令那怎么办呢?于是我们构建自己或公司的私人GPT变得非常重要。 一、本地部署…...

EtherCAT主站SOEM -- 14 --Qt-Soem通过界面采集从站IO进行显示
EtherCAT主站SOEM -- 14 --Qt-Soem通过界面采集从站IO进行显示 一 mainwindow.c 文件函数:1.1 自定义PDO配置1.2 主站初始化二 motrorcontrol.c 文件三 allvalue.h 文件该文档修改记录:总结一 mainwindow.c 文件函数: 1.1 自定义PDO配置 int IO_setup(uint16 slave) {int...

线程安全、共享变量的可见性
Java中的线程安全问题 谈到线程安全问题,我们先说说什么是共享资源。所谓共享资源,就是说该资源被多个线程所持有或者说多个线程都可以去访问该资源。 线程安全问题是指当多个线程同时读写一个共享资源并且没有任何同步措施时,导致出现脏数…...

电动汽车BMS PCB制板的技术分析与可制造性设计
随着电动汽车行业的迅猛发展,各大厂商纷纷投入巨资进行技术研发和创新。电动汽车的核心之一在于其电池管理系统(Battery Management System, BMS),而BMS的心脏则是其印刷电路板(PCB)。通过这篇文章探讨电动…...