Могу ли я использовать TensorBoard с Google Colab?

Есть ли способ использовать TensorBoard при обучении модели TensorFlow в Google Colab?

Ответ 1

ОБНОВЛЕНИЕ: Вы, вероятно, хотите попробовать официальный %tensorboard волшебный, доступный в TensorFlow 1.13 и далее.


До существования магии %tensorboard, стандартный способ добиться этого было прокси сетевого трафика на ВМ Colab с помощью ngrok. Пример с Colab можно найти здесь here.

Это шаги (фрагменты кода представляют ячейки типа "код" в colab):

  1. Запустите TensorBoard в фоновом режиме.
    Вдохновлен этим ответом.

    LOG_DIR = '/tmp/log'
    get_ipython().system_raw(
        'tensorboard --logdir {} --host 0.0.0.0 --port 6006 &'
        .format(LOG_DIR)
    )
    
  2. Загрузите и разархивируйте ngrok.
    Замените ссылку, переданную на wget, правильной ссылкой для загрузки вашей ОС.

    ! wget https://bin.equinox.io/c/4VmDzA7iaHb/ngrok-stable-linux-amd64.zip
    ! unzip ngrok-stable-linux-amd64.zip
    
  3. Запустить фоновый процесс ngrok...

    get_ipython().system_raw('./ngrok http 6006 &')
    

    ... и получить общедоступный URL. Источник

    ! curl -s http://localhost:4040/api/tunnels | python3 -c \
        "import sys, json; print(json.load(sys.stdin)['tunnels'][0]['public_url'])"
    

Ответ 2

Вот более простой способ сделать тот же метод туннелирования ngrok в Google Colab.

!pip install tensorboardcolab

затем,

from tensorboardcolab import TensorBoardColab, TensorBoardColabCallback

tbc=TensorBoardColab()

Предполагая, что вы используете Keras:

model.fit(......,callbacks=[TensorBoardColabCallback(tbc)])

Вы можете прочитать оригинальный пост здесь.

Ответ 3

TensorBoard для TensorFlow работает на Google Colab с использованием тензорной доски. Это использует ngrok для туннелирования.

  1. Установить TensorBoardColab

!pip install tensorboardcolab

  1. Создать объект tenorboardcolab

tbc = TensorBoardColab()

Это автоматически создает ссылку TensorBoard, которую можно использовать. Этот Tensorboard читает данные в './Graph'

  1. Создайте FileWriter, указывающий на это местоположение

summary_writer = tbc.get_writer()

В библиотеке tenorboardcolab есть метод, который возвращает объект FileWriter, указывающий на местоположение выше. /Graph.

  1. Начните добавлять сводную информацию в файлы событий в месте './Graph', используя объект summary_writer

Вы можете добавить скалярную информацию или график или данные гистограммы.

Ссылка: https://github.com/taomanwai/tensorboardcolab

Ответ 4

Я пытался, но не получил результат, но при использовании, как показано ниже, получил результаты

import tensorboardcolab as tb
tbc = tb.TensorBoardColab()

После этого откройте ссылку с выхода.

import tensorflow as tf
import numpy as np

Явно создайте объект Graph

graph = tf.Graph()
with graph.as_default()

Полный пример:

with tf.name_scope("variables"):
    # Variable to keep track of how many times the graph has been run
    global_step = tf.Variable(0, dtype=tf.int32, name="global_step")

    # Increments the above 'global_step' Variable, should be run whenever the graph is run
    increment_step = global_step.assign_add(1)

    # Variable that keeps track of previous output value:
    previous_value = tf.Variable(0.0, dtype=tf.float32, name="previous_value")

# Primary transformation Operations
with tf.name_scope("exercise_transformation"):

    # Separate input layer
    with tf.name_scope("input"):
        # Create input placeholder- takes in a Vector 
        a = tf.placeholder(tf.float32, shape=[None], name="input_placeholder_a")

    # Separate middle layer
    with tf.name_scope("intermediate_layer"):
        b = tf.reduce_prod(a, name="product_b")
        c = tf.reduce_sum(a, name="sum_c")

    # Separate output layer
    with tf.name_scope("output"):
        d = tf.add(b, c, name="add_d")
        output = tf.subtract(d, previous_value, name="output")
        update_prev = previous_value.assign(output)

# Summary Operations
with tf.name_scope("summaries"):
    tf.summary.scalar('output', output)  # Creates summary for output node
    tf.summary.scalar('product of inputs', b, )
    tf.summary.scalar('sum of inputs', c)

# Global Variables and Operations
with tf.name_scope("global_ops"):
    # Initialization Op
    init = tf.initialize_all_variables()
    # Collect all summary Ops in graph
    merged_summaries = tf.summary.merge_all()

# Start a Session, using the explicitly created Graph
sess = tf.Session(graph=graph)

