本教程旨在帮助使用者快速进行Telechat模型的部署开发,主要包括:
为了便于大家快速上手,我们提供了可运行的环境镜像,下载地址:镜像下载 (访问码:2uik)
模型版本 | 下载链接 |
---|---|
7B-FP16 | TeleChat-FP16 |
7B-int8 | TeleChat-int8 |
7B-int4 | TeleChat-int4 |
教程中1.2版本为例,后续请修改版本号。
获取镜像,并完成解压得到tar文件。
导入镜像包
sudo docker load -i telechat-public_1.2.tar
启动容器,其中NVIDIA_VISIBLE_DEVICES=0,1,2,3,4,5,6,7代表挂载编号0-7的8张GPU显卡,请自行修改
sudo docker run -itd --name telechat --runtime=nvidia --shm-size=256g -e NVIDIA_DRIVER_CAPABILITIES=compute,utility -e NVIDIA_VISIBLE_DEVICES=0,1,2,3,4,5,6,7 telechat-public:1.2 bash
复制代码和镜像到容器内
- 例如 复制本地模型文件夹 telechat_opensource_7B_huggingface 到 telechat容器的/home下
- 例如 复制代码文件夹 Telechat 到 telechat容器的/home下
sudo docker cp telechat_opensource_7B_huggingface telechat:/home/. && sudo docker cp TeleChat telechat:/home/.
进入容器
sudo docker exec -it telechat bash
进入Telechat/inference_telechat
python3 telechat_infer_demo.py
我们通过使用NTK-aware外推和attention scaling的方法,能够将在8K长度上微调的模型在推理时外推到96K的长度。下表展示了TeleChat-7B模型在不同长度wikipedia数据上困惑度,可以观察到同时使用NTK-aware外推和attention scaling方法时,TeleChat在96K的推理长度上依然具有较低的困惑度。
2048 | 4096 | 8192 | 16384 | 32768 | 65536 | 98304 | |
---|---|---|---|---|---|---|---|
baseline | 4.8122 | 4.6562 | 39.3099 | 98.3102 | 155.2708 | 487.3398 | 447.6295 |
NTK-aware (8k) | 4.8122 | 4.6562 | 5.1904 | 4.7155 | 8.6351 | 77.7478 | 79.9256 |
NTK-aware+attention scaling (8k) | 4.8122 | 4.6562 | 5.1904 | 4.0353 | 4.1408 | 9.4080 | 7.9711 |
NTK-aware (16k) | 7.6916 | 7.9900 | 7.9580 | 5.1217 | 4.7932 | 10.5444 | 10.3614 |
NTK-aware+attention scaling (16k) | 7.6916 | 7.9900 | 7.9580 | 5.1217 | 4.7195 | 8.9751 | 7.6822 |
当然,您也可以在更长的长度上微调TeleChat,使之具备更强的外推能力。微调之后,只需将模型的config.json
配置文件中的training_seqlen
字段修改为微调时的训练长度即可进行推理。上表的第4、5行展示了将TeleChat-7B在16K长度上微调之后的困惑度,观察到在64K以上的推理长度上具有更低的困惑度。
模型微调分为全参数微调和lora微调两种方式:
进入deepspeed-telechat/sft
路径, 按照下述命令运行,启动基于DeepSpeed LoRA微调。
bash run_telechat_lora.sh
进入deepspeed-telechat/sft
路径,按照下述命令运行,启动基于DeepSpeed的全参数微调。
单节点运行脚本
bash run_telechat_single_node.sh
进入inference_telechat/
路径,修改telechat_infer_demo.py中PATH为上一步保存的模型路径文件,随后,按照下述命令运行,进行模型的推理
python telechat_infer_demo.py
进入Telechat/quant
python quant.py
调用推理
python telechat_quantized_infer_demo.py
提供了两种简单的单并发场景服务化方式,支持流式返回
进入service 文件夹
python telechat_service.py
默认在0.0.0.0:8070会启动telechat服务,可以使用test_json.py,test_stream.py进行测试
其它机器访问服务,需要修改0.0.0.0为服务机器IP。
在完成API部署后,运行
streamlit run webdemo.py
默认在0.0.0.0:8501
其它机器访问服务,需要修改0.0.0.0为服务机器IP。