Google Colab에서 TensorBoard를 사용할 수 있나요?


답변:


85

편집 : TensorFlow 1.13부터 제공되는 공식 %tensorboard마법 을 사용하고 싶을 것입니다 .


%tensorboard마법 이 존재하기 전에이를 달성하는 표준 방법은 ngrok를 사용하여 네트워크 트래픽을 Colab VM에 프록시하는 것이 었 습니다 . Colab 예제는 여기 에서 찾을 수 있습니다 .

다음은 단계입니다 (코드 스 니펫은 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링크를 OS에 맞는 올바른 다운로드 링크로 바꿉니다 .

    ! 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'])"
    

내 colabVM에서 tensorbaord를 실행하려고하는데 이벤트 및 체크 포인트가 Google 드라이브에 저장되어야합니까? 귀하의 솔루션이 그 점에서 도움이됩니까?. 또한 colab에 작성된 방법이이를 달성 할 수있는 방법을 좀 더 자세히 설명 할 수 있다면 정말 도움이 될 것입니다. 이 방법을 사용하여 colabVM에서 로컬 데스크톱으로 이벤트를 가져 왔습니까?
Anu

1
@anu 이러한 사용 사례에 대한 예제 노트북이 있습니다 : Drive IO , system aliases .
Joppe Geluykens 19.01.21

37

여기에있는 많은 답변은 이제 구식입니다. 그래서 내가 몇 주 안에 확신합니다. 하지만이 글을 쓰는 시점에서 제가해야 할 일은 colab에서이 코드 줄을 실행하는 것뿐이었습니다. 그리고 텐서 보드는 잘 열렸습니다.

%load_ext tensorboard
%tensorboard --logdir logs

2
안녕하세요, 댓글 주셔서 감사합니다. colab 노트북에서이 두 줄을 실행 했습니까? 그렇게했는데 노트북에 "현재 데이터 세트에 대해 활성화 된 대시 보드가 없습니다."라는 TensorBoard 창이 나타납니다. 메시지. 도와주세요?
desmond13 2010

24

다음은 Google Colab에서 동일한 ngrok 터널링 방법을 수행하는 더 쉬운 방법입니다.

!pip install tensorboardcolab

그때,

from tensorboardcolab import TensorBoardColab, TensorBoardColabCallback

tbc=TensorBoardColab()

Keras를 사용한다고 가정합니다.

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

여기 에서 원본 게시물을 읽을 수 있습니다 .


1
안녕하세요, 이것은 정말 멋져 보이지만 Colab에서이 오류가 발생합니다.FailedPreconditionError: Error while reading resource variable conv_dw_8/depthwise_kernel from Container: localhost. This could mean that the variable was uninitialized.
Austin

@Austin tensorboardcolab의 작성자는 이에 대한 해결 방법을 찾았습니다. "이 문제가 가끔 발생하며 다음 방법으로 해결할 수 있습니다. 1. 대기 2. Colab 서버 다시 시작 3. Colab 서버 유형 변경 (CPU / GPU / TPU), 그런 다음 다시 변경하십시오. " 자신의 의견을 참조하십시오 여기에
NeStack

또한 모델이 임베딩 된 텐서 플로우가 아닌 Keras로 직접 구성되었는지 확인하십시오. 예를 들어 model.add(tf.keras.layers.LSTM(....))do 대신 model.add(keras.layers.LSTM(...)). 그렇지 않으면 오류 메시지가있을 수 있습니다.
NeStack 2019 년

12

tensorboardcolab을 사용하여 Google Colab에서 실행되는 TensorFlow 용 TensorBoard. 터널링을 위해 내부적으로 ngrok를 사용합니다.

  1. TensorBoardColab 설치

!pip install tensorboardcolab

  1. tensorboardcolab 객체 만들기

tbc = TensorBoardColab()

이렇게하면 사용할 수있는 TensorBoard 링크가 자동으로 생성됩니다. 이 Tensorboard는 './Graph'에서 데이터를 읽고 있습니다.

  1. 이 위치를 가리키는 FileWriter 만들기

summary_writer = tbc.get_writer()

tensorboardcolab 라이브러리에는 위의 './Graph'위치를 가리키는 FileWriter 객체를 반환하는 메서드가 있습니다.

  1. summary_writer 개체를 사용하여 './Graph'위치의 이벤트 파일에 요약 정보 추가 시작

스칼라 정보, 그래프 또는 히스토그램 데이터를 추가 할 수 있습니다.

참조 : https://github.com/taomanwai/tensorboardcolab


6

시도했지만 결과를 얻지 못했지만 아래와 같이 사용하면 결과를 얻었습니다.

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

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)

