使用 docker
或者本地环境两种方式之一,推荐使用 docker
构建镜像
docker build -f docker/Dockerfile -t llm-api:pytorch .
安装依赖
pip install torch>=1.13.1
pip install -r requirements.txt
-
MODEL_NAME
: 模型名称,如chatglm
、phoenix
、moss
等 -
MODEL_PATH
: 开源大模型的文件所在路径 -
EMBEDDING_NAME
(可选项): 嵌入模型的文件所在路径,推荐使用moka-ai/m3e-base
或者BAAI/bge-large-zh
-
CONTEXT_LEN
(可选项): 上下文长度,默认为2048
-
LOAD_IN_8BIT
(可选项): 使用模型8bit
量化 -
LOAD_IN_4BIT
(可选项): 使用模型4bit
量化 -
STREAM_INTERVERL
(可选项): 流式输出的token
数量 -
PROMPT_NAME
(可选项): 使用的对话模板名称,如果不指定,则将根据模型名找到对应的模板
选择下面两种方式之一启动模型接口服务
- docker run
不同模型只需要将 .env.example 文件内容复制到 .env
文件中
cp .env.example .env
然后修改 .env
文件中的环境变量
docker run -it -d --gpus all --ipc=host -p 7891:8000 --name=llm-api \
--ulimit memlock=-1 --ulimit stack=67108864 \
-v `pwd`:/workspace \
llm-api:pytorch \
python api/server.py
- docker compose
docker-compose up -d
同样的,将 .env.example 文件内容复制到 .env
文件中
cp .env.example .env
然后修改 .env
文件中的环境变量
cp api/server.py .
python server.py
环境变量修改内容参考下面
chatglm-6b:
MODEL_NAME=chatglm
MODEL_PATH=THUDM/chatglm-6b # 模型所在路径,若使用docker,则为在容器内的路径
chatglm2-6b:
MODEL_NAME=chatglm2
MODEL_PATH=THUDM/chatglm2-6b
ptuing-v2:
MODEL_NAME=chatglm
MODEL_PATH=THUDM/chatglm-6b
ADAPTER_MODEL_PATH=ptuing_v2_chekpint_dir
USING_PTUNING_V2=true
MODEL_NAME=chatglm3
MODEL_PATH=THUDM/chatglm3-6b
MODEL_NAME=moss
MODEL_PATH=fnlp/moss-moon-003-sft-int4
MODEL_NAME=phoenix
MODEL_PATH=FreedomIntelligence/phoenix-inst-chat-7b
MODEL_NAME=tiger
MODEL_PATH=TigerResearch/tigerbot-7b-sft
LLaMA
MODEL_NAME=openbuddy-llama
MODEL_PATH=OpenBuddy/openbuddy-llama-7b-v1.4-fp16
Falcon
MODEL_NAME=openbuddy-falcon
MODEL_PATH=OpenBuddy/openbuddy-falcon-7b-v5-fp16
使用半精度加载模型(大约需要14G显存)
MODEL_NAME=baichuan-7b
MODEL_PATH=baichuan-inc/baichuan-7B
ADAPTER_MODEL_PATH=YeungNLP/firefly-baichuan-7b-qlora-sft
MODEL_NAME=baichuan-13b-chat
MODEL_PATH=baichuan-inc/Baichuan-13B-Chat
DEVICE_MAP=auto
可以使用 QUANTIZE
参数进行量化,例如 QUANTIZE=8
internlm-chat-7b:
MODEL_NAME=internlm
MODEL_PATH=internlm/internlm-chat-7b
starchat-beta:
MODEL_NAME=starchat
MODEL_PATH=HuggingFaceH4/starchat-beta
LOAD_IN_8BIT=true
aquila-chat-7b:
MODEL_NAME=aquila-chat-7b
MODEL_PATH=BAAI/AquilaChat-7B
除已有的环境之外,推荐安装下面的依赖以提高运行效率和降低显存占用
git clone -b v1.0.8 https://github.com/Dao-AILab/flash-attention
cd flash-attention && pip install .
pip install csrc/layer_norm
pip install csrc/rotary
Qwen/Qwen-7B-Chat:
MODEL_NAME=qwen
MODEL_PATH=Qwen/Qwen-7B-Chat
DEVICE_MAP=auto
Qwen/Qwen-14B-Chat:
MODEL_NAME=qwen
MODEL_PATH=Qwen/Qwen-14B-Chat
DEVICE_MAP=auto
Qwen/Qwen-14B-Chat-Int4:
本地环境安装下面的依赖包
pip install auto-gptq optimum
docker
环境使用下面的命令构建一个新的 GPTQ
镜像,并基于此镜像启动模型
docker build -f docker/Dockerfile.gptq -t llm-api:gptq .
MODEL_NAME=qwen
MODEL_PATH=Qwen/Qwen-14B-Chat-Int4
DEVICE_MAP=auto
xverse/XVERSE-13B-Chat:
MODEL_NAME=xverse
MODEL_PATH=xverse/XVERSE-13B-Chat
DEVICE_MAP=auto
defog/sqlcoder:
MODEL_NAME=starcode
MODEL_PATH=defog/sqlcoder
DEVICE_MAP=auto
# LOAD_IN_8BIT=true
codellama/CodeLlama-7b-Instruct-hf
MODEL_NAME=code-llama
MODEL_PATH=codellama/CodeLlama-7b-Instruct-hf
WizardLM/WizardCoder-Python-34B-V1.0
MODEL_NAME=code-llama
MODEL_PATH=WizardLM/WizardCoder-Python-34B-V1.0
PROMPT_NAME=alpaca
DEVICE_MAP=auto
Baichuan2
系列模型中,为了加快推理速度使用了 pytorch2.0
加入的新功能 F.scaled_dot_product_attention
,因此需要在 pytorch2.0
环境下运行
可以使用下面的命令升级 llm-api:pytorch
环境,或者直接使用 llm-api:vllm
环境
pip install torch -U
# pip uninstall transformer-engine -y
baichuan-inc/Baichuan2-13B-Chat
MODEL_NAME=baichuan2-13b-chat
MODEL_PATH=baichuan-inc/Baichuan2-13B-Chat
DEVICE_MAP=auto
DTYPE=bfloat16
BitsAndBytes
量化
MODEL_NAME=baichuan2-13b-chat
MODEL_PATH=baichuan-inc/Baichuan2-13B-Chat
DEVICE_MAP=auto
LOAD_IN_8BIT=true
在线量化
MODEL_NAME=baichuan2-13b-chat
MODEL_PATH=baichuan-inc/Baichuan2-13B-Chat
DEVICE_MAP=
DTYPE=half
QUANTIZE=8
Xwin-LM/Xwin-LM-7B-V0.1
MODEL_NAME=xwin-7b
MODEL_PATH=Xwin-LM/Xwin-LM-7B-V0.1
PROMPT_NAME=vicuna
Duxiaoman-DI/XuanYuan-70B-Chat
MODEL_NAME=llama2
MODEL_PATH=Duxiaoman-DI/XuanYuan-70B-Chat
PROMPT_NAME=xuanyuan
01-ai/Yi-34B-Chat
MODEL_NAME=yi-chat
MODEL_PATH=01-ai/Yi-34B-Chat
PROMPT_NAME=yi
DEVICE_MAP=auto
deepseek-ai/deepseek-coder-33b-instruct
MODEL_NAME=deepseek-coder
MODEL_PATH=deepseek-ai/deepseek-coder-33b-instruct
DEVICE_MAP=auto
deepseek-ai/deepseek-llm-67b-chat
MODEL_NAME=deepseek
MODEL_PATH=deepseek-ai/deepseek-llm-67b-chat
DEVICE_MAP=auto
SUSTech/SUS-Chat-34B
MODEL_NAME=sus-chat
MODEL_PATH=SUSTech/SUS-Chat-34B
DEVICE_MAP=auto
internlm2-chat-20b:
MODEL_NAME=internlm2
MODEL_PATH=internlm/internlm2-chat-20b
DEVICE_MAP=auto