TensorBoard
O TensorBoard é um conjunto de ferramentas de visualização para depuração, otimização e compreensão do TensorFlow, PyTorch, Hugging Face Transformers e outros programas de aprendizado de máquina.
Utilizar o TensorBoard
Iniciar o TensorBoard no Azure Databricks não é diferente de iniciá-lo em um notebook Jupyter em seu computador local.
Carregue o
%tensorboard
comando magic e defina seu diretório de log.%load_ext tensorboard experiment_log_dir = <log-directory>
Invoque o
%tensorboard
comando magic.%tensorboard --logdir $experiment_log_dir
O servidor TensorBoard inicia e exibe a interface do usuário embutida no notebook. Ele também fornece um link para abrir o TensorBoard em uma nova guia.
A captura de tela a seguir mostra a interface do usuário do TensorBoard iniciada em um diretório de log preenchido.
Você também pode iniciar o TensorBoard usando o módulo de notebook do TensorBoard diretamente.
from tensorboard import notebook
notebook.start("--logdir {}".format(experiment_log_dir))
Registos e diretórios do TensorBoard
O TensorBoard visualiza seus programas de aprendizado de máquina lendo logs gerados por retornos de chamada e funções do TensorBoard no TensorBoard ou PyTorch. Para gerar logs para outras bibliotecas de aprendizado de máquina, você pode gravar logs diretamente usando gravadores de arquivos do TensorFlow (consulte Module: tf.summary for TensorFlow 2.x e consulte Module: tf.compat.v1.summary para a API mais antiga no TensorFlow 1.x ).
Para garantir que seus logs de experimento sejam armazenados de forma confiável, o Databricks recomenda gravar logs no armazenamento em nuvem em vez de no sistema de arquivos de cluster efêmero. Para cada experimento, inicie o TensorBoard em um diretório exclusivo. Para cada execução do código de aprendizado de máquina no experimento que gera logs, defina o retorno de chamada do TensorBoard ou o gravador de arquivos para gravar em um subdiretório do diretório do experimento. Dessa forma, os dados na interface do usuário do TensorBoard são separados em execuções.
Leia a documentação oficial do TensorBoard para começar a usar o TensorBoard para registrar informações para seu programa de aprendizado de máquina.
Gerir os processos do TensorBoard
Os processos do TensorBoard iniciados no bloco de anotações do Azure Databricks não são encerrados quando o bloco de anotações é desanexado ou o REPL é reiniciado (por exemplo, quando você limpa o estado do bloco de anotações). Para matar manualmente um processo TensorBoard, envie-lhe um sinal de terminação usando %sh kill -15 pid
. Processos do TensorBoard mortos indevidamente podem corromper notebook.list()
.
Para listar os servidores TensorBoard atualmente em execução em seu cluster, com seus diretórios de log e IDs de processo correspondentes, execute notebook.list()
a partir do módulo de notebook TensorBoard.
Problemas conhecidos
- A interface do usuário do TensorBoard em linha está dentro de um iframe. Os recursos de segurança do navegador impedem que links externos na interface do usuário funcionem, a menos que você abra o link em uma nova guia.
- A
--window_title
opção do TensorBoard é substituída no Azure Databricks. - Por padrão, o TensorBoard verifica um intervalo de portas para selecionar uma porta para ouvir. Se houver muitos processos TensorBoard em execução no cluster, todas as portas no intervalo de portas podem estar indisponíveis. Você pode contornar essa limitação especificando um número de porta com o
--port
argumento. A porta especificada deve estar entre 6006 e 6106. - Para que os links de download funcionem, você deve abrir o TensorBoard em uma guia.
- Ao usar o TensorBoard 1.15.0, a guia Projetor está em branco. Como solução alternativa, para visitar a página do projetor diretamente, você pode substituir
#projector
no URL pordata/plugin/projector/projector_binary.html
. - O TensorBoard 2.4.0 tem um problema conhecido que pode afetar a renderização do TensorBoard se for atualizado.
- Se você estiver registrando dados relacionados ao TensorBoard em volumes DBFS ou UC, poderá receber um erro como
No dashboards are active for the current data set
. Para superar esse erro, é aconselhável ligarwriter.flush()
ewriter.close()
depois de usar owriter
para registrar dados. Isso garante que todos os dados registrados sejam gravados corretamente e estejam disponíveis para o TensorBoard renderizar.