# Open a SummaryWriter to save summaries
writer = tf.summary.FileWriter('./Graph', sess.graph)

# Initialize Variables
sess.run(init)

def run_graph(input_tensor):
    """
    Helper function; runs the graph with given input tensor and saves summaries
    """
    feed_dict = {a: input_tensor}
    output, summary, step = sess.run([update_prev, merged_summaries, increment_step], feed_dict=feed_dict)
    writer.add_summary(summary, global_step=step)


# Run the graph with various inputs
run_graph([2,8])
run_graph([3,1,3,3])
run_graph([8])
run_graph([1,2,3])
run_graph([11,4])
run_graph([4,1])
run_graph([7,3,1])
run_graph([6,3])
run_graph([0,2])
run_graph([4,5,6])

# Writes the summaries to disk
writer.flush()

# Flushes the summaries to disk and closes the SummaryWriter
writer.close()

# Close the session
sess.close()

# To start TensorBoard after running this file, execute the following command:
# $ tensorboard --logdir='./improved_graph'

Ответ 5

Вот как вы можете отображать свои модели inline в Google Colab. Ниже представлен очень простой пример, отображающий местозаполнитель:

from IPython.display import clear_output, Image, display, HTML
import tensorflow as tf
import numpy as np
from google.colab import files

def strip_consts(graph_def, max_const_size=32):
    """Strip large constant values from graph_def."""
    strip_def = tf.GraphDef()
    for n0 in graph_def.node:
        n = strip_def.node.add() 
        n.MergeFrom(n0)
        if n.op == 'Const':
            tensor = n.attr['value'].tensor
            size = len(tensor.tensor_content)
            if size > max_const_size:
                tensor.tensor_content = "<stripped %d bytes>"%size
    return strip_def

def show_graph(graph_def, max_const_size=32):
    """Visualize TensorFlow graph."""
    if hasattr(graph_def, 'as_graph_def'):
        graph_def = graph_def.as_graph_def()
    strip_def = strip_consts(graph_def, max_const_size=max_const_size)
    code = """
        <script>
          function load() {{
            document.getElementById("{id}").pbtxt = {data};
          }}
        </script>
        <link rel="import" href="https://tensorboard.appspot.com/tf-graph-basic.build.html" onload=load()>
        <div style="height:600px">
          <tf-graph-basic id="{id}"></tf-graph-basic>
        </div>
    """.format(data=repr(str(strip_def)), id='graph'+str(np.random.rand()))

    iframe = """
        <iframe seamless style="width:1200px;height:620px;border:0" srcdoc="{}"></iframe>
    """.format(code.replace('"', '&quot;'))
    display(HTML(iframe))


"""Create a sample tensor"""
sample_placeholder= tf.placeholder(dtype=tf.float32) 
"""Show it"""
graph_def = tf.get_default_graph().as_graph_def()
show_graph(graph_def)

В настоящее время вы не можете запустить службу Tensorboard в Google Colab так, как вы ее запускаете локально. Кроме того, вы не можете экспортировать весь свой журнал на свой диск через нечто вроде summary_writer = tf.summary.FileWriter('./logs', graph_def=sess.graph_def), чтобы затем загрузить его и посмотреть на него локально.

Ответ 6

Я использую резервную копию Google Drive и синхронизирую https://www.google.com/drive/download/backup-and-sync/. Файлы событий, которые предварительно сохраняются на моем диске Google во время обучения, автоматически синхронизируются с папкой на моем компьютере. Пусть называют эту папку logs. Для доступа к визуализациям в tenorboard я открываю командную строку, перехожу к папке синхронизированного диска Google и tensorboard --logdir=logs: tensorboard --logdir=logs.

Поэтому, автоматически синхронизируя мой привод с моим компьютером (используя резервное копирование и синхронизацию), я могу использовать тензорную доску, как будто я тренируюсь на своем собственном компьютере.

Изменить: Вот ноутбук, который может быть полезным. https://colab.research.google.com/gist/MartijnCa/961c5f4c774930f4bdd32d51829da6f6/tensorboard-with-google-drive-backup-and-sync.ipynb

Ответ 7

Есть альтернативное решение, но мы должны использовать предварительный просмотр TFv2.0. Поэтому, если у вас нет проблем с миграцией, попробуйте это:

установить tfv2.0 для GPU или CPU (TPU пока недоступен)

ЦПУ
тс-ночной-2,0-просмотр
GPU
тс-ночной-ГП-2,0-просмотр

%%capture
!pip install -q tf-nightly-gpu-2.0-preview
# Load the TensorBoard notebook extension
%load_ext tensorboard.notebook

импортировать TensorBoard как обычно:

from tensorflow.keras.callbacks import TensorBoard

