Modelmanager API With Insight Generation and Pycausal, MLFlow Integration
Project description
Welcome to Modelmanager-api!
This is a api model for interacting with modelmanager.
Note:
- Example files are are in example_script directory.
- Example assets are in assets directory.
- It contains scripts for different actions(Add, Update, Delete).
- Check logs from file mmanager_log.log
Example Codes
Add Applications
from mmanager.mmanager import Applications
secret_key = 'Secret-Key'
url = 'URL'
application_data = {
"name":""
}
Applications(secret_key,url).post_application(data=application_data)
Add Classification/Regression
from mmanager.mmanager import Usecase
secret_key = 'Secret-Key'
url = 'URL'
data = {
"name": "Determination Of Origin Of Wine Using Chemical Analysis",
"description": "Wine is one of the most popular alcoholic drinks which has been used for thousands of years. Wine is produced by fermenting grapes.", #(Optional)
"image": '/path/image.jpg', #(Optional)
}
Usecase(secret_key, url).post_usecase(data)
Other optional data
Key word | Example |
---|---|
author | John Doe |
usecase_type | Classification (Options: Classification, Regression, Forecasting) |
computing_type | Classical (Options: Classical, Qantum, Hybrid) |
source | Forina, M. et al, PARVUS -An Extendible Package for Data Exploration, Classification and Correlation.,Institute of Pharmaceutical and Food Analysis and Technologies, Via Brigata Salerno,16147 Genoa, Italy. |
contributor | S. Aeberhard, D. Coomans and O. de Vel, Comparison of Classifiers in High Dimensional Settings, Tech. Rep. no. 92-02, (1992), Dept. of Computer Science and Dept. of Mathematics and Statistics, James Cook, University of North Queensland. |
is_private | Set True to keep the usecase private. Default False. |
trustability | Set True to list in trustability. Default False. |
explainability | Set True to list in explainability. Default False. |
hide_model | Set True to hide model related to this usecase. Default False. |
notification_emails | List of emails that will be notified. Eg: johndoe@qausal.com, adams_mary@qausal.com |
Forecasting Usecase
usecase_info = {
"name": "",
"usecase_type": "Forecasting",
"author": "",
"description": "",
"source": "",
"contributor": "",
"image": "",
"performance_data_selection": "",
"applications": ""
}
forecasting_fields = {
"performance_data_selection": "",#eg:{'from':'2020-09-09', 'to':'2020-11-01'}
"notification_emails": ["jhon@email.com"],
"forecasting_template": "two_conditions"
}
forecasting_feature_tabs = {
"result_tab":True,
"series_tab":True,
"condition_tab":True,
"performance_tab":True,
"ab_testing_tab":True,
"release_tab":True
}
Usecase(secret_key,url).post_usecase(usecase_info, forecasting_fields, forecasting_feature_tabs)
Update Usecase
from mmanager.mmanager import Usecase
secret_key = 'Secret-Key'
url = 'URL'
project_id = Project_id #use model_id number to update
data = {
"author": "AuthorName",
"description": "UsecaseDescription",
"source": "UsecasSource",
"contributor": "UsecaseContributor",
"image": 'image.jpg' , #path to image file
"banner": 'banner.jpg' , #path to banner file
}
Usecase(secret_key, url).patch_usecase(data, project_id)
Get All Usecases Uploaded By Authenticated User
from mmanager.mmanager import Usecase
secret_key = 'Secret-Key'
url = 'URL'
usecases = Usecase(secret_key,url).get_usecases()
print(usecases)
Get Usecase Detail
from mmanager.mmanager import Usecase
secret_key = 'Secret-Key'
url = 'URL'
usecase_id = "Usecase-Id"
# GET USECASE DETAIL
usecase_detail = Usecase(secret_key,url).get_detail(usecase_id)
print(usecase_detail)
# GET ALL USECASE UPLOATED BY AUTHENTICATED USER
_usecases = Usecase(secret_key,url).get_usecases()
print(_usecases)
# GET ALL MODEL ID REGISTERED UNDER USECASE
model_list = Usecase(secret_key,url).get_models(usecase_id)
print(model_list)
Delete Project
from mmanager.mmanager import Usecase
secret_key = 'Secret-Key'
url = 'URL'
project_id = Project_id #use project_id number to delete
Usecase(secret_key,url).delete_usecase(project_id)
Add Related Database
from mmanager.mmanager import ExternalDatabase
secret_key = 'Secret-Key'
url = 'URL'
# db_type: Postgres, MySQL
related_db_data ={
"db_type":"Postgres",
"db_name":"db_name",
"db_user":"username",
"db_password":"db_pass",
"db_host":"localhost",
"db_port":"5432"
}
ExternalDatabase(secret_key,url).post_related_db(data=related_db_data)
Link External Database
from mmanager.mmanager import ExternalDatabase
secret_key = 'Secret-Key'
url = 'URL'
# link_type: Client, System
external_db_data = {
"link_type":"System",
"usecase":"usecase_id",
"external_db":"related_db_id",
"train_table":"",
"test_table":"",
"pred_table":"",
"actuals_table":""
}
ExternalDatabase(secret_key,url).link_externaldb(data=external_db_data)
Add Tables
from mmanager.mmanager import TableInfo
secret_key = 'Secret-Key'
url = 'URL'
table_data = {
"table_type":"" #eg:"actual",
"table_name": "" #eg:"daily_act2",
"db_link": #eg:11
}
TableInfo(secret_key,url).post_table_info(data=table_data)
Add Fields
from mmanager.mmanager import FieldInfo
secret_key = 'Secret-Key'
url = 'URL'
field_data = {
"table_id": "" #eg:9,
"display_name": "" #eg:actual2,
"field_type": "",
"field_name":""
}
FieldInfo(secret_key,url).post_field_info(data=field_data)
Load Database Cache
from mmanager.mmanager import Usecase
secret_key = 'Secret-Key'
url = 'URL'
Usecase(secret_key,url).load_cache(usecase_id=7)
Add Model
from mmanager.mmanager import Model
secret_key = 'Secret-Key'
url = 'URL'
path = 'assets' #path to csv file
model_data = {
"project": "1", #Project ID or Usecase ID
"transformerType": "Classification", #Options: Classification, Regression, Forcasting
"datasetinsertionType": "Manual" #Options: AzureML, External DB, Manual
"training_dataset": "/path/train.csv"
"test_dataset": "/path/test.csv"
"pred_dataset": "/path/pred.csv"
"actual_dataset": "/path/truth.csv"
"model_file_path": "/path/model.h5"
"target_column": "Class"
}
Model(secret_key, url).post_model(model_data)
Other optional data
Key word | Example |
---|---|
note | |
model_area | |
model_dependencies | |
model_usage | |
model_audjustment | |
model_developer | |
model_approver | |
model_maintenance | |
documentation_code | |
production | Production (Options: production, observation, retired) |
model_input_data | "/path/input.csv" (Path to input data.) |
computing_type | Classical (Options: Classical, Qantum, Hybrid) |
binarize_scoring_flag | Set True to label binarize. Default False. |
algorithmType | Xgboost (Options: Xgboost, GBM) |
modelFramework | driverless_ai (Options: driverless_ai, tensorflow, keras, scikit, statmodlib, other) |
Create Config File For Azure ML Credentials
- Get Credentials from your existing Azure ML account.
- Create a config file in following format
- Give credential file path in credPath field to enable using AML integration service.
{
"subscription_id": "<subscription-id>",
"resource_group": "<resource_group>",
"workspace_name": "<workspace_name>",
"tenant-id": "<tenant-id>",
"datastore_name": "<datastore_name>"
}
Add Model, Fetch Datasets And Model From Azure ML
from mmanager.mmanager import Model
secret_key = 'Secret-Key'
url = 'URL'
model_data = {
"project": "<project-id>", #Project ID or Usecase ID
"transformerType": "model-type", #Options: Classification, Regression, Forcasting
"target_column": "target-column-name", #Target Column
}
ml_options = {
"credPath": "config.json", #Path to Azure ML credential files.
"datasetinsertionType": "AzureML", #Option: AzureML, Manual
"fetchOption": ["Model"], #To fetch model, add ["Model", "Dataset"] to fetch both model and datasets.
"modelName": "model-name", #Fetch model file registered with model name.
"dataPath": "dataset-name", #Get datasets registered with dataset name.
}
Model(secret_key, url).post_model(model_data, ml_options)
Add Model, Upload Datasets And Model Manually And Register To Azure ML
from mmanager.mmanager import Model
secret_key = 'Secret-Key'
url = 'URL'
path = 'assets' #path to csv file
model_data = {
"project": "1", #Project ID or Usecase ID
"transformerType": "Classification", #Options: Classification, Regression, Forcasting
"datasetinsertionType": "Manual" #Options: AzureML, External DB, Manual
"training_dataset": "/path/train.csv"
"test_dataset": "/path/test.csv"
"pred_dataset": "/path/pred.csv"
"actual_dataset": "/path/truth.csv"
"model_file_path": "/path/model.h5"
"target_column": "Class"
}
ml_options = {
"credPath": "config.json", #Path to Azure ML credential files.
"datasetinsertionType": "Manual", #Option: AzureML, Manual
"registryOption": ["Model"], #To register model, add ["Model", "Dataset"] to register both model and datasets.
"datasetUploadPath": "dataset-name", #To registere dataset on path.
}
model = Model(secret_key, url).post_model(model_data, ml_options)
model.json()
ADD MODEL: MLFLOW
Add MLFlow Creds
from mmanager.mmanager import MLFlow
secret_key = 'Secret-Key'
url = 'URL'
mlflow_cred_data = {
"name": "", #eg:"Test Credentials"
"aws_secret_access_key": "", #eg:"ueCepWaPlDIb/nATh7wYibgBMKXG3qn9PSZhk"
"aws_access_key_id": "", #eg:"DO0MT6XN0CACQQ"
"mlflow_s3_endpoint_url": "", #eg:"https://sfo3.digitaloceanspaces.com"
"artifact_path": "", #eg:"pathtomodelfiles"
"tracking_uri": "", #eg:"https://example.mlflow.com"
"usecase": usecase_id #Usecase ID
}
mlflow_cred = MLFlow(secret_key, url).post_mlflow_creds(mlflow_cred_data)
mlflow_cred_id = mlflow_cred.json().get('id')
mlflow_cred.json()
Get MLFlow Creds
from mmanager.mmanager import MLFlow
secret_key = 'Secret-Key'
url = 'URL'
creds_id = #eg:1
mlflow_cred = MLFlow(secret_key, url).get_mlflow_creds(mlflow_creds_id=creds_id)
mlflow_cred_dict = mlflow_cred.json()
usecase_id = mlflow_cred_dict.get('usecase')
mlflow_cred_id = mlflow_cred_dict.get('id')
mlflow_tracking_uri = mlflow_cred_dict.get('tracking_uri')
mlflow_aws_secret_access_key = mlflow_cred_dict.get('aws_secret_access_key')
mlflow_aws_access_key_id = mlflow_cred_dict.get('aws_access_key_id')
mlflow_s3_endpoint_url = mlflow_cred_dict.get('mlflow_s3_endpoint_url')
Download Datasets And Model Files From MLFlow Server
from mmanager.mmanager import MLFlow
secret_key = 'Secret-Key'
url = 'URL'
mlflow_exp_name = experiment_name #Not Optional
run_id = None #Optional
artifact_path = None #Optional
# Note: This will download the files in temp location eg:/opt/tmp/dataset/train.csv
mlflow_datafiles_details = MLFlow(secret_key, url).download_dataset_model(mlflow_cred_id, mlflow_exp_name)
mlflow_datafiles_details_dict = mlflow_datafiles_details.json()
modelfile_dict = mlflow_datafiles_details_dict.get("model",{})
datasets_dict = mlflow_datafiles_details_dict.get("datasets",{})
# Note: File names might vary, as user will upload those in the MLFlow
trainfile_path = datasets_dict.get("train.csv", None)
testfile_path = datasets_dict.get("test.csv", None)
predfile_path = datasets_dict.get("pred.csv", None)
actualfile_path = datasets_dict.get("actual.csv", None)
modelfile_path = modelfile_dict.get("model_file", None)
mlflow_data_is_local = mlflow_datafiles_details_dict.get("is_local") #If the location of datasets are not in s3 bucket or any other external storages is_local = True.
Add Model
from mmanager.mmanager import Model
secret_key = 'Secret-Key'
url = 'URL'
model_data = {
"project": usecase_id, #Project ID or Usecase ID
"transformerType": "Classification", #Options: Classification, Regression, Forcasting
"datasetinsertionType": "MLFlow", #Options: Manual, AzureML, MLFlow
"training_dataset": trainfile_path, #path to csv file
"test_dataset": testfile_path, #path to csv file
"pred_dataset": predfile_path, #path to csv file
"actual_dataset": actualfile_path, #path to csv file
"model_file_path": modelfile_path, #path to model file|
"is_mlflow_local": mlflow_data_is_local,
"target_column": "", #Target Column, eg:Class
"note": "", #Short description of Model, eg: MLFlow mmanager test model.
}
model = Model(secret_key, url).post_model(model_data)
model.json()
Update Model
from mmanager.mmanager import Model
secret_key = 'Secret-Key'
url = 'URL'
model_id = Model_id #use model_id number to update
data = {
"transformerType": "logistic",
"target_column": "id",
"training_dataset": "train.csv", #path to csv file
"pred_dataset": "submissionsample.csv", #path to csv file
"actual_dataset": "truth.csv", #path to csv file
"test_dataset": "test.csv", #path to csv file
}
Model(secret_key, url).patch_model(data, model_id)
Delete Model
from mmanager.mmanager import Model
secret_key = 'Secret-Key'
url = 'URL'
model_id = "Model_id" #use model_id number to delete
Model(secret_key,url).delete_model(model_id)
Get Model Details
from mmanager.mmanager import Model
secret_key = 'Secret-Key'
url = 'URL'
model_id = "Model_id"
Model(secret_key,url).get_details(model_id)
Get Metrics
- Get latest metrics recorded under Model
- Metric Type
- Developement Metric
- Scoring Metric
from mmanager.mmanager import Model
secret_key = 'Secret-Key'
url = 'URL'
metric = Model(secret_key,url).get_latest_metrics(model_id="Model-Id", metric_type="Metric-Type")
Generate Model Report
from mmanager.mmanager import Model
secret_key = 'Secret-Key'
url = 'URL'
model_id = "Model-Id" #use model_id number
Model(secret_key,url).generate_report(model_id)
Get Model Report
from mmanager.mmanager import Model
secret_key = 'Secret-Key'
url = 'URL'
model_id = "Model-Id" #use model_id number
all_report = Model(secret_key,url).get_all_reports(model_id=model_id)
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
mmanager-2.3.2.tar.gz
(91.5 MB
view details)
Built Distribution
mmanager-2.3.2-py3-none-any.whl
(91.5 MB
view details)
File details
Details for the file mmanager-2.3.2.tar.gz
.
File metadata
- Download URL: mmanager-2.3.2.tar.gz
- Upload date:
- Size: 91.5 MB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/5.1.0 CPython/3.11.9
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | d925820c35db190d9218af4f21639d8fdb5bcdeb553352cf6193c31b2c6924c8 |
|
MD5 | 0b40b0b227243d01a76aa0b0a6b50997 |
|
BLAKE2b-256 | a79990bcbbd80a6a6503b6e5e358129e28f3ca909236f96359e54c1299788293 |
File details
Details for the file mmanager-2.3.2-py3-none-any.whl
.
File metadata
- Download URL: mmanager-2.3.2-py3-none-any.whl
- Upload date:
- Size: 91.5 MB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/5.1.0 CPython/3.11.9
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 1e025f9fafe74c721e5675ee8a3bf4494f72bb15d4423485d43811b6089de333 |
|
MD5 | e4f406a485d155d6077dc3a621c14447 |
|
BLAKE2b-256 | dc34a7583ead6d5d2c68d6083b307cc08d895684499b6bccd2eba51799ce9313 |