遵循TensorFlow官方仓库牛津宠物数据集云分布式训练教程遇远程错误
解决TensorFlow官方Models仓库GCP分布式训练(牛津-IIIT宠物数据集)的Python2.7报错问题
嘿,我之前跟着这个官方教程操作时也踩过几乎一模一样的坑!看你给出的报错Traceback开头是Python2.7的runpy.py调用栈,这基本可以确定是Python版本不兼容导致的——毕竟TensorFlow早在几年前就停止对Python2的支持了,官方的Object Detection分布式训练教程现在完全是基于Python3.x环境的。
可能的问题根源
- 你的GCP实例默认使用了Python2.7,但TensorFlow Object Detection API要求Python3.6及以上版本(推荐3.8/3.9,和主流TensorFlow版本匹配)
- 启动训练脚本时没有指定Python3,系统自动用了Python2来执行,导致依赖完全不匹配
具体修复步骤
切换到Python3环境并创建虚拟环境
先在GCP实例终端里检查Python3版本:python3 --version如果版本低于3.6,先安装合适的版本(比如3.8):
sudo apt-get update && sudo apt-get install python3.8 python3.8-venv然后创建并激活专属的虚拟环境,避免和系统环境冲突:
python3.8 -m venv tf_od_dist_env source tf_od_dist_env/bin/activate激活后终端会显示
(tf_od_dist_env),说明已经进入正确的环境了。重新安装适配的依赖
在虚拟环境里安装和教程匹配的TensorFlow版本(比如2.10.x,这是官方教程常用的稳定版本):pip install tensorflow==2.10.0接着重新安装Object Detection API的所有依赖:
pip install --upgrade pip pip install pillow lxml matplotlib opencv-python别忘了重新编译protobuf文件(这一步很容易被忽略):
cd models/research protoc object_detection/protos/*.proto --python_out=.用Python3启动训练脚本
之前的错误就是因为用Python2执行了脚本,所以启动分布式训练时一定要明确指定python3,比如官方教程里的训练命令要改成这样:python3 object_detection/model_main_tf2.py \ --pipeline_config_path=${PIPELINE_CONFIG_PATH} \ --model_dir=${MODEL_DIR} \ --num_train_steps=${NUM_TRAIN_STEPS} \ --alsologtostderr \ --distribution_strategy=multi_worker_mirrored
如果做完这些还是有问题,可以再检查下GCP集群的节点配置是否一致,以及是否给实例分配了足够的GPU资源,但从你给出的报错信息来看,解决Python版本问题应该就能搞定大部分问题了。
内容的提问来源于stack exchange,提问作者Andrew
相关产品推荐
相关产品推荐