Очистите или создайте папку, в которую нужно сохранить логи (запустите эти строки перед запуском тренировки fit())

# Clear any logs from previous runs
import time

!rm -R ./logs/ # rf
log_dir="logs/fit/{}".format(time.strftime("%Y%m%d-%H%M%S", time.gmtime()))
tensorboard = TensorBoard(log_dir=log_dir, histogram_freq=1)

Веселитесь вместе с TensorBoard! :)

%tensorboard --logdir logs/fit

Здесь официальная записная книжка Colab и репо на GitHub

Новый альфа-релиз TFv2.0:

ЦПУ
!pip install -q tensorflow==2.0.0-alpha0 GPU
!pip install -q tensorflow-gpu==2.0.0-alpha0

Ответ 8

Чтобы присоединиться к ответу @solver149, вот простой пример использования TensorBoard в Google Colab

1.Создайте график, например:

a = tf.constant(3.0, dtype=tf.float32)
b = tf.constant(4.0) 
total = a + b

2. Установите Tensorboard

!pip install tensorboardcolab # to install tensorboeadcolab if it does not it not exist

==> Результат в моем случае:

Requirement already satisfied: tensorboardcolab in /usr/local/lib/python3.6/dist-packages (0.0.22)

3. Используйте это :)

Первый из всех импортируемых TensorBoard из tenzorboaedcolab (вы можете использовать import* чтобы импортировать все сразу), а затем создайте свой tenorsboeardcolab, после этого прикрепите к нему средство записи следующим образом:

from tensorboardcolab import * 
tbc = TensorBoardColab() # To create a tensorboardcolab object it will automatically creat a link
writer = tbc.get_writer() # To create a FileWriter
writer.add_graph(tf.get_default_graph()) # add the graph 
writer.flush()

==> Результат

Using TensorFlow backend.

Wait for 8 seconds...
TensorBoard link:
http://cf426c39.ngrok.io

4.Проверьте данную ссылку: D

Tensorboard_Result_Graph_Image

Этот пример был токеном из руководства TF: TensorBoard.

Ответ 9

Я пытался показать TensorBoard на Google Colab сегодня,

# in case of CPU, you can this line
# !pip install -q tf-nightly-2.0-preview
# in case of GPU, you can use this line
!pip install -q tf-nightly-gpu-2.0-preview

# %load_ext tensorboard.notebook  # not working on 22 Apr
%load_ext tensorboard # you need to use this line instead

import tensorflow as tf

"################
делать тренировки
"################

# show tensorboard
%tensorboard --logdir logs/fit

Вот фактический пример, сделанный Google. https://colab.research.google.com/github/tensorflow/tensorboard/blob/master/docs/r2/get_started.ipynb

Ответ 10

TensorBoard работает с Google Colab и TensorFlow 2.0

!pip install tensorflow==2.0.0-alpha0 
%load_ext tensorboard.notebook

Ответ 11

Простой и легкий способ, который я нашел до сих пор:

Получить файл setup_google_colab.py с помощью wget

!wget https://raw.githubusercontent.com/hse-aml/intro-to- dl/master/setup_google_colab.py -O setup_google_colab.py
import setup_google_colab

Чтобы запустить тензорную доску в фоновом режиме, откройте порт и нажмите на ссылку.
Я предполагаю, что у вас есть правильная добавленная стоимость для визуализации в вашем резюме, а затем объединить все резюме.

import os
os.system("tensorboard --logdir=./logs --host 0.0.0.0 --port 6006 &")
setup_google_colab.expose_port_on_colab(6006)

После запуска приведенных выше заявлений вам будет предложено с ссылкой, как:

Open https://a1b2c34d5.ngrok.io to access your 6006 port

Для получения дополнительной помощи обратитесь к следующему git:

https://github.com/MUmarAmanat/MLWithTensorflow/blob/master/colab_tensorboard.ipynb

Ответ 12

Да, безусловно, использовать тензорную доску в Google Colab довольно просто. Следуйте следующему steps-

1) Загрузите удлинитель тензорной доски

%load_ext tensorboard.notebook

2) Добавить его в обратный вызов keras

tensorboard_callback = tf.keras.callbacks.TensorBoard(logdir, histogram_freq=1)

3) Запустить тензорную доску

%tensorboard — logdir logs

Надеюсь, поможет.

Ответ 13

Многие из ответов здесь уже устарели. Так будет моим, я уверен, через несколько недель. Но на момент написания этой статьи все, что мне нужно было сделать, это запустить эти строки кода из colab. И тензорная доска открылась просто отлично.

%load_ext tensorboard
%tensorboard --logdir logs

Ответ 14

Использование summary_writer для записи журнала в каждую эпоху в папке, а затем выполнение следующей магии работало для меня.

%load_ext tensorboard 
%tensorboard --logdir=./logs