Tracker¶
-
class
smexperiments.tracker.
Tracker
(trial_component, metrics_writer, artifact_uploader, lineage_artifact_tracker)¶ Bases:
object
A SageMaker Experiments Tracker.
Use a tracker object to record experiment information to a SageMaker trial component.
A new tracker can be created in two ways:
- By loading an existing trial component with
load()
- By creating a tracker for a new trial component with
create()
.
When creating a tracker within a SageMaker training or processing job, use the
load
method with no arguments to track artifacts to the trial component automatically created for your job. When tracking within a Jupyter notebook running in SageMaker, use thecreate
method to automatically create a new trial component.Trackers are Python context managers and you can use them using the Python
with
keyword. Exceptions thrown within the with block will cause the tracker’s trial component to be marked as failed. Start and end times are automatically set when using the with statement and the trial component is saved to SageMaker at the end of the block.Note that parameters and input/output artifacts are saved to SageMaker directly via the UpdateTrialComponent operation. In contrast metrics (via log_metric method) are saved to a file, which is then ingested into SageMaker via a metrics agent which only runs on training job hosts. As a result any metrics logged in non-training job host environments will not be ingested into SageMaker.
Parameters: trial_component (TrialComponent) – The trial component tracked. -
trial_component
= None¶
-
classmethod
load
(trial_component_name=None, artifact_bucket=None, artifact_prefix=None, boto3_session=None, sagemaker_boto_client=None, training_job_name=None, processing_job_name=None)¶ Create a new
Tracker
by loading an existing trial component.Note that log_metric will only work from a training job host.
Examples
from smexperiments import tracker # load tracker from already existing trial component my_tracker = tracker.Tracker.load(trial_component_name='xgboost') # load tracker from a training job name my_tracker = tracker.Tracker.load( training_job_name=estimator.latest_training_job.name) # load tracker from a processing job name my_tracker = tracker.Tracker.load( processing_job_name=my_processing_job.name)
Parameters: - trial_component_name – (str, optional). The name of the trial component to track. If specified, this trial component must exist in SageMaker. If you invoke this method in a running SageMaker training or processing job, then trial_component_name can be left empty. In this case, the Tracker will resolve the trial component automatically created for your SageMaker Job.
- artifact_bucket – (str, optional) The name of the S3 bucket to store artifacts to.
- artifact_prefix – (str, optional) The prefix to write artifacts to within
artifact_bucket
- boto3_session – (boto3.Session, optional) The boto3.Session to use to interact with AWS services. If not specified a new default boto3 session will be created.
- sagemaker_boto_client – (boto3.Client, optional) The SageMaker AWS service client to use. If not
specified a new client will be created from the specified
boto3_session
or default boto3.Session. - training_job_name – (str, optional). The name of the training job to track via trial
- processing_job_name – (str, optional). The name of the processing job to track via trial component.
Returns: The tracker for the given trial component.
Return type: Raises: ValueError
– If the trial component failed to load.
-
classmethod
create
(base_trial_component_name='TrialComponent', display_name=None, artifact_bucket=None, artifact_prefix=None, boto3_session=None, sagemaker_boto_client=None)¶ Create a new
Tracker
by creating a new trial component.Note that log_metric will _not_ work when tracker is created this way.
- Examples
from smexperiments import tracker my_tracker = tracker.Tracker.create()
Parameters: - base_trial_component_name – (str,optional). The name of the trial component resource that will be appended with a timestamp. Defaults to “TrialComponent”.
- display_name – (str, optional). The display name of the trial component to track.
- artifact_bucket – (str, optional) The name of the S3 bucket to store artifacts to.
- artifact_prefix – (str, optional) The prefix to write artifacts to within
artifact_bucket
- boto3_session – (boto3.Session, optional) The boto3.Session to use to interact with AWS services. If not specified a new default boto3 session will be created.
- sagemaker_boto_client – (boto3.Client, optional) The SageMaker AWS service client to use. If not
specified a new client will be created from the specified
boto3_session
or default boto3.Session.
Returns: The tracker for the new trial component.
Return type:
-
log_parameter
(name, value)¶ Record a single parameter value for this trial component.
Overwrites any previous value recorded for the specified parameter name.
- Examples
# log hyper parameter of learning rate my_tracker.log_parameter('learning_rate', 0.01)
Parameters: - name (str) – The name of the parameter
- value (str or numbers.Number) – The value of the parameter
-
log_parameters
(parameters)¶ Record a collection of parameter values for this trial component.
- Examples
# log multiple hyper parameters used in training my_tracker.log_parameters({"learning_rate": 1.0, "gamma": 0.9, "dropout": 0.5})
Parameters: parameters (dict[str, str or numbers.Number]) – The parameters to record.
-
log_input
(name, value, media_type=None)¶ Record a single input artifact for this trial component.
Overwrites any previous value recorded for the specified input name.
- Examples
# log input dataset s3 location my_tracker.log_input(name='input', value='s3://inputs/path')
Parameters:
-
log_output
(name, value, media_type=None)¶ Record a single output artifact for this trial component.
Overwrites any previous value recorded for the specified output name.
- Examples
# log output dataset s3 location my_tracker.log_output(name='prediction', value='s3://outputs/path')
Parameters:
-
log_artifacts
(directory, media_type=None)¶ Upload all the files under the directory to s3 and store it as artifacts in this trial component. The file name is used as the artifact name
- Examples
# log local artifact my_tracker.log_artifact(directory='/local/path)
Parameters:
-
log_artifact
(file_path, name=None, media_type=None)¶ Legacy overload method to prevent breaking existing code.
- Examples
# log a local file my_tracker.log_artifact('output/artifact_data.csv', name='prediction')
Parameters:
-
log_output_artifact
(file_path, name=None, media_type=None)¶ Upload a local file to s3 and store it as an output artifact in this trial component.
- Examples
# log local artifact my_tracker.log_output_artifact(file_path='/local/path/artifact.tar.gz')
Parameters:
-
log_input_artifact
(file_path, name=None, media_type=None)¶ Upload a local file to s3 and store it as an input artifact in this trial component.
- Examples
# log local artifact my_tracker.log_input_artifact(file_path='/local/path/artifact.tar.gz')
Parameters:
-
log_metric
(metric_name, value, timestamp=None, iteration_number=None)¶ Record a custom scalar metric value for this TrialComponent.
Note that this method is for manual custom metrics, for automatic metrics see the enable_sagemaker_metrics parameter on the estimator class in the main SageMaker SDK.
Note that metrics logged with this method will only appear in SageMaker when this method is called from a training job host.
- Examples
for epoch in range(epochs): # your training logic and calculate accuracy and loss my_tracker.log_metric(metric_name='accuracy', value=0.9, iteration_number=epoch) my_tracker.log_metric(metric_name='loss', value=0.03, iteration_number=epoch)
Parameters: - metric_name (str) – The name of the metric.
- value (number) – The value of the metric.
- timestamp (datetime.datetime|number, optional) – The timestamp of the metric. If specified, should either be a datetime.datetime object or a number representing the seconds since the epoch. If not specified, the current local time will be used.
- iteration_number (number, optional) – The integer iteration number of the metric value.
Raises: AttributeError
– If the metrics writer is not initialized.
-
log_table
(title=None, values=None, data_frame=None, output_artifact=True)¶ Record a table of values to an artifact. Rendering in Studio is not currently supported.
- Examples
table_data = { "x": [1,2,3], "y": [4,5,6] } my_tracker.log_table('SampleData',table_data) # or log a data frame df = pd.DataFrame(data=table_data) my_tracker.log_table('SampleData',df)
Parameters: - title (str, optional) – Title of the table. Defaults to None.
- values ([type], optional) – A dictionary of values. i.e. {“x”: [1,2,3], “y”: [1,2,3]}. Defaults to None.
- data_frame (DataFrame, optional) – Pandas dataframe alternative to values. Defaults to None.
- output_artifact (bool) – Determines direction of association to the trial component. Defaults to output artifact. If False will be an input artifact.
Raises: ValueError
– If values or data_frame are invalid.
-
log_precision_recall
(y_true, predicted_probabilities, positive_label=None, title=None, output_artifact=True, no_skill=None)¶ Log a precision recall graph artifact. You can view the artifact in the charts tab of the Trial Component UI. If your job is created by a pipeline execution you can view the artifact by selecting the corresponding step in the pipelines UI. See also SageMaker Pipelines
Requires sklearn.
- Examples
y_true = [0, 0, 1, 1] y_scores = [0.1, 0.4, 0.35, 0.8] no_skill = len(y_true[y_true==1]) / len(y_true) my_tracker.log_precision_recall(y_true, y_scores, no_skill=no_skill)
Parameters: - y_true (array) – True labels. If labels are not binary then positive_label should be given.
- predicted_probabilities (array) – Estimated/predicted probabilities.
- positive_label (str or int, optional) – Label of the positive class. Defaults to None.
- title (str, optional) – Title of the graph, Defaults to none.
- output_artifact (boolean, optional) – Determines if the artifact is associated with the Trial Component as an output artifact. If False will be an input artifact.
- no_skill (int) – The precision threshold under which the classifier cannot discriminate between the classes and would predict a random class or a constant class in all cases.
Raises: ValueError
– If length mismatch between y_true and predicted_probabilities.
-
log_roc_curve
(y_true, y_score, title=None, output_artifact=True)¶ Log a receiver operating characteristic (ROC curve) artifact. You can view the artifact in the charts tab of the Trial Component UI. If your job is created by a pipeline execution you can view the artifact by selecting the corresponding step in the pipelines UI. See also SageMaker Pipelines <https://aws.amazon.com/sagemaker/pipelines/>.
Requires sklearn.
- Examples
y_true = [0, 0, 1, 1] y_scores = [0.1, 0.4, 0.35, 0.8] my_tracker.log_roc_curve(y_true, y_scores)
Parameters: - y_true (array) – True labels. If labels are not binary then positive_label should be given.
- y_score (array) – Estimated/predicted probabilities.
- title (str, optional) – Title of the graph, Defaults to none.
- output_artifact (boolean, optional) – Determines if the artifact is associated with the Trial Component as an output artifact. If False will be an input artifact.
Raises: ValueError
– If mismatch between y_true and predicted_probabilities.
-
log_confusion_matrix
(y_true, y_pred, title=None, output_artifact=True)¶ Log a confusion matrix artifact. You can view the artifact in the charts tab of the Trial Component UI. If your job is created by a pipeline execution you can view the artifact by selecting the corresponding step in the pipelines UI. See also SageMaker Pipelines
Requires sklearn.
- Examples
y_true = [2, 0, 2, 2, 0, 1] y_pred = [0, 0, 2, 2, 0, 2] my_tracker.log_confusion_matrix(y_true, y_pred)
Parameters: - y_true (array) – True labels.
- y_pred (array) – Predicted labels.
- title (str, optional) – Title of the graph, Defaults to none.
- output_artifact (boolean, optional) – Determines if the artifact is associated with the Trial Component as an output artifact. If False will be an input artifact.
Raises: ValueError
– If length mismatch between y_true and y_pred.
-
close
()¶ Close this tracker and save state to SageMaker.
- By loading an existing trial component with