2024,我想和很多大模型聊聊 | 使用OpenAOE和LMDeploy和开源大语言模型(LLM)对话

好记性不如烂笔头,不如趁热记录下,给未来的自己。

0 | 前言

在这个大语言模型(LLM)百花齐放的时代,出现了很多开源的、商业的、免费的、收费的大模型,在探索这些大模型无限可能性的时候,我们常常对那些能够直观呈现成果的工具感到兴奋。

今天, 给大家分享一个这样的框架工具------ OpenAOE,一个前沿的大语言模型群聊框架 (LLM Group Chat Framework: chat with multiple LLMs at the same time)

通过 OpenAOE 可以很方便地与不同的大语言模型进行单聊和群聊 。它同时支持接入商业大模型(需用户自行提供Token)和 开源的大语言模型。 本篇文章,主要介绍如何使用 LMDeploy 来部署开源的大模型,然后接入 OpenAOE,进行聊天。

1 | 安装部署

先看下部署架构,有一个整体的印象

【说明】

  1. 我们的环境和部署都会基于Linux系统进行 (Windows和MacOS系统同样支持)
  2. 考虑到大模型的部署对显卡要求比较高(InternLM-Chat-7B 模型起来就需要将近 16GB 的显存),我们会借助 InternStudio 来部署模型。当然如果本地电脑显卡配置比较高的话,模型也可以在本地 serving。

这里的 InternStudio 是一个AI开放平台,参加他们的课程,可以提供免费的 A100 GPU 使用时间。

1.1 | 环境准备

1.1.1 | 安装 conda

安装 conda 是为了管理和隔离 python 环境,来避免不同项目之间安装 相同包不同版本 导致的冲突。(如果本地已经有conda环境或者python环境,可以跳过)

本地

bash 复制代码
# 安装 miniconda
mkdir -p ~/miniconda3
wget https://repo.anaconda.com/miniconda/Miniconda3-latest-Linux-x86_64.sh -O ~/miniconda3/miniconda.sh
bash ~/miniconda3/miniconda.sh -b -u -p ~/miniconda3
rm -rf ~/miniconda3/miniconda.sh
# 初始化bash 或者 zsh
~/miniconda3/bin/conda init bash
~/miniconda3/bin/conda init zsh

1.1.2 | 创建python虚拟环境并初始化

本地

创建一个python版本是3.10的虚拟环境 openaoe

ini 复制代码
conda create -n openaoe python==3.10

studio开发机 启动开发机后,可以看到

InternStudio 平台提供了一键初始化 conda 环境的命令, 我们可以创建一个新的 conda 环境,命名为 lmdeploy:

bash 复制代码
/share/install_conda_env_internlm_base.sh lmdeploy

安装成功后,执行

bash 复制代码
conda env list

可以看到环境准备就绪:

1.1.3 | 安装 OpenAOE

本地

激活上面创建的 conda 环境: openaoe

conda activate openaoe

安装 OpenAOE

arduino 复制代码
pip install -U openaoe -i https://pypi.org/simple

执行openaoe,看到如下界面,表示安装成功

1.1.4 | 安装 LMDeploy

studio开发机

bash 复制代码
pip install packaging
pip install /root/share/wheels/flash_attn-2.4.2+cu118torch2.0cxx11abiTRUE-cp310-cp310-linux_x86_64.whl
pip install 'lmdeploy[all]==v0.1.0'

执行 lmdeploy -h, 看到如下界面,表示安装成功

1.2 | 部署

1.2.1 | 部署 OpenAOE

本地

arduino 复制代码
conda activate openaoe # 如果本地的conda环境不在openaoe,需要执行这段命令
openaoe -f config.yaml

这里 config.yaml 配置如下:

yaml 复制代码
---
models:
    internlm:
        api_base: http://localhost:23333
...

启动成功界面

1.2.3 | 部署 LMDeploy

studio开发机

这里我们会借助 vscode 连接到 InternStudio 的开发机(为了使用其远程端口转发能力), 具体教程可以参考 这篇文章

配置 vscode ssh config 如下:

sql 复制代码
Host ssh.intern-ai.org.cn
  HostName ssh.intern-ai.org.cn
  StrictHostKeyChecking no
  Port 35278
  UserKnownHostsFile /dev/null
  User root

进入开发机执行

bash 复制代码
export HF_ENDPOINT=https://hf-mirror.com
lmdeploy serve api_server internlm/internlm-chat-7b --server_name 0.0.0.0 --server_port 23333 --instance_num 64 --tp 1 --model-name internlm-chat-7b #

上面的参数中 server_nameserver_port 分别表示服务地址和端口,tp 表示 Tensor 并行。还剩下一个 instance_num 参数,表示实例数,可以理解成 Batch 的大小。执行后如下图所示。

注意:这里的 http://0.0.0.0:23333 是开发机内访问的一个地址,在本地浏览器上是无法访问的

通过 vscode 配置端口转发,将开发机的23333端口转发到本地的23333端口

这样,我们就可以在本地访问 http://localhost:23333 来请求 InternStudio 开发机里通过 LMDeploy 提供推理服务的 API 了。

以上。

相关推荐
LUCIAZZZ10 分钟前
SkyWalking快速入门
java·后端·spring·spring cloud·微服务·springboot·skywalking
方圆想当图灵26 分钟前
高性能缓存设计:如何解决缓存伪共享问题
后端·代码规范
肥肠可耐的西西公主30 分钟前
前端(AJAX)学习笔记(CLASS 2):图书管理案例以及图片上传
前端·笔记·学习
大胖丫32 分钟前
vue 学习-vite api.js
开发语言·前端·javascript
孙桂月33 分钟前
ES6相关操作(2)
前端·javascript·es6
陈浩源同学33 分钟前
学习 TypeScript 栈和队列数据结构
前端·算法
天天开发34 分钟前
【零代码革命】用Trae打造Flutter应用:AI助力,小白秒变工程师-页面调教篇
前端
我这一生如履薄冰~35 分钟前
简单封装一个websocket构造函数
前端·javascript·websocket
fangcaojushi35 分钟前
解决webpack5.54打包图片及图标的问题
前端·vue.js
海盗强36 分钟前
Webpack打包优化
前端·webpack·node.js