Heuo
Heuo
是的,我这边将日志写在文本中翻看的,在前端处理信息这一步之前就已经有重复和吞句的问题了。但概率不是很大,我这边启动了三条线程,每条线程处理10条的过程中看到的,可能 1/60 到 2/60 的样子。目前不是十分肯定,只是后面修改后再测几次就没出现了,之后再留意一下。 大佬是 LangSegment 作者吗 😲,还想请教一下 ,LangSegment 设计的是支持并发处理语句的吗? > 与此无关,控制台有输出 LangSegment 文本前端处理信息。至于gpt重复和吞句的问题,发生在自回归推理阶段。建议调一调top_k,top_p等参数。
> 猜测使用多线程想提升速度吧?但速度的瓶颈不在cpu部分,而是在进入cuda之后,除非GPU很空闲,否则cpu的多线程(对于gpt推理)无实际提升意义。仅供参考~ #779 一方面是想提升速度,另一方面是作为 api 使用的话,不可避免会需要并发。用阿里云 v100 16g 显卡测试,单个任务显卡占用只有 2-3g (batch_size 已设置为5),显卡占用率也没拉满,感觉有空间,但没找到瓶颈在哪。
并发新问题:在 A10 显卡上,`infer_panel_batch_infer_with_flash_attn` 中报错 (V100 貌似没遇到): ../aten/src/ATen/native/cuda/Indexing.cu:1237: indexSelectSmallIndex: block: [0,0,0], thread: [67,0,0] Assertion `srcIndex < srcSelectDimSize` failed. ../aten/src/ATen/native/cuda/Indexing.cu:1237: indexSelectSmallIndex: block: [0,0,0], thread: [68,0,0] Assertion `srcIndex < srcSelectDimSize` failed. ../aten/src/ATen/native/cuda/Indexing.cu:1237: indexSelectSmallIndex:...
补充:之前对于异步编程和并发处理的认知有一些错误。如果仅仅是希望使用 api 接受并发请求,应该不涉及到多线程的一些问题。
> > 补充:之前对于异步编程和并发处理的认知有一些错误。如果仅仅是希望使用 api 接受并发请求,应该不涉及到多线程的一些问题。 > > 您好,请问您有尝试其他提升并发的方案吗? 仅尝试了开线程测试和并发请求 api。感觉并发问题还是比较多,速度也很瓶颈。开多个进程会好一些,但是显存资源占用也会更高。
> 您好,请问在v100中并发调用虽然慢但是正常运行,但是在多卡机器上开并发调用就会出现和您报错一样的问题,现在这个问题您解决了吗?能否提供一些解决思路呢? 我没有在多卡机器上尝试。不过既然都使用多卡机器了,可以考虑开多个进程,每个进程指定不同的显卡。在 cpu 够用的情况下应该不会冲突报错。
在阿里云搞了台 v100 测试 在 fast_inference 分支,加大 batch_size 可以更多的利用显卡资源,也更快。但多线程使用没有什么帮助。 有点疑惑,多线程运行即使有抢占问题,感觉还是应该会利用到更多的显卡资源。是项目中做了限制吗?
可以观察一下是推理前文本就不对了,还是推理中出现的问题。 我之前遇到的并发带来质量下降,有部分是推理前文本就串了。
#885 里面有我遇到的一些问题,看是否有帮助。