20231105


发布于

|

分类

还是好累。感觉跨年都没兴趣了。

生活

队友的同事们最近组织自驾。说是自驾,其实就是租车练车:租一辆车,一个老司机带着,然后我们几个“照龄好几年,驾龄几分钟”的伪老司机们轮流开。这次去了嘉兴的观海园。

  • 真的是几年来第一次摸车,但感觉还算稳。海边的路压着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消失了!啊??
  • 于是陷入更大的自我怀疑:我是不是真的真的不适合训练模型?
  • 不知道……

天凉了,一秒入秋,各位多穿点别感冒。


评论

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注