语言:中文 | English
这个工程介绍了如何在阿里云上免费部署sqlcoder的8bit量化模型,并将大模型应用到Chat2DB客户端中。
!!!请注意,sqlcoder项目主要是针对SQL生成的,所以在自然语言转SQL方面表现较好,但是在SQL解释、SQL优化和SQL转化方面表现略差,仅供大家实验参考,切勿迁怒于模型或产品。
模型 | 最低GPU显存(推理) | 最低GPU显存(高效参数微调) |
---|---|---|
sqlcoder-int8 | 20GB | 20GB |
- 阿里云免费使用平台申请DSW免费试用。
pip install -r requirements.txt
- 因为要跑8bit的量化模型,所以还需要下载bitsandbytes包,执行下面的命令下载最新版本,否则cuda有可能会出现不兼容的情况
pip install -i https://test.pypi.org/simple/ bitsandbytes
- 在DSW实例中打开一个terminal,在目录/mnt/workspace下创建sqlcoder-model和sqlcoder文件夹
- 在sqlcoder-model文件夹下下载sqlcoder模型,执行下面的命令,请确保模型里面的几个bin文件下载完整且正确
git clone https://huggingface.co/defog/sqlcoder
- 将本项目下的api.py和prompt.md文件拷贝到sqlcoder文件夹下
- 安装fastapi相关包
pip install fastapi nest-asyncio pyngrok uvicorn
- 在sqlcoder文件夹下执行下面的命令,启动api服务
python api.py
- 执行以上步骤之后,你将得到一个api url,类似于
https://dfb1-34-87-2-137.ngrok.io
。
- 将api url复制到chat2db客户端中,即可开始使用模型生成SQL了。参考下图进行配置
- 实验结果如下
- 如果机器资源允许,可以尝试部署非量化的sqlcoder模型,在生成SQL的准确率上会比8bit的模型高一些,但是需要更多的显存和更长的推理时间。
- 部署非量化模型的步骤同上,只需要将api.py文件中的模型加载改成float16的模型即可,具体如下:
model = AutoModelForCausalLM.from_pretrained("/mnt/workspace/sqlcoder-model/sqlcoder",
trust_remote_code=True,
torch_dtype=torch.float16,
# load_in_8bit=True,
device_map="auto",
use_cache=True)
- 本教程虽然写的是在阿里云DSW环境上完成的,但是本教程中的脚本和命令并没有进行任何定制,理论上遵循以上步骤,可以在任何云资源上进行部署。