将 ChatGLM2-6B 部署成 OpenAI API 服务
- 0. 背景
- 1. FastChat 部署使用 ChatGLM2-6B
- 1-1. 创建虚拟环境
- 1-2. 克隆代码
- 1-3. 安装依赖库
- 1-4. 使用 UI 进行推理
- 1-5. 使用 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 openaifrom 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
完结!