Skip to content

Instantly share code, notes, and snippets.

@notoraptor
Last active February 1, 2017 16:54
Show Gist options
  • Save notoraptor/ec67e03e7bb311b836e0e351a41b4505 to your computer and use it in GitHub Desktop.
Save notoraptor/ec67e03e7bb311b836e0e351a41b4505 to your computer and use it in GitHub Desktop.

Proposition d'un nouveau plan pour la documentation de Windows:

Le plan est fortement calqué sur les docs d'installation pour Ubuntu/MacOS dans theano_dev: http://deeplearning.net/software/theano_versions/dev/install_ubuntu.html :

Requirements:

  • ( même contenu que pour la doc Ubuntu dans cette section: )
    • Préciser que "We only support the installation of the requirements through conda." (comme dans la doc ubuntu).
    • Liste des dépendances requises.
    • Liste des dépendances optionnelles.
  • Requirements installation through conda (recommended)
    • Instructions pour installer la plupart les dépendances via conda.
  • Install and configure the GPU drivers (recommended)
    • NVIDIA CUDA
      • NB: la version CUDA 8 s'installe même en l'absence de Microsoft Visual Studio sur ma machine (il faut cocher une case pour forcer l'installation). L'installateur ajoute automatiquement à la variable PATH le dossier contenant nvcc + les DLLs.
    • NVIDIA cuDNN
      • (pas encore essayé, je dois encore faire des tests ici)
      • NB: Les autres docs ne mentionnent pas cuDNN. Faut-il le faire ici ?

Installation of Theano and libgpuarray:

  • Stable installation
    • via conda
      • theano
        • conda install theano
      • libgpuarray
        • conda install pygpu
    • via pip
      • theano
        • pip install <--user> Theano[test, doc] # syntaxe dans la doc ubuntu
      • Libgpuarray : repris depuis la doc ubuntu:
        • Utiliser la version v-9998 de libgpuarray
        • Mêmes instructions que pour la doc ubuntu ?
  • Bleeding-edge (recommended)
  • Developer installation
    • theano
      • ...
      • pip install <--user> <--no-deps> -e .
    • libgpuarray
      • Suivres les instructions de la page d'installation de libgpuarray

Configure libgpuarray after installation

  • Indiquer comment s'assurer que les headers (ex. <gpuarray/array.h>) et la bibliothèque statique (gpuarray.lib) de libgpuarray soient accessibles à Theano pour la compilation des codes qui en dépendent.
  • NB: À ce sujet, avec conda install pygpu, il semble que Theano ne sait toujours pas où trouver les headers et la lib de libgpuarray sur Windows. Sur ma machine je suis obligé d'indiquer manuellement les dossiers dans des variables d'environnement particulières, et les dossiers en question sont dans le dossier de l'environnement conda utilisé (donc pas évident à trouver!). Je ne sais pas si c'est un problème spécifique à ma machine.
Remarques:
  • La doc windows actuelle recommande l'installation de Microsoft Visual C++ Compiler for Python 2.7. Je ne sais pas si c'est vraiment nécessaire pour Theano, par contre ça peut l'être pour ceux qui voudraient compiler libgpuarray sur Windows, mais ce n'est pas censé être décrit sur cette page.
  • La doc windows actuelle propose plusieurs distributions Python comme alternatives à conda (winpython, EPD, Canopy, Python(x,y)) ainsi que des instructions pour une installation manuelle de theano pour ceux qui utilisent la distribution officielle de Python. Je ne sais pas s'il faut conserver tout ceci dans la nouvelle documentation. Ou bien on propose une description générale, à adapter à la distribution Python de l'utilisateur:
    • « Chercher les dépendances nécessaires dans les dépôts de la distribution: soit utiliser le gestionnaire de paquets fourni, soit passer par pip s'il est installé avec la distribution. La liste des dépendances à chercher est celle indiquée au tout début de la doc (à part les dépendances pour le GPU, c'est-à-dire cuda + cudnn + libgpuarray + pygpu) »
    • « Si la distribution fournit un paquet GCC avec une version suffisante (voir la version recommandée au début de la doc), l'installer, sinon on peut proposer des instructions pour installer TDM-GCC comme dans la doc actuelle. »
    • « Les instructions pour CUDA + CUDNN sont les mêmes que précédemment. »
    • « Les instructions pour libgpuarray + pygpu sont celles de la page d'installation de libgpuarray (donc l'utilisateur devra recompiler lui-même ces deux modules). »
      • NB: Est-ce possible de fournir une version précompilée de libgpuarray + pygpu pour windows ?
    • « Les instructions pour configurer libgpuarray sont les mêmes que précédemment. »
