1.15之后的Tensorflow - 无需安装tensorflow-gpu包

mon*_*mon 7 tensorflow

问题

请确认1.15之后要在TensorFlow中同时使用CPU和GPU ,安装tensorflow包就足够了,不再需要tensorflow-gpu 。

背景

仍然可以看到文章指出安装tensorflow-gpu例如pip install tensorflow-gpu==2.2.0,tensorflow-gpu 包的PyPi 存储库在最新的tensorflow-gpu 2.4.1中处于活动状态。

Annaconda 文档还引用了tensorflow-gpu 包。

TensorFlow 是一个通用的机器学习库,但在深度学习应用中最受欢迎。Anaconda 中支持三种 Tensorflow 包变体,其中之一是 NVIDIA GPU 版本。这是通过安装元包tensorflow-gpu来选择的:

然而,根据 TensorFlow v2.4.1 (as of Apr 2021) Core document GPU support - Older versions of TensorFlow

对于 1.15 及更早版本,CPU 和 GPU 包是分开的:

pip install tensorflow==1.15      # CPU
pip install tensorflow-gpu==1.15  # GPU
Run Code Online (Sandbox Code Playgroud)

根据 TensorFlow Core Guide使用 GPU。

TensorFlow 代码和 tf.keras 模型将在单个 GPU 上透明地运行,无需更改代码。

根据TensorFlow GPU vs CPU 安装库之间的差异。

只是一个快速(不必要的?)注意...从 TensorFlow 2.0 开始,这些不再是分开的,您只需安装 TensorFlow(因为如果您安装了适当的卡/CUDA,这包括 GPU 支持)。

因此,希望明确确认tensorflow-gpu包只是为了方便(指定了tensorflow-gpu等的遗留脚本),不再需要。现在tensorflow和tensorflow-gpu包之间没有区别。

M.I*_*nat 9

这里对包命名感到困惑是合理的。然而,这是我的理解。对于tf 1.15或更早的,CPU和GPU包是分开的:

pip install tensorflow==1.15      # CPU
pip install tensorflow-gpu==1.15  # GPU
Run Code Online (Sandbox Code Playgroud)

因此,如果我想完全处理 的CPU版本tf,我会使用第一个命令,否则,如果我想完全处理 的GPU版本tf,我会使用第二个命令。


现在,在上面tf 2.0或上面,我们只需要一个可以方便地在两种硬件上工作的命令。因此,在基于CPU和GPU的系统中,我们需要相同的命令来安装tf,那就是:

pip install tensorflow
Run Code Online (Sandbox Code Playgroud)

现在,我们可以在基础系统上测试它CPU(否 GPU)

import tensorflow as tf 
print(tf.__version__)

print('1: ', tf.config.list_physical_devices('GPU'))
print('2: ', tf.test.is_built_with_cuda)
print('3: ', tf.test.gpu_device_name())
print('4: ', tf.config.get_visible_devices())

2.4.1
1:  []
2:  <function is_built_with_cuda at 0x7f2ce91415f0>
3:  
4:  [PhysicalDevice(name='/physical_device:CPU:0', device_type='CPU')]
Run Code Online (Sandbox Code Playgroud)

或者也在一个基础系统上测试它CPU(使用 GPU)

2.4.1
1:  [PhysicalDevice(name='/physical_device:GPU:0', device_type='GPU')]
2:  <function is_built_with_cuda at 0x7fb6affd0560>
3:  /device:GPU:0
4:  [PhysicalDevice(name='/physical_device:CPU:0', device_type='CPU'),
     PhysicalDevice(name='/physical_device:GPU:0', device_type='GPU')]
Run Code Online (Sandbox Code Playgroud)

因此,正如您所看到的,这只是针对CPU和GPU情况的单个命令。希望现在更清楚了。但到目前为止(在tf > = 2)我们还可以-gpu / -cpu在安装时使用 postfix tf,分别巧妙地使用GPU/ CPU。

!pip install tensorflow-gpu 
....
Installing collected packages: tensorflow-gpu
Successfully installed tensorflow-gpu-2.4.1

# -------------------------------------------------------------

!pip install tensorflow-cpu
....
Installing collected packages: tensorflow-cpu
Successfully installed tensorflow-cpu-2.4.1
Run Code Online (Sandbox Code Playgroud)

检查:tf-team 的类似回应。

  • 我提出了一个与此相关的问题来确认,我认为[回应](https://github.com/tensorflow/tensorflow/issues/48640#issuecomment-825064981)是有说服力的。 (4认同)