Utilizzo di altri framework ML in TFX

TFX come piattaforma è neutrale rispetto al framework e può essere utilizzato con altri framework ML, ad esempio JAX, scikit-learn.

Per gli sviluppatori di modelli, ciò significa che non hanno bisogno di riscrivere il codice del modello implementato in un altro framework ML, ma possono invece riutilizzare la maggior parte del codice di training così com'è in TFX e beneficiare di altre funzionalità di TFX e del resto dell'ecosistema TensorFlow. offerte.

L'SDK della pipeline TFX e la maggior parte dei moduli in TFX, ad esempio l'orchestratore della pipeline, non hanno alcuna dipendenza diretta da TensorFlow, ma ci sono alcuni aspetti orientati verso TensorFlow, come i formati dei dati. Tenendo in considerazione le esigenze di un particolare framework di modellazione, una pipeline TFX può essere utilizzata per addestrare modelli in qualsiasi altro framework ML basato su Python. Ciò include Scikit-learn, XGBoost e PyTorch, tra gli altri. Alcune delle considerazioni per l'utilizzo dei componenti TFX standard con altri framework includono:

  • EsempioGen restituisce tf.train.Example nei file TFRecord. È una rappresentazione generica per i dati di training e i componenti downstream utilizzano TFXIO per leggerli come Arrow/RecordBatch in memoria, che possono essere ulteriormente convertiti in tf.dataset , Tensors o altri formati. Vengono presi in considerazione formati di payload/file diversi da tf.train.Example/TFRecord, ma per gli utenti TFXIO dovrebbe essere una scatola nera.
  • La trasformazione può essere utilizzata per generare esempi di formazione trasformati indipendentemente dal framework utilizzato per la formazione, ma se il formato del modello non è saved_model , gli utenti non saranno in grado di incorporare il grafico di trasformazione nel modello. In tal caso, la previsione del modello deve prendere funzionalità trasformate anziché funzionalità grezze e gli utenti possono eseguire la trasformazione come passaggio di preelaborazione prima di chiamare la previsione del modello durante la pubblicazione.
  • Trainer supporta GenericTraining in modo che gli utenti possano addestrare i propri modelli utilizzando qualsiasi framework ML.
  • Per impostazione predefinita, l'Evaluator supporta solo saved_model , ma gli utenti possono fornire una UDF che genera previsioni per la valutazione del modello.

L'addestramento di un modello in un framework non basato su Python richiederà l'isolamento di un componente di addestramento personalizzato in un contenitore Docker, come parte di una pipeline in esecuzione in un ambiente containerizzato come Kubernetes.

JAX

JAX è Autograd e XLA, riuniti per la ricerca sul machine learning ad alte prestazioni. Flax è una libreria di rete neurale e un ecosistema per JAX, progettato per la flessibilità.

Con jax2tf , siamo in grado di convertire modelli JAX/Flax addestrati nel formato saved_model , che può essere utilizzato senza problemi in TFX con formazione generica e valutazione del modello. Per i dettagli, controlla questo esempio .

scikit-impara

Scikit-learn è una libreria di apprendimento automatico per il linguaggio di programmazione Python. Abbiamo un esempio e2e con formazione e valutazione personalizzate in TFX-Addons.