Deploying a pure function
Within Verta, a "Model" can be any arbitrary function: a traditional ML model (e.g., sklearn, PyTorch, TF, etc); a function (e.g., squaring a number, making a DB function etc.); or a mixture of the above (e.g., pre-processing code, a DB call, and then a model application.
This tutorial provides an example of how to deploy any function on Verta.
As mention in the deploying models guide, deploying models via Verta Inference is a two step process: (1) first create an endpoint, and (2) update the endpoint with a model.
This tutorial explains how Verta Inference can be used to deploy a scikit-learn model.
census_endpoint = client.create_endpoint(path="/census")
To deploy an arbitrary function within Verta, the function must be wrapped into a class that extends VertaModelBase (See this guide).
For example, suppose we have a cubic transform that we want to deploy to Verta. Note that this function could be absolutely anything -- make a database query, call a REST endpoint, use the associated artifacts to do further processing, etc.
def cubic_transform(x):
return 3*(x**3) + 2*x + 5
from verta.registry import VertaModelBase
class CubicFunction(VertaModelBase):
def __init__(self, artifacts=None):
pass
def predict(self, input_data):
output_data = []
for input_data_point in input_data:
output_data_point = cubic_transform(input_data_point)
output_data.append(output_data_point)
return output_data
from verta.environment import Python
model_version = registered_model.create_standard_model(
CubicFunction,
environment=Python(requirements=[]),
name="v1",
)
Regardless of how a Registered Model Version has been created, the endpoint defined above can now be upated and we can make predictions against it.
ccubic_function_endpoint = client.get_or_create_endpoint("cubic")
cubic_function_endpoint.update(model_version, wait=True)
deployed_model = cubic_function_endpoint.get_deployed_model()
deployed_model.predict([3, 0])
Last modified 1yr ago