web-dev-qa-db-fra.com

Puis-je utiliser TensorBoard avec Google Colab?

Est-il possible d'utiliser TensorBoard lors de la formation d'un modèle TensorFlow sur Google Colab?

55
ociule

EDIT: Vous voulez probablement donner au fonctionnaire %tensorboard magic un essai, disponible à partir de TensorFlow 1.13.


Avant l'existence de la magie %tensorboard, le moyen standard d'y parvenir consistait à effectuer un proxy du trafic réseau vers Colab VM à l'aide de ngrok . Un exemple de Colab peut être trouvé ici .

Voici les étapes (les extraits de code représentent des cellules de type "code" dans colab):

  1. Faites fonctionner TensorBoard en arrière-plan.
    Inspiré par cette réponse .

    LOG_DIR = '/tmp/log'
    get_ipython().system_raw(
        'tensorboard --logdir {} --Host 0.0.0.0 --port 6006 &'
        .format(LOG_DIR)
    )
    
  2. Téléchargez et décompressez ngrok .
    Remplace le lien passé à wget par le lien de téléchargement correspondant à votre système d'exploitation.

    ! wget https://bin.equinox.io/c/4VmDzA7iaHb/ngrok-stable-linux-AMD64.Zip
    ! unzip ngrok-stable-linux-AMD64.Zip
    
  3. Lancer le processus en arrière-plan de ngrok ...

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

    ... et récupérer l'URL publique. Source

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

Voici un moyen plus simple de faire la même méthode de tunneling ngrok sur Google Colab.

!pip install tensorboardcolab

ensuite,

from tensorboardcolab import TensorBoardColab, TensorBoardColabCallback

tbc=TensorBoardColab()

En supposant que vous utilisez Keras:

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

Vous pouvez lire le message original ici .

19
Keshan

TensorBoard for TensorFlow s'exécutant sur Google Colab à l'aide de tensorboardcolab. Ceci utilise ngrok en interne pour la tunnelisation.

  1. Installer TensorBoardColab

!pip install tensorboardcolab

  1. Créer un objet tensorboardcolab

tbc = TensorBoardColab()

Cela crée automatiquement un lien TensorBoard qui peut être utilisé. Ce Tensorboard lit les données sur './Graph'

  1. Créer un FileWriter pointant vers cet emplacement

summary_writer = tbc.get_writer()

la bibliothèque tensorboardcolab a la méthode qui renvoie l'objet FileWriter pointant au-dessus de l'emplacement './Graph'.

  1. Commencez à ajouter des informations récapitulatives aux fichiers d'événements à l'emplacement './Graph' à l'aide de l'objet summary_writer

Vous pouvez ajouter des informations scalaires ou des données de graphique ou d'histogramme.

Référence: https://github.com/taomanwai/tensorboardcolab

11
solver149

J'ai essayé mais je n'ai pas obtenu le résultat, mais j'ai utilisé les résultats ci-dessous.

import tensorboardcolab as tb
tbc = tb.TensorBoardColab()

après cela, ouvrez le lien depuis la sortie.

import tensorflow as tf
import numpy as np

Créer explicitement un objet Graph

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

Exemple complet:

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
DJ6968

Voici comment afficher vos modèles en ligne sur Google Colab. Voici un exemple très simple qui affiche un espace réservé:

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)

Actuellement, vous ne pouvez pas exécuter un service Tensorboard sur Google Colab de la manière dont vous l'exécutez localement. En outre, vous ne pouvez pas exporter l'intégralité de votre journal sur votre lecteur via quelque chose comme summary_writer = tf.summary.FileWriter('./logs', graph_def=sess.graph_def) afin de pouvoir le télécharger et le consulter localement.

4
JMA

Je me sers de la sauvegarde et de la synchronisation de google drive https://www.google.com/drive/download/backup-and-sync/ . Les fichiers d'événements, qui sont pré-enregistrés dans mon lecteur google pendant l'entraînement, sont automatiquement synchronisés dans un dossier de mon propre ordinateur. Appelons ce dossier logs. Pour accéder aux visualisations dans tensorboard, ouvrez la commande Invite, naviguez jusqu'au dossier google drive synchronisé et tapez: tensorboard --logdir=logs.

