1
votes

Est-il possible de paralléliser les prétraitements avec tensorflow-transform sur ma machine?

Mon code est largement inspiré de https://github.com /tensorflow/transform/blob/master/examples/census_example.py

J'ai un pipeline de faisceaux qui fonctionne sur des ensembles de données plus petits (<100Mo) mais le temps de traitement augmente considérablement à mesure que j'ajoute plus de données. Étant nouveau dans tf-transform et apache Beam, j'ai du mal à trouver les causes et les solutions au problème ... Et j'aimerais éviter d'utiliser google DataFlow.

Mon pipeline s'exécute localement en utilisant beam directRunner, si j'ai bien compris, mais il n'utilise qu'un seul noyau. L'utilisation de plusieurs cœurs pourrait être un moyen d'améliorer mon temps de prétraitement, mais je ne sais pas si cela est possible avec le faisceau directRunner. Existe-t-il un moyen d'exécuter un pipeline de transformation tensorflow sur plusieurs cœurs sur ma machine?

J'ai regardé dans les options du pipeline de faisceau et du directRunner, et je ne trouve aucune indication sur le fait de laisser un coureur accéder à plusieurs cœurs ou de créer plusieurs directRunners pour un pipeline.

Merci beaucoup pour toute aide que je pourrais obtenir!


0 commentaires

3 Réponses :


0
votes

Je ne pense pas que ce soit pris en charge. L'objectif principal de Direct Runner est de s'assurer que le pipeline implémente correctement le modèle Beam. Il n'est pas optimisé pour une utilisation en production et introduira probablement des inefficacités: https: // beam. apache.org/documentation/runners/direct/

Pour contourner ce problème, vous pouvez démarrer manuellement plusieurs pipelines d'exécution directe pour traiter différentes parties de données.

La meilleure option serait d'utiliser un exécuteur parallèle réel pour exécuter ces types de tâches, par exemple vous pouvez lancer un cluster Flink: https://beam.apache.org/documentation/runners / flink /


0 commentaires


0
votes

@Ankur @Anton Merci pour vos réponses, je suis d'accord que cette approche n'est pas favorable à la production ... Nous allons essayer deux autres solutions:

  • tensorflow-transform sur DataFlow
  • en supprimant complètement le tensorflow-transform et en utilisant presto pour obtenir des fichiers de vocabulaire pour les entrées catégorielles, calculer les moyennes et les écarts-types pour mettre à l'échelle les entrées numériques, etc. sur l'ensemble de données

0 commentaires