Python Client
Promote uses Python's Built-in Modules or Standard Library.
Important
We recommend that you build Python models using version 3.9 to ensure compatibility with Promote. If you upgrade from a previous installation of Promote (for example, 2020.4.0), you might need to update your models and their dependencies to work with this Python version. If you have questions about Python versions, contact Support.
Note
Visit our GitHub repository for technical information about how to deploy models with the Python client.
There, you can also find specialized instructions for how to deploy models using the H2O Python module.
Structure Your Directory
To correctly transfer all model dependencies to Promote, you have to structure your directory in a particular way. Create a folder that contains these files:
promote.sh | (optional) | This file executes before Promote builds your model. Include low-level system packages here. |
main.py | (required) | This file contains your primary model deployment script. |
helpers/ | (optional) | Include helper functions in this directory. |
objects/ | (optional) | Include data fields needed for model execution (for example, pickle files) here. |
requirements.txt | (required) | This file contains a list of the packages you need to run your model. You must include the promote package here. |
Set Authentication Credentials
You must include your Promote username, API key, and instance URL to deploy your model:
# Replace "USERNAME" with your Promote username. # Replace "APIKEY" with your API key. # Replace "PROMOTE_URL" with the URL of your instance. p = promote.Promote(USERNAME, APIKEY, PROMOTE_URL)
Functions and Methods
Promote.metadata
Use the Promote.metadatamethod to assign related metadata to the model so the Promote platform can view it.
Avertissement
The Python client assigns metadata individually, with a maximum of six metadata values per model and with no more than 50 characters for each value.
Usage
promote.metadata["name"] = value
Example
promote.metadata["voting"] = ENSEMBLE.voting
Promote.deploy
Use the Promote.deploymethod to capture a model you've created as a function and any related files in the model directory, then send that information to the Promote platform.
Usage
promote.deploy(name, model, testdata, confirm=False, dry_run=False, verbose=0)
Arguments
name | (required) | Data type: string | Name the model you want to deploy to Promote. | |
model | (required) | Data type: string | Name the promoteModel() function you want to capture. | |
testdata | (required) | Data type: object | Provide a data object that the model can use to make predictions. | |
confirm | (optional) | Data type: boolean | Specify whether you want a confirmation prompt when you deploy your model. | Default: False |
dry_run | (optional) | Data type: boolean | Specify whether you want Promote to determine if it can pickle the model. (This option doesn't deploy the model.) | Default: False |
verbose | (optional) | Data type: integer | Specify how much information you want to log during deployment. Enter a value from 0 to 4, with 4 being the most information logged. | Default: 0 |
Example
promote.deploy("SimpleMarkovChain", MarkovChain, TESTDATA, confirm=True, dry_run=False, verbose=4)
Promote.predict
Use the Promote.predictmethod to send data to a deployed model and request a prediction.
Usage
promote.predict(model, data)
Arguments
model | (required) | Data type: string | Name the model you want to query. |
data | (required) | Data type: dictionary or dataframe | Provide the data that the model needs to make a prediction. |
Example
# Providing test data TESTDATA = {'step': 344, 'TransMatrix': [[0.69, 0.24, 0, 0, 0, 0.06], [0, 0.49, 0.05, 0.46, 0, 0], [0.5, 0, 0, 0.5, 0, 0], [0.76, 0.24, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0], [1, 0, 0, 0, 0, 0]], 'InitState': [[1, 0, 0, 0, 0, 0]]} # After the model is online, sending data and receiving predictions promote.predict("SimpleMarkovChain", TESTDATA)
@promote.validate_json
Use the @promote.validate_jsondecorator to validate data passed into your model. If the data fails the checks for validation, it doesn't pass to your model.
Note
This function requires the schema package to validate JSON data.
Usage
@promote.validate_json(Schema({'name': And(DATATYPE)}))
Example
import promote from schema import Schema # https://pypi.python.org/pypi/Schema @promote.validate_json(Schema({'step': int, 'TransMatrix': [[float, int]], 'InitState': [[float, int]]}))