Skip to content

TensorBoard 2.13.0 #6365

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 4 commits into from
May 4, 2023
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 1 addition & 2 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -27,8 +27,7 @@ env:
BUILDTOOLS_VERSION: '3.0.0'
BUILDIFIER_SHA256SUM: 'e92a6793c7134c5431c58fbc34700664f101e5c9b1c1fcd93b97978e8b7f88db'
BUILDOZER_SHA256SUM: '3d58a0b6972e4535718cdd6c12778170ea7382de7c75bc3728f5719437ffb84d'
# See https://github.com/tensorflow/tensorboard/pull/6350.
TENSORFLOW_VERSION: 'tf-nightly==2.13.0.dev20230426'
TENSORFLOW_VERSION: 'tf-nightly==2.13.0.dev20230501'

jobs:
build:
Expand Down
12 changes: 12 additions & 0 deletions RELEASE.md
Original file line number Diff line number Diff line change
@@ -1,3 +1,15 @@
# Release 2.13.0

The 2.13 minor series tracks TensorFlow 2.13

## Bug Fixes

- Several improvements to the projector plugin (thank you @alicialics)
- Embedding Projector: fix regex suffix css (#6329)
- Embedding Projector: fix bookmark projection state (#6328)
- Embedding Projector: fix dark mode button contrast (#6327)
- Embedding Projector: update tsne learning rate during iteration (#6319)

# Release 2.12.3

## Bug Fixes
Expand Down
7 changes: 7 additions & 0 deletions tensorboard/compat/proto/BUILD
Original file line number Diff line number Diff line change
Expand Up @@ -126,11 +126,17 @@ tb_proto_library(
],
)

tb_proto_library(
name = "graph_debug_info",
srcs = ["graph_debug_info.proto"],
)

tb_proto_library(
name = "graph",
srcs = ["graph.proto"],
deps = [
":function",
":graph_debug_info",
":node_def",
":versions",
],
Expand Down Expand Up @@ -326,6 +332,7 @@ tb_proto_library(
":full_type",
":function",
":graph",
":graph_debug_info",
":histogram",
":meta_graph",
":node_def",
Expand Down
4 changes: 3 additions & 1 deletion tensorboard/compat/proto/config.proto
Original file line number Diff line number Diff line change
Expand Up @@ -691,7 +691,9 @@ message ConfigProto {
// aims to negate its value.
bool disable_optimize_for_static_graph = 24;

// Next: 25
reserved 25;

// Next: 26
}

Experimental experimental = 16;
Expand Down
5 changes: 5 additions & 0 deletions tensorboard/compat/proto/coordination_config.proto
Original file line number Diff line number Diff line change
Expand Up @@ -56,4 +56,9 @@ message CoordinationServiceConfig {
// If empty, no jobs will be recoverable and every task failure will cause
// error propagation to other tasks.
repeated string recoverable_jobs = 9;

// If a task restarts with a new incarnation, we may allow it to reconnect
// silently. This is useful when we know that a task can immediately resume
// work upon re-connecting to the service.
bool allow_new_incarnation_to_reconnect = 11;
}
4 changes: 4 additions & 0 deletions tensorboard/compat/proto/graph.proto
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@ syntax = "proto3";
package tensorboard;

import "tensorboard/compat/proto/function.proto";
import "tensorboard/compat/proto/graph_debug_info.proto";
import "tensorboard/compat/proto/node_def.proto";
import "tensorboard/compat/proto/versions.proto";

Expand Down Expand Up @@ -53,4 +54,7 @@ message GraphDef {
// consumer does not start until all return values of the callee
// function are ready.
FunctionDefLibrary library = 2;

// Stack traces for the nodes in this graph.
GraphDebugInfo debug_info = 5;
}
52 changes: 52 additions & 0 deletions tensorboard/compat/proto/graph_debug_info.proto
Original file line number Diff line number Diff line change
@@ -0,0 +1,52 @@
syntax = "proto3";

package tensorboard;

option cc_enable_arenas = true;
option java_outer_classname = "GraphDebugInfoProtos";
option java_multiple_files = true;
option java_package = "org.tensorflow.framework";
option go_package = "github.com/tensorflow/tensorflow/tensorflow/go/core/protobuf/for_core_protos_go_proto";

message GraphDebugInfo {
// This represents a file/line location in the source code.
message FileLineCol {
// File name index, which can be used to retrieve the file name string from
// `files`. The value should be between 0 and (len(files)-1)
int32 file_index = 1;

// Line number in the file.
int32 line = 2;

// Col number in the file line.
int32 col = 3;

// Name of function contains the file line.
string func = 4;

// Source code contained in this file line.
string code = 5;
}

// This represents a stack trace which is a ordered list of `FileLineCol`.
message StackTrace {
// Each line in the stack trace.
repeated FileLineCol file_line_cols = 1;
}

// This stores all the source code file names and can be indexed by the
// `file_index`.
repeated string files = 1;

// This maps a node name to a stack trace in the source code.
// The map key is a mangling of the containing function and op name with
// syntax:
// op.name '@' func_name
// For ops in the top-level graph, the func_name is the empty string.
// Note that op names are restricted to a small number of characters which
// exclude '@', making it impossible to collide keys of this form. Function
// names accept a much wider set of characters.
// It would be preferable to avoid mangling and use a tuple key of (op.name,
// func_name), but this is not supported with protocol buffers.
map<string, StackTrace> traces = 2;
}
4 changes: 4 additions & 0 deletions tensorboard/compat/proto/proto_test.py
Original file line number Diff line number Diff line change
Expand Up @@ -66,6 +66,10 @@
"tensorflow.core.framework.function_pb2",
"tensorboard.compat.proto.function_pb2",
),
(
"tensorflow.core.framework.graph_debug_info_pb2",
"tensorboard.compat.proto.graph_debug_info_pb2",
),
(
"tensorflow.core.framework.graph_pb2",
"tensorboard.compat.proto.graph_pb2",
Expand Down
2 changes: 2 additions & 0 deletions tensorboard/compat/proto/struct.proto
Original file line number Diff line number Diff line change
Expand Up @@ -72,6 +72,8 @@ message StructuredValue {
DictValue dict_value = 53;
// Represents Python's namedtuple.
NamedTupleValue named_tuple_value = 54;
// Represents a value for tf.Tensor.
tensorboard.TensorProto tensor_value = 55;
}
}

Expand Down
2 changes: 1 addition & 1 deletion tensorboard/version.py
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@

"""Contains the version string."""

VERSION = "2.13.0a0"
VERSION = "2.13.0"
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

We want each of these changes to be separate commits in the history of the release, that's why our release guide mentions that if they're all submitted in a single PR, we should use "rebase and merge" (referring to the fact that we would have multiple commits in the same PR).

See example from a previous release: https://github.com/tensorflow/tensorboard/pull/6192/commits

So we should have a commit with only the proto changes, and separate commits for the other steps of the release process.

Also, we will probably want these proto changes in the master branch, so you can choose to either submit those changes in master, and then create this branch again, or later cherry-pick those changes into master as well.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I didn't know about the convention of doing this all as a single PR with multiple ordered commits.

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Agreed the docs are not clear about that. They currently say:

"You may choose to send all of these changes in a single PR, in which case you should rebase and merge after approval."

But perhaps that should be reworded to something like:

"You may choose to send all of these changes as multiple commits (one commit per change) in a single PR, in which case you should rebase and merge after approval."

And then some of the items listed below that paragraph could start with "A commit that ..."


if __name__ == "__main__":
print(VERSION)