@lamblin
Copy link

lamblin commented Feb 1, 2017

Merci, ça semble être bon pour le plan général. Je vais essayer de répondre aux questions principales.

NB: Les autres docs ne mentionnent pas cuDNN. Faut-il le faire ici ?

Je pense qu'il faudrait rajouter cuDNN comme "dépendance optionnelle" sous CUDA dans toutes les documentations, mais ça peut être fait à part. Je ne pense pas qu'il faille le mettre juste dans les instructions Windows pour le moment.

Stable installation / via conda

Il faudra peut-être mettre l'installation de theano et pygpu sur la même ligne pour être sûr qu'il installe des versions compatibles. Ou peut-être indiquer pygpu==6 ou quelque chose comme ça. À voir avec @abergeron, qui sait mieux que moi quels changements incompatibles risquent d'être ajoutés à libgpuarray.

Utiliser la version v-9998 de libgpuarray

Ça va être une autre version maintenant, v0.6.0. En fait, il faudra faire la mise à jour pour les instructions de tous les OS.

Configure libgpuarray after installation

À vérifier avec @abergeron. Idéalement, l'utilisateur ne devrait pas avoir à fouiller pour trouver les chemins des headers.

La doc windows actuelle recommande l'installation de Microsoft Visual C++ Compiler for Python 2.7

C'était nécessaire pour compiler le vieux back-end et les Ops qui en dépendaient, pour python 2.7, mais ce n'est plus le cas avec le nouveau back-end. J'enlèverais ça des instructions.

NB: Est-ce possible de fournir une version précompilée de libgpuarray + pygpu pour windows ?

Pas facilement, il me semble, c'est pour ça qu'on a opté pour un package conda.

Ou bien on propose une description générale, à adapter à la distribution Python de l'utilisateur

J'aime bien cette idée, tant qu'on met bien "(not recommended)" ou "(not officially supported)".

@abergeron
Copy link

Sur Windows malheureusement, il n'y a pas d'endroit standard pour des headers ou des libraries alors on est obligé de laisser l'utilisateur se débrouiller avec ça.

Si on garde la politique de faire des mises à jour de Theano lors de changements majeurs à libgpuarray, alors il ne devrait pas être nécessaire de faire quoi que ce soit. Aussi je peux difficilement prévoir le futur. Il y a les changements pour disk_cache qui vont peut-être demander une adaptation dans Theano, mais c'est tout ce que je peux voir.

Anaconda ajoute des endroits désignés et le pacakge installe ses trucs là. Normalement Theano devrait trouver ça tout seul. Si ça n'arrive pas, je ne sais pas trop quoi faire.

On a toujours besoin de C++ for python 2.7 si on veut compiler libgpuarray manuellement. Mais une fois que c'est fait on en a plus besoin pour Theano c'est vrai.

Il devrait être possible de faire compiler libgpuarray sur quelque chose comme AppVeyor et de distribuer la version compilée. Je n'ai pas encore eu le temps d'arranger ça.

@olimastro
Copy link

La doc windows actuelle propose plusieurs distributions Python comme alternatives à conda (winpython, EPD, Canopy, Python(x,y)) ainsi que des instructions pour une installation manuelle de theano pour ceux qui utilisent la distribution officielle de Python. Je ne sais pas s'il faut conserver tout ceci dans la nouvelle documentation. Ou bien on propose une description générale, à adapter à la distribution Python de l'utilisateur:

La ligne directrice quand nous avons refait la doc d'installation était de ne pas s'embourber dans toutes les variations possibles et inimaginables. La plupart des utilisateurs ne vont pas lire les lignes et vont chercher à faire du copier coller de commande jusqu'à ce que ça marche. Je ne garderais que des instructions pour la manière officiellement supportée.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment