目录

    前面写过一篇文档,如何在 CentOS 安装 GPU 驱动 ,这篇就来看看怎么利用 Docker 运行 Tensorflow 。

    1. 检查当前 CPU 支持的 Tensorflow 版本

    在不支持 AVX 指令的 CPU 上,运行 Tensorflow > 1.15 版本时,会报错,Illegal instruction (core dumped)

    执行检测命令:

    cat /proc/cpuinfo | grep avx
    
    flags        : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush mmx fxsr sse sse2 syscall nx rdtscp lm constant_tsc rep_good nopl xtopology eagerfpu pni pclmulqdq ssse3 fma cx16 pcid sse4_1 sse4_2 x2apic movbe popcnt tsc_deadline_timer aes xsave avx f16c rdrand hypervisor lahf_lm abm 3dnowprefetch fsgsbase bmi1 hle avx2 smep bmi2 erms invpcid rtm rdseed adx smap xsaveopt arat
    

    如果有查询结果,说明支持。常见的 CPU 体系结构 SandyBridge, IvyBridge, Haswell, Broadwell, Skylake, CasecadeLake 都支持 AVX 指令,除了 Westmere 。

    2. GPU\CPU 模式运行

    使用如下脚本查看运行环境中的设备:

    from tensorflow.python.client import device_lib
    device_lib.list_local_devices()
    

    分别起两个版本的 Jupyter 。

    • GPU
    mkdir ~/notebooks
    docker run --name tf-gpu -d --runtime=nvidia --rm -it -v $(realpath ~/notebooks):/tf/notebooks -p 8881:8888 tensorflow/tensorflow:latest-gpu-jupyter
    

    查看登录秘钥,返回的 token 值为登录秘钥。

    docker exec -it tf-gpu cat /root/.local/share/jupyter/runtime/nbserver-1-open.html
    
    <!DOCTYPE html>
    <p>
        This page should redirect you to Jupyter Notebook. If it doesn't,
        <a href="http://0.0.0.0:8888/tree?token={{token}}">click here to go to Jupyter</a>.
    </p>
    
    </body>
    

    • CPU
    mkdir ~/notebooks
    docker run --name tf-cpu -d --rm -it -v $(realpath ~/notebooks):/tf/notebooks -p 8882:8888 tensorflow/tensorflow:latest-jupyter
    

    查看登录秘钥,返回的 token 值为登录秘钥。

    docker exec -it tf-cpu cat /root/.local/share/jupyter/runtime/nbserver-1-open.html
    
    <!DOCTYPE html>
    <p>
        This page should redirect you to Jupyter Notebook. If it doesn't,
        <a href="http://0.0.0.0:8888/tree?token={{token}}">click here to go to Jupyter</a>.
    </p>
    
    </body>
    

    3. 参考链接