部署后更改 Google Cloud Deep Learning VM 映像版本?
Changing the Google Cloud Deep Learning VM image version after deployment?
我使用标准的 tensorflow-gpu==1.15 映像在 Google 云上部署了深度学习 VM。不过后来发现需要tensorflow-gpu>=1.4。由于我已经在我的虚拟机实例上做了很多处理,我想知道是否可以升级镜像版本而无需部署新的虚拟机?
谢谢!
我假设你说 "if it's possible to upgrade the image version without having to deploy a new VM?"。你是说降级。
是的,可以在深度学习 VM 中降级 Tensorflow 的版本
我有运行以下测试,看看是否可行。
1) 按照 Creating a Deep Learning VM Instance From the Google Cloud Marketplace
安装深度学习 VM
SSH 进入虚拟机后
2) 在交互中检查安装的版本 python shell
>>> import tensorflow as tf
2020-03-30 11:57:03.076701: I
tensorflow/stream_executor/platform/default/dso_loader.cc:44] Successfully
opened dynamic library libcudart.so.10.1
2020-03-30 11:57:07.162626: I
tensorflow/stream_executor/platform/default/dso_loader.cc:44] Successfully
opened dynamic library libnvinfer.so.6
2020-03-30 11:57:07.222695: I
tensorflow/stream_executor/platform/default/dso_loader.cc:44] Successfully
opened dynamic library libnvinfer_plugin.so.6
>>> print(tf.__version__)
2.1.0
下一步是 运行;
pip install --upgrade tensorflow==1.14.0
命令成功但出现以下错误;
ERROR: scikit-image 0.15.0 requires pillow>=4.3.0, which is not installed.
ERROR: imageio 2.6.1 requires pillow, which is not installed.
ERROR: tensorflow-serving-api-gpu 1.14.0 has requirement tensorflow-gpu~=1.14.0, but you'll have tensorflow-gpu 2.1.0 which is incompatible.
ERROR: tensorflow-gpu 2.1.0 has requirement numpy<2.0,>=1.16.0, but you'll have numpy 1.15.4 which is incompatible.
ERROR: tensorflow-gpu 2.1.0 has requirement scipy==1.4.1; python_version >= "3", but you'll have scipy 1.1.0 which is incompatible.
ERROR: tensorflow-io 0.9.10 has requirement tensorflow==2.1.0rc0, but you'll have tensorflow 1.4.0 which is incompatible.
如您所见,这会导致依赖性问题。
接下来的步骤是;
a) pip install --upgrade pillow==4.3.0
b) pip install --upgrade tensorflow-gpu==1.14.0
正在交互式中再次检查版本 python shell
Python 3.5.3 (default, Sep 27 2018, 17:25:39)
[GCC 6.3.0 20170516] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import tensorflow as tf
/home/xxxxxxxxx/.local/lib/python3.5/site-
packages/tensorflow/python/framework/dtypes.py:516: FutureWarning: Passing
(type, 1) or '1type' as a synonym of type is deprecated; in a future version
of numpy, it will be understood as (type, (1,)) / '(1,)type'.
_np_qint8 = np.dtype([("qint8", np.int8, 1)])
/home/xxxxxxxx/.local/lib/python3.5/site-
packages/tensorflow/python/framework/dtypes.py:517: FutureWarning: Passing
(type, 1) or '1type' as a synonym of type is deprecated; in a future version
of numpy, it will be understood as (type, (1,)) / '(1,)type'.
_np_quint8 = np.dtype([("quint8", np.uint8, 1)])
/home/xxxxxxxx/.local/lib/python3.5/site-
packages/tensorflow/python/framework/dtypes.py:518: FutureWarning: Passing
(type, 1) or '1type' as a synonym of type is deprecated; in a future version
of numpy, it will be understood as (type, (1,)) / '(1,)type'.
_np_qint16 = np.dtype([("qint16", np.int16, 1)])
/home/xxxxxxx/.local/lib/python3.5/site-
packages/tensorflow/python/framework/dtypes.py:519: FutureWarning: Passing
(type, 1) or '1type' as a synonym of type is deprecated; in a future version
of numpy, it will be understood as (type, (1,)) / '(1,)type'.
_np_quint16 = np.dtype([("quint16", np.uint16, 1)])
/home/xxxxxxx/.local/lib/python3.5/site-
packages/tensorflow/python/framework/dtypes.py:520: FutureWarning: Passing
(type, 1) or '1type' as a synonym of type is deprecated; in a future version
of numpy, it will be understood as (type, (1,)) / '(1,)type'.
_np_qint32 = np.dtype([("qint32", np.int32, 1)])
/home/xxxxxxxx/.local/lib/python3.5/site-
packages/tensorflow/python/framework/dtypes.py:525: FutureWarning: Passing
(type, 1) or '1type' as a synonym of type is deprecated; in a future version
of numpy, it will be understood as (type, (1,)) / '(1,)type'.
np_resource = np.dtype([("resource", np.ubyte, 1)])
/home/xxxxxxxx/.local/lib/python3.5/site-
packages/tensorboard/compat/tensorflow_stub/dtypes.py:541: FutureWarning:
Passing (type, 1) or '1type' as a synonym of type is deprecated; in a future
version of numpy, it will be understood as (type, (1,)) / '(1,)type'.
_np_qint8 = np.dtype([("qint8", np.int8, 1)])
/home/xxxxxxx/.local/lib/python3.5/site-
packages/tensorboard/compat/tensorflow_stub/dtypes.py:542: FutureWarning:
Passing (type, 1) or '1type' as a synonym of type is deprecated; in a future
version of numpy, it will be understood as (type, (1,)) / '(1,)type'.
_np_quint8 = np.dtype([("quint8", np.uint8, 1)])
/home/xxxxxxxx/.local/lib/python3.5/site-
packages/tensorboard/compat/tensorflow_stub/dtypes.py:543: FutureWarning:
Passing (type, 1) or '1type' as a synonym of type is deprecated; in a future
version of numpy, it will be understood as (type, (1,)) / '(1,)type'.
_np_qint16 = np.dtype([("qint16", np.int16, 1)])
/home/xxxxxxxx/.local/lib/python3.5/site-
packages/tensorboard/compat/tensorflow_stub/dtypes.py:544: FutureWarning:
Passing (type, 1) or '1type' as a synonym of type is deprecated; in a future
version of numpy, it will be understood as (type, (1,)) / '(1,)type'.
_np_quint16 = np.dtype([("quint16", np.uint16, 1)])
/home/xxxxxxx/.local/lib/python3.5/site-
packages/tensorboard/compat/tensorflow_stub/dtypes.py:545: FutureWarning:
Passing (type, 1) or '1type' as a synonym of type is deprecated; in a future
version of numpy, it will be understood as (type, (1,)) / '(1,)type'.
_np_qint32 = np.dtype([("qint32", np.int32, 1)])
/home/xxxxxxxx/.local/lib/python3.5/site-
packages/tensorboard/compat/tensorflow_stub/dtypes.py:550: FutureWarning:
Passing (type, 1) or '1type' as a synonym of type is deprecated; in a future
version of numpy, it will be understood as (type, (1,)) / '(1,)type'.
np_resource = np.dtype([("resource", np.ubyte, 1)])
>>> print(tf.__version__)
1.14.0
运行"pip freeze"命令检查依赖关系;
在更改版本之前 pip 冻结输出;
"....tensorboard==2.1.0
tensorflow-datasets==1.3.0
tensorflow-estimator==2.1.0
tensorflow-gpu==2.1.0
tensorflow-hub==0.7.0
tensorflow-io==0.9.10
tensorflow-metadata==0.21.1
tensorflow-probability==0.9.0
tensorflow-serving-api-gpu==1.14.0......."
更改版本后pip冻结输出;
"....
tensorboard==1.14.0
tensorflow==1.14.0
tensorflow-datasets==1.3.0
tensorflow-estimator==1.14.0
tensorflow-gpu==1.14.0
tensorflow-hub==0.7.0
tensorflow-io==0.9.10
tensorflow-metadata==0.21.1
tensorflow-probability==0.9.0
tensorflow-serving-api-gpu==1.14.0
tensorflow-tensorboard==0.4.0...."
我使用标准的 tensorflow-gpu==1.15 映像在 Google 云上部署了深度学习 VM。不过后来发现需要tensorflow-gpu>=1.4。由于我已经在我的虚拟机实例上做了很多处理,我想知道是否可以升级镜像版本而无需部署新的虚拟机?
谢谢!
我假设你说 "if it's possible to upgrade the image version without having to deploy a new VM?"。你是说降级。
是的,可以在深度学习 VM 中降级 Tensorflow 的版本
我有运行以下测试,看看是否可行。
1) 按照 Creating a Deep Learning VM Instance From the Google Cloud Marketplace
安装深度学习 VMSSH 进入虚拟机后
2) 在交互中检查安装的版本 python shell
>>> import tensorflow as tf
2020-03-30 11:57:03.076701: I
tensorflow/stream_executor/platform/default/dso_loader.cc:44] Successfully
opened dynamic library libcudart.so.10.1
2020-03-30 11:57:07.162626: I
tensorflow/stream_executor/platform/default/dso_loader.cc:44] Successfully
opened dynamic library libnvinfer.so.6
2020-03-30 11:57:07.222695: I
tensorflow/stream_executor/platform/default/dso_loader.cc:44] Successfully
opened dynamic library libnvinfer_plugin.so.6
>>> print(tf.__version__)
2.1.0
下一步是 运行;
pip install --upgrade tensorflow==1.14.0
命令成功但出现以下错误;
ERROR: scikit-image 0.15.0 requires pillow>=4.3.0, which is not installed.
ERROR: imageio 2.6.1 requires pillow, which is not installed.
ERROR: tensorflow-serving-api-gpu 1.14.0 has requirement tensorflow-gpu~=1.14.0, but you'll have tensorflow-gpu 2.1.0 which is incompatible.
ERROR: tensorflow-gpu 2.1.0 has requirement numpy<2.0,>=1.16.0, but you'll have numpy 1.15.4 which is incompatible.
ERROR: tensorflow-gpu 2.1.0 has requirement scipy==1.4.1; python_version >= "3", but you'll have scipy 1.1.0 which is incompatible.
ERROR: tensorflow-io 0.9.10 has requirement tensorflow==2.1.0rc0, but you'll have tensorflow 1.4.0 which is incompatible.
如您所见,这会导致依赖性问题。
接下来的步骤是;
a) pip install --upgrade pillow==4.3.0
b) pip install --upgrade tensorflow-gpu==1.14.0
正在交互式中再次检查版本 python shell
Python 3.5.3 (default, Sep 27 2018, 17:25:39)
[GCC 6.3.0 20170516] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import tensorflow as tf
/home/xxxxxxxxx/.local/lib/python3.5/site-
packages/tensorflow/python/framework/dtypes.py:516: FutureWarning: Passing
(type, 1) or '1type' as a synonym of type is deprecated; in a future version
of numpy, it will be understood as (type, (1,)) / '(1,)type'.
_np_qint8 = np.dtype([("qint8", np.int8, 1)])
/home/xxxxxxxx/.local/lib/python3.5/site-
packages/tensorflow/python/framework/dtypes.py:517: FutureWarning: Passing
(type, 1) or '1type' as a synonym of type is deprecated; in a future version
of numpy, it will be understood as (type, (1,)) / '(1,)type'.
_np_quint8 = np.dtype([("quint8", np.uint8, 1)])
/home/xxxxxxxx/.local/lib/python3.5/site-
packages/tensorflow/python/framework/dtypes.py:518: FutureWarning: Passing
(type, 1) or '1type' as a synonym of type is deprecated; in a future version
of numpy, it will be understood as (type, (1,)) / '(1,)type'.
_np_qint16 = np.dtype([("qint16", np.int16, 1)])
/home/xxxxxxx/.local/lib/python3.5/site-
packages/tensorflow/python/framework/dtypes.py:519: FutureWarning: Passing
(type, 1) or '1type' as a synonym of type is deprecated; in a future version
of numpy, it will be understood as (type, (1,)) / '(1,)type'.
_np_quint16 = np.dtype([("quint16", np.uint16, 1)])
/home/xxxxxxx/.local/lib/python3.5/site-
packages/tensorflow/python/framework/dtypes.py:520: FutureWarning: Passing
(type, 1) or '1type' as a synonym of type is deprecated; in a future version
of numpy, it will be understood as (type, (1,)) / '(1,)type'.
_np_qint32 = np.dtype([("qint32", np.int32, 1)])
/home/xxxxxxxx/.local/lib/python3.5/site-
packages/tensorflow/python/framework/dtypes.py:525: FutureWarning: Passing
(type, 1) or '1type' as a synonym of type is deprecated; in a future version
of numpy, it will be understood as (type, (1,)) / '(1,)type'.
np_resource = np.dtype([("resource", np.ubyte, 1)])
/home/xxxxxxxx/.local/lib/python3.5/site-
packages/tensorboard/compat/tensorflow_stub/dtypes.py:541: FutureWarning:
Passing (type, 1) or '1type' as a synonym of type is deprecated; in a future
version of numpy, it will be understood as (type, (1,)) / '(1,)type'.
_np_qint8 = np.dtype([("qint8", np.int8, 1)])
/home/xxxxxxx/.local/lib/python3.5/site-
packages/tensorboard/compat/tensorflow_stub/dtypes.py:542: FutureWarning:
Passing (type, 1) or '1type' as a synonym of type is deprecated; in a future
version of numpy, it will be understood as (type, (1,)) / '(1,)type'.
_np_quint8 = np.dtype([("quint8", np.uint8, 1)])
/home/xxxxxxxx/.local/lib/python3.5/site-
packages/tensorboard/compat/tensorflow_stub/dtypes.py:543: FutureWarning:
Passing (type, 1) or '1type' as a synonym of type is deprecated; in a future
version of numpy, it will be understood as (type, (1,)) / '(1,)type'.
_np_qint16 = np.dtype([("qint16", np.int16, 1)])
/home/xxxxxxxx/.local/lib/python3.5/site-
packages/tensorboard/compat/tensorflow_stub/dtypes.py:544: FutureWarning:
Passing (type, 1) or '1type' as a synonym of type is deprecated; in a future
version of numpy, it will be understood as (type, (1,)) / '(1,)type'.
_np_quint16 = np.dtype([("quint16", np.uint16, 1)])
/home/xxxxxxx/.local/lib/python3.5/site-
packages/tensorboard/compat/tensorflow_stub/dtypes.py:545: FutureWarning:
Passing (type, 1) or '1type' as a synonym of type is deprecated; in a future
version of numpy, it will be understood as (type, (1,)) / '(1,)type'.
_np_qint32 = np.dtype([("qint32", np.int32, 1)])
/home/xxxxxxxx/.local/lib/python3.5/site-
packages/tensorboard/compat/tensorflow_stub/dtypes.py:550: FutureWarning:
Passing (type, 1) or '1type' as a synonym of type is deprecated; in a future
version of numpy, it will be understood as (type, (1,)) / '(1,)type'.
np_resource = np.dtype([("resource", np.ubyte, 1)])
>>> print(tf.__version__)
1.14.0
运行"pip freeze"命令检查依赖关系; 在更改版本之前 pip 冻结输出;
"....tensorboard==2.1.0
tensorflow-datasets==1.3.0
tensorflow-estimator==2.1.0
tensorflow-gpu==2.1.0
tensorflow-hub==0.7.0
tensorflow-io==0.9.10
tensorflow-metadata==0.21.1
tensorflow-probability==0.9.0
tensorflow-serving-api-gpu==1.14.0......."
更改版本后pip冻结输出;
"....
tensorboard==1.14.0
tensorflow==1.14.0
tensorflow-datasets==1.3.0
tensorflow-estimator==1.14.0
tensorflow-gpu==1.14.0
tensorflow-hub==0.7.0
tensorflow-io==0.9.10
tensorflow-metadata==0.21.1
tensorflow-probability==0.9.0
tensorflow-serving-api-gpu==1.14.0
tensorflow-tensorboard==0.4.0...."