Xingchen Song(宋星辰)

Results 173 comments of Xingchen Song(宋星辰)

> > > 可以参考train_utils.py::wenetjoin函数,目前是只对deepspeed打开了,ddp没开,可以把他打开 > > > > > > ddp开了wenet_join之后卡住了(AISHELL): > > ``` > > [E ProcessGroupGloo.cpp:137] Rank 1 successfully reached monitoredBarrier, but received errors while waiting for send/recv...

> 我出现了好几种情况: > > 1. train阶段末尾打印这个错误,然后进到evaluate阶段,正常保存模型,进到下一个epoch,这样重复 > 这样是没问题的,但今天重新跑实验是直接训不了 > 2.train阶段开始的时候就打印这个错误,然后进到evaluate阶段,到下一个epoch这样重复,等于没有训练 > 换了一个云上的环境,又不一样 > 3.train阶段开始的时候就打印这个错误,然后等半个小时直接退出 > > 怎么解决? 1. 这是正常的预期现象 2和3. 可能原因有: - 你的集群通信出问题了 - 你的集群使用了共享存储,挂载的共享存储(JFS、HDFS等)io有问题,比如同时期有别人的程序大量占据集群io,导致你的dataloader不能再规定的时间(30s)内产生足够的batch,进而引发超时。 - 你用的是否是最新的代码?特别是合并了这个PR https://github.com/wenet-e2e/wenet/pull/2270 之后的代码? -...

你用transformers训得是whisper吗?是同样的大规模语音数据吗?

关注一下前100batch的速度和中期的速度,假设你前几个batch平均要花100s来load,timeout现在是30s,必然在训练开始就触发。 transformers相当于没有显示指定过同步操作的timeout,此时同步操作timeout是个默认值,差不多有一个小时,所以数据没到位可以一直等, 体现在用户体感上就是可以正常训练。 如果你在大数据上把timeout设高一点,应该也可以“无感” ![image](https://github.com/wenet-e2e/wenet/assets/13466943/0d7b1cb9-fe7e-4ab7-930e-35d3e245b80a)

@kobenaxie 有个比较快的解决方式,就是把data.list重复epoch次,然后按照step去存ckpt(yaml中设置save_interval),这样只会在最终训练完成的时候才会遇到join

maxepoch已经转化为cycle了 https://github.com/wenet-e2e/wenet/blob/main/wenet%2Futils%2Ftrain_utils.py#L332-L332 也就是只要设置了max epoch,就真的会跑max epoch轮,只是在save interval 模式下是把list重复max epoch次(也就是cycle),假设maxepoch是100,这里把max epoch改成1意思是100个list跑1轮(相比于原来每个epoch存一次,是1个list跑100轮),这个1并不是指一个list只跑一轮

提一个:wenet.cpp, paraformer.cpp, ... etc (int4量化+多平台支持)

> 现在paraformer 可以导出jit, 之后会支持onnx 不仅是cli , runtime 也可以比较容易继 而且cif的对齐是比较准确的 后边是否考虑对齐用cif > > 其次 whisper 也可以考虑拿过来, espnet已经有reproduce whisper的pr了 [espnet/espnet#5478](https://github.com/espnet/espnet/pull/5478) (@xingchensong 提供) 目前在完善deepspeed的易用性,下一步就是reproduce whisper了

1. https://github.com/wenet-e2e/wenet/issues/2095 2. gpu利用率吃不满,尖峰很多 3. 未来引入多模态之后,io还要考虑其他模态

![image](https://github.com/wenet-e2e/wenet/assets/13466943/b1f3fd7c-3203-4958-99e9-82cb1bbdbe69) 方案二能快速支持arrow格式的数据吗