web-dev-qa-db-fra.com

TensorFlow sur Linux 32 bits?

Existe-t-il une version de TensorFlow pour Linux 32 bits? Je ne vois que la roue 64 bits disponible et je n'ai rien trouvé à ce sujet sur le site.

26
Jonathon Byrd

Nous avons testé la distribution TensorFlow uniquement sur Linux 64 bits et Mac OS X, et nous distribuons des packages binaires uniquement pour ces plateformes. Essayez de suivre les instructions d'installation source pour créer une version pour votre plateforme.

EDIT: Un utilisateur a publié instructions pour exécuter TensorFlow sur un 32 bits ARM processeur =, ce qui est prometteur pour d'autres architectures 32 bits. Ces instructions peuvent avoir des pointeurs utiles pour faire fonctionner TensorFlow et Bazel dans un environnement 32 bits.

25
mrry

J'ai construit une version CPU uniquement de TensorFlow sur Ubuntu 32 bits (16.04.1 Xubuntu). Cela s'est passé beaucoup plus facilement que prévu, pour une bibliothèque aussi complexe qui ne prend pas officiellement en charge les architectures 32 bits.

Cela peut être fait en suivant un sous-ensemble de l'intersection de ces deux guides:

Si je n'ai rien oublié, voici les étapes que j'ai suivies:

  1. Installez Oracle Java 8 JDK:

    $ Sudo apt-get remove icedtea-8-plugin  #This is just in case
    $ Sudo add-apt-repository ppa:webupd8team/Java
    $ Sudo apt-get update
    $ Sudo apt-get install Oracle-Java8-installer
    

(C'est tout ce dont vous avez besoin dans une installation vierge de Xubuntu, mais recherchez les mots-clés ci-dessus dans le cas contraire, pour en savoir plus sur la sélection d'un JRE par défaut et javac.)

  1. Dépendances:

    Sudo apt-get update
    Sudo apt-get install git Zip unzip swig python-numpy python-dev python-pip python-wheel
    pip install --upgrade pip
    
  2. En suivant les instructions fournies avec Bazel , téléchargez un Zip source Bazel (j'ai obtenu bazel-0.4.3-dist.Zip), créez un répertoire comme ~/tf/bazel/ et décompressez-le ici.

  3. J'obtenais un OutOfMemoryError lors de la construction suivante, mais ce correctif s'en est occupé (c'est-à-dire en ajoutant le -J-Xmx512m pour la version bootstrap build).

  4. Appel bash ./compile.sh, et attendez longtemps (du jour au lendemain pour moi, mais voyez les remarques à la fin).

  5. $ git clone -b r0.12 https://github.com/tensorflow/tensorflow

  6. Cela semble être la seule modification du code source qui était nécessaire!

    $ cd tensorflow
    $ grep -Rl "lib64"| xargs sed -i 's/lib64/lib/g'
    
  7. Ensuite $ ./configure et dire non à tout. (Acceptez les valeurs par défaut, le cas échéant.)

  8. Ce qui suit a pris quelques heures avec ma configuration:

    $ bazel build -c opt --jobs 1 --local_resources 1024,0.5,1.0 --verbose_failures //tensorflow/tools/pip_package:build_pip_package
    $ bazel-bin/tensorflow/tools/pip_package/build_pip_package /tmp/tensorflow_pkg
    $ pip install --user /tmp/tensorflow_pkg/ten<Press TAB here>
    

Pour voir qu'il est installé, voyez s'il fonctionne sur le TensorFlow Beginners tutorial . J'utilise jupyter qtconsole (c'est-à-dire le nouveau nom d'IPython). Exécutez le code dans le mnist_softmax.py. Cela devrait prendre peu de temps, même sur des machines très limitées.

Pour une raison quelconque, le guide de TensorFlow pour construire à partir de la source ne suggère pas exécuter les tests unitaires :

$ bazel test //tensorflow/...

(Oui, tapez les ellipses.)

Bien que je ne puisse pas les exécuter, il a fallu 19 heures pour essayer de lier libtensorflow_cc.so, puis quelque chose a tué l'éditeur de liens. C'était avec un demi-cœur et une limite de mémoire de 1536 Mo. Peut-être que quelqu'un d'autre, avec une machine plus grande, peut rendre compte du déroulement des tests unitaires.

Pourquoi n'avons-nous pas dû faire les autres choses mentionnées dans ces deux procédures pas à pas? Premièrement, la majeure partie de ce travail consiste à prendre soin de l'interface GPU. Deuxièmement, Bazel et TensorFlow sont devenus plus autonomes depuis la rédaction de la première de ces procédures pas à pas.

Notez que les paramètres ci-dessus fournis à Bazel pour la construction sont très conservateurs (1024 Mo de RAM, un demi-cœur, un travail à la fois), car je l'exécute via VirtualBox en utilisant un seul cœur d'un netbook de 200 $ du type qui Intel fait pour les enfants défavorisés au Venezuela, au Pakistan et au Nigéria. (Au fait, si vous faites cela, assurez-vous que le disque dur virtuel est au minimum de 20 Go - essayer de construire les tests unitaires ci-dessus a pris environ 5 Go d'espace.) La construction de la roue a pris près de 20 heures et la modeste CNN profond de le deuxième tutoriel , qui est censé prendre jusqu'à une demi-heure pour fonctionner sur les processeurs de bureau modernes, prend environ 80 heures sous cette configuration. On peut se demander pourquoi je n'ai pas de bureau, mais la vérité est que la formation réelle avec TensorFlow n'a de sens que sur un GPU haut de gamme (ou un tas de ceux-ci), et quand nous pouvons embaucher une instance spot AWS avec un tel GPU pour environ 10 cents de l'heure sans engagement et sur une base ad hoc réalisable, cela n'a pas beaucoup de sens de s'entraîner ailleurs. L'accélération de 480000% est vraiment perceptible. D'un autre côté, la commodité d'avoir une installation locale vaut bien de passer par un processus tel que ci-dessus.

9
Evgeni Sergeev

Il semble que Google ne prend pas encore en charge tensorflow sur les machines 32 bits.

Sur une machine 32 bits exécutant Centos 6.5, l'erreur suivante est reçue après la commande "import tensorflow as tf": ImportError: tensorflow/python/_pywrap_tensorflow.so: mauvaise classe ELF: ELFCLASS64

Jusqu'à ce que Google distribue une version 32 bits de tensorflow, je recommande également de construire tensorflow à partir de la source comme spécifié ici .

1
dlk5730