笔记本上打造专属的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,一经查实,立即删除!

相关文章

React 之 如何启动一个新的项目(六)

React本身是为构建SPA(单页面应用)而设计的。 想完全用 React 构建一个新的应用或网站,我们建议选择社区中流行的、由 React 驱动的框架。 生产级的 React 框架 1. Next.js Next.js 的页面路由 是一个全栈的 React 框架。它用途广泛&#x…

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

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

systemctl开启自动启动特定docker服务

列出所有服务和状态 systemctl list-unit-files --typeservice | grep enabled开机启动docker容器 1.创建Docker启动脚本: 创建一个启动Docker容器的脚本,该脚本可以将Docker服务启动,并启动需要的特定容器。名为start_docker_containers.…

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

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

JAVA:jsp+springboot 配置maven兼容版本

Java17 maven依赖&#xff1a;如果中央库和其他镜像找不到包&#xff0c; 可以访问下面的网址找替代包 <!-- Maven Repository: Search/Browse/Explore (mvnrepository.com) -->spring-boot版本号3.2.51.无需配置驱动&#xff0c;有内置数据库驱动 2.能自动扫描配置类。b…

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

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

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

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

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

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

Python Json数据解析

本篇主要介绍Python 中json数据如何解析、转化、保存和加载。 目录 Json数据解析 概念 作用 Json文件组成 Json转化为Python数据类型 Python数据类型转化为json 写入本地json文件 读取本地的json文件 总结 Json数据解析 概念 一种保存数据的格式 作用 可以保存本地…

Day28-Java基础之Arrays类和lambda表达式

Arrays类 //Arrays类 int[] arr{1,2,3,4,5,6}; System.out.println(Arrays.toString(arr)); System.out.println(Arrays.binarySearch(arr,3));//不存在返回&#xff0d;插入点再-1 int[] newArrArrays.copyOf(arr,10); System.out.println(Arrays.toString(newArr)); int[] n…

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

Q&#xff1a;上一期介绍完基本设计流程和实验原理&#xff0c;接着我们完成系统硬件设计部分&#xff0c;包括Platform Designer系统及Quartus工程。 A&#xff1a;依次搜索并添加Nios II Processor、JTAG UART、On-Chip Memory和System ID IP组件&#xff0c;连接各组件并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 单片机的通信 文章提供测试代码讲解、完整工程下载、测试效果图 本文需要用到的大概基础知识&#xff1a;1.3寸OLED配置通信显示、IIC通信、 定时器配置使用 这里就只贴出我的 OLED驱动方面的网址链接了&#xff1a…

Qt开发 , new一个QDialog窗口,点击关闭按钮,内部定义QTimer指针未释放 同时 析构函数也未调用问题

在Qt中&#xff0c;当创建一个QDialog的实例并显示它时&#xff0c;按下关闭按钮&#xff08;或点击窗口右上角的“X”按钮&#xff09;会触发窗口的关闭事件&#xff0c;但并不会立即调用其析构函数。这是因为Qt的窗口部件管理内存的方式是基于引用计数的&#xff0c;并且QDia…

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

更新完整代码和成品完整论文 《2024深圳杯&东三省数学建模思路代码成品论文》↓↓↓&#xff08;浏览器打开&#xff09; https://www.yuque.com/u42168770/qv6z0d/zx70edxvbv7rheu7?singleDoc# 2024深圳杯数学建模竞赛D题&#xff08;东三省数学建模竞赛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 测试矩…

Json 反序列化错误

Json 反序列化错误 JsonReaderException: Unexpected character encountered while parsing value: &#xfeff;. Path ‘’, l 可能是因为字符串是BOM UTF-8格式&#xff0c;需要把BOM去掉 public byte[] RemoveBOMData(byte[] bytesWithBom) {// UTF-8 BOM的字节表示&#…

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,所以我在解决这个问题后,总结了自己和其他人的解决经验,进行了整理,写…

详解AI绘画的技术原理

AI绘画的技术原理主要基于机器学习和神经网络模型。这些模型可以学习和识别图像中的特征&#xff0c;并自动生成新的图像。以下是AI绘画技术原理的详细解释&#xff1a; 首先&#xff0c;AI绘画需要大量的数据来学习和理解人类绘画的技巧和风格。这些数据可以来自于各种渠道&a…