用户可以在本地完成大模型的服务化部署,以下步骤描述了从下载预训练模型,服务化部署和调试的整个过程。用户机器确保已安装Docker,可访问大模型存储库。
我们已将预训练好的大模型文件,上传至Hugging Face仓库,下载模型文件后解压到本地。下载完成后,解压模型文件到指定的本地目录,如 /home/huggingface。
docker pull tugraph/llam_infer_service:0.0.1 //使用以下命令来验证镜像是否成功下载 docker images
docker run -it --name ${容器名称} -v ${本地模型路径}:${容器模型路径} -p ${本地端口}:${容器服务化端口} -d ${镜像名}
//例如
docker run -it --name my-model-container -v /home/huggingface:/opt/huggingface -p 8000:8000 -d llama_inference_server:v1
// 检查容器是否正常运行
docker ps
在这里,我们将容器的 8000 端口映射到本地机器的 8000 端口,将本地模型(/home/huggingface)所在目录挂载到容器的路径(/opt/huggingface),并将容器名称设置为 my-model-container。
//进入上述刚创建好的容器
docker exec -it ${container_id} bash
//执行如下命令
cd /opt/llama_cpp
python3 ./convert.py ${容器模型路径}
执行完成后, 会在容器模型路径下生成前缀为ggml-model的文件
// 如下所示 q4_0即将原始模型量化为int4,模型大小压缩至3.5GB; // 其它参数类似 cd /opt/llama_cpp ./quantize 默认生成的F16模型路径 量化后模型路径 q4_0
以下是量化后模型的大小和推理速度等参考指标:
// ./server -h 可查看参数详情
// ${ggml-model...文件}为生成的ggml-model前缀的文件名
cd /opt/llama_cpp
./server --host ${ip} --port ${port} -m ${容器模型路径}/${ggml-model...文件} -c 4096
//例如
./server --host 0.0.0.0 --port 8000 -m /opt/huggingface/ggml-model-f16.gguf -c 4096
curl --request POST \
--url http://127.0.0.1:8000/completion \
--header "Content-Type: application/json" \
--data '{"prompt": "请返回小红的10个年龄大于20的朋友","n_predict": 128}'
如下是服务化部署后的模型推理结果: