tf.app.flags.DEFINE_string(‘server’, r’127.0.0.1:1234’, ‘post of server’)
FLAGS = tf.app.flags.FLAGS
dict_set = None
def load_features_from_lines(path):
# 读取特征列表,一行一个
features = []
with open(path) as o:
for line in o:
line_strip = line.strip()
if line_strip:
features.append(line_strip.decode(‘utf-8’))
logging.info(‘load {0} cols from {1} for filter’.format(len(features), path))
return features
def data_gen(fea_path):
# 数据处理 test_type2_value为验证数据集 用来验证一致性 和test_res里面的预测值对比一致性
# 真正上线时,feat_value为预处理好的特征(归一化脚本需要额外再写)。rc端输入特征(模型同学提供特征列表),然后本脚本进行预测然后返回一个score。
feat_value = np.load(“test_type2_value.npy”)[0].astype(np.float32)
#print feat_value.shape
fealist = load_features_from_lines(fea_path)
feat_index = np.array([x for x in range(len(fealist))]).astype(np.int32)
dropout_fm = np.array([0.0]*2).astype(np.float32)
dropout_deep = np.array([0.0]*4).astype(np.float32)
train_phase = False
return feat_index,feat_value,dropout_fm,dropout_deep,train_phase
def setup_stub():
host, port = FLAGS.server.split(‘:’)
channel = implementations.insecure_channel(host, int(port))
return prediction_service_pb2.beta_create_PredictionService_stub(channel)
def setup_request():
request = predict_pb2.PredictRequest()
# 模型名称与挂载模型时设置的model_name一致(即docker run …命令中的model_name)
request.model_spec.name = ‘hh_model’
request.model_spec.signature_name = tf.saved_model.signature_constants.DEFAULT_SERVING_SIGNATURE_DEF_KEY
return request
def predict(data):
# if os.environ.get(‘https_proxy’):
# del os.environ[‘https_proxy’]
# if os.environ.get(‘http_proxy’):
# del os.environ[‘http_proxy’]
stub = setup_stub()
request = setup_request()
feat_index,feat_value,dropout_fm,dropout_deep,train_phase = data_gen(data)
request.inputs[‘feat_index’].CopyFrom(tf.contrib.util.make_tensor_proto(feat_index))
request.inputs[‘feat_value’].CopyFrom(tf.contrib.util.make_tensor_proto(feat_value))
request.inputs[‘dropout_fm’].CopyFrom(tf.contrib.util.make_tensor_proto(dropout_fm))
request.inputs[‘dropout_deep’].CopyFrom(tf.contrib.util.make_tensor_proto(dropout_deep))
request.inputs[‘train_phase’].CopyFrom(tf.contrib.util.make_tensor_proto(train_phase))
result_future = stub.Predict.future(request, 5.0) # 5 seconds
#.float_val
response_out_score = np.array(result_future.result().outputs[‘output’].float_val) # 300
print("response_out_score: ", response_out_score)
if name == ‘main’:
# fea_path为特征列表路径,可见附件中的meta文件
fea_path = sys.argv[1]
predict(fea_path)
docker常用命令
Docker常用操作
docker version 查看docker的版本信息
docker info 显示 Docker 系统信息,包括镜像和容器数
docker --help Docker的帮助命令
docker images 列出本地主机上的镜像
docker search 从仓库中搜索指定的镜像
docker rmi –f 删除镜像id docker rmi -f $(docker images -qa) 删除全部 –q表示静默模式,只显示容器编号
docker rm 删除容器ID docker rm -f $(docker ps -aq)删除全部
docker pull下载镜像
docker run [option] image [command] 新建并启动容器—具体参数可以查看
docker ps 列出当前所有正在运行的容器
启动容器:docker start 容器ID或者容器名
重启容器:docker restart 容器ID或者容器名
停止容器:docker stop 容器ID或者容器名
强制停止容器:docker kill 容器ID或者容器名
docker top 容器ID查看容器内运行的进程
docker inspect 容器ID查看容器内部细节
docker exec -it 容器ID bashShell 在容器中打开新的终端,并且可以启动新的进程--进入正在运行的容器并以命令行交互 docker exec -it <CONTAINER ID> /bin/bash对指定的容器执行bash,进入容器
docker cp 容器ID:容器内路径 目标主机路径 从容器内拷贝文件到主机上
docker部署flaskA brief guide to building an app to serve a natural language processing model, containerizing it and deploying it. 构建用于服务自然语言处理模型,将其容器化和部署的应用程序的简要指南。
By: Edward Krueger and Douglas Frank...
最近发现模型在更新的一瞬间容易产生超时的问题,于是就了解了一下tf-serving 中有个warmup主要是通过模型启动时加载${model}/${version}/assets.extra/tf_serving_warmup_requests达到热启动的目的,使得模型更新时不易产生超时的问题
首先根据自己的模型字段进行编写形成tf_serving_warmup_requests文件,在导出模型时和warmup文件一起导出
以下是我warmup文件生成代码
#!/usr/bin/env pytho.