This example trains a Sequence Classification model using Blind
Learning. The underlying protocol uses the DistilBERT model architecture
and loads the checkpoint "distilbert/distilbert-base-uncased" from
HuggingFace, located at:
  https://huggingface.co/distilbert/distilbert-base-uncased


The example includes two steps, each in a separate module:

1_model_train.py":
  The researcher represented by `example_user_3` trains a model on data
  owned by example_user_1's organization and example_user_2's organization,
  selecting the desired training hyperparameters. Preprocessing is applied to
  each dataset as defined in python_transform_script.py, remapping input columns
  of each data provider to match the expected naming convention of the new
  model. The training occurs using Blind Learning, protecting the privacy of the
  data owners throughout the process.

2_local_inference.py:
  The researcher retrieves the trained model and runs a local inference
  against a test data example.


In order to use this protocol, the training samples should be
in the following format:
   "text","label"
For example, a single sample could look like the following:
   "It's definitely one of the best movies I've seen this year", positive

Finally note that the protocol requires the columns in the training data
to be named "text" and "label" for the columns of unstructured text
and target (ground truth/labels), respectively.  To work with differently named
columns, you can find the data column name in the Data Profile page on
the Router's UI, then perform the renaming in a preprocessor step.
Renaming columns is demonstrated in the python_transform_script.py file.
