[MUSIC PLAYING]
LAURENCE MORONEY: Hi, everybody.
Laurence Moroney from The Developer Show.
I'm here at the TensorFlow Developer Summit.
And it's my honor to speak with Justine Tunney.
Justine, you're the Dev Lead for TensorBoard.
JUSTINE TUNNEY: I am.
Thank you for having me.
LAURENCE MORONEY: Oh, you're very welcome.
And, Justine, you've just done a great talk
on TensorBoard and on the plugin ecosystem for TensorBoard.
It's a very vibrant ecosystem.
JUSTINE TUNNEY: Oh, yes.
LAURENCE MORONEY: Could you tell us about it?
And the debugger in particular.
LAURENCE MORONEY: Absolutely.
JUSTINE TUNNEY: We've had many amazing plugins developed
for TensorBoard over the past year.
And the featured plugin was the debugger plugin,
which sort of gives you an X-ray into your models,
in terms of black box explainability.
TensorBoard originally had, I guess
you could say, features like scalers
that were the flashlight.
This is an X-ray, because it actually
allows you to step and set breakpoints
interactively in your model.
And you can literally watch the tensors
as they flow in real time.
It's pretty incredible.
LAURENCE MORONEY: So people will believe
we called it TensorFlow for a reason
now, because you can see them, like you say,
flowing in real time.
So, cool.
JUSTINE TUNNEY: And speaking of tensors flowing,
like one of the illuminating things about this debugger
plugin is that it operates on the actual graph.
A lot of times when we write code for TensorFlow
or our machine learning models, we're
using really high-level frameworks and libraries
like CARIS and Estimator.
And underneath those frameworks, and the nice Python code,
are now Swift code.
There's the reality of the graph through which the tensors flow,
and that's what this debugger operates on.
It lets you see the reality beneath the abstractions when
you need to, even though we [INAUDIBLE] the abstractions.
LAURENCE MORONEY: That's super cool.
But just the thought of like, as a developer,
I load my data into a model, train
my model, that kind of thing, and then run
my model against test data.
And you have that whole black box.
I couldn't really figure out if I'd optimized my model,
but you're saying I can--
JUSTINE TUNNEY: Well, speaking of optimizing models,
like one interesting thing is there is now
a supervised training plugin that was contributed
by Francois Luus at IBM.
LAURENCE MORONEY: Ah, OK.
JUSTINE TUNNEY: And this is part of the embedded projector
[INAUDIBLE].
He sent us some poll requests, because we
do our development in the open.
And what it allows you to do is interactively
assign labels to your data set.
And you allow the algorithms, such as t-SNE,
to sort of reveal the structure of your data.
LAURENCE MORONEY: Wow.
JUSTINE TUNNEY: And you edit the labels as you go along.
It's pretty cool.
LAURENCE MORONEY: What was that called again?
JUSTINE TUNNEY: You can search for, I
believe it was called supervised training with TensorBoard.
There's an IBM blog post that explains it.
It's part of TensorBoard's embedding projector plugin.
LAURENCE MORONEY: So we'll put a link in the description
below for people watching it on YouTube.
So you've mentioned the debugging.
You've mentioned this other plugin.
There's a massive, vibrant ecosystem, right, of plugins.
JUSTINE TUNNEY: Indeed there is.
And, in many ways, the role of the TensorBoard team
and my latest [INAUDIBLE] developer
is to provide a really sturdy, solid foundation
for all these contributions from many teams
and a few companies with which we've been entrusted.
For example, we've got a rock-solid build foundation,
where you can actually build your code in China,
America, any other nation.
And we do a lot of things.
We actually pack like more than 10 web applications
into a tiny two-megabyte package that
doesn't have a whole lot of dependencies, and most of them
are sort of schlepped into the package.
LAURENCE MORONEY: Usually the small ones
have a lot of dependencies.
So this is nice.
JUSTINE TUNNEY: I know.
And when I first joined the TensorBoard team,
we actually had, in terms of our tooling, over 900 dependencies.
LAURENCE MORONEY: Oh, wow.
JUSTINE TUNNEY: Yeah, and I managed
to pare that down somewhat, thanks
to the benefits of Bazel.
LAURENCE MORONEY: That would just
take a long time to compile with all those dependencies, right?
JUSTINE TUNNEY: No, TensorBoard actually compiles very fast.
LAURENCE MORONEY: Oh, it does?
JUSTINE TUNNEY: Like, you can compile TensorBoard
and download all its dependencies
in maybe five to 10 seconds or so.
LAURENCE MORONEY: Oh, wow, OK.
JUSTINE TUNNEY: Yeah, it's not like TensorFlow,
where it takes 30 minutes.
Speaking of which, if you've got a 96 core Cloud VM,
it takes five.
LAURENCE MORONEY: Well, it's worth waiting for.
JUSTINE TUNNEY: It is.
LAURENCE MORONEY: So, say I want to be a plugin developer,
and I want to start building my own plugin.
I've come up with a great idea for great scenario.
How would I get started doing this?
JUSTINE TUNNEY: Well, the best way to get started
is we have a repo call on GitHub called
TensorFlow/TensorBoard plugin example.
And this is an independent repository.
It does not vendor TensorBoard or TensorFlow.
And it basically shows you how you
can configure Bazel to do a custom static build
of TensorBoard, where you can do whatever
you want in a separate repo.
LAURENCE MORONEY: Nice, nice.
JUSTINE TUNNEY: So this is basically our escape hatch.
Because with the security and various other requirements
of TensorBoard, sometimes merging things upstream cannot
always be approved.
But we provide this alternative.
But we are, of course, open and welcome
to accepting contributions on our main GitHub.
And you'll notice inside our main GitHub repository,
there's a list of plugins, and each one
has a README with documentation on how it works.
LAURENCE MORONEY: Oh, perfect, perfect.
So thanks, everybody, for watching this episode
of The Developer Show.
Don't forget to check out the description below,
and we'll put all the links that we spoke about today.
And thanks so much, Justine.
JUSTINE TUNNEY: Thank you for having me.
LAURENCE MORONEY: You're welcome.
[MUSIC PLAYING]