openmlsys / openmlsys-zh

《Machine Learning Systems: Design and Implementation》- Chinese Version
https://openmlsys.github.io
3.93k stars 426 forks source link

一点疑问 Kernel_select.md #439

Open qzylalala opened 1 year ago

qzylalala commented 1 year ago

https://github.com/openmlsys/openmlsys-zh/blob/dbe4eee5b9b308f9230d3178e7f0fd1da7bd4f0a/chapter_backend_and_runtime/kernel_selecter.md?plain=1#L69-L80

这里我一直有一个疑问,现在支持把一个网络的算子 offload 到多个 backend 吗?

在为算子选择一个合适的 backend 时候考虑的事情感觉是十分复杂的,不能简单的认为这个后端更适合这个算子就直接 offload 到这个 backend。

举一个例子,一个网络前面的所有算子都非常适合 GPU,全部 offload 到 GPU 上,但是现在紧接着有一个 算子可能更适合 其他的 backend A,如果 offload 到 A 上的话,数据搬运的开销可能远远大于算子本身在 backend A 上执行带来的提升。

所以想请问一下,算子卸载一般是怎么做的呀,是会具体考虑到各种开销,然后去综合评估吗?