10
votes

Programmation "embarrassant parallèle" utilisant Python et PBS sur un cluster

J'ai une fonction (modèle de réseau de neurones) qui produit des chiffres. Je souhaite tester plusieurs paramètres, méthodes et différentes entrées (ce qui signifie des centaines de courses de la fonction) de Python à l'aide de PBS sur un cluster standard avec un couple avec couple.

Note: J'ai essayé Parallarspython, Ipython et telle et n'a jamais été complètement satisfait, car Je veux quelque chose de plus simple. Le cluster est dans une configuration donnée que je ne peux pas changer et qu'une telle solution intégrant Python + QSub bénéficiera certainement à la communauté.

Pour simplifier les choses, j'ai une fonction simple telle que: < Pré> xxx

entrée est un objet représentant l'entrée, entrée.name.name. / code> est une chaîne et do_lots_number_crunching peut dernières heures.

Ma question est la suivante: Y a-t-il un moyen correct de transformer quelque chose comme une analyse de paramètres tels que xxx

dans "quelque chose" Lancer un script PBS pour chaque appel à la fonction xxx

Je pensais à une fonction qui inclurait le modèle PBS et l'appelait de Le script Python, mais ne pouvait pas encore comprendre (décorateur?).


0 commentaires

4 Réponses :


4
votes

pbs_python [1] pourrait fonctionner pour cela. Si expérimentation_model.py 'a' comme argument, vous pouvez faire xxx

[1]: https://oss.trac.surfsara.nl/pbs_python/wiki/torqueUsage pbs_python


0 commentaires

3
votes

Vous pouvez le faire facilement en utilisant Jug (que j'ai développé pour un similaire Configuration).

Vous écrivez dans le fichier (par exemple, modèle.py ): xxx

et c'est ça!

MAINTENANT Vous pouvez maintenant lancer "JUG Emplois" sur votre file d'attente: JUG Exécuter Model.py et cela parallément automatiquement. Ce qui se passe, c'est que chaque travail va dans une boucle, faire quelque chose comme: xxx

(C'est en fait plus compliqué que cela, mais vous obtenez le point).

Il utilise le système de fichiers pour le verrouillage (si vous êtes sur un système NFS) ou un serveur REDIS si vous préférez. Il peut également gérer les dépendances entre tâches.

Ce n'est pas exactement ce que vous avez demandé, mais je pense que c'est un architecture plus propre pour la séparer du système de file d'attente de travail.


0 commentaires

2
votes

On dirait que je suis un peu tardif à la fête, mais j'ai également eu la même question de savoir comment cartographier des problèmes parallèles embarrassants sur un cluster en Python il y a quelques années et écrit ma propre solution. Je l'ai récemment téléchargé à Github ici: https://github.com/pediii/pbs_util

à Écrivez votre programme avec pbs_util, je créerais d'abord un pbs_util.ini dans le répertoire de travail contenant xxx

puis un script python comme celui-ci xxx

et cela le ferait.


0 commentaires