tensorflow(10)使用Prometheus對tensorflow/serving進(jìn)行服務(wù)監(jiān)控
??在之前的文章tensorflow(6)利用tensorflow/serving實(shí)現(xiàn)模型部署及預(yù)測中,筆者介紹了如何使用tensorflow/serving對單模型、多模型、不同版本模型進(jìn)行部署及預(yù)測。本文將在此基礎(chǔ)上,使用Prometheus對tensorflow/serving進(jìn)行服務(wù)監(jiān)控。
??網(wǎng)上雖然有很多關(guān)于tensorflow/serving的服務(wù)監(jiān)控的配置說明,但大多只是簡單介紹,并沒有給出具體的使用方式。本文將給出一個(gè)詳細(xì)使用例子。
??在此,我們只需要了解Prometheus是一款監(jiān)控軟件即可。
??項(xiàng)目結(jié)構(gòu)如下:
tensorflow_serving_examples
├──?ckpt_models
├──?docker-compose.yml
├──?multi_ckpt_2_pb.py
├──?multi_model.py
├──?multi_tf_serving.py
├──?pb_models
│???├──?add
│???│???└──?1
│???│???????├──?saved_model.pb
│???│???????└──?variables
│???│???????????├──?variables.data-00000-of-00001
│???│???????????└──?variables.index
│???├──?divide
│???│???└──?1
│???│???????├──?saved_model.pb
│???│???????└──?variables
│???│???????????├──?variables.data-00000-of-00001
│???│???????????└──?variables.index
│???├──?models.config
│???├──?monitoring_config.txt
│???├──?multiply
│???│???└──?1
│???│???????├──?saved_model.pb
│???│???????└──?variables
│???│???????????├──?variables.data-00000-of-00001
│???│???????????└──?variables.index
│???├──?prometheus.yml
│???└──?subtract
│???????└──?1
│???????????├──?saved_model.pb
│???????????└──?variables
│???????????????├──?variables.data-00000-of-00001
│???????????????└──?variables.index
??運(yùn)行multi_model.py即可生成加法、減法、乘法、除法模型,并保存為ckpt格式。再運(yùn)行multi_ckpt_2_pb.py將ckpt格式的模型轉(zhuǎn)化為pb格式的模型,便于tensorflow/serving部署。
??使用tensorflow/serving部署多模型時(shí)需要配置models.config,該文件位于pb_models文件夾下,內(nèi)容為:
model_config_list?{
??config?{
????name:?"add"
????base_path:?"/models/add"
????model_platform:?"tensorflow"
??}
??config?{
????name:?"subtract"
????base_path:?"/models/subtract"
????model_platform:?"tensorflow"
??}
??config?{
????name:?"multiply"
????base_path:?"/models/multiply"
????model_platform:?"tensorflow"
??}
??config?{
????name:?"divide"
????base_path:?"/models/divide"
????model_platform:?"tensorflow"
??}
}
??如果需要對tensorflow/serving進(jìn)行服務(wù)監(jiān)控,則需要配置monitoring_config.txt,內(nèi)容如下:
prometheus_config?{
?enable:?true,
?path:?"/monitoring/prometheus/metrics"
}
??pb_models文件夾下prometheus.yml為Prometheus的配置文件,內(nèi)容如下:
global:
??scrape_interval:?15s
??evaluation_interval:?15s
??external_labels:
????monitor:?'tf-serving-monitor'
scrape_configs:
??-?job_name:?'prometheus'
????scrape_interval:?5s
????metrics_path:?/monitoring/prometheus/metrics
????static_configs:
??????-?targets:?['model_serving:8501']
該配置文件用于監(jiān)控model_serving:8501這個(gè)路徑下的/monitoring/prometheus/metrics,爬取時(shí)間間隔為5s。
??最后,我們再使用Docker-Compose啟動(dòng)服務(wù)即可,docker-compose.yml內(nèi)容如下:
version:?"3.4"
services:
??model_serving:
??????image:?tensorflow/serving:1.14.0
??????container_name:?model_serving
??????ports:
????????-?"8511:8501"
??????restart:?always
??????networks:
????????-?tf_net
??????volumes:
????????-?./pb_models:/models
??????command:?--model_config_file=/models/models.config?&&?--monitoring_config_file=/models/monitoring_config.txt
??prometheus:
????image:?prom/prometheus:latest
????ports:
??????-?"9090:9090"
????restart:?always
????container_name:?prometheus
????networks:
??????-?tf_net
????volumes:
??????-?./pb_models/prometheus.yml:/etc/prometheus/prometheus.yml
networks:
??tf_net:
使用docker-compose up -d啟動(dòng)服務(wù)。
??等待服務(wù)啟動(dòng)成功后,在瀏覽器中輸入網(wǎng)址http://服務(wù)器IP:9090,即可看到如下界面:

??我們使用
multi_tf_serving.py對tensorflow/serving部署的模型進(jìn)行調(diào)用,在Prometheus中的監(jiān)控結(jié)果如下:
以上為Prometheus對最近10分鐘tensorflow/serving提供的模型服務(wù)的調(diào)用次數(shù)的監(jiān)控情況。
參考文章
TensorFlow Serving | Advanced Configuration 高級配置篇: https://anoyi.com/p/7bbdcac2fd0e
https://tensorflow.google.cn/tfx/serving/serving_config
后臺發(fā)送消息tf serving PDF,即可下載tensorflow/serving模型部署PDF文件。
