UStackUStack
Deeplearning4j icon

Deeplearning4j

Deeplearning4j é uma suíte de deep learning para JVM, com treino e execução em Java e interoperabilidade com Python via cpython bindings e runtimes.

Deeplearning4j

O que é Deeplearning4j?

Deeplearning4j é uma suíte de ferramentas para executar deep learning na JVM. Ela oferece treino e execução de modelos baseados em Java, com suporte a interoperabilidade com o ecossistema Python por meio de execução Python via cpython bindings, suporte a importação de modelos e interoperabilidade com runtimes como tensorflow-java e onnxruntime.

O projeto é projetado para servir tanto como complemento a fluxos de trabalho existentes em Python ou C++, quanto como opção standalone para construir e implantar modelos em ambientes onde a execução baseada em JVM é útil.

Principais Recursos

  • Execução de deep learning com foco em JVM: Treine e execute modelos de deep learning na JVM como runtime principal.
  • Interoperabilidade com ecossistema Python via cpython bindings: Execute componentes Python por meio de cpython bindings, permitindo integração com partes do fluxo de trabalho Python.
  • Suporte a importação e retreino de modelos: Importe e retreine modelos originados de frameworks Python comuns como Pytorch, Tensorflow e Keras.
  • Execução de grafos via Samediff: Use Samediff como framework de nível inferior para executar grafos de computação complexos, servindo como API base para rodar grafos ONNX e TensorFlow.
  • Computação numérica ND4J para Java: Use Nd4j como biblioteca de tensores/computação numérica em Java, combinando operações no estilo numpy com operações no estilo TensorFlow/PyTorch.
  • Core matemático C++ multiplataforma (Libnd4j): Use Libnd4j, uma biblioteca C++ standalone leve projetada para permitir que código matemático rode em diferentes dispositivos e seja otimizado entre tipos de dispositivos.
  • Execução de scripts Python orientada à produção (Python4j): Use Python4j para executar scripts Python em contextos de produção.
  • Integração com Apache Spark: Execute pipelines de deep learning com Apache Spark usando a integração fornecida.
  • Transformação de dados em tensores (Datavec): Converta entradas raw em tensores adequados para treino e execução de redes neurais.

Como Usar Deeplearning4j

  1. Comece com o Quickstart do site (recomendado pelo projeto) para entender por onde começar.
  2. Se encontrar problemas de dependências, use o guia de Required Dependencies do site para alinhar seu ambiente.
  3. Escolha o componente que corresponde ao seu nível de abstração:
    • Use a documentação do Deeplearning4j para APIs de alto nível como redes multicamadas e grafos de computação.
    • Use Samediff se quiser um fluxo de trabalho de nível inferior similar a PyTorch/TensorFlow com diferenciação automática integrada.
  4. Para preparação de dados e entradas de modelo, consulte a documentação do Datavec.
  5. Para deployment ou execução de pipelines em ambientes específicos, siga as seções de documentação do Python4j, Apache Spark e outras integrações relevantes.

Casos de Uso

  • Importar e retreinar modelos construídos em Python: Traga modelos de Pytorch, Tensorflow ou Keras para um fluxo de trabalho JVM, retreine conforme necessário e continue o desenvolvimento com componentes Deeplearning4j.
  • Implantar modelos em microsserviços JVM: Empacote modelos treinados ou importados para serviços baseados em JVM, usando Deeplearning4j como camada de runtime para inferência ou lógica de serving.
  • Executar pipelines de deep learning no Apache Spark: Use a integração com Apache Spark para executar pipelines de deep learning em ambiente Spark.
  • Executar ou integrar grafos TensorFlow/ONNX: Use Samediff como framework de execução de grafos e sua função como API base para execução de grafos ONNX e TensorFlow.
  • Converter dados raw em tensores para treino: Use Datavec para transformar entradas raw em formatos de tensor adequados para treino e execução de redes neurais.

FAQ

O Deeplearning4j é só para Java, ou pode funcionar com Python?

O Deeplearning4j é uma suíte para JVM, mas o projeto descreve interoperabilidade com o ecossistema Python por meio de cpython bindings, suporte a importação de modelos e interoperabilidade com outros runtimes como tensorflow-java e onnxruntime.

Qual submódulo devo usar para trabalho de grafo em nível mais baixo?

O site descreve o Samediff como um framework de nível mais baixo, similar em espírito ao PyTorch ou TensorFlow, para construir redes neurais com diferenciação automática integrada.

Para que serve o Nd4j?

O Nd4j é descrito como uma biblioteca “numpy++” baseada em Java que fornece operações numpy, além de operações no estilo TensorFlow/PyTorch.

O projeto suporta pré-processamento de dados?

Sim. O submódulo Datavec é uma biblioteca de transformação de dados que converte dados de entrada brutos em tensores adequados para execução de redes neurais.

Como o Spark se encaixa na pilha?

O site inclui uma seção de documentação sobre Integração com Apache Spark, indicando que você pode executar pipelines de deep learning no Spark usando a integração fornecida.

Alternativas

  • PyTorch / TensorFlow (nativo Python): Se você quiser um fluxo de trabalho nativo em Python sem execução baseada em JVM, esses frameworks focam na definição e treinamento de modelos em Python.
  • TensorFlow Java ou ONNX Runtime (abordagens focadas em runtime): Se o objetivo principal for executar modelos exportados (ex.: TensorFlow ou ONNX) em vez de um fluxo completo de deep learning em JVM, essas bibliotecas de runtime enfatizam a execução em seus ecossistemas respectivos.
  • Pipelines de ML de propósito geral no Spark (sem suíte específica de deep learning para JVM): Você poderia executar pré-processamento e processamento distribuído no Spark e depender de outros componentes de execução de modelos, mas montaria mais partes sozinho em comparação com uma pilha integrada única.
  • Bibliotecas de tensores Java estilo NumPy (sem a pilha completa de deep learning): Para matemática de tensores apenas, alternativas podem cobrir operações numéricas, mas não necessariamente incluem o grafo de deep learning, transformação de dados e peças de interoperabilidade descritas aqui.