Serving
Serving copied to clipboard
使用Serving預測,顯存異常增長
各位先進跟大佬好
我照着官方教程並使用docker部署模型,遇到一個問題,就是啓動服務放一天預測,發現顯存會異常增長
操作過程
我用docker-compose建立image並run一個可以使用轉換過的模型進行預測的container
FROM registry.baidubce.com/paddlepaddle/paddle:2.2.2-gpu-cuda10.2-cudnn7
RUN git clone https://github.com/PaddlePaddle/Serving
RUN bash Serving/tools/paddle_env_install.sh
RUN cd Serving && pip3 install -r python/requirements.txt
RUN pip3 install paddle-serving-client==0.8.2
RUN pip3 install paddle-serving-app==0.8.2
RUN pip3 install paddle-serving-server-gpu==0.8.2.post102
version: "3.2"
services:
ernie_service:
container_name: "ernie_service"
runtime: "nvidia"
build:
context: .
dockerfile: Dockerfile
restart: always
volumes:
- /etc/localtime:/etc/localtime:ro
- ./serving_server:/serving_server
ports:
- 9292:9292
command: bash -c "python -m paddle_serving_server.serve --model /serving_server --port 9292 --gpu_id 0 --thread 10"
./serving_server
資料夾內放的是可服務化的ERNIE-1.0
情感分類模型(就是用官方教程導出的東西)
經過一段時間預測發現顯存使用量從原本的1~2 GB
異常增長到7.6 GB
client.py
的片段代碼如下
TOKENIZER = ErnieTokenizer.from_pretrained("checkpoints/model_100")
CLIEN_CONFIG_FILE = "./serving_client/serving_client_conf.prototxt"
PREDICT_SERVERS = ["127.0.0.1:9292"]
MAX_SEQ_LENGTH = 128
CLIENT = Client()
CLIENT.load_client_config(CLIEN_CONFIG_FILE)
CLIENT.connect(PREDICT_SERVERS)
input_ids, token_type_ids = batchify_fn(batch)
fetch_map = CLIENT.predict(
feed={"input_ids": input_ids, "token_type_ids": token_type_ids},
fetch=["save_infer_model/scale_0.tmp_1"],
batch=True
)
Service端的就沒有代碼了,因爲是直接使用paddle_serving_server.serve
啓動的
想請問是我姿勢不正確還是遇到什麼問題?
非常感謝!
Client端不会使用显存,显存是在Server端使用。推理过程框架会根据输入参数的batch和数据长度会额外分配一些显存用于计算和cache。建议开启 --ir_optim 会将多个OP合成Pass,或者通过编译源码设置更大的初始化显存数量
感謝解說
那麼,如果打開--ir_optim
的話,是針對單一batch還是多個來源的輸入?