使用 conda 从 tensorflow 1.14.0 升级到 2.2.0 时的大量包更改
Huge number of package changes when using conda to upgrade from tensorflow 1.14.0 to 2.2.0
我正在尝试在我的一个 conda 环境中更新 tensorflow。但是,每次我设置更新时,预览显示 upgraded/added/removed 的软件包数量远远超过我认为合理的数量。我想弄清楚是不是我理解错了:
包相互依赖,所以应该让一切继续,因为它很好。
我在做什么,所以需要谨慎行事,以了解我如何改变我的环境。
当我检查当前环境(即 dnn_py3
)时,我看到:
(dnn_py3) me@Home:~$ conda list
# packages in environment at /home/me/anaconda3/envs/dnn_py3:
#
# Name Version Build Channel
...
tensorboard 1.14.0 py37hf484d3e_0 anaconda
tensorflow 1.14.0 gpu_py37h4491b45_0 anaconda
tensorflow-base 1.14.0 gpu_py37h8d69cac_0 anaconda
tensorflow-estimator 1.14.0 py_0 anaconda
tensorflow-gpu 1.14.0 h0d30ee6_0 anaconda
我想升级到tensorflow 2.2.0
当我进入
(dnn_py3) me@Home:~$ conda update tensorflow-gpu
或
(dnn_py3) me@Home:~$ conda update -n dnn_py3 tensorflow-gpu
我得到了一个非常多(我认为)的下载列表、新安装列表、删除列表、替代包列表和下载列表,我在此处进行了总结:
Summary of Changes:
122 - download packages
5 - installs (none actually tensorflow !?)
24 - removals
263 - upgrades
140 - updates
我目前在我的环境中使用tensorflow 1.14,所以我不明白为什么这个升级需要做这么多。我预计只会看到 1 次升级(对于 tensorflow-gpu),可能还有少量其他更改 - 与我看到的大量提议更改完全不同。
由于我看到的与我的预期有很大的不同,我想在继续之前了解发生了什么。
发生这种情况的原因有多种。
1:依赖更新
Conda 有一个 two-stage 解决策略。首先,它试图仅通过 installing/updating 指定的包来满足用户规范。如果这在没有任何其他更改的情况下是可能的,那么它认为解决已完成并将提出这些(最小)更改。否则,将进入第二阶段求解,允许更新所有需要更改的依赖项。这是递归正确的,即依赖项的依赖项也可能更新。因此,这可能会导致许多更新。
此外,还有一个配置选项 update_dependencies,允许更新依赖链中的 所有 包,而不仅仅是那些与用户规范冲突的包.此选项的默认值为 False
,但可能值得检查它是否已关闭 (conda config —-show update_dependencies
)。
2:通道配置的变化
许多用户最终需要来自 non-default 渠道的软件包,Conda Forge 是最常见的。自 Conda Forge recommends prioritizing the conda-forge channel 以来,这通常会导致用户更改其全局频道配置。每当用户进行此类更改时,它都会有效地更改所有未来解决方案发生的上下文。特别是,每当包发生变化时,它都会尝试从更高优先级的渠道切换到构建。
OP 仅显示原始环境中来自 anaconda 通道的构建,因此改变通道优先级是肯定的。但是,在没有看到实际提议的更改的情况下,我不能肯定地说这是驱动原因。
3: Auto-Updates
conda
包和 aggressive_updates_packages
将在请求对环境进行变异操作时尝试更新。因此,这些可能会显示为未经请求的安装。但是,这可能与 OP 无关,因为此类软件包主要属于 base 环境,但 OP 清楚地表明这与 base 无关.尽管如此,我在这里列举它主要是为了完整性,因为它可能是其他用户的问题。
我会用conda来安装tensorflow。它将安装 tensorflow 2.1.0。 Tensorflow 2 可以使用或不使用 GPU。它还会安装 cuda 工具包 10.1.243 和 cudnn 7.6.5。 Conda 最多只能安装 2.1.0 版本的 tensorflow。安装版本 2.1.0 后,您可以使用 pip 安装版本 2。 tensorflow 版本 2 兼容 conda 已安装的工具包版本 10.1.243 和 cudnn 7.6.5。
我正在尝试在我的一个 conda 环境中更新 tensorflow。但是,每次我设置更新时,预览显示 upgraded/added/removed 的软件包数量远远超过我认为合理的数量。我想弄清楚是不是我理解错了:
包相互依赖,所以应该让一切继续,因为它很好。
我在做什么,所以需要谨慎行事,以了解我如何改变我的环境。
当我检查当前环境(即 dnn_py3
)时,我看到:
(dnn_py3) me@Home:~$ conda list
# packages in environment at /home/me/anaconda3/envs/dnn_py3:
#
# Name Version Build Channel
...
tensorboard 1.14.0 py37hf484d3e_0 anaconda
tensorflow 1.14.0 gpu_py37h4491b45_0 anaconda
tensorflow-base 1.14.0 gpu_py37h8d69cac_0 anaconda
tensorflow-estimator 1.14.0 py_0 anaconda
tensorflow-gpu 1.14.0 h0d30ee6_0 anaconda
我想升级到tensorflow 2.2.0
当我进入
(dnn_py3) me@Home:~$ conda update tensorflow-gpu
或
(dnn_py3) me@Home:~$ conda update -n dnn_py3 tensorflow-gpu
我得到了一个非常多(我认为)的下载列表、新安装列表、删除列表、替代包列表和下载列表,我在此处进行了总结:
Summary of Changes:
122 - download packages
5 - installs (none actually tensorflow !?)
24 - removals
263 - upgrades
140 - updates
我目前在我的环境中使用tensorflow 1.14,所以我不明白为什么这个升级需要做这么多。我预计只会看到 1 次升级(对于 tensorflow-gpu),可能还有少量其他更改 - 与我看到的大量提议更改完全不同。
由于我看到的与我的预期有很大的不同,我想在继续之前了解发生了什么。
发生这种情况的原因有多种。
1:依赖更新
Conda 有一个 two-stage 解决策略。首先,它试图仅通过 installing/updating 指定的包来满足用户规范。如果这在没有任何其他更改的情况下是可能的,那么它认为解决已完成并将提出这些(最小)更改。否则,将进入第二阶段求解,允许更新所有需要更改的依赖项。这是递归正确的,即依赖项的依赖项也可能更新。因此,这可能会导致许多更新。
此外,还有一个配置选项 update_dependencies,允许更新依赖链中的 所有 包,而不仅仅是那些与用户规范冲突的包.此选项的默认值为 False
,但可能值得检查它是否已关闭 (conda config —-show update_dependencies
)。
2:通道配置的变化
许多用户最终需要来自 non-default 渠道的软件包,Conda Forge 是最常见的。自 Conda Forge recommends prioritizing the conda-forge channel 以来,这通常会导致用户更改其全局频道配置。每当用户进行此类更改时,它都会有效地更改所有未来解决方案发生的上下文。特别是,每当包发生变化时,它都会尝试从更高优先级的渠道切换到构建。
OP 仅显示原始环境中来自 anaconda 通道的构建,因此改变通道优先级是肯定的。但是,在没有看到实际提议的更改的情况下,我不能肯定地说这是驱动原因。
3: Auto-Updates
conda
包和 aggressive_updates_packages
将在请求对环境进行变异操作时尝试更新。因此,这些可能会显示为未经请求的安装。但是,这可能与 OP 无关,因为此类软件包主要属于 base 环境,但 OP 清楚地表明这与 base 无关.尽管如此,我在这里列举它主要是为了完整性,因为它可能是其他用户的问题。
我会用conda来安装tensorflow。它将安装 tensorflow 2.1.0。 Tensorflow 2 可以使用或不使用 GPU。它还会安装 cuda 工具包 10.1.243 和 cudnn 7.6.5。 Conda 最多只能安装 2.1.0 版本的 tensorflow。安装版本 2.1.0 后,您可以使用 pip 安装版本 2。 tensorflow 版本 2 兼容 conda 已安装的工具包版本 10.1.243 和 cudnn 7.6.5。