谷歌免费GPU训练星际2AI好难?你需要份debug指南
消息来源:baojiabao.com 作者: 发布时间:2026-02-23

Root 发自 凹非寺
量子位 出品 | 公众号 QbitAI
自从去年8月10号暴雪开放了星际争霸II的人工智能API之后,数不清的AI研究者前赴后继地加入了训练星际2 AI的队伍中。
但并非所有人都舍得掏钱购买昂贵的GPU。还好,谷歌近期大发善心提供免费的云GPU,这下有更多的人可以训练星际2AI了。
那用免费的GPU训练AI会遇到哪些坑?
Reddit上有个小哥哥Franklin H.分享了这个排雷的过程,一步步引导大家如何debug。
以下是post全文:
太长不看版:如果你想用GPU硬件搭建一个免费的星际争霸II机器学习的环境,看我在谷歌Colab上的笔记:https://colab.research.google.com/drive/1AzCKV98UaQQz2aJIeGWlExcxBrpgKsIV
最近,我和几个好基友一起搞了个星际争霸II的项目。
我始终持有一个观点,就是搞机器学习研究的人,得有能力快速训练神经网络。这一点相当重要。
把代码分享出去,是相对简单的事。但我认为,对于全球训练星际争霸II AI智能体的研究群体来说,更有价值的是告诉他们,怎样用谷歌免费的GPU,在谷歌Colab跑起来星际争霸II的AI。
我就自己先动手试了一下。
没想到,下载完星际争霸II和安装上必要的数据库之后,遇到这茬:
Return代码是啥玩意儿
看来得先搞清楚Return代码是个啥。
我翻出PySC2 source看了下,找到了设置Return代码的部分。
进一步挖掘,发现poll()这一块是源自Python的subprocess模块。这说明11是终止星际争霸程序的信号。
信号11是可怕的segfault,绝对算C程序员的噩梦。
为了看问题是不是出在这,我找到了可执行的SC2,然后让它自己运行起来。
Emmm……
开启Debug的地狱模式
一般来说,我会直接打开用得最顺手的Debug工具。但这样,这篇文章就不过是个怎么用GDB的流水账了。
但,这不是在Google Colab上嘛,我们有的只是Jupyter Notebook网页。这就意味着:
没有Debugger;
没有Root许可权;
好多工具不能用,比如说Strace。
RIP debug中
当你只能用网页时……
我就试了服务器上不同版本的星际争霸II,包括暴雪提供4.0.2版本,3.17版本,和3.16.1版本。
居然!都不行!生气……
那我只能在本地Linux系统上跑星际争霸II了,毕竟这个环境我熟,有把握可以debug。这样才能验证我的猜想。
第一个可能的原因:没找到必需的数据库
刚开始我猜,星际争霸作为一个游戏,应该是要一些OpenGL里的函数以及库。而这些东西在谷歌Colab里没有。
为了验证这个假说,这次我本地运行了星际争霸II。然后用strace,记录星际争霸II的一切系统调用,所有的库都是从操作系统载入的,这样就能知道缺了什么依赖库。
这里是日志中的一个片段:
完整的日志见:https://docs.python.org/3/library/subprocess.html#subprocess.Popen.returncode
看结果,发现StarCraft II除了动态地链接到那些标准C/C++库,没做什么别的,这就排除了这个猜测。
还有哪些segfault?
又因为本地跑的没有挂,说明暴雪给的码也没有问题。
谷歌搜怎么debug段错误的时候,想起了Valgrind。我惊讶地发现,他居然就在谷歌Colab工作。
Valgrind给出代码片段如下:
我唯一能看出来的函数是libtcmalloc.so.4.3.0里的MallocExtension::Initialize()。
可能有不知道TCMalloc的盆友,这其实是个谷歌定制化记忆分配器。谷歌Chrome浏览器用的也是这个。
但是……
当我用strace找错的时候,我只记得看到了C和C++标准库的载入。那TCMalloc是从哪里冒出来的?
后来发现,有个办法可以在没有TCMalloc的程序上强行使用TCMalloc。
在Linux上设定LD_PRELOAD环境变数,载入TCMalloc共享库后,就搞定。
很好奇,在谷歌Colab上看会是什么样?
矮马!就这个!
解决方案
可是,设定LD_PRELOAD环境变数无法扩展到其他环境里去。
执行这段:
我已经卸载了TCMalloc。然后,除了一些错误的提示信息,星际争霸II现在可以跑起来了。这会儿总算可以开始训练星际争霸II的AI了。
我写了份针对谷歌Colab的bug文档,这样以后大家遇到类似问题就不用再纠结了。
bug文档:https://docs.python.org/3/library/subprocess.html#subprocess.Popen.returncode
不过,等星际2的AI出来还早。
我们拭目以待。
最后我想感谢一下Paul和William,StarAI,是他们告诉我PySC2,以及带的我入坑机器学习。
如果大家遇到高难度的bug,有debug的需求可以找我,我可以提供相应的服务。这是我LinkedIn的介绍,https://www.linkedin.com/in/franklin-h-804b85a0/
最后,附小哥哥post链接:
https://medium.com/@n0mad/how-i-trained-starcraft-2-ais-using-googles-free-gpus-44bc635b0418
你可能感兴趣
—完—
诚挚招聘
量子位正在招募编辑/记者,工作地点在北京中关村。期待有才气、有热情的同学加入我们!相关细节,请在量子位公众号(QbitAI)对话界面,回复“招聘”两个字。
相关文章
B站怎么炸崩了哔哩哔哩服务器今日怎么又炸挂了?技术团队公开早先原因2023-03-06 19:05:55
苹果iPhoneXS/XR手机电池容量续航最强?答案揭晓2023-02-19 15:09:54
华为荣耀两款机型起内讧:荣耀Play官方价格同价同配该如何选?2023-02-17 23:21:27
google谷歌原生系统Pixel3 XL/4/5/6 pro手机价格:刘海屏设计顶配版曾卖6900元2023-02-17 18:58:09
科大讯飞同传同声翻译软件造假 浮夸不能只罚酒三杯2023-02-17 18:46:15
华为mate20pro系列手机首发上市日期价格,屏幕和电池参数配置对比2023-02-17 18:42:49
小米MAX4手机上市日期首发价格 骁龙720打造大屏标准2023-02-17 18:37:22
武汉弘芯遣散!结局是总投资1280亿项目烂尾 光刻机抵押换钱2023-02-16 15:53:18
谷歌GoogleDrive网云盘下载改名“GoogleOne” 容量提升价格优惠2023-02-16 13:34:45
巴斯夫将裁员6000人 众化工巨头裁员潮再度引发关注2023-02-13 16:49:06
人手不足 韵达快递客服回应大量包裹派送异常没有收到2023-02-07 15:25:20
资本微念与李子柒销声匿迹谁赢? 微念公司退出子柒文化股东2023-02-02 09:24:38
三星GalaxyS8 S9 S10系统恢复出厂设置一直卡在正在检查更新怎么办2023-01-24 10:10:02
华为Mate50 RS保时捷最新款顶级手机2022多少钱?1.2万元售价外观图片吊打iPhone142023-01-06 20:27:09
芯片常见的CPU芯片封装方式 QFP和QFN封装的区别?2022-12-02 17:25:17
华为暂缓招聘停止社招了吗?官方回应来了2022-11-19 11:53:50
热血江湖手游:长枪铁甲 刚猛热血 正派枪客全攻略技能介绍大全2022-11-16 16:59:09
东京把玩了尼康微单相机Z7 尼康Z7现在卖多少钱?2022-10-22 15:21:55
苹果iPhone手机灵动岛大热:安卓灵动岛App应用下载安装量超100万次2022-10-03 22:13:45
苹果美版iPhone可以在中国保修 从哪看怎么查询iPhone的生产日期?2022-09-22 10:00:07










