1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
//! Training logger plugins for Burn 0.19
//!
//! This crate provides `MetricLogger` implementations that export training metrics
//! to various observability platforms.
//!
//! # Features
//!
//! ## OpenTelemetry (`otel` feature)
//!
//! - Efficient metric export with minimal overhead
//! - Support for multi-GPU/node training via resource attributes
//! - Configurable export intervals and batching
//! - Compatible with OpenTelemetry SDK and OTLP protocol
//!
//! ## Rerun.io (`rerun` feature)
//!
//! - Rich visualization of training metrics, images, and tensors
//! - Support for images, videos, text, and other visual formats
//! - Real-time visualization during training
//! - Timeline-based metric exploration
//!
//! ## Multi-Logger Support
//!
//! Use `MultiLogger` to combine multiple loggers and send metrics to multiple
//! backends simultaneously (e.g., OpenTelemetry + Rerun).
//!
//! # Example (OpenTelemetry)
//!
//! ```no_run
//! # #[cfg(feature = "otel")]
//! # {
//! use burn_telemetry::otel::{OpenTelemetryLogger, OpenTelemetryConfig};
//!
//! let logger = OpenTelemetryLogger::new(
//! OpenTelemetryConfig::default(),
//! "my-training-job",
//! Some("gpu-0"),
//! ).expect("Failed to create logger");
//! # }
//! ```
//!
//! # Example (Rerun)
//!
//! ```no_run
//! # #[cfg(feature = "rerun")]
//! # {
//! use burn_telemetry::rerun::{RerunLogger, RerunConfig};
//!
//! let logger = RerunLogger::new(
//! RerunConfig::default(),
//! "my-training-job",
//! ).expect("Failed to create logger");
//! # }
//! ```
//!
//! # Example (Multiple Loggers)
//!
//! ```no_run
//! # #[cfg(all(feature = "otel", feature = "rerun"))]
//! # {
//! use burn_telemetry::MultiLogger;
//! use burn_telemetry::otel::{OpenTelemetryLogger, OpenTelemetryConfig};
//! use burn_telemetry::rerun::{RerunLogger, RerunConfig};
//!
//! let multi_logger = MultiLogger::new()
//! .add_logger(OpenTelemetryLogger::new(
//! OpenTelemetryConfig::default(), "job", Some("device-0")
//! ).unwrap())
//! .add_logger(RerunLogger::new(
//! RerunConfig::default(), "job"
//! ).unwrap());
//! # }
//! ```
pub use MultiLogger;