GaiaEx AcademyGaiaEx Academy
TensorFlow e TensorBoard para Desenvolvimento de Modelos
DesenvolvedorIA e ML12 min read

TensorFlow e TensorBoard para Desenvolvimento de Modelos

O framework de ML do Google e como visualizar o treinamento

Compartilhar Posts

O Ecossistema TensorFlow: Mais Do Que um Framework

TensorFlow, desenvolvido pelo Google Brain e lançado em 2015, não é apenas uma biblioteca de deep learning — é um ecossistema completo para construir, treinar, implantar, e monitorar modelos de machine learning em qualquer escala. Enquanto o PyTorch domina a pesquisa, o TensorFlow permanece a potência de produção, implantado em sistemas que processam bilhões de previsões diariamente no Google, Airbnb, Twitter, e milhares de outras empresas.

O ecossistema abrange o ciclo de vida completo de ML:

  • Keras — A API de alto nível para construir e treinar modelos, agora totalmente integrada ao TensorFlow como tf.keras
  • TensorBoard — Kit de ferramentas de visualização para monitorar treinamento, comparar experimentos, e depurar modelos
  • tf.data — Pipelines de dados de alta performance para alimentar grandes conjuntos de dados aos modelos
  • TensorFlow Serving — Serviço de modelos de nível de produção com versionamento, batching, e aceleração de hardware
  • TensorFlow Lite — Runtime otimizado para dispositivos móveis e de borda (edge)
  • TensorFlow.js — Execute modelos diretamente no navegador

Essa amplitude é a maior força do TensorFlow. Você pode prototipar um modelo em um notebook Jupyter com Keras, treiná-lo em um cluster de GPU, monitorar o treinamento com o TensorBoard, servi-lo com o TF Serving atrás de uma API, e implantar uma versão comprimida em um Raspberry Pi — tudo dentro do mesmo framework. Para aplicações financeiras onde você pode precisar de modelos rodando tanto em um motor de trading na nuvem (conectado à API da GaiaEx) quanto em uma estação de trabalho local para pesquisa, essa versatilidade importa.

TensorFlow ML lifecycle (simplified) Data Keras Train TB logs Serve / edge Same graph can feed research notebooks and production if you standardize artifacts (SavedModel). tf.data pipelines keep GPUs fed; TF Serving versions models without downtime
Prototipar, treinar, observar, implantar — um stack, muitos runtimes.

Keras: APIs Sequential e Functional para Construção de Modelos

O Keras foi projetado com um princípio orientador: reduzir a carga cognitiva de construir redes neurais. Ele alcança isso através de duas APIs de construção de modelos, cada uma adequada a diferentes níveis de complexidade.

A API Sequential é a mais simples — uma pilha linear de camadas:

import tensorflow as tf
from tensorflow import keras

model = keras.Sequential([
    keras.layers.Dense(128, activation="relu", input_shape=(20,)),
    keras.layers.Dropout(0.3),
    keras.layers.Dense(64, activation="relu"),
    keras.layers.Dropout(0.2),
    keras.layers.Dense(1, activation="sigmoid"),
])

Para modelos com múltiplas entradas, múltiplas saídas, camadas compartilhadas, ou conexões de salto, a API Functional te dá controle completo em nível de grafo:

price_input = keras.Input(shape=(60, 5), name="price_sequence")
meta_input = keras.Input(shape=(10,), name="metadata")

x = keras.layers.LSTM(64, return_sequences=True)(price_input)
x = keras.layers.LSTM(32)(x)

combined = keras.layers.concatenate([x, meta_input])
combined = keras.layers.Dense(64, activation="relu")(combined)
output = keras.layers.Dense(1, activation="sigmoid")(combined)

model = keras.Model(inputs=[price_input, meta_input],
                    outputs=output)

Este modelo recebe duas entradas — uma sequência de preço de 60 passos processada por LSTMs empilhadas, e um vetor de metadados de características estáticas —, combina elas, e produz uma previsão direcional. Essa arquitetura é comum em ML financeiro onde você quer misturar padrões temporais (ação de preço recente) com informação contextual (regime de volatilidade, taxa de financiamento, dia da semana).

Tipos de camada chave para aplicações financeiras: Dense para características tabulares, LSTM e GRU para séries temporais, Conv1D para aprender padrões temporais locais, e MultiHeadAttention para modelagem de sequência estilo transformer.

Compilando Modelos e Callbacks para Treinamento Mais Inteligente

Uma vez construído, um modelo Keras deve ser compilado com três componentes: um otimizador, uma função de perda, e métricas de avaliação.

