笔记本上打造专属的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.content

    history.append(new_message)
    print("\033[91;1m")
    userinput = input("> ")
    if userinput.lower() in ["quit", "exit"]:
        print("\033[0mBYE BYE!")
        break
    history.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,即可获取源码。

在这里插入图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

K8s容器部署maven项目

最近在整一整套devops自动化持续集成的东西,一开始就做好了踩坑的准备。 failed to verify certificate: x509: certificate signed by unknown authority 今天在执行kubectl get nodes的时候报的证书验证问题,看了一圈首次搭建k8s的都是高频出现的问题…

《代环问题》

代环问题 什么是代环代环的结构 怎么判断代环还是不代环呢?举一反三1:为什么一定会相遇,有没有可能会错过永远追不上? 请证明2:slow一次走一步,那么fast走3、4、5、6......n步可不可以?N是奇数C是偶数时,那就永远追不上这个条件…

Linux 安装Python3.12.0

下载源文件。 wget https://www.python.org/ftp/python/3.12.0/Python-3.12.0.tgz 解压。 tar -zxvf Python-3.12.0.tgz 进入文件夹。 cd Python-3.12.0 指定安装目录。 ./configure --prefix/usr/local/python3.12/ 1 编译,把源码包里面的代码编译成linux服务器可以…

【JAVASE】带你了解的方法魅力

✅作者简介:大家好,我是橘橙黄又青,一个想要与大家共同进步的男人😉😉 🍎个人主页:橘橙黄又青-CSDN博客 目标: 1. 掌握方法的定义以及使用 2. 掌握方法传参 3. 掌握方法重载 …

自学Java要到什么程度才足够能力去实习和就业?

引言 Java,作为当今软件开发领域的主流编程语言之一,对于初学者而言,明确掌握到什么程度才能开始寻找实习和入职机会是至关重要的。这涉及到对Java知识体系的理解深度、技能掌握程度以及实际项目经验的积累。 本文将分别从实习和入职两个不…

ElasticSearch教程入门到精通——第二部分(基于ELK技术栈elasticsearch 7.x新特性)

ElasticSearch教程入门到精通——第二部分(基于ELK技术栈elasticsearch 7.x新特性) 1. JavaAPI-环境准备1.1 新建Maven工程——添加依赖1.2 HelloElasticsearch 2. 索引2.1 索引——创建2.2 索引——查询2.3 索引——删除 3. 文档3.1 文档——重构3.2 文…

Golang | Leetcode Golang题解之第59题螺旋矩阵II

题目&#xff1a; 题解&#xff1a; func generateMatrix(n int) [][]int {matrix : make([][]int, n)for i : range matrix {matrix[i] make([]int, n)}num : 1left, right, top, bottom : 0, n-1, 0, n-1for left < right && top < bottom {for column : lef…

PotatoPie 4.0 实验教程(33) —— FPGA实现摄像头视频图像叠加

链接直达 https://item.taobao.com/item.htm?ftt&id776516984361 什么是视频水印&#xff1f; 视频水印就是图像叠加&#xff0c;跟画中画&#xff0c;或者是OSD是一样的原理&#xff0c;都是在视频的行场数据流上进行替换操作&#xff0c;比如叠加可以直接用水印图的数…

Vue.js课后练习(登录注册和大小比较)

第一题 请编写登录页面和注册页面&#xff0c;通过动态组件实现动态切换页面中显示的组件&#xff0c;效果如图1和图2所示。 图1 登录页面 图2 注册页面 代码&#xff1a; my.vue代码: <template>登录 </template><script setup> </script><st…

K8S执行完毕kubectl init xxx 执行 kubectl get ns 报错才connect: connection refused

问题场景&#xff1a; 在安装完毕K8S之后&#xff0c;执行 kubectl get ns 报错&#xff1a; [rootmaster ~]# kubectl get pods E0501 08:34:55.770030 11268 memcache.go:265] couldnt get current server API group list: Get "https://192.168.1.100:6443/api?ti…

RAGFlow:安装与体验

