笔记本上打造专属的LLama3聊天机器人

1. 引言

万众期待的 Meta 第三代 Llama 发布了,我想确保你知道如何以最佳方式部署这个最先进的LLM。在本教程中,我们将在笔记本上部署该模型,并指导大家一步步具体操作步骤。

闲话少说,我们直接开始吧!

2. LLama3

迄今为止,Llama 3 系列包括从 8B 到 70B 参数量的各种型号,未来还将推出更多版本。这些模型附带有许可的 Meta Llama 3 许可协议,建议大家在接受使用这些模型所需的条款之前仔细阅读。这标志着Llama 模型系列和开源人工智能进入了激动人心的新篇章。
在这里插入图片描述

观察上图模型的性能,最引人注目的是Llama3-8B 模型在所报告的基准测试中的性能比 Llama2-70B高出 62% 到143%,而模型体积却小了 88%!关于该模型更多的细节,本文不过多阐述,接下来我们重点放在笔记本上部署该模型。

3. 准备工作

我们将使用 llama-cpp 库和openai库在个人笔记本上快速运行llama3模型。这将是一个初始测试,虽然只有文本界面…但可以 100% 运行。

首先我们来创建我们的虚拟环境,如下:

cd ~/
python -m venv venv
source ./venv/bin/activate  #activate the virtual environment

现在您已经有了一个干净的 Python虚拟环境,接着我们将安装 llama-cpp-pythonOpenAI 库,如下:

pip install llama-cpp-python
pip install openai

可以参考我在MacBOOK上跑通的环境中的其他依赖:

在这里插入图片描述

4. 下载量化模型

接着我们需要从Hugging Face网站上下载 Llama-3-8B GGUF模型权重,注意这里下载的是模型的量化压缩后的权重,格式为GGUF,如下:
在这里插入图片描述

官网链接

点击文件和版本,选择 Q2_K(只有3Gb)或Q4_K_M(4.9Gb)。第一个版本推理精度较低,但推理速度较快,第二个版本在速度和精度之间取得了很好的平衡。

在这里插入图片描述

如果你在国内下载这些模型参数文件速度较慢,可以通过中文镜像网站下载,链接如下:国内镜像站

下载完成后,将模型文件放到自己工程目录下model文件夹内即可。

5. 编写client程序

在上面我们安装了OpenAI库,是因为我们将使用llama-cpp 内置兼容的 OpenAPI服务器。接着我们需要编写我们的client.py程序,该client.py接收我们的文本提示输入,并通过API向服务器发送/接收指令,然后得到响应。

该客户端client.py很方便,因为它与我们所使用的模型完全无关。让我们先导入我们需要的库:

# Chat with an intelligent assistant in your terminal
from openai import OpenAI# Point to the local server
client = OpenAI(base_url="http://localhost:8000/v1", api_key="not-needed")

在这里,我们调用 OpenAI 库中的构造函数将客户端实例化。接着我们使用第一条信息对历史记录进行格式化:Python dict 的第一个条目是系统信息,第二个条目是要求模型自我介绍的用户提示,如下:

history = [{"role": "system", "content": "You are an intelligent assistant. You always provide well-reasoned answers that are both correct and helpful."},{"role": "user", "content": "Hello, introduce yourself to someone opening this program for the first time. Be concise."},
]
print("\033[92;1m")

接着,我们开始一个 while 循环:基本上,我们会一直询问用户提示,并从 Meta-Llama-3-7B-instruct 模型中生成回复,直到我们说quit或者exit。代码实现如下:

while True:completion = client.chat.completions.create(model="local-model", messages=history,temperature=0.7,stream=True,)new_message = {"role": "assistant", "content": ""}for chunk in completion:if chunk.choices[0].delta.content:print(chunk.choices[0].delta.content, end="", flush=True)new_message["content"] += chunk.choices[0].delta.contenthistory.append(new_message)print("\033[91;1m")userinput = input("> ")if userinput.lower() in ["quit", "exit"]:print("\033[0mBYE BYE!")breakhistory.append({"role": "user", "content": userinput})print("\033[92;1m")

6. 服务器端运行

万事具备!接下来,我们就来运行下我们基于LLama3的聊天机器人吧!首先,我们打开一个新的终端窗口中,激活venv后运行以下命令:

#with CPU only
python -m llama_cpp.server --host 0.0.0.0 --model \./model/Meta-Llama-3-8B-Instruct.Q2_K.gguf  \--n_ctx 2048

运行后,我们将启动与OpenAI 标准兼容的FastAPI 服务器。我们应该得到类似下面的信息:
在这里插入图片描述