Ainsi, en synchronisant automatiquement mon disque avec mon ordinateur (en utilisant la sauvegarde et la synchronisation), je peux utiliser tensorboard comme si je m'entraînais sur mon propre ordinateur.

Edit: Voici un carnet de notes qui pourrait être utile. https://colab.research.google.com/Gist/MartijnCa/961c5f4c774930f4bdd32d51829da6f6/tensorboard-with-google-drive-backup-and-sync.ipynb

2
Martijn Cazemier

TensorBoard fonctionne avec Google Colab et TensorFlow 2.0

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

J'ai essayé de montrer TensorBoard sur google colab aujourd'hui,

# 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

'#################
faire de la formation
'#################

# show tensorboard
%tensorboard --logdir logs/fit

voici l'exemple réel fait par google. https://colab.research.google.com/github/tensorflow/tensorboard/blob/master/docs/r2/get_started.ipynb

1
Naga

Pour rejoindre la réponse @ solver149, voici un exemple simple d'utilisation de TensorBoard dans Google Colab

1.Créez le graphique, ex:

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

2. Installer Tensorboard

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

==> Résultat dans mon cas:

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

3. Utilisez-le :)

Importez tout d'abord TensorBoard de tensorboaedcolab (vous pouvez utiliser import* pour tout importer en une fois), puis créez votre tensorboeardcolab après que vous y attachez un écrivain comme ceci:

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()

==> Résultat

Using TensorFlow backend.

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

4.Vérifiez le lien donné: D

Tensorboard_Result_Graph_Image

Cet exemple était un jeton du guide TF: TensorBoard .

1
DINA TAKLIT

Il existe une solution alternative mais nous devons utiliser l'aperçu TFv2.0. Donc, si vous n'avez pas de problèmes avec la migration, essayez ceci:

installer tfv2.0 pour GPU ou CPU (TPU non encore disponible)

CPU
tf-nightly-2.0-preview
GPU
tf-nightly-gpu-2.0-preview

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

importer TensorBoard comme d'habitude:

from tensorflow.keras.callbacks import TensorBoard

Nettoyer ou créer un dossier où enregistrer les journaux (exécutez ces lignes avant de lancer la formation 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)

Amusez-vous avec TensorBoard! :)

%tensorboard --logdir logs/fit

Ici le cahier officiel de la colab et le repo sur github

Nouvelle version alpha de TFv2.0:

CPU
!pip install -q tensorflow==2.0.0-alpha0 GPU
!pip install -q tensorflow-gpu==2.0.0-alpha0

1
virtualdvid

Oui, utiliser tensorboard dans Google Colab est très simple. Suivez les étapes suivantes

1) Charger l’extension tensorboard

%load_ext tensorboard.notebook

2) l'ajouter au rappel de keras

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

3) Démarrer tensorboard

%tensorboard — logdir logs

J'espère que ça aide.

0
Abhinav Sagar

Beaucoup de réponses ici sont maintenant obsolètes. Donc ce sera le mien, j'en suis sûr, dans quelques semaines. Mais au moment d'écrire ces lignes, il ne me restait plus qu'à exécuter ces lignes de code à partir de colab. Et le tensorboard s'est très bien ouvert.

%load_ext tensorboard
%tensorboard --logdir logs
0
RajV

Le moyen le plus simple et le plus simple que j'ai trouvé jusqu'à présent:

Obtenez le fichier setup_google_colab.py à l'aide de 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

Pour exécuter tensorboard en arrière-plan, exposez le port et cliquez sur le lien.
Je suppose que vous avez une valeur ajoutée appropriée à visualiser dans votre résumé, puis à fusionner tous les résumés.

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

Après avoir exécuté les instructions ci-dessus, un lien comme celui-ci vous sera demandé:

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

Reportez-vous à git suivant pour obtenir de l'aide:

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