服务器需要有docker,或者直接访问官方提供的demo: https://demo.ragflow.io/ docker-compose安装 需要确保 vm.max_map_count 不小于 262144 【更多】:sysctl -w vm.max_map_count=262144 克隆仓库:$ git clone https://github.com/infiniflow/ragflow.git 进入 doc…

特殊成员的管理方法

五一假期第一天&#xff0c;快乐学习&#xff0c; 团队管理最困难的其实就是人的管理。 团队冲突往往是由一些特殊的成员引起的&#xff0c;因此&#xff0c;掌握这些特殊成员的管理方法不但可以减少团队冲突发生的频次&#xff0c;还会降低团队冲突解决的难度。 【我是中年老码…

卫星通信现状与展望三 -- 6G

作者:私语茶馆 6G星地一体远景规划 中国信通院《6G总体远景与潜在关键技术白皮书》指出6G将实现地面网络、不同轨道高度上 的卫星(高中低轨卫星)以及不同空域飞行器等融合而成全新的移动信息网络,通过地面网络实现城市热点常态化覆盖,利用天基、空基网络实现偏远地…

软件定义汽车落地的五大关键要素

1、架构升级 1.1 软件架构&#xff1a;分层解耦、服务化、API 接口标准化 随着企业向软件定义汽车开发方法的转变&#xff0c;软件架构也需要同步进行升级&#xff0c;引入面向服务的架构&#xff08;Service-Oriented Architecture&#xff0c;简称 SOA&#xff09;方法论。…

【八大排序(三)】快速排序

❣博主主页: 33的博客❣ ▶️文章专栏分类:八大排序◀️ &#x1f69a;我的代码仓库: 33的代码仓库&#x1f69a; &#x1faf5;&#x1faf5;&#x1faf5;关注我带你了解更多排序知识 目录 1.前言2.快速排序2.1概念2.2画图理解2.3递归代码实现2.3.1Hoare法2.3.2挖坑法2.3.3前…

外包干了3天,技术就明显退步了。。。。。

先说一下自己的情况&#xff0c;本科生&#xff0c;19年通过校招进入广州某软件公司&#xff0c;干了接近4年的功能测试&#xff0c;今年年初&#xff0c;感觉自己不能够在这样下去了&#xff0c;长时间呆在一个舒适的环境会让一个人堕落!而我已经在一个企业干了四年的功能测试…

一个完全免费、私有且本地运行的搜索聚合器-FreeAskInternet

什么是 FreeAskInternet FreeAskInternet 是一个完全免费、私有且本地运行的搜索聚合器&#xff0c;使用 LLM 生成答案&#xff0c;无需 GPU。用户可以提出一个问题&#xff0c;系统将使用 searxng 进行多引擎搜索&#xff0c;并将搜索结果组合到 ChatGPT3.5 LLM 中&#xff0…

第三节课,功能2:开发后端用户的管理接口-- postman--debug测试

一、如何使用postman 网址&#xff1a; https://www.postman.com/downloads/ 【Postman小白教程】五分钟学会如何使用Postman~_哔哩哔哩_bilibili postman安装使用_bowser agent在postman哪里-CSDN博客 二、下载后 登录&#xff0c;开始测试 2.1 关于postman 报错&#…

什么是 Web3 的生成式 AI?

从 Web 1.0 的静态、单向通信到 Web 2.0 的动态、用户驱动的格局&#xff0c;互联网在二十年的时间里经历了一场显着的转变。现在&#xff0c;当我们站在 Web 3.0 时代的边缘时&#xff0c;我们正在见证更具颠覆性的事物的曙光&#xff1a;生成式人工智能 (AI) 融入我们的数字世…

【数据结构(邓俊辉)学习笔记】向量05——排序器

文章目录 0. 概述1.统一入口2. 起泡排序2.1 起泡排序&#xff08;基础版&#xff09;2.1.1 算法分析2.1.2 算法实现2.1.3 重复元素与稳定性2.1.4 复杂度分析 3. 归并排序3.1 有序向量的二路归并3.2 分治策略3.3 实例3.4 二路归并接口的实现3.5 归并时间3.6 排序时间 4.综合评价…