初次启动,需要一些时间。当服务器准备就绪后,Uvicorn 会以漂亮的绿色信息INFO通知显示在终端,如下:
在这里插入图片描述

当看到上述绿色的INFO信息后,就说明我们的服务器端已成功初始化完成,完成了相应的准备工作。

7. 客户端运行

接着,我们同样需要新开一个终端,激活我们的虚拟环境venv, 接着运行以下代码:

python ./client.py

以下是我的运行界面:

在这里插入图片描述

现在我们的聊天机器人已准备就绪。想问什么就问什么,尽情享受吧。

比如我问他如何减肥,他就会给我一些建议,如下:

在这里插入图片描述

上图中,红色为我的输入,绿色为模型的答复!Awesome!!!

8. 总结

总之,MetaLlama3 LLM 系列在前几代产品的基础上进行了显著改进,并提供了多种配置。本文重点介绍了如何在自己的笔记本上运行CPU版本的LLama3模型,并给出了具体的示例!

您学废了嘛?

注:关注公众号《AI算法之道》,后台回复 llama3,即可获取源码。

在这里插入图片描述

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

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

相关文章

数据结构算法——链表带环问题——数学深度解析

前言:本节内容主要是讲解链表的两个问题 :1、判断链表是否带环; 2、一个链表有环, 找到环的入口点。 本节内容适合正在学习链表或者链表基础薄弱的友友们哦。 我们先将问题抛出来,友友们可以自己去力扣或者牛客网去找相应题目&…

【源码解析】深入Pandas的心脏DataFrame 含十大功能、源码实现与编程知识点

作者介绍:10年大厂数据\经营分析经验,现任大厂数据部门负责人。 会一些的技术:数据分析、算法、SQL、大数据相关、python 欢迎加入社区:码上找工作 作者专栏每日更新: LeetCode解锁1000题: 打怪升级之旅 python数据分析…

微信私域生态下的企业级私域建设:开源AI智能名片商城小程序源码六大模块功能价值深度解读

在数字化营销蓬勃发展的今天,企业如何在微信私域生态中构建并运营一个稳固的私域流量池,成为了摆在众多企业家和市场人面前的重要课题。本文将基于开源AI智能名片B2B2C商城小程序源码的AARRR模型,深度解读微信私域中企业级私域建设的六大模块…

文心一言 VS 讯飞星火 VS chatgpt (249)-- 算法导论18.2 2题

