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.

Additionally, store sensitive information and credentials securely with Secret Manager.

Integration Script

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:

Architecture

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.

The script can be integrated into the Dataset using either the UI or CLI.

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.

Examples

Basic Usage

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

Full examples can be found at the Dataset Integration section of the following guides:

Retrieve the Secret

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

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.

Cloud Platform

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.

On Premise

In case you are running an on-premise solution, you can access your chosen mounted storage.

Last updated