笔记本上打造专属的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,即可获取源码。

在这里插入图片描述

  • 30
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

赵卓不凡

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值