Intelligence artificielle et apprentissage machine

From CC Doc
Jump to: navigation, search
This page is a translated version of the page AI and Machine Learning and the translation is 100% complete.

Other languages:
English • ‎français

Pour tirer le maximum de vos applications d'apprentissage machine, il faut connaître certains aspects particuliers des grappes. Ces machines sont beaucoup plus complexes que l'ordinateur local avec lequel vous faites du prototypage. Entre autres, une grappe possède des systèmes de fichiers distribués qui vont d'un type de stockage à un autre de façon transparente. Bien que l'accès à un fichier dans /project donne l'impression de se faire de la même manière que s'il était situé dans le nœud courant, sous le capot les effets sur la performance sont bien différents. Il est donc important de prendre connaissance de la section Gérer vos ensembles de données ci-dessous.

Cette page contient les bonnes pratiques dans l'utilisation des grappes et des références à de l'information utile.

Tutoriel

Si votre programme est prêt à être exécuté sur nos grappes, consultez notre tutoriel.

Python

Python est un logiciel populaire en apprentissage machine. Prenez connaissance de notre page wiki pour des renseignements importants sur les versions, les environnements virtuels, les nœuds de connexion et de calcul, le multiprocessing, Anaconda, Jupyter, etc.

Éviter Anaconda

Nous vous recommandons d'utiliser virtualenv pour éviter les problèmes suivants causés par Anaconda :

  • prend en charge la gestion des bibliothèques, ce qui devrait être réservé au personnel;
    • utilise des binaires qui ne sont pas adaptés à une architecture de CPU particulière;
  • reconnaît mal la localisation des bibliothèques;
  • s'installe par défaut dans /home et y conserve un grand nombre de fichiers, alors que des environnements virtuels sont installés sur les nœuds de calcul, autant que possible;
  • prend plus de temps à installer des paquets;
  • modifie bashrc, ce qui crée des conflits.

Dans la plupart des cas, il est facile de passer à virtualenv. Vous n'avez qu'à installer les mêmes paquets, à l'exception de CUDA, CuDNN et d'autres bibliothèques de bas niveau qui sont déjà sur nos grappes.

Information sur les paquets logiciels disponibles

Pour des renseignements sur l'installation et les problèmes fréquents, voyez la page wiki pour chacun des paquets suivants :

Gérer vos ensembles de données

Stockage et gestion de fichiers

Les besoins de nos utilisateurs sont diversifiés; nous offrons donc plusieurs solutions qui vont du stockage local temporaire haute vitesse au stockage à long terme sur différents supports. Pour plus d'information, voyez Stockage et gestion de fichiers.

Ensembles de données composés de plusieurs petits fichiers

En apprentissage machine, il est fréquent d'avoir des ensembles de données composés de centaines et même de milliers de fichiers, par exemple dans le cas des ensembles de données d'images. Chacun des fichiers peut être de petite taille, souvent en deçà de quelques centaines de kilo-octets et dans ces cas, certains problèmes peuvent survenir :

  • le système de fichiers impose un quota qui restreint le nombre de fichiers,
  • l'application est considérablement ralentie par le transfert des fichiers de /project ou /scratch vers un nœud de calcul.

Avec un système de fichiers distribué, les données devraient être rassemblées dans un seul fichier d'archive; voyez Travailler avec un grand nombre de fichiers.

Calculs de longue durée

Si vos calculs exigent beaucoup de temps, il est recommandé d'utiliser des points de contrôle (checkpoints); par exemple, plutôt que trois jours d'entraînement, vous pourriez avoir trois blocs de 24 heures chacun. De cette manière, votre travail ne serait pas perdu en cas de panne et vous pourriez bénéficier d'une meilleure priorisation de vos tâches puisqu'il y a plus de nœuds qui sont réservés pour les tâches courtes. Votre bibliothèque préférée supporte probablement les checkpoints; voyez le cas type présenté dans notre tutoriel. Si votre programme ne le permet pas, consultez la solution générique.

Exécution de plusieurs tâches similaires

Dans un des cas suivants :

  • recherche d'hyperparamètres,
  • entraînement de plusieurs variantes d'une même méthode,
  • exécution de plusieurs processus d'optimisation de même durée.

vous devriez grouper plusieurs tâches pour n'en former qu'une avec un outil comme GLOST ou GNU Parallel.

Comet.ml pour le suivi des résultats et la recherche de paramètres bayésiens

Comet.ml peut vous aider à optimiser votre allocation de calcul en

  • facilitant le suivi et l'analyse des processus d'apprentissage,
  • permettant la recherche de paramètres bayésiens.

Comet.ml n'est pas disponible présentement sur Graham.