将 ChatGLM2-6B 部署成 OpenAI API 服务

0. 背景

最近一直在使用 OpenAI 的 API 做一些学习和调研。使用 OpenAI 的 API,一是会产生费用,二是要解决网络问题,三是还有各种访问限速。

所以尝试使用开源大语言模型搭建一个本地的 OpenAI 的 API 服务。

此次使用的开源技术是 FastChat。

1. FastChat 部署使用 ChatGLM2-6B

1-1. 创建虚拟环境

conda create -n fastchat python==3.10.6 -y
conda activate fastchat 

1-2. 克隆代码

git clone https://github.com/lm-sys/FastChat.git; cd FastChat
pip install --upgrade pip  # enable PEP 660 support

1-3. 安装依赖库

pip install -e .
pip install transformers_stream_generator
pip install cpm_kernels

1-4. 使用 UI 进行推理

启动 controller,

python3 -m fastchat.serve.controller

启动 model worker(s),

python3 -m fastchat.serve.model_worker --model-path THUDM/chatglm2-6b

启动 model worker(s)完成后,启动 Gradio web server,

python3 -m fastchat.serve.gradio_web_server

问它几个问题,问题和答案截图如下,

在这里插入图片描述

1-5. 使用 OpenAI API 方式进行推理

启动 controller,

python3 -m fastchat.serve.controller

启动 model worker(s),

python3 -m fastchat.serve.model_worker --model-names "gpt-3.5-turbo,text-davinci-003,text-embedding-ada-002" --model-path THUDM/chatglm2-6b

启动 RESTful API server,

python3 -m fastchat.serve.openai_api_server --host localhost --port 8000

设置 OpenAI base url,

export OPENAI_API_BASE=http://localhost:8000/v1

设置 OpenAI API key,

export OPENAI_API_KEY=EMPTY

问它几个问题,代码和答案截图如下,

import os
import openai

from dotenv import load_dotenv, find_dotenv
_ = load_dotenv(find_dotenv()) # read local .env file
os.environ['OPENAI_API_KEY'] = 'EMPTY'
os.environ['OPENAI_API_BASE'] = 'http://localhost:8000/v1'
openai.api_key = 'none'
openai.api_base = 'http://localhost:8000/v1'
def get_completion(prompt, model="gpt-3.5-turbo"):
    messages = [{"role": "user", "content": prompt}]
    response = openai.ChatCompletion.create(
        model=model,
        messages=messages,
        temperature=0,
    )
    return response.choices[0].message["content"]
get_completion("你是谁?")

在这里插入图片描述

get_completion("世界上第二高的山峰是哪座")

在这里插入图片描述

get_completion("鲁迅和周树人是什么关系?")

在这里插入图片描述

(可选)如果在创建嵌入时遇到 OOM 错误,请使用环境变量设置较小的 BATCH_SIZE,

export FASTCHAT_WORKER_API_EMBEDDING_BATCH_SIZE=1

(可选)如果遇到超时错误,

export FASTCHAT_WORKER_API_TIMEOUT=1200

refer1: https://github.com/lm-sys/FastChat/blob/main/docs/langchain_integration.md

refer2:https://github.com/lm-sys/FastChat

完结!

猜你喜欢

转载自blog.csdn.net/engchina/article/details/131677873