model.compile(
    optimizer=keras.optimizers.Adam(learning_rate=1e-3),
    loss="binary_crossentropy",
    metrics=["accuracy", keras.metrics.AUC(name="auc")],
)

history = model.fit(
    X_train, y_train,
    epochs=100,
    batch_size=64,
    validation_data=(X_val, y_val),
    callbacks=[...],
)

Callbacks são hooks que executam em pontos específicos durante o treinamento — depois de cada época, batch, ou quando certas condições são atendidas. Eles automatizam o gerenciamento de treinamento que de outra forma exigiria monitoramento manual:

  • EarlyStopping — Interrompe o treinamento quando a perda de validação para de melhorar por patience épocas. Previne overfitting e computação desperdiçada. Defina restore_best_weights=True para automaticamente revertir ao melhor checkpoint.
  • ModelCheckpoint — Salva o modelo sempre que a performance de validação melhora. Nunca perca seu melhor modelo para uma falha de treinamento ou overfitting em épocas posteriores.
  • ReduceLROnPlateau — Reduz a taxa de aprendizado quando a perda de validação estagna. Isso frequentemente destrava performance adicional que uma taxa de aprendizado fixa não capta — o modelo faz passos grandes inicialmente, depois ajusta finamente com passos menores.
callbacks = [
    keras.callbacks.EarlyStopping(
        monitor="val_loss", patience=15,
        restore_best_weights=True),
    keras.callbacks.ModelCheckpoint(
        "best_model.keras", monitor="val_auc",
        mode="max", save_best_only=True),
    keras.callbacks.ReduceLROnPlateau(
        monitor="val_loss", factor=0.5,
        patience=5, min_lr=1e-6),
    keras.callbacks.TensorBoard(log_dir="./logs"),
]

Sempre use EarlyStopping e ModelCheckpoint juntos. Treinar um modelo financeiro por muitas épocas quase garante overfitting — o modelo começa a memorizar ruído nos dados de treinamento. Esses dois callbacks garantem que você pare no momento certo e mantenha os pesos certos.

TensorBoard: Visualizando Treinamento e Depurando Modelos

O TensorBoard é o kit de ferramentas de visualização do TensorFlow, e é uma das ferramentas mais valiosas no fluxo de trabalho de qualquer praticante de ML — seja você usando TensorFlow, PyTorch, ou JAX. Ele transforma logs de treinamento brutos em painéis interativos que revelam o que está acontecendo dentro do seu modelo.

Inicie o TensorBoard apontando-o para seu diretório de logs:

# Terminal
tensorboard --logdir=./logs --port=6006

# Ou em um notebook Jupyter
%load_ext tensorboard
%tensorboard --logdir ./logs

Visualizações chave para desenvolvimento de modelos financeiros:

Escalares — Curvas de perda de treinamento e validação plotadas ao longo do tempo. A lacuna entre elas revela overfitting: uma perda de treinamento que continua diminuindo enquanto a perda de validação aumenta significa que seu modelo está memorizando ruído. Um treinamento saudável mostra ambas as curvas diminuindo juntas, com a curva de validação levemente acima da de treinamento.

Histogramas — Distribuições de pesos, bias, e ativações através de camadas e épocas. Fique atento a distribuições de peso colapsando para zero (gradientes desaparecendo), explodindo para valores grandes (treinamento instável), ou ativações saturando em 0 ou 1 (neurônios mortos). Esses problemas são invisíveis nas curvas de perda mas óbvios nos histogramas.

Embeddings — Projetar representações de alta dimensionalidade em espaço 2D ou 3D usando t-SNE ou PCA. Visualize se seu modelo aprendeu a separar diferentes regimes de mercado, classes de ativos, ou estados de volatilidade em suas representações internas.

HParams — Compare varreduras de hiperparâmetros entre experimentos. Execute o mesmo modelo com diferentes taxas de aprendizado, arquiteturas, e valores de dropout, depois identifique quais combinações produzem as melhores métricas de validação. Essa comparação sistemática substitui a experimentação ad hoc por seleção de modelo baseada em evidência.

O TensorBoard também funciona com PyTorch via a classe torch.utils.tensorboard.SummaryWriter — as ferramentas de visualização são agnósticas ao framework, que é uma razão pela qual o TensorBoard se tornou um padrão de fato em todo o ecossistema de ML.

TensorBoard panels (conceptual) Scalars train vs val loss Histograms weights / activations HParams compare runs Overfitting shows up as diverging curves before it shows up in your P&L backtest.
Escalares capturam a qualidade do ajuste; histogramas capturam camadas rompidas; HParams comparam experimentos.