현재 로컬에서 실행하는 방식으로 Google Colab에서 Tensorboard 서비스를 실행할 수 없습니다. 또한 다음과 같은 방법으로 전체 로그를 드라이브로 내보낼 수 없으므로 summary_writer = tf.summary.FileWriter('./logs', graph_def=sess.graph_def)다운로드하여 로컬에서 볼 수 있습니다.


4

Google 드라이브의 백업을 사용하고 https://www.google.com/drive/download/backup-and-sync/ 동기화 합니다. 훈련 중에 내 구글 드라이브에 저장되는 이벤트 파일은 내 컴퓨터의 폴더에 자동으로 동기화됩니다. 이 폴더를 logs. 텐서 보드의 시각화에 액세스하려면 명령 프롬프트를 열고 동기화 된 Google 드라이브 폴더로 이동 한 다음 다음을 입력 tensorboard --logdir=logs합니다..

따라서 내 드라이브를 내 컴퓨터와 자동으로 동기화 (백업 및 동기화 사용)하여 내 컴퓨터에서 훈련하는 것처럼 텐서 보드를 사용할 수 있습니다.

편집 : 도움이 될 수있는 노트북이 있습니다. https://colab.research.google.com/gist/MartijnCa/961c5f4c774930f4bdd32d51829da6f6/tensorboard-with-google-drive-backup-and-sync.ipynb


공유 가능한 colab에 방법을 작성하고 여기에 게시물을 공유해 주시겠습니까? 정말 도움이되고 빠르다!
Anu

1
귀하의 조언에 따라 "내 드라이브"의 파일에 colab을 통해서만 액세스 할 수 있지만 동기화 된 컴퓨터가있는 "컴퓨터"에서는 액세스 할 수 없습니다. 노트북은 동기화 된 컴퓨터에도 로그인하지 않고 "내 드라이브"폴더에 로그인합니다 os.chdir('/content/drive/My Drive'). 행을 참조하세요 . 동기화 된 컴퓨터에 액세스하는 방법을 자세히 설명해 주시겠습니까?
NeStack

1
@NeStack 맞아요 내 솔루션은 "내 드라이브"폴더 만 사용합니다. 혼동을 드려 죄송합니다. 저는 "컴퓨터"를 사용하지 않습니다. 백업 및 동기화 프로그램을 사용하여 "내 드라이브"폴더를 자신의 컴퓨터에 동기화 할 수 있습니다. 이렇게하면 자신의 컴퓨터에있는 파일 탐색기에서 이벤트 파일에 액세스 할 수 있습니다.
Martijn Cazemier

@MartijnCazemier 알겠습니다. 너무 나를 위해 일하는 것이 옵션입니다
NeStack

@MartijnCazemier 내 드라이브에 공간이 있기 때문에 나를 허용하지 않으며 탈출을 허용하지 않습니다.
technazi

3

2.0 호환 답변 : 예, Google Colab에서 Tensorboard를 사용할 수 있습니다. 전체 예제를 보여주는 아래 코드를 찾으십시오.

!pip install tensorflow==2.0

import tensorflow as tf
# The function to be traced.
@tf.function
def my_func(x, y):
  # A simple hand-rolled layer.
  return tf.nn.relu(tf.matmul(x, y))

# Set up logging.
logdir = './logs/func'
writer = tf.summary.create_file_writer(logdir)

# Sample data for your function.
x = tf.random.uniform((3, 3))
y = tf.random.uniform((3, 3))

# Bracket the function call with
# tf.summary.trace_on() and tf.summary.trace_export().
tf.summary.trace_on(graph=True, profiler=True)
# Call only one tf.function when tracing.
z = my_func(x, y)
with writer.as_default():
  tf.summary.trace_export(
      name="my_func_trace",
      step=0,
      profiler_outdir=logdir)

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

Google Colab의 작업 사본은 이 링크 를 참조하십시오 . 자세한 내용은 이 링크 를 참조 하십시오 .


3

문서에 따르면 다음과 같이하면됩니다.