二、请解释在什么情况下(如果有的话),在调用 B-TREE-INSERT 的过程中,会执行冗余的 DISK-READ 或 DISK-WRITE 操作。(所谓冗余的 DISK-READ ,是指对已经在主存中的某页做 DISK-READ 。冗余的 DISK-WRITE 是…

【C语言/数据结构】经典链表OJ习题~第二期——链中寻环

🎈🎈🎈欢迎采访小残风的博客主页:残风也想永存-CSDN博客🎈🎈🎈 🎈🎈🎈本人码云 链接:残风也想永存 (FSRMWK) - Gitee.com🎈&#x1f…

第3篇:创建Nios II工程之Hello_World<二>

Q:上一期介绍完基本设计流程和实验原理,接着我们完成系统硬件设计部分,包括Platform Designer系统及Quartus工程。 A:依次搜索并添加Nios II Processor、JTAG UART、On-Chip Memory和System ID IP组件,连接各组件并As…

随笔Ubuntu上的的一些使用

Ubuntu简易使用 常用指令 cdlsmkdirrf -rm 路径 换源 备份镜像 sudo cp /etc/apt/sources.list /etc/apt/sources.list.bak编辑文件设置 sudo gedit /etc/apt/sources.list清华源 # 阿里源 deb http://mirrors.aliyun.com/ubuntu/ bionic main restricted universe mul…

STM32 F103C8T6学习笔记17:类IIC通信—MLX90614红外非接触温度计

今日学习配置MLX90614红外非接触温度计 与 STM32 F103C8T6 单片机的通信 文章提供测试代码讲解、完整工程下载、测试效果图 本文需要用到的大概基础知识:1.3寸OLED配置通信显示、IIC通信、 定时器配置使用 这里就只贴出我的 OLED驱动方面的网址链接了&#xff1a…

2024深圳杯数学建模竞赛D题(东三省数学建模竞赛D题):建立非均质音板振动模型与参数识别模型

更新完整代码和成品完整论文 《2024深圳杯&东三省数学建模思路代码成品论文》↓↓↓(浏览器打开) https://www.yuque.com/u42168770/qv6z0d/zx70edxvbv7rheu7?singleDoc# 2024深圳杯数学建模竞赛D题(东三省数学建模竞赛D题&#xff0…

口袋实验室--使用AD2学习频谱参数测试

目录 1. 简介 2. 频谱相关参数 2.1 频谱相关基本概念 2.1.1 采样时间间隔 2.1.2 采样频率 2.1.3 采样点数 2.1.4 采样时间长度 2.1.5 谱线数 2.1.6 奈奎斯特频率 2.1.7 频谱分辨率 2.1.8 最高分析频率 2.1.9 频谱泄露 2.2 窗函数 2.2.1 AD2的窗函数 2.2.2 测试矩…

Github 2024-05-01 开源项目月报Top20

根据Github Trendings的统计,本月(2024-05-01统计)共有20个项目上榜。根据开发语言中项目的数量,汇总情况如下: 开发语言项目数量Python项目13TypeScript项目5C项目2非开发语言项目1C++项目1JavaScript项目1Rust项目1Go项目1Shell项目1Svelte项目1编程面试大学:成为软件工程…

报错Unable to install JS,且提示Unable to run npm install【鸿蒙报错已解决】

文章目录 项目场景:问题描述原因分析:解决方案:此Bug解决方案总结Bug解决方案寄语项目场景: 最近遇到了这个问题,看到网上也有人在询问这个问题,实操了很多网上的解决方案发现并不能解决这个Bug,所以我在解决这个问题后,总结了自己和其他人的解决经验,进行了整理,写…

Qt的qtmqtt库连接onenet出现QMQTT::SocketRemoteHostClosedError解决方法

问题描述 在Qt发开过程中使用qtmqtt库来连接onenet的mqtt服务器,在ClientId、Username和Password均填写正确的情况下还是连接不上,查看错误显示QMQTT::SocketRemoteHostClosedError。 解决方法 client中的CleanSession标志位必须设置为true。 client …

Nginx负载均衡主备模式

1. 背景 使用Nginx代理后端服务,有时候某些服务是不能使用多台负载均衡,但又想保障高可用,所以采用主备模式,记录如下: 2. 参考 nginx 负载均衡Nginx-负载均衡-后端状态max_conns、down、backup、max_fails、fail_t…

Thinkphp--in-sqlinjection

一、漏洞原理 在 Builder 类的 parseData 方法中&#xff0c;由于程序没有对数据进行很好的过滤&#xff0c;将数据拼接进 SQL 语句&#xff0c;导致 SQL注入漏洞 的产生。 影响版本 5.0.13<ThinkPHP<5.0.15 5.1.0<ThinkPHP<5.1.5 在相应的文件夹位置打开终端…

RMQ从入门到精通

一.概述与安装 //RabbitMQ //1.核心部分-高级部分-集群部分 //2.什么是MQ 消息队列message queue 先入先出原则;消息通信服务 //3.MQ的大三功能 流量消峰 应用解耦 消息中间件 //&#xff08;1&#xff09;人-订单系统(1万次/S)—> 人 - MQ(流量消峰,对访问人员进行排队) -…

服务器数据恢复—服务器重装系统导致XFS分区丢失的数据恢复案例

服务器数据恢复环境&#xff1a; 一台服务器MD1200磁盘柜&#xff0c;通过raid卡将15块磁盘组建成一组raid5磁盘阵列。raid5阵列分配了2个lun&#xff0c;操作系统层面对lun进行分区&#xff1a;1个分区采用LVM扩容方式加入到了root_lv中&#xff0c;其余分区格式化为XFS文件系…

强化学习(Reinforcement learning)基本概念

概念&#xff1a; 强化学习是在与环境互动中为达到一个目标而进行的学习过程 三层结构&#xff1a; 基本元素&#xff1a;agent、environment、goal agent&#xff1a;可以理解为玩家&#xff0c;即某个游戏的参与方 environment&#xff1a;环境本身&#xff0c;可以理…

数据结构复习指导之串的模式匹配

文章目录 串的模式匹配 考纲内容 复习提示 1.简单的模式匹配算法 知识回顾 2.串的模式匹配算法——KMP算法 2.1字符串的前缀、后缀和部分匹配值 2.2KMP算法的原理是什么 3.KMP算法的进一步优化 串的模式匹配 考纲内容 字符串模式匹配 复习提示 本章是统考大纲第6章内…

Android开发知识杂录

1.XML解析问题 增加XML布局文件时候出现 mergeDebugResources 错误 解决方案 由于XML默认文件带有BOM&#xff0c;remove bom即可 2.开机启动界面添加 3.开机隐藏系统桌面 4.添加敲击传感器GPIO 1. 测试板子的GPIO引脚情况 echo in > /sys/class/gpio/gpio<gpio_number…