Integration Script
Add a dataset instance prior to building a model
Within the Tensorleap platform, a Dataset contains the Integration Script and properties for reading and encoding the data that will later be used when training, evaluating and analyzing a model.
In order for the Tensorleap platform to read and encode the data, it must be supplied with an Integration Script. The DatasetScript is stored within the Dataset Instance, at which the Dataset Block points and used as input/ground truth encoders.
The Dataset Script has the following structure:
- Visualizer Functions (optional) - custom interpretation of tensors for analysis and visualizations.
The Preprocess Function runs once, and returns a list of data objects of type PreprocessResponse that correspond to the training, validation, test dataset slices.
The returned PreprocessResponse object is then passed to the Input Encoders, Ground Truth Encoders and Metadata Functions, whose function is to read and prepare the data for a single sample with index
idx
passed as an argument. Finally, the Input Encoders, Ground Truth Encoders and Metadata Functions, must be bounded to the Tensorleap platform. This is done by the leap_binder object with set_preprocess, set_input, set_ground_truth, set_metadata and add_prediction.
In addition, there is an option add custom tensor Visualizer Functions for more informative visualizations and analysis. The leap_binder then sets these functions by using set_visualizer.
from typing import List, Union
# Tensorleap imports
from code_loader import leap_binder
from code_loader.contract.datasetclasses import PreprocessResponse
from code_loader.contract.enums import DatasetMetadataType, Metric
from code_loader.contract.visualizer_classes import LeapHorizontalBar
# Preprocess Function:
def preprocess_func() -> List[PreprocessResponse]:
...
train = PreprocessResponse(length=len(train_X), data=train_df)
val = PreprocessResponse(length=len(val_X), data=val_df)
test = PreprocessResponse(length=len(test_X), data=test_df)
return [train, val, test]
# Input Encoder(s):
def input_encoder(idx: int, preprocess: PreprocessResponse) -> np.ndarray:
return preprocess.data.iloc[idx]['samples'].astype('float32')
# Ground Truth Encoder(s):
def gt_encoder(idx: int, preprocess: Union[PreprocessResponse, list]) -> np.ndarray:
return preprocess.data.iloc[idx]['ground_truth'].astype('float32')
# Metadata Function(s):
def metadata_label(idx: int, preprocess: Union[PreprocessResponse, list]) -> Union[int, float, str, bool]:
return preprocess.data.iloc[idx]['class_name']
# Dataset Binders:
LABELS = ['cat', 'dog', 'tiger', 'cow', 'goat', 'zebra', 'horse']
leap_binder.set_preprocess(function=preprocess_func)
leap_binder.set_input(function=input_encoder,input_name='image')
leap_binder.set_ground_truth(function=gt_encoder, gt_name='classes',)
leap_binder.set_metadata(function=metadata_label, metadata_type=DatasetMetadataType.string, name='label')
leap_binder.add_prediction(name='animal', labels=LABELS, metrics=[Metric.Accuracy])
# Visualizers
def is_pet_visualizer(animal_prediction: np.ndarray) -> LeapHorizontalBar:
np_labels = np.array(LABELS)
pet_confidence = animal_prediction[np_labels == 'cat'][0] + animal_prediction[np_labels == 'dog'][0]
body=np.array([pet_confidence, 1-pet_confidence])
return LeapHorizontalBar(body=body, labels=['pet', 'not-pet')
leap_binder.set_visualizer(
name='is_pet',
function=is_pet_visualizer,
visualizer_type=LeapHorizontalBar.type
)
Full examples can be found at the Dataset Integration section of the following guides:
Tensorleap allows you to store sensitive information as a Secret in a secure location called Secret Manager.
The Dataset Script has access to the Secret set for the Dataset Instance. The secret is stored at the
AUTH_SECRET
environment variable, and can be accessed simply by using: import os
auth_secret_string = os.environ['AUTH_SECRET']
Persistent storage is data storage that persists across different instances and reboots of job processes. In some cases there is a need to cache data. For example, after preprocessing or for very large files.
Tensorleap's cloud persistent storage can be accessed via writing and reading to the
/nfs/
path: persistent_dir = '/nfs/'
NOTE: Mounted storage is set up only to serve as a cache, and it is regularly cleaned.
In case you are running an on-premise solution, you can access your chosen mounted storage.
Last modified 1yr ago