赞
踩
LLM 高并发部署是个难题,具备高吞吐量的服务,能够让用户有更好的体验(比如模型生成文字速度提升,用户排队时间缩短)。
# cd /workspace/vllm
python3 -m vllm.entrypoints.api_server \
--model /models/Llama-2-7b-chat-hf --swap-space 16 \
--disable-log-requests --host 0.0.0.0 --port 8080 --max-num-seqs 256
更多参数可以在 vllm/engine/arg_utils.py 找到,其中比较重要的有:
部署后,发送 post 请求到 http://{host}:{port}/generate ,body 为 :
{
"prompt": "Once a upon time,",
"max_tokens": output_len,
"stream": false,
"top_p": 1.0
// 其他参数
}
vllm 也提供了 OpenAI-compatible API server,vllm 调用了 fastchat 的 conversation template 来构建对话输入的 prompt,但 v0.1.2 的 vllm 与最新版的 fastchat 有冲突,为了保证使用 llama v2 时用上对应的 prompt template,可以手动修改以下entrypoints.openai.api_server 中对 get_conversation_template 的引入方式(link)。修改后执行以下代码启动:
python3 -m vllm.entrypoints.openai.api_server \
--model /models/Llama-2-7b-chat-hf \
--disable-log-requests --host 0.0.0.0 --port 5001 --max-num-seqs 20 --served-model-name llama-2
从接收 request,到返回回复,大致的过程如下:
TGI 特点:
如果想直接部署模型的话,建议通过 docker 安装,省去不必要的环境问题。目前 TGI 只提供了 0.9.3 的:
docker pull ghcr.io/huggingface/text-generation-inference:0.9.3
如果要进行本地测试,可以通过源码安装(以下在 ubuntu 上安装):
# 如果没有网络加速的话,建议添加 pip 清华源或其他国内 pip 源
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
apt-get install cargo pkg-config git
PROTOC_ZIP=protoc-21.12-linux-x86_64.zip
curl -OL https://github.com/protocolbuffers/protobuf/releases/download/v21.12/$PROTOC_ZIP
sudo unzip -o $PROTOC_ZIP -d /usr/local bin/protoc
sudo unzip -o $PROTOC_ZIP -d /usr/local 'include/*'
rm -f $PROTOC_ZIP
# vim ~/.cargo/config
[source.crates-io]
registry = "https://github.com/rust-lang/crates.io-index"
replace-with = 'tuna'
[source.tuna]
registry = "https://mirrors.tuna.tsinghua.edu.cn/git/crates.io-index.git"
[net]
git-fetch-with-cli=true
BUILD_EXTENSIONS=True make install # Install repository and HF/transformer fork with CUDA kernels
安装成功,添加环境变量到 .bashrc 中 export PATH=/root/.cargo/bin:$PATH
执行text-generation-launcher --help ,有输出表示安装成功。
将 Llama-2-7b-chat-hf 部署成服务:
# 建议将模型下载到本地,而后挂载到 docker 中,避免在 docker 中重复下载。
docker run --rm \
--name tgi \
--runtime=nvidia \
--gpus all \
-p 5001:5001 \
-v /home/kevin/models:/data \
ghcr.io/huggingface/text-generation-inference:0.9.3 \
--model-id /data/Llama-2-7b-chat-hf \
--hostname 0.0.0.0 \
--port 5001 \
--dtype float16 \
--sharded false
可以通过 text-generation-launcher --help 查看到可配置参数,相对 vllm 来说,TGI 在服务部署上的参数配置更丰富一些,其中比较重要的有:
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。