部署 LLM 推理服务和聊天服务

本教程演示使用 vLLM App 简单快速地将 Meta-Llama-3.1-8B-Instruct 模型部署为推理服务,再使用 NextChat App 提供一个简洁美观并且提供扩展功能的聊天 UI。

本教程的 Apps 架构如下图所示:

app-arch

准备工作

创建一个名为 vllm、大小 18GiB 的 PVC,然后安装一个任意的 JupyterLab App 挂载该 PVC。

进入 JupyterLab App,启动一个终端,执行以下命令以下载模型文件:

pip install modelscope

MODEL_NAME=Meta-Llama-3.1-8B-Instruct
modelscope download --model "LLM-Research/$MODEL_NAME" --exclude "original/*" --local_dir "./$MODEL_NAME"

安装 vLLM App

进入应用目录,点击 vLLM App,进入 README 页面:

catalog-vllm

README 给出了 App 介绍、使用方法、配置示例和参数说明,根据这些信息写出 YAML 配置如下:

replicaCount: 1

image:
  registry: docker.io
  repository: vllm/vllm-openai
  tag: "v0.5.3.post1"
  pullPolicy: IfNotPresent

resources:
  limits:
    cpu: 4
    memory: 64Gi
    nvidia.com/gpu: 1

model:
  deployName: "llama3-1-8b"  # 模型以该名称被部署

  volume:
    existingClaim: "vllm"
    subPath: "Meta-Llama-3.1-8B-Instruct"

env: []

使用上述配置安装 vLLM App,待 App 就绪后,查看其信息:

vllm-info

回到 JupyterLab,在终端中执行上述命令:

send-request

可以看到推理服务正常返回响应。

安装 NextChat App

为了让聊天有一个简洁而美观的 UI,我们可以使用 NextChat App。进入应用目录,点击 NextChat App:

catalog-nextchat

根据 README 写出 YAML 配置如下:

replicaCount: 1

image:
  registry: docker.io
  repository: yidadaa/chatgpt-next-web
  tag: v2.12.2
  pullPolicy: IfNotPresent

service:
  type: ClusterIP
  port: 3000

resources:
  limits:
    cpu: 1
    memory: 2Gi

llm:
  provider: "openai"
  apiKey: "any"
  openai:
    baseUrl: "http://<ENDPOINT>"  # 根据 vLLM App 的信息获取服务端点

env: []

使用上述配置安装 NextChat App,待 App 就绪后,查看其信息:

nextchat-info

在本地的终端中执行上述命令,然后在浏览器中访问相应的地址进入 UI,在设置中填写模型被部署的名称并选择该模型:

nextchat-config

然后就可以开始聊天了!

nextchat-chat

参考