Generated Python code from caraml-dev/universal-prediction-interface
Reason this release was yanked:
This release has breaking changes. It has been re-published as 1.0.0. See: https://github.com/caraml-dev/universal-prediction-interface/releases/tag/v1.0.0
Project description
CaraML UPI Protos
Generated Python code from caraml-dev/universal-prediction-interface. The intent of this package is to ease creation of Python server / client compatible with CaraML dataplane.
Example Usage
Creating Server
- Create
server.py
containing following dummy server code
from concurrent import futures
import grpc
import random
from caraml.upi.v1 import upi_pb2_grpc, upi_pb2, value_pb2
import caraml.upi.v1.upi_pb2 as upiv1
class Model(upi_pb2_grpc.UniversalPredictionServiceServicer):
def PredictValues(self, request: upi_pb2.PredictValuesRequest, context: grpc.ServicerContext) -> upi_pb2.PredictValuesResponse:
print(f"request: {request}")
# Return random integer for each rows
result_rows = []
for row in request.prediction_rows:
result_row = upi_pb2.PredictionResultRow(row_id=row.row_id, values=[value_pb2.NamedValue(name="result", type = value_pb2.NamedValue.INTEGER_VALUE_FIELD_NUMBER, integer_value=random.randint(0, 100))])
result_rows.append(result_row)
return upi_pb2.PredictValuesResponse(
prediction_result_rows=result_rows,
)
if __name__ == "__main__":
server = grpc.server(futures.ThreadPoolExecutor(max_workers=10))
upi_pb2_grpc.add_UniversalPredictionServiceServicer_to_server(Model(), server)
port = 9000
print(f"Running upi server at port {port}")
server.add_insecure_port(f"[::]:{port}")
server.start()
server.wait_for_termination()
- Start the server
python server.py
> Running upi server at port 9000
Creating Client
- Create
client.py
containing following client code
from caraml.upi.v1 import upi_pb2_grpc, upi_pb2
from caraml.upi.v1 import value_pb2
import grpc
import time
def run(server_port: 9000):
with grpc.insecure_channel(f"localhost:{server_port}") as channel:
stub = upi_pb2_grpc.UniversalPredictionServiceStub(channel)
while True:
response = stub.PredictValues(upi_pb2.PredictValuesRequest(
prediction_rows=[
upi_pb2.PredictionRow(row_id="1", model_inputs=[
value_pb2.NamedValue(name="feature1", type=value_pb2.NamedValue.DOUBLE_VALUE_FIELD_NUMBER, double_value=1.1),
value_pb2.NamedValue(name="feature2", type=value_pb2.NamedValue.DOUBLE_VALUE_FIELD_NUMBER, double_value=2.2),
value_pb2.NamedValue(name="feature3", type=value_pb2.NamedValue.DOUBLE_VALUE_FIELD_NUMBER, double_value=3.3),
value_pb2.NamedValue(name="feature4", type=value_pb2.NamedValue.DOUBLE_VALUE_FIELD_NUMBER, double_value=4.4),
]),
upi_pb2.PredictionRow(row_id="2", model_inputs=[
value_pb2.NamedValue(name="feature1", type=value_pb2.NamedValue.DOUBLE_VALUE_FIELD_NUMBER, double_value=1.1),
value_pb2.NamedValue(name="feature2", type=value_pb2.NamedValue.DOUBLE_VALUE_FIELD_NUMBER, double_value=2.2),
value_pb2.NamedValue(name="feature3", type=value_pb2.NamedValue.DOUBLE_VALUE_FIELD_NUMBER, double_value=3.3),
value_pb2.NamedValue(name="feature4", type=value_pb2.NamedValue.DOUBLE_VALUE_FIELD_NUMBER, double_value=4.4),
]),
]
))
print(response)
time.sleep(1)
if __name__ == "__main__":
run(9000)
- Start client in separate shell as the server
python client.py
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
caraml-upi-protos-0.3.7rc1.tar.gz
(18.5 kB
view hashes)
Built Distribution
Close
Hashes for caraml-upi-protos-0.3.7rc1.tar.gz
Algorithm | Hash digest | |
---|---|---|
SHA256 | 7ed30496784e0ba2ae19b93849249bb3e7942975be10d63f07770ecb6b59c2d3 |
|
MD5 | 2ca7a2b27ab6dab450c0d07f2983df79 |
|
BLAKE2b-256 | d4f40e0e628b00e4bc29432e2847e22f21db8d871b109e523ed095b31583bcf5 |
Close
Hashes for caraml_upi_protos-0.3.7rc1-py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | e83d8c0158dc046b33fe3fab2f574aa20777204101e350a3238fc3c81941d8f2 |
|
MD5 | 17f643d0a12f5ff189e832078d21c668 |
|
BLAKE2b-256 | f4424b0a6a71c64d3a881447257066cd46234f574ac0e80f32ceadac5457a628 |