Instalando o Tensorflow no CentOS 6.9 (problema GCC, GLIBC e binutils)

1

Eu tenho tido um tremendo problema ao instalar o Tensorflow no CentOS 6.9.

Eu tentei seguir as instruções de instalação do Tensorflow no CentOS usando o Anaconda3 (naturalmente para Python 3, Python 3.5.3 para ser exato). A maioria dos pacotes instalados corretamente, exceto o Tensorflow. Eu tive que atualizar a versão do GCC de 4.4.7 para 6.3.0 para instalação de alguns pacotes, mas ainda diz 4.4.7 na tela do Python.

De qualquer forma, eu instalei o Tensorflow de acordo com a instrução, simplesmente não consegui usá-lo porque ele envia essa mensagem ImportError: /lib64/libc.so.6: version 'GLIBC_2.14' not found (required by /home/k/anaconda3/envs/h/lib/python3.5/site-packages/tensorflow/python/_pywrap_tensorflow.so) .

Então eu tentei atualizar o GLIBC para ser mais novo que o 2.14, então atualizei o binutils para o 2.25 porque o binutils 2.20 não executaria a configuração para um dos arquivos GLIBC mais novos. No entanto, eu encontrei outro problema durante a configuração do GLIBC que estava desatualizado versão do Linux. Foi necessário o Linux 3.2.0, quando eu tenho o Linux 2.6.

Esta é a minha restrição.

  • Não consigo alterar a versão do Linux. É uma máquina servidora, e eu tenho que estar no CentOS 6.9 Linux.

Estas são as perguntas que quero fazer a todos:

  1. Adoraria mudar minha versão do GCC de 6.3.0 para algo entre 5.0 ~ 5.2, porque aparentemente o CUDA 8.0 não suporta a versão do GCC após 5.3.1. Quando eu digito gcc --version , vejo o GCC Versão 6.3.0, mas quando chego no python 3, ele me mostra [GCC 4.4.7 20120313 (Red Hat 4.4.7-1)] on linux . Como devo fazer isso?

  2. Eu quero atualizar meu GLIBC para que ele execute o Tensorflow na minha plataforma. Eu acredito que a versão GLIBC que eu preciso superar é GLIBC_2.14, mas não tenho certeza se isso seria suficiente para executar o Tensorflow. Por favor, ajude-me a atualizar o GLIBC para que eu possa executar o Tensorflow no meu servidor.

  3. Para realizar as tarefas acima, que pacote binutil eu preciso ter? Eu baixei o devtools-4-binutils para ter os últimos pacotes binutils, mas eu tenho medo que o pacote mais recente possa não estar em sincronia com a versão 2.6 do Linux.

  4. Se nada disso funcionar, você poderia me dizer como restaurar o GCC para a versão de fábrica do 4.4.7 e binutils para o 2.20? Se eu puder reverter todas as modificações que apliquei na máquina, acredito que poderei instalar a versão do GCC < 5.3.1 e configurar o GLIBC mais recente para a instalação do Tensorflow.

por HOON 27.06.2017 / 00:58

1 resposta

1

Eu tive que reconstruir o pacote tensorflow pip a partir do código-fonte para fazê-lo funcionar no CentOS 6 porque há algum problema fundamental com o pacote pip padrão e qual glibc foi usada para construí-lo para o CentOS6. Aqui está uma nota que eu fiz dela. (Note que fiz isso há um mês)

  1. faça o download do bazel-4.5-dist.zip e siga estas etapas para instalar, as versões mais novas do bazel não funcionam a partir de 2017-09-04

    ~$ cd  
    ~$ wget https://github.com/bazelbuild/bazel/releases/download/0.4.5/bazel-0.4.5-dist.zip  
    ~$ cd /usr/src  
    ~$ mkdir bazel-0.4.5-dist.zip  
    ~$ cd bazel-0.4.5-dist  
    ~# mv ~/bazel-0.4.5-dist.zip ./  
    ~# unzip bazel-0.4.5-dist.zip  
    ~# ./compile.sh
    
  2. Modifique ~ / .bashrc para ativar o devtoolset-2 em vez do devtoolset-6. O Tensorflow não irá compilar com o gcc mais recente, apenas até o gcc 4

    em ~ / .bashrc

    source /opt/rh/devtoolset-2/enable
    #source /opt/rh/devtoolset-6/enable
    
  3. Clone tensorflow em / usr / src

    ~$ cd /usr/src  
    ~# git clone https://github.com/tensorflow/tensorflow
    
  4. Configure o tensorflow

    ~$ cd tensorflow  
    ~# ./configure
    

Selecione "Não" para todas as opções de suporte, exceto CUDA. Todo o resto deve ser padrão

  1. vá para / usr / src / tensorflow / third_party / gpus / crosstool modifique CROSSTOOL_clang.tpl e CROSSTOOL_nvcc.tpl adicione a seguinte linha à seção "toolchain"

    linker_flag : "-B/opt/rh/devtoolset-2/root/usr/bin"
    
  2. Build tensorflow

    ~$ cd /usr/src/tensorflow  
    ~# bazel build --config=opt --config=cuda //tensorflow/tools/pip_package:build_pip_package
    
  3. Criar pacote pip

    ~# bazel-bin/tensorflow/tools/pip_package/build_pip_package /tmp/tensorflow_pkg
    
  4. Instale o pacote pip customizado

    ~# sudo pip install /tmp/tensorflow_pkg/tensorflow-1.3.0-cp34-cp34m-linux_x86_64.whl
    
por 06.10.2017 / 11:12