Pipelines tf.data e TensorFlow Serving para Produção

Quando seu conjunto de dados é muito grande para caber na memória — uma situação comum ao trabalhar com dados em nível de tick de exchanges como a GaiaEx —, o tf.data fornece um pipeline de dados eficiente e paralelizado que mantém sua GPU alimentada sem carregar tudo de uma vez.

dataset = tf.data.Dataset.from_tensor_slices((features, labels))
dataset = (dataset
    .window(60, shift=1, drop_remainder=True)
    .flat_map(lambda w: w.batch(60))
    .batch(64)
    .prefetch(tf.data.AUTOTUNE)
)

A chamada prefetch(AUTOTUNE) é crítica — ela permite que o carregamento de dados e a computação do modelo se sobreponham, então a GPU nunca fica ociosa esperando o próximo batch. Para conjuntos de dados financeiros com engenharia de características complexa, você pode encadear transformações .map() que executam em paralelo, computando indicadores e normalizações em tempo real em vez de pré-computá-los e armazená-los.

O TensorFlow Serving é um sistema de nível de produção para implantar modelos atrás de uma API gRPC ou REST de alta performance. Ele lida com versionamento de modelos (servir o novo modelo mantendo o antigo como fallback), batching de requisições (combinar múltiplas requisições de inferência para eficiência de GPU), e aceleração de hardware — todos críticos para sistemas de trading onde tanto latência quanto confiabilidade importam.

# Export a SavedModel
model.save("models/price_predictor/1")

# Serve with Docker
# docker run -p 8501:8501 \
#   --mount type=bind,source=$(pwd)/models,target=/models \
#   -e MODEL_NAME=price_predictor \
#   tensorflow/serving

Uma arquitetura de produção típica: seu bot de trading se conecta ao feed WebSocket da GaiaEx, computa características em tempo real, envia requisições de inferência ao TF Serving, e recebe previsões em milissegundos de um único dígito. Quando você retreina em novos dados, implante o modelo atualizado como versão 2 — o TF Serving o substitui com zero tempo de inatividade.

TensorFlow Lite, Implantação em Borda (Edge), e TF vs PyTorch

O TensorFlow Lite comprime modelos para implantação em dispositivos móveis, sistemas embarcados, e hardware de borda. Através de técnicas como quantização (converter pesos em ponto flutuante de 32 bits para inteiros de 8 bits), pruning (remover pesos próximos de zero), e otimização de arquitetura, o TF Lite pode reduzir um modelo em 4x ou mais enquanto preserva a maior parte de sua precisão. Isso permite executar inferência diretamente em dispositivos com computação limitada — útil para nós de trading de borda ou painéis de monitoramento que precisam operar independentemente da infraestrutura em nuvem.

# Convert a Keras model to TF Lite
converter = tf.lite.TFLiteConverter.from_saved_model("models/v1")
converter.optimizations = [tf.lite.Optimize.DEFAULT]
tflite_model = converter.convert()

with open("model.tflite", "wb") as f:
    f.write(tflite_model)

TensorFlow vs PyTorch — qual você deveria escolher para aplicações financeiras?

  • Para pesquisa e prototipagem: PyTorch. Seus grafos dinâmicos, API pythônica, e posição dominante na pesquisa acadêmica significam que mais artigos incluem código PyTorch, mais tutoriais usam PyTorch, e a depuração é mais intuitiva.
  • Para implantação em produção em escala: O TensorFlow ainda mantém vantagens. TF Serving, TF Lite, e TensorFlow.js fornecem caminhos de implantação testados em batalha que o TorchServe e o ONNX Runtime do PyTorch ainda estão maturando.
  • Para ML financeiro especificamente: Comece com PyTorch para desenvolvimento de modelo e experimentação. Se seus requisitos de produção exigirem a maturidade do TF Serving ou a implantação em borda do TF Lite, converta seus melhores modelos. Muitas equipes usam PyTorch para pesquisa e TensorFlow para implantação, conectando-os via formato ONNX (Open Neural Network Exchange).

A verdade honesta: ambos os frameworks estão convergindo. O TensorFlow adotou a execução eager; o PyTorch adicionou o torch.compile para otimização em nível de grafo. O próprio Keras agora suporta PyTorch, JAX, e TensorFlow como backends. O melhor framework é aquele que sua equipe conhece bem e pode usar para lançar código de produção. Escolha um, domine-o, e resolva o problema real — prever mercados — em vez de debater ferramentas.