Audio-WestlakeU / FS-EEND

The official Pytorch implementation of "Frame-wise streaming end-to-end speaker diarization with non-autoregressive self-attention-based attractors". [ICASSP 2024]
MIT License
71 stars 4 forks source link

train #9

Open DAYTOY-1112 opened 8 months ago

DAYTOY-1112 commented 8 months ago

老师您好,请问代码的多卡机制是在哪里实现的呢?对于长音频的训练应该如何处理才能不会显存过载呢,我尝试将一条长数据划分成多个chunk作为batch送入网路,但仍然还是显存过载,我已经使用了10张A10的情况下也是如此。

DiLiangWU commented 7 months ago

多卡机制是在conf文件中的dist_strategy中设置的ddp并行训练方式。这种方式相当于将每张卡上计算batch得到的梯度进行累积。每张卡上处理的数据量并不会因为卡数的增加而减少,而是保持原状。在您使用A10的情况下,应该在训练1-4spk的时候现存会过载。这种情况可以通过降低batch_size解决。

DAYTOY-1112 commented 7 months ago

batch_size已经设置为1了,但是对于长达30-60min的音频直接全部输入作为训练是会显存过载的,不知道是否有什么好一些的解决方案呢

DiLiangWU commented 7 months ago

30-60min全部作为输入肯定是过长的,可以划分chunk进行训练。

DAYTOY-1112 commented 7 months ago

但是我不想同一条音频的不同chunk之间断联,因为很可能第一个chunk里面只出现了2个说话人,但是整条音频是有4个说话人

DiLiangWU commented 7 months ago

这个确实是在工程中比较重要的问题。目前EEND和TSVAD领域对于这个问题还都没有非常好的解决方案。可以参考一下TSVAD的这篇文章的做法 [https://arxiv.org/abs/2207.05920],划分chunk并且特意产生一些短时内有4个speaker的数据来随机替换。对于训练数据而言,30-60min实在太长image

DAYTOY-1112 commented 7 months ago

老师您好,label_delay设置为0,是不是就代表没有使用未来信息

DiLiangWU commented 7 months ago

label_delay是设置preds和labels对齐算loss时候可以利用未来的信息。(本来是开发过程中尝试在这一部分利用未来信息但是效果不好,所以label_delay设置为0,没有在这个地方用)。但是实际上FS-EEND也利用未来信息了,是通过Conv1D的卷积操作实现的。

DAYTOY-1112 commented 7 months ago

老师您好,请问在推理情况下对于过长的数据,如1个小时,直接推的话cpu内存不足,这种情况可以怎么处理呢

DiLiangWU commented 7 months ago

您是指cpu内存不足而非gpu显存是吗。目前可以有两种解决方式:

  1. 可以参考[1]的做法,设置一定长度的buffer。这里给一个示例:1). 可以设一个大的buffer_size,比如30min,将这30min的输入和diarization结果存入buffer;2). 对于30min后每10min划分chunk,将与buffer中的信号concat起来(40min)后送入网络;3). 根据新得到的diarization结果取前30min,和buffer里保存的30min的结果进行对齐保证前后spk的一致性,以确定新的10min的结果;4). 更新buffer,从40min里选择新的30min的输入和diarization结果保存进buffer;5). 重复step2-step4直至信号结束。

  2. 由于我们目前测试的音频没有达到1h这么长,为了简便目前的推理是按照训练的并行模式用mask写的,其空间复杂度为O(T^2)。实际上可以step-by-step推理,将空间复杂度保持为O(T)。我们之后会更新该部分代码,到时会通知您。

[1] Yawen Xue, et. al,“Online Streaming End-to-End Neural Diarization Handling Overlapping Speech and Flexible Numbers of Speakers,” in INTERSPEECH, 2021, pp. 3116–3120.

DAYTOY-1112 commented 7 months ago

The STB is a solution to the online diarization problem; however, it cannot be directly applied to EEND for unknown and flexible numbers of speakers. One reason is because the number of speakers may be different across chunks so that wecannot calculate correlation using Eq. (6). The other reason is that the most promising selection strategy used the absolute difference of probabilities of two speakers’ speech activities; thus, the method is limited to two-speaker EENDs. 但是论文显示,这种STB机制无法处理不同chunk内发言人数量不一样的情况,且只适用于两个发言人的场景

DiLiangWU commented 7 months ago

您所引用的是[1]这篇论文对于它的前序论文[2]的描述。[1]就是针对这个问题进行了改进,实现了灵活数目说话人的online diarizarion。

[2] Y. Xue, S. Horiguchi, Y. Fujita, S. Watanabe, P. Garc´ıa, and K. Nagamatsu, “Online end-to-end neural diarization with speaker-tracing buffer,” in SLT, 2021, pp. 841–848.

DAYTOY-1112 commented 7 months ago

step-by-step推理可以具体说一说吗?我不太清楚具体怎么实现

DiLiangWU commented 7 months ago

是指逐帧推理,推理第t帧时计算其与前t-1帧声学特征的attention_t,推理完t帧后释放attention_t所占的内存。这样在整体推理过程中,我们只需要保存输入的声学特征序列,不需要保存attention矩阵,因此总体推理所需要的内存空间降为O(T)。但要注意由于Conv1D的使用,还需要我们将emb序列也保存下来。所以实现起来要相对复杂一点。

DAYTOY-1112 commented 7 months ago

可是因为attention机制是看所有历史,在实际应用中,会议开得很长的话,到后面,无论如何推理的资源都承受不住吧?想知道有什么解决办法吗?我现在主要是在思考如何可以解决这个问题,感觉还是得从attention能够看到的信息入手

DiLiangWU commented 7 months ago

这个问题很好,我也在思考怎么来解决streaming场景下资源不足的问题,目前我也还没有找到比较合适的解决办法。您有什么想法的话可以一起交流

DAYTOY-1112 commented 7 months ago

本质上解决的思路还是从attention的计算入手,您上面提到的论文1中flax_STB的机制应该可以缓解这个问题,还有一种方案,可以分chunk推理,但此时chunk之间的说话人联系会断掉,需要考虑如何把联系简历起来,可以利用分离后的结果进行speaker embedding的提取,然后再接聚类,每一个chunk都这样操作先提speaker embedding再进行聚类,边推理边实时聚类,以建立说话人的全局联系。以上两种方案我都还未实现,只是从我的思考角度,具有一定的可行性

DiLiangWU commented 7 months ago

这两种思路都属于分chunk然后建立不同chunk之间speaker的全局一致性,确实可以作为解决方案。

DAYTOY-1112 commented 7 months ago

老师您好,可否分享一下第一次提出attractor机制的论文?

DiLiangWU commented 7 months ago

End-to-End Speaker Diarization for an Unknown Number of Speakers with Encoder-Decoder Based Attractors, https://arxiv.org/abs/2005.09921