$ 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 - $ sudo apt-get update && sudo apt-get install tensorflow-model-server2. 导出模型 在将模型部署到TensorFlow Serving之前,您需要导出您的训练好的模型。您可以使用TensorFlow中的`tf.saved_model.builder.SavedModelBuilder` API将模型导出为`SavedModel`格式。
python import tensorflow as tf # 构建计算图 input_tensor = tf.placeholder(tf.float32, shape=[None, 784], name="input") output_tensor = tf.placeholder(tf.float32, shape=[None, 10], name="output") hidden = tf.layers.dense(input_tensor, 256, activation=tf.nn.relu) logits = tf.layers.dense(hidden, 10, name="logits") loss = tf.reduce_mean(tf.nn.softmax_cross_entropy_with_logits(logits=logits, labels=output_tensor)) train_op = tf.train.GradientDescentOptimizer(0.01).minimize(loss) # 训练模型 with tf.Session() as sess: sess.run(tf.global_variables_initializer()) for i in range(1000): batch_xs, batch_ys = mnist.train.next_batch(100) sess.run(train_op, feed_dict={input_tensor: batch_xs, output_tensor: batch_ys}) # 导出模型 builder = tf.saved_model.builder.SavedModelBuilder("model") builder.add_meta_graph_and_variables(sess, ["serve"]) builder.save()在这个例子中,我们创建了一个具有256个隐藏神经元的单层神经网络,并使用MNIST数据集训练了1000个epoch。我们使用`SavedModelBuilder`将模型导出到名为"model"的目录中。 3. 启动TensorFlow Serving 接下来,您需要启动TensorFlow Serving。您可以使用以下命令启动TensorFlow Serving:
$ tensorflow_model_server --port=9000 --model_name=my_model --model_base_path=/path/to/my_model在这个例子中,我们将模型名称设置为"my_model",并将模型的路径设置为"/path/to/my_model",将TensorFlow Serving的端口设置为9000。 4. 发送预测现在,我们已经将模型部署到TensorFlow Serving中,并且可以使用客户端发送预测请求。 在Python中,您可以使用`tensorflow`库的`gprc`模块来与TensorFlow Serving进行通信。您可以使用以下代码发送预测请求:
python import tensorflow as tf from tensorflow_serving.apis import predict_pb2 from tensorflow_serving.apis import prediction_service_pb2_grpc # 创建gRPC stub channel = grpc.insecure_channel("localhost:9000") stub = prediction_service_pb2_grpc.PredictionServiceStub(channel) # 创建请求 request = predict_pb2.PredictRequest() request.model_spec.name = "my_model" request.model_spec.signature_name = tf.saved_model.signature_constants.DEFAULT_SERVING_SIGNATURE_DEF_KEY request.inputs["input"].CopyFrom(tf.contrib.util.make_tensor_proto(input_data, shape=[1, 784])) # 发送请求 result = stub.Predict(request, 10.0) # 等待10秒钟的超时时间在这个例子中,我们使用`grpc.insecure_channel`创建了一个与TensorFlow Serving通信的gRPC stub。我们创建了一个`PredictRequest`请求,并将其发送到TensorFlow Serving。我们还指定了一个等待10秒钟的超时时间,以确保请求能够成功地完成。 在这个例子中,我们发送了一个大小为1x784的输入张量,并将其包含在`PredictRequest`请求中。我们还指定了`signature_name`为`tf.saved_model.signature_constants.DEFAULT_SERVING_SIGNATURE_DEF_KEY`,这表示我们使用默认的模型签名。 5. 总结 在本文中,我们介绍了如何使用TensorFlow Serving将机器学习模型部署到生产环境中。我们首先介绍了如何导出训练好的模型,然后介绍了如何启动TensorFlow Serving。最后,我们介绍了如何使用Python客户端向TensorFlow Serving发送预测请求。 TensorFlow Serving提供了许多有用的功能,如模型版本控制、模型热更新和模型的灰度发布等,这使得TensorFlow Serving成为生产环境中部署机器学习模型的理想选择。
文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。
转载请注明本文地址:https://www.ucloud.cn/yun/130762.html
摘要:大会以机器学习资料中心和云端安全为主要议题,为未来发展做战略规划。在年,谷歌开发了一个内部深度学习基础设施叫做,这个设施允许谷歌人创建更大的神经网络和扩容实训成千上万个核心。 导言 Google近日3月23-24日在美国旧金山举办首次谷歌云平台(Google Cloud Platform) GCP NEXT大会,参会人数超过2000人。GCP NEXT大会以机器学习、资料中心和云端安全...
摘要:从实验到生产,简单快速部署机器学习模型一直是一个挑战。总结上面我们快速实践了使用和部署机器学习服务的过程,可以看到,提供了非常方便和高效的模型管理,配合,可以快速搭建起机器学习服务。 从实验到生产,简单快速部署机器学习模型一直是一个挑战。这个过程要做的就是将训练好的模型对外提供预测服务。在生产中,这个过程需要可重现,隔离和安全。这里,我们使用基于Docker的TensorFlow Se...
阅读 2989·2023-04-25 20:22
阅读 3304·2019-08-30 11:14
阅读 2558·2019-08-29 13:03
阅读 3152·2019-08-26 13:47
阅读 3185·2019-08-26 10:22
阅读 1238·2019-08-23 18:26
阅读 540·2019-08-23 17:16
阅读 1876·2019-08-23 17:01