Allen Chen

Results 5 comments of Allen Chen

I'm thankful for your work. Here is my question. I'm confusing about hot to understand the logical form, if there is some laws about the lambda functions or detail information...

我用bert+crf在tf2.2和tf1.14上做过测试。 tf1.14版本模型在tf serving上慢了1倍,tf2.2的慢了3倍。 原因不太好分析,但感觉用原生tf1重构一下模型,然后把参数迁移过来应该可以解决。

先回复您的问题,我用的是tensorflow1.13复现的。由于是静态图,推理时先计算得到uncertainty值,然后用if...else进行筛选。 ```python uncertainty_value = sess.run(uncertainty_tensor, feed_dict={...}) if uncertainty_value < speed: stop() ``` 下面是针对我的问题,说一下我的疑惑。 根据维基上的公式,交叉熵和KL散度关系如下。在蒸馏时,前项只与老师的预测结果有关,所以交叉熵和KL散度在优化上是等效的。并且我再蒸馏时hinton蒸馏公式T参数设定为1,所以也排除T参数的影响。 ![kl](https://wikimedia.org/api/rest_v1/media/math/render/svg/80bd13c723dce5056a6f3aa1b29e279fb90d40bd) 其实,我用true_label直接训练子分类器效果也不错了,所以对于我的任务来说用不用蒸馏并不影响应用您论文中的研究内容。 主要是gpu推理的问题,我在gpu上测试时是没有用到批处理优化的,也就是只用单条推理测试极限的加速效果。这样做是因为只要单条推理上加速效果好,在批处理时是可以用一些工程方法实现相似的加速效果,类似您说的重组batch。 对于gpu加速不明显,我目前的推测还是因为**tensorflow静态图在分层推理时处理输入输出**导致的。我也在寻找更好的分层推理机制,但是在tensorflow1.13中是不支持的。如果您有pytorch上的推理的加速经验,希望能分享一下,非常感激。 另外是我看完论文后衍生出的一些思考,希望和您交流一下。 1. 论文中给出了先训练骨干网络然后训练层分类网络的方法,所以骨干网络上的参数在训练时只有最后一层能感知到下游分类任务。这样可能造成的影响是这些参数并不是很适合用来分类,所以需要加入子分类器用于进一步的特征提取,从而保证层分类器的输出质量。是否可以将uncertainty应用在训练阶段,使得不确定性高的分类器对应loss占有更少的比例,是不是能够得到更好的层分类效果,并且做到降低层分类器结构的作用。 2. 前面说对gpu分段推理速度影响最大的是输入输出的操作,那么减少切分点的数量就可以大大的较少这部分所占用的时间。合理的切分点应该保证在特定的speed下,大多数样本只需要第一层分类器的结果。目前这种方法测试是可行的,不确定性基本上是符合递减的特质,所以在给定speed下,第一层的输出对应的不确定性最好略低于speed值,可以将输出输出次数控制到最少。

I have encountered the same problem with MoE, when route type is sinkhorn and topK > 1. ![image](https://github.com/NVIDIA/Megatron-LM/assets/42242097/56b7e895-ea6b-4889-b619-ded41edde28c) From my log, I found the main comsumption is from `sinkhorn` function...

When topk > 1 and route type is sinkhorn, the sinkhorn function inner code loop thousands times for some `logits` cases. But I didn't found any clue on those `logits`,...