t2t模型启动web服务

t2t中是自带api实现web服务的,参考地址https://github.com/tensorflow/tensor2tensor/tree/master/tensor2tensor/serving

按照给出的步骤进行即可,

1、首先将模型进行export,这里不需要安装任何依赖

t2t-exporter --model=${MODEL}  \
	     --hparams_set=${HPARAMS}  \
	     --problem=${PROBLEM}  \
	     --data_dir=${DATA_DIR} \
	     --output_dir=${AVG_DIR}

都是训练模型时用到的参数,output_dir为模型位置

成功运行后,在你给定的output_dir下会出现新的文件夹export,点进去之后是一个时间戳命名的文件夹,这就是得到的serverable_name和modle_name,后面会用得上

2、其次将模型加载常驻内存服务,对外暴露出接口,需要安装tensorflow-model-server

具体方法参考https://www.tensorflow.org/tfx/serving/setup#installing_the_modelserver,这里只介绍利用apt安装

1)移除原有的server

apt-get remove tensorflow-model-server

2)把URL加进apt源

echo "deb [arch=amd64] http://storage.googleapis.com/tensorflow-serving-apt stable tensorflow-model-server tensorflow-model-server-universal" | sudo tee /etc/apt/sources.list.d/tensorflow-serving.list && \
curl https://storage.googleapis.com/tensorflow-serving-apt/tensorflow-serving.release.pub.gpg | sudo apt-key add -

3)安装

apt-get update tensorflow-model-server
apt-get install tensorflow-model-server

 注1:必要的时候加sudo

 注2:如果以上方法不成功,可以试试

wget 'http://storage.googleapis.com/tensorflow-serving-apt/pool/tensorflow-model-server/t/tensorflow-model-server/tensorflow-model-server_1.13.0_all.deb'
sudo dpkg -i tensorflow-model-server_1.13.0_all.deb

安装完成后,启动server

tensorflow_model_server  --port=9000  \
			 --model_name=1557823522 \
			 --model_base_path=${AVG_DIR}/export

当出现

I tensorflow_serving/model_servers/server.cc:313] Running gRPC ModelServer at 0.0.0.0:9000 ...

说明服务启动成功

3、使用

github上给出的例子是直接使用命令行,如

t2t-query-server \
  --server=localhost:9000 \
  --servable_name=my_model \
  --problem=translate_ende_wmt8k \
  --data_dir=~/t2t/data

 这个无法直接使用,还要加上必要的参数,大多数时候并不适合直接用命令行,因为这样和在解码时直接加

--decode_interactive

这一参数没有什么区别,query server的核心源码位于https://github.com/tensorflow/tensor2tensor/blob/master/tensor2tensor/serving/query.py

模仿解码过程对输入处理一下,核心函数是调用的predict函数,位于

https://github.com/tensorflow/tensor2tensor/blob/master/tensor2tensor/serving/serving_utils.py

必要的时候可以把这两部分拷出来,自己进行修改,完成自己的逻辑。

比较难搞的是这样只能出一个score最高的结果,想要得到多个beam还需要进一步修改,有点恶心

你可能感兴趣的:(t2t模型启动web服务)