Create a Project and Onboard a Model for Observation
What is a Project?
A project helps organize models under observation and serves as the authorization unit to manage access to your models. To onboard a model to Fiddler, you need to have a project to associate it with. Once Fiddler's Python client is connected to your environment, you can either create a new project or use an existing one to onboard your model.
Create a Project
Using the Python client, you can create a project by calling the Project object's create function after setting the desired project name.
# Please be mindful that the Project name must be unique and should not have spaces or special characters.
PROJECT_NAME = 'quickstart_example'
## Create the Project
project = fdl.Project(name=PROJECT_NAME)
project.create()
print(f'New project created with id = {project.id}')
You should now see the newly created project on the Projects page in the Fiddler UI.

List All Projects
Using an existing project, you may list all the projects that you are authorized to view.
for project in fdl.Project.list():
print(f'Project: {project.id} - {project.name}')
## This will print ALL project IDs and Names that you have access to.
Onboarding a Model
To onboard a model you need to define a ModelSpec and optionally a Model Task. If you do not specify a model task during Model creation it can be set later or left unset.
Define the ModelSpec
A ModelSpec object defines what role each column of your inference data serves in your model.
Fiddler supports five column roles:
Inputs (features),
Outputs (predictions),
Targets (ground truth labels),
Metadata (additional information passed along with the inference)
Custom features (additional information that Fiddler should generate like embeddings or enrichments)
model_spec = fdl.ModelSpec(
inputs=['CreditScore', 'Geography', 'Gender', 'Age', 'Tenure', 'Balance', 'NumOfProducts', 'HasCrCard', 'IsActiveMember', 'EstimatedSalary'],
outputs=['probability_churned'],
targets=['Churned'],
decisions=[],
metadata=[],
custom_features=[],
)
Define the Model Task
Fiddler supports a variety of model tasks. Create a ModelTask
object and an additional ModelTaskParams
object to specify the ordering of labels. For a detailed breakdown of all supported model tasks, click here.
model_task = fdl.ModelTask.BINARY_CLASSIFICATION
task_params = fdl.ModelTaskParams(target_class_order=['no', 'yes'])
Infer the Model Schema
Onboard the model schema to Fiddler by passing in:
the data sample dataframe, called
sample_df
belowthe
ModelSpec
objectthe
ModelTask
andModelTaskParams
objectsthe event/inference ID column and event/inference timestamp columns
MODEL_NAME = 'my_model'
model = fdl.Model.from_data(
name=MODEL_NAME,
project_id=fdl.Project.from_name(PROJECT_NAME).id,
source=sample_df,
spec=model_spec,
task=model_task,
task_params=task_params,
event_id_col=id_column,
event_ts_col=timestamp_column
)
Depending on the input size this step might take a moment to complete. It is not a local operation, but requires uploading the sample dataframe to the Fiddler HTTP API.
Review and Edit the Schema
Schema inference is just a helping hand. The resulting schema needs human review and potentially some edits, as documented in the section titled Customizing your Model Schema.
Define Model Columns Using Pandas DataFrame Column Types
When defining the columns of a model, use the data types from a Pandas DataFrame. Note that no type inference is performed; it is the responsibility of the user to ensure that the DataFrame's column types are correct. The mapping of column types is as follows:
int8
INTEGER
int16
INTEGER
int32
INTEGER
int64
INTEGER
uint8
INTEGER
uint16
INTEGER
uint32
INTEGER
uint64
INTEGER
float16
FLOAT
float32
FLOAT
float64
FLOAT
complex64
STRING
complex128
STRING
string
STRING
object
STRING
bool
BOOLEAN
boolean
BOOLEAN
datetime64[ns]
TIMESTAMP
datetime64[ns, UTC]
TIMESTAMP
timedelta64[ns]
STRING
period[freq]
STRING
category
CATEGORY
interval
STRING
MODEL_NAME = 'my_model'
model_schema = fdl.utils.column_generator.create_columns_from_df(sample_df)
model = fdl.Model(
name=MODEL_NAME,
project_id=project.id,
schema=model_schema,
spec=model_spec,
task=model_task,
task_params=task_params)
The resulting model's schema should be reviewed by the user. Any necessary edits should be made according to the guidelines outlined in the preceding section.
Onboard the Model
After making sure the schema looks good, the model can be onboarded with the following API call:
model.create()
💡 Need help? Contact us at [email protected].
Last updated
Was this helpful?