%load_ext tensorboard
!rm -rf ./logs/ #to delete previous runs
%tensorboard --logdir logs/
tensorboard = TensorBoard(log_dir="./logs")

그리고 fit 메서드에서 호출하십시오.

model.fit(X_train, y_train, epochs = 1000,
         callbacks=[tensorboard], validation_data=(X_test, y_test))

그러면 다음과 같은 결과를 얻을 수 있습니다.

아직 사진을 게시 할 수 없으므로 링크를 사용하세요.


2

오늘 Google Colab에서 TensorBoard를 보여 주려고했는데

# 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


2

예, Google colab에서 tensorboard를 사용하는 것은 매우 쉽습니다. 다음 단계를 따르십시오.

1) 텐서 보드 확장로드

%load_ext tensorboard.notebook

2) keras 콜백에 추가

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

3) 텐서 보드 시작

%tensorboard — logdir logs

도움이 되었기를 바랍니다.


2

대체 솔루션이 있지만 TFv2.0 미리보기를 사용해야합니다. 따라서 마이그레이션에 문제가 없으면 다음을 시도하십시오.

GPU 또는 CPU 용 tfv2.0 설치 (TPU는 아직 제공되지 않음)

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 # For older versions
%load_ext tensorboard

평소처럼 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 노트북과 REPO GitHub의에를

새로운 TFv2.0 알파 릴리스 :

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



1

@ solver149 답변에 참여하려면 다음은 Google Colab에서 TensorBoard를 사용하는 방법에 대한 간단한 예입니다.

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. 그것을 사용하십시오 :)

tensorboaedcolab에서 모든 TensorBoard 가져 오기의 주먹 ( import*한 번에 모든 것을 가져 오는 데 사용할 수 있음 ) 그런 다음 다음과 같이 작가를 첨부 한 후 tensorboeardcolab을 만듭니다.

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의 토큰입니다 .


1
Colab에서 완벽하게 작동 한 유일한 솔루션입니다. @Dina Taklit 감사합니다!
JChat

나는 오류를 수신합니다AttributeError: module 'tensorflow_core.summary' has no attribute 'FileWriter'
sarannns

@sarannns 나는이 의지 도움말 희망 stackoverflow.com/questions/43304270/...을
DINA TAKLIT

1

TensorBoard는 Google Colab 및 TensorFlow 2.0과 함께 작동합니다.

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

1

summary_writer를 사용하여 폴더의 모든 시대에 로그를 작성한 다음 다음 마술을 실행하면 저에게 효과적이었습니다.

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

0

지금까지 찾은 간단하고 쉬운 방법 :

wget을 사용하여 setup_google_colab.py 파일 가져 오기

!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

다른 답변을 살펴보십시오. 위의 옵션은 수동 단계가 필요하지 않기 때문에 더 좋아 보입니다.
lucid_dreamer

@lucid_dreamer, 의심의 여지없이 위의 답변에는 더 나은 설명, 단계 및 쉬운 것이 있지만 다른 답변이 다른 사람들에게 모든 기술을 알려주는 것을 알고 있다면 일부 사람들에게 도움이 될 수 있습니다. 그 모든 것은 당신의 선택에 달려 있습니다.
무하마드 우마르하기 Amanat

나는 무엇입니까AttributeError: module 'setup_google_colab' has no attribute 'expose_port_on_colab'
Biranchi

@Biranchi expose_port_on_colab 기능이 setup_google_colab.py에, 당신은 기준이 링크를 방문 할 수 있습니다 github.com/hse-aml/intro-to-dl/blob/master/...
무하마드 우마르하기 Amanat

0

tensorflow == 1.15를 사용하고 있습니다.

%load_ext tensorboard
%tensorboard --logdir /content/logs

나를 위해 작동합니다.

/content/logs

Google 드라이브의 내 로그 경로입니다.


-1

이것을 시도해보십시오.

%load_ext tensorboard
import datetime
logdir = os.path.join("logs", datetime.datetime.now().strftime("%Y%m%d-%H%M%S"))
tensorboard_callback = tf.keras.callbacks.TensorBoard(logdir, histogram_freq=1)

 model.fit(x=x_train, 
        y=y_train, 
        epochs=5, 
        validation_data=(x_test, y_test), 
        callbacks=[tensorboard_callback])
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.