kamilwu commented on a change in pull request #11075: [BEAM-9421] Website 
section that describes getting predictions using AI Platform Prediciton
URL: https://github.com/apache/beam/pull/11075#discussion_r392972669
 
 

 ##########
 File path: website/src/documentation/patterns/ai-platform.md
 ##########
 @@ -0,0 +1,87 @@
+---
+layout: section
+title: "AI Platform integration patterns"
+section_menu: section-menu/documentation.html
+permalink: /documentation/patterns/ai-platform/
+---
+<!--
+Licensed under the Apache License, Version 2.0 (the "License");
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+
+http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+-->
+
+# AI Platform integration patterns
+
+This page describes common patterns in pipelines with Google AI Platform 
transforms.
+
+<nav class="language-switcher">
+  <strong>Adapt for:</strong>
+  <ul>
+    <li data-type="language-java">Java SDK</li>
+    <li data-type="language-py" class="active">Python SDK</li>
+  </ul>
+</nav>
+
+## Getting predictions
+
+This section shows how to use a cloud-hosted machine learning model to make 
predictions about new data using Google Cloud AI Platform Prediction within 
Beam's pipeline.
+ 
+[tfx_bsl](https://github.com/tensorflow/tfx-bsl) is a library that provides 
`RunInference` Beam's PTransform. `RunInference` is a PTransform able to 
perform two types of inference. One of them can use a service endpoint. When 
using a service endpoint, the transform takes a PCollection of type 
`tf.train.Example` and, for each element, sends a request to Google Cloud AI 
Platform Prediction service. The transform produces a PCollection of type 
`PredictLog` which contains predictions.
+
+Before getting started, deploy a machine learning model to the cloud. The 
cloud service manages the infrastructure needed to handle prediction requests 
in both efficient and scalable way. Only Tensorflow models are supported. For 
more information, see [Exporting a SavedModel for 
prediction](https://cloud.google.com/ai-platform/prediction/docs/exporting-savedmodel-for-prediction).
+
+Once a machine learning model is deployed, prepare a list of instances to get 
predictions for. 
+
+Here is an example of a pipeline that reads input instances from the file, 
converts JSON objects to `tf.train.Example` objects and sends data to the 
service. The content of a file can look like this:
+
+```
+{"input": "the quick brown"}
+{"input": "la bruja le"}
+``` 
+
+The example creates `tf.train.BytesList` instances, thus it expects byte-like 
strings as input, but other data types, like `tf.train.FloatList` and 
`tf.train.Int64List`, are also supported by the transform. To send binary data, 
make sure that the name of an input ends in `_bytes`.
+
+Here is the code:
+
+{:.language-java}
+```java
+// Getting predictions is not yet available for Java. [BEAM-9501]
+```
+
+{:.language-py}
+```py
+import json
+
+import apache_beam as beam
+
+import tensorflow as tf
+from tfx_bsl.beam.run_inference import RunInference
+from tfx_bsl.proto import model_spec_pb2
+
+def convert_json_to_tf_example(json_obj):
+  dict_ = json.loads(json_obj)
+  for name, text in dict_.items():
+      value = tf.train.Feature(bytes_list=tf.train.BytesList(
+        value=[text.encode('utf-8')]))
+      feature = {name: value}
+      return tf.train.Example(features=tf.train.Features(feature=feature))
+
+with beam.Pipeline() as p:
+     _ = (p
+         | beam.io.ReadFromText('gs://my-bucket/samples.json')
+         | beam.Map(convert_json_to_tf_example)
+         | RunInference(
 
 Review comment:
   Yes. The transform uses this client library: 
https://github.com/googleapis/google-api-python-client. 
   
   > is there a plan to support gRPC in the future?
   
   As far as I know, there is no such plan at the moment

----------------------------------------------------------------
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
 
For queries about this service, please contact Infrastructure at:
us...@infra.apache.org


With regards,
Apache Git Services

Reply via email to