Jump to content

Connect Leeroopedia MCP: Equip your AI agents to search best practices, build plans, verify code, diagnose failures, and look up hyperparameter defaults.

Implementation:Microsoft Onnxruntime CPU SummaryOps

From Leeroopedia


Knowledge Sources
Domains Training, CPU_Kernels
Last Updated 2026-02-10 04:00 GMT

Overview

Concrete tool for generating TensorBoard summary protocol buffers on CPU in the ONNX Runtime training framework.

Description

This file implements four TensorBoard summary kernels, originally adapted from TensorFlow:

SummaryScalarOp: Creates a TensorBoard Summary protobuf containing tagged scalar values. Each input element is paired with a tag from the tags attribute and serialized as a simple_value. Supports float, double, and bool input types.

SummaryHistogramOp: Creates a TensorBoard Summary containing a histogram of the input tensor. The internal Histogram class uses default bucket limits growing by 10% from 1e-12 to 1e20 (matching TensorFlow defaults), computes min/max/num/sum/sum_squares statistics, and bins values. NaN and Inf values are skipped. Neighboring empty buckets are merged.

SummaryMergeOp: Merges multiple serialized Summary protobufs into a single Summary, checking for duplicate tags.

SummaryTextOp: Creates a TensorBoard Summary with text content. The input string tensor is copied into a TensorProto with the "text" plugin metadata, enabling TensorBoard text visualization.

All output summaries are serialized to strings.

Usage

These kernels are invoked during training to produce TensorBoard-compatible summary data for visualization of scalars, histograms, and text during training monitoring.

Code Reference

Source Location

Signature

SummaryScalarOp::SummaryScalarOp(const OpKernelInfo& info);
Status SummaryScalarOp::Compute(OpKernelContext* context) const;

template <typename T>
Status SummaryScalarOp::ComputeImpl(OpKernelContext& context, const Tensor& input) const;

SummaryHistogramOp::SummaryHistogramOp(const OpKernelInfo& info);
Status SummaryHistogramOp::Compute(OpKernelContext* context) const;

template <typename T>
Status SummaryHistogramOp::ComputeImpl(OpKernelContext& context, const Tensor& input) const;

SummaryMergeOp::SummaryMergeOp(const OpKernelInfo& info);
Status SummaryMergeOp::Compute(OpKernelContext* context) const;

SummaryTextOp::SummaryTextOp(const OpKernelInfo& info);
Status SummaryTextOp::Compute(OpKernelContext* context) const;

Import

#include "orttraining/orttraining/training_ops/cpu/tensorboard/summary_op.h"

I/O Contract

Inputs (SummaryScalar)

Name Type Required Description
input Tensor(float/double/bool) Yes Scalar values to summarize (size must match tags)

Outputs (SummaryScalar)

Name Type Description
summary Tensor(string) Serialized TensorBoard Summary protobuf

Inputs (SummaryHistogram)

Name Type Required Description
input Tensor(float/double) Yes Values to build histogram from

Outputs (SummaryHistogram)

Name Type Description
summary Tensor(string) Serialized TensorBoard Summary protobuf with histogram

Inputs (SummaryMerge)

Name Type Required Description
summaries (variadic) Tensor(string) Yes Serialized Summary protobufs to merge

Outputs (SummaryMerge)

Name Type Description
merged_summary Tensor(string) Serialized merged TensorBoard Summary protobuf

Inputs (SummaryText)

Name Type Required Description
input Tensor(string) Yes Text values to summarize

Outputs (SummaryText)

Name Type Description
summary Tensor(string) Serialized TensorBoard Summary protobuf with text

Usage Examples

ONNX_OPERATOR_KERNEL_EX(
    SummaryScalar, kMSDomain, 1, kCpuExecutionProvider,
    KernelDefBuilder()
        .TypeConstraint("T", {DataTypeImpl::GetTensorType<float>(),
                              DataTypeImpl::GetTensorType<double>(),
                              DataTypeImpl::GetTensorType<bool>()})
        .TypeConstraint("S", DataTypeImpl::GetTensorType<std::string>()),
    SummaryScalarOp);

ONNX_OPERATOR_KERNEL_EX(
    SummaryHistogram, kMSDomain, 1, kCpuExecutionProvider,
    KernelDefBuilder()
        .TypeConstraint("T", {DataTypeImpl::GetTensorType<float>(),
                              DataTypeImpl::GetTensorType<double>()})
        .TypeConstraint("S", DataTypeImpl::GetTensorType<std::string>()),
    SummaryHistogramOp);

Related Pages

Page Connections

Double-click a node to navigate. Hold to expand connections.
Principle
Implementation
Heuristic
Environment