ABAP开发者求助:TensorFlow Object Detection API谷歌云训练遇sys.maxint错误
sys.maxint错误问题 嘿,同为TensorFlow Object Detection API的学习者,我太懂这种本地跑的好好的,一上云就翻车的痛苦了!你遇到的module 'sys' has no attribute 'maxint'问题其实很好定位——这是Python版本不兼容的典型症状:sys.maxint是Python 2.x的专属属性,到了Python 3.x里已经被sys.maxsize取代了。
为什么本地没问题但GCP会报错?
你本地用的是Python 3.6.3,代码里的依赖已经适配了Python 3;但GCP的训练环境可能默认启用了Python 2,或者你用的浣熊数据集配套脚本里还留着Python 2的遗留代码,一到云环境就触发了兼容性问题。
给你几个落地的解决步骤:
强制GCP使用Python 3环境
提交训练作业时,一定要在命令里明确指定Python版本,比如用gcloud ai-platform jobs submit training命令时加上--python-version 3.6(和你本地版本一致最稳妥),避免GCP默认用Python 2启动作业。批量替换代码里的
sys.maxint
翻一遍你的训练脚本、自定义预处理代码,甚至是数据集自带的辅助脚本,把所有出现sys.maxint的地方改成sys.maxsize。如果是第三方库的问题,优先升级到支持Python 3的版本;要是没法升级,就在代码开头加一段兼容逻辑:import sys # 兼容Python 2/3的maxint定义 MAX_INT = sys.maxsize if sys.version_info >= (3, 0) else sys.maxint对齐本地和GCP的TensorFlow版本
你本地用的是TensorFlow 1.5.0,GCP默认可能装的是更高版本的TF,虽然高版本兼容性更好,但版本差异也可能引发奇怪问题。建议在训练目录里放个requirements.txt,写上tensorflow==1.5.0,让GCP严格按照你本地的环境来安装依赖。简化GCP的训练配置(可选)
你现在用的是scaleTier: CUSTOM配置,要是只是单GPU训练的话,其实可以直接用scaleTier: STANDARD_GPU,让GCP自动帮你配置合理的worker和参数服务器,减少自定义配置可能带来的环境适配问题。
另外提一句,浣熊数据集的教程有点年头了,里面的代码可能还留着Python 2的痕迹,仔细排查一遍准没错!
内容的提问来源于stack exchange,提问作者dong renyi

