Tencent / TurboTransformers

a fast and user-friendly runtime for transformer inference (Bert, Albert, GPT2, Decoders, etc) on CPU and GPU.
Other
1.48k stars 198 forks source link

使用Turbo进行命名实体识别,测试速度无明显提升 #245

Open Hap-Zhang opened 3 years ago

Hap-Zhang commented 3 years ago

Hi,feifeibear

我仿照您提供的例子(bert_for_sequence_classification_example.py)写了个用于命名实体识别的测试程序,运行下来发现Turbo提速并不明显,请问这中间有什么潜在的注意事项吗? image

feifeibear commented 3 years ago

可能是输入太短?用onnxrt有加速么?

Hap-Zhang commented 3 years ago

请问中文大概多少个字能体现出效果呢,我可以再测试下

onnxrt是有些加速的,虽然我不知道为什么onnxrt这边Torch的时长更长了。。。。 image

Hap-Zhang commented 3 years ago

我这边把timeline打出来了,您可以帮忙看看哪块有比较大的嫌疑吗?

image

feifeibear commented 3 years ago

看起来挺正常的,你多测几次,避免warmup开销,试试设置一下OMP线程数目

Hap-Zhang commented 3 years ago

好的,OMP线程数目默认是机器本身CPU个数吗?

feifeibear commented 3 years ago

嗯嗯,设置方法如下 https://github.com/Tencent/TurboTransformers/blob/master/benchmark/run_cpu_variable_benchmark.sh#L31

Hap-Zhang commented 3 years ago

好的,非常感谢!! 最后想再请教下turbo在CPU环境下主要是改了哪里来加速的呢,有相关的paper吗,我只找到了一篇说GPU的:TurboTransformers: An Efficient GPU Serving System For Transformer Models

feifeibear commented 3 years ago

把pytorc的代码用C++重写了一遍,加入了算子融合,矩阵乘法用了mkl,其他操作用omp并行加速。 没有相关paper。

suxue commented 3 years ago

请在README里注明一下实际上目前版本的turbo只是在调用onnxruntime吧,编译二进制还挺麻烦的,代码里都没用上,不如直接掉onnxruntime