还是好累。感觉跨年都没兴趣了。
生活
队友的同事们最近组织自驾。说是自驾,其实就是租车练车:租一辆车,一个老司机带着,然后我们几个 “照龄好几年,驾龄几分钟” 的伪老司机们轮流开。这次去了嘉兴的观海园。
- 真的是几年来第一次摸车,但感觉还算稳。海边的路压着 40 开,回杭州市后压着 70 开,市区压着 40 开,没出啥岔子。
- 就是 “找不到红绿灯”,或者说到红绿灯附近完全没 “看灯” 的意识。
- 队友也还不错,最起码敢在没人的大路上开车了。就是她那一路上大车比较多,而且窗户起雾了,比较吓人。

把《摩登家庭》、《老友记》、《权力的游戏》都下回来了。不知道啥时候会开始看。
没了,这就是本周的全部生活。
每天都特别累,特别累,莫名的累。
学习和折腾
折腾了下 dns
- 去杭州,想开着 tailscale 连回家看电影,然后发现自定义的域名解析没生效。或者说,我的 k3s 集群有个.lab 的域名,在家里我用 openwrt 自带的 dns 解析功能将它解析给了 k3s 的某个节点,并且之前在 tailscale 上也配置了 “如果遇到.lab 域名,那么用 192.168.1.1 路由器来解析” 的规则。
- 之前在用 adGuardHome,这些东西工作都很好。降级路由器到 cr6608 后,就没装 adGuardHome,想着 OpenWRT 自带的 dns 也能完成这个事儿。
- 找了好久,似乎是必须配置下 “需要监听 tailscale 的 interface” 才行。
嗯,本周也就这些了。
工作
真的是,欧洲风情小镇,用一次想一次一键 people
- 发现训练速度特别慢,特别慢,有时一个 iter 需要好几百秒(正常只要不到 1s),并且很明显的 “一卡空闲,其余围观”。就去查问题。
- 由于这个 repo 分支管理简直噩梦,并且我在用的分支是不知道啥时候从 master 里面分叉出来的,就想着,哎,要不然从最新 master/dev 里面再分出来一个,然后把现在分支的改动再去新分支里面重放一遍/整理一遍。这样,代码是新的,镜像是新的,应该不会有啥问题了吧?
- 于是就做了。照着 “具体见代码” 的文档、几乎没注释的例子代码,把原来分支的东西差不多都合过来了,然后一跑,哎,还是特别慢,问题依旧。
- 然后找到了一些问题处理方法、试了改 data loader 参数、试了 “把数据从 hdfs 拉到本地 ssd”,试了增大预取 buffer 的大小,都无效,该卡死还是卡死。
- 并且调试这东西吧,非常耗时。从点击 “运行” 那一刻起,1.5 分钟左右初始化好框架和网络——只有这个时间是比较固定的。然后你说想看下读取一个 batch 的时间?点击下一步,你将会有随机 1-300s 的延迟。我也不知道这个时候网络在干啥,反正就看预取进程比较正常、预取队列也在正常填充,但训练进程死活不从预取队列里面拿出整理好的数据用于训练。那么回到刚才的问题,点一个 “下一步” 可能就要卡好几分钟。有时候调试前好几十个 batch 都十分顺利没啥问题,然后下一个 batch 就卡死了;有时候调试一个 epoch 都没问题,欢欣雀跃去起正式任务,然后一上来就卡死了。然后又进入下一个 debug 循环……
- 并且还有一种卡死是 “主程序卡死退出、数据进程不退出”,那么训练平台看,嗷,你程序还 “活着”,就不会自动杀掉,必须自己冲进 log 里面自己看,看到 “gpu 利用率全部为 0、error log 里有超过三个进程退出”,那么就是发生这个问题了,需要手动杀进程。上午看还好好的,下午再看,“啥?上午看过后 20 分钟就死掉了?”。所以只能一个半小时左右自己巡检一轮,将挂掉的任务重新起起来。
- 总之,这样调了一整周,在欢欣雀跃与垂头丧气之间反复横跳了一整周,消耗了无数耐心与信心后……依然没有解决。只能用 trick:如果侦测到 60 秒没反应,那么自动杀掉训练任务,依靠平台的自动重启功能,从上个 checkpoint 重跑。
- 但我不理解的是,为啥同样的数据同样的代码,之前就没有这个问题?为啥其他人就没遇到这个问题?为啥啊为啥啊
- 还有遇到过 NNN 次,“太累了睡觉吧”,然后留了个 vscode 的 debug tab 在那儿自己跑。然后一觉醒来(或者第二天),发现 “自己跑” 的那个 debug tab 消失了!啊??
- 于是陷入更大的自我怀疑:我是不是真的真的不适合训练模型?
- 不知道……
天凉了,一秒入秋,各位多穿点别感冒。
发表回复