Bert里面为什么Q,K,V要用三个不同的矩阵,用一个不是也行吗。
如果使用相同的矩阵,相同量级的情况下,q 和 k进行点积的值会是最大的,进行softmax的加权平均后,该词所占的比重会最大,使得其他词的比重很少,无法有效利用上下文信息来增强当前词的语义表示,而使用不同的QKV后,会很大程度减轻上述的影响。
深度学习模型在训练和测试时,通常使用小批量(mini-batch)的方式将样本组装在一起,这样能充分利用GPU的并行计算特性,加快运算速度。
但在将使用了深度学习模型的服务部署上线的时候,由于用户请求通常是离散和单次的,这时若采取传统的循环服务器或多线程服务器, 会造成GPU计算资源浪费,用户等待时间线性增加。更严重的是在大量并发请求时,会造成CUDA out-of-memory error,导致服务宕机。
基于此,蓝海大脑开发了service-streamer,它是一个中间件,将服务请求排队组成一个完整的batch,再送进GPU运算。这样可以牺牲最小的时延(默认最大0.1s),提升整体性能,极大优化GPU利用率。
蓝海大脑 京ICP备18017748号-1