Console, system metrics, and integrations
Capture stdout/stderr, system metrics, local audit events, and lightweight framework adapters.
Turn on console capture, tune automatic system-metrics sampling, control source-metadata collection, and wire framework adapters — each feature is explicit and enabled per run.
Capture console logs
Log individual lines directly:
run.log_stdout("epoch=1 loss=0.42")
run.log_stderr(["warning: entropy dipped", "retrying evaluation"])Or let the SDK wrap stdout and stderr:
import instantml as im
run = im.init(
project="train-loop",
name="seed-7",
capture_console=True,
)Captured console lines are written through to the original stream and also sent to InstantML as text-series attributes named console/stdout and console/stderr. They appear in the Run Detail Logs section, which only fetches log rows when you open it.
Sample system metrics
System metrics are collected automatically: im.init() samples CPU, memory, disk, network, and GPU stats every 15 seconds by default. Pass system_metrics=False to disable, or system_metrics_interval=<seconds> to change the cadence.
run = im.init(
project="train-loop",
name="seed-7",
system_metrics_interval=30.0,
)System metrics log under system/... at the current step without incrementing the run's implicit step counter. Install the system extra for the optional system dependencies:
python3 -m pip install "instantml[system]"Keep a local audit store
The local SQLite audit store records attempted SDK events before submit:
run = im.init(
project="train-loop",
local_store=True,
local_store_dir=".instantml/local",
)Control source metadata
By default, the SDK captures privacy-safe reproducibility context when it can:
- Python version.
- Platform.
- Git availability, commit, and dirty state.
- Entrypoint basename when available.
Hostname, process ID, current working directory, full command argv, branch, and git diff metadata are opt-in:
run = im.init(
project="train-loop",
source_tracking=im.SourceTracking(
command=True,
paths=True,
branch=True,
hostname=True,
pid=True,
git_diff=True,
),
)Disable source capture entirely for sensitive jobs:
run = im.init(project="private-run", source_tracking=False)SDK-owned source metadata is reserved and cannot be overwritten by user-provided metadata.
Use framework adapters
Adapters stay deliberately thin. They help common frameworks call the same public SDK methods rather than adding a second integration model.
run.watch(model, log="gradients", log_freq=100)
trainer.add_callback(im.TransformersCallback(run=run))
logger = im.LightningLogger(project="cartpole")Prefer direct run.log(...) calls for custom loops. Use adapters when a framework already owns the training lifecycle — see the per-framework guides for setup details.