DeepRacerLog is the main entry point in deepracer-utils. It supports local folders, S3 buckets, and .tar.gz exports from the DeepRacer console via TarFileHandler.
Use this when you have an extracted model folder with sim-trace/ or training-simtrace/ data.
from deepracer.logs import AnalysisUtils, DeepRacerLog
log = DeepRacerLog(model_folder="./deepracer/logs/sample-console-logs")
log.load_training_trace()
df = log.dataframe()
simulation_agg = AnalysisUtils.simulation_agg(df)df contains per-step data. simulation_agg is per-episode aggregated data.
For continuous-action logs, the action column is set to -1 (no discrete action index). The raw steering and speed values are still available in steering_angle and speed.
If you downloaded console logs as a .tar.gz, you can read them directly without extracting.
from deepracer.logs import AnalysisUtils, DeepRacerLog, TarFileHandler
fh = TarFileHandler("./deepracer/logs/sample-droa-solution-logs.tar.gz")
log = DeepRacerLog(filehandler=fh)
# New console/DROA archives may not include metadata files.
log.load_training_trace(ignore_metadata=True)
df = log.dataframe()
simulation_agg = AnalysisUtils.simulation_agg(df)load() picks the correct training loader based on detected folder type.
from deepracer.logs import DeepRacerLog, TarFileHandler
log = DeepRacerLog(filehandler=TarFileHandler("./my-model-logs.tar.gz"))
log.load(ignore_metadata=True)
df = log.dataframe()Pass verbose=True to print helpful load progress to stdout.
from deepracer.logs import DeepRacerLog, TarFileHandler
log = DeepRacerLog(
filehandler=TarFileHandler("./my-model-logs.tar.gz"),
verbose=True,
)
log.load_training_trace(ignore_metadata=True)Typical output:
Folder type detected: DROA_SOLUTION_LOGS
Loaded training trace: 846 steps, 40 episodes, 2 iterations
When verbose=True, load methods print a one-line summary:
load_training_trace()->Loaded training trace: ...load_evaluation_trace()->Loaded evaluation trace: ...load_robomaker_logs()->Loaded robomaker logs: ...
Each summary reports steps, episodes, and iterations.
from deepracer.logs import AnalysisUtils, DeepRacerLog, S3FileHandler
fh = S3FileHandler(bucket="<my_bucket>", prefix="<my_prefix>")
log = DeepRacerLog(filehandler=fh)
log.load_training_trace()
df = log.dataframe()
simulation_agg = AnalysisUtils.simulation_agg(df)from deepracer.logs import AnalysisUtils, DeepRacerLog, S3FileHandler
fh = S3FileHandler(
bucket="<my_bucket>",
prefix="<my_prefix>",
profile="<awscli_profile>",
s3_endpoint_url="<minio_url>",
)
log = DeepRacerLog(filehandler=fh)
log.load_training_trace()
df = log.dataframe()
simulation_agg = AnalysisUtils.simulation_agg(df)For console-style folders, you can also load training from the simulation log file.
from deepracer.logs import AnalysisUtils, DeepRacerLog, TarFileHandler
log = DeepRacerLog(filehandler=TarFileHandler("./my-model-logs.tar.gz"))
log.load_robomaker_logs()
df = log.dataframe()
simulation_agg = AnalysisUtils.simulation_agg(df)Evaluation data can include multiple runs; they are separated with the stream column.
from deepracer.logs import AnalysisUtils, DeepRacerLog, TarFileHandler
log = DeepRacerLog(filehandler=TarFileHandler("./my-model-logs.tar.gz"))
log.load_evaluation_trace(ignore_metadata=True)
df = log.dataframe()
simulation_agg = AnalysisUtils.simulation_agg(df, firstgroup="stream", is_eval=True)Some exports contain only evaluation data. load_evaluation_trace() works the same way:
from deepracer.logs import DeepRacerLog, TarFileHandler
log = DeepRacerLog(filehandler=TarFileHandler("./sample-droa-eval-only.tar.gz"))
log.load_evaluation_trace(ignore_metadata=True)
df = log.dataframe()from deepracer.logs import AnalysisUtils, DeepRacerLog, LogType, TarFileHandler
log = DeepRacerLog(filehandler=TarFileHandler("./my-model-logs.tar.gz"))
log.load_robomaker_logs(type=LogType.EVALUATION)
df = log.dataframe()
simulation_agg = AnalysisUtils.simulation_agg(df, firstgroup="stream", is_eval=True)Leaderboard submissions are available through simulation log files.
from deepracer.logs import AnalysisUtils, DeepRacerLog, LogType, TarFileHandler
log = DeepRacerLog(filehandler=TarFileHandler("./my-model-logs.tar.gz"))
log.load_robomaker_logs(type=LogType.LEADERBOARD)
df = log.dataframe()
simulation_agg = AnalysisUtils.simulation_agg(df, firstgroup="stream", is_eval=True)You can analyze step timing stability from loaded simtrace data.
from deepracer.logs import DeepRacerLog, TarFileHandler
log = DeepRacerLog(filehandler=TarFileHandler("./my-model-logs.tar.gz"))
log.load_training_trace(ignore_metadata=True)
stability_df = log.stability.analyze()
print(stability_df[["iteration", "avg_ms", "p95_ms", "rtf"]].head())