面试记录:NPU和GPU在部署过程中的差异

前言

这个问题看起来有点广泛,但是我们可以一点点作答。

容量

这个是最直观的差异了。H20显存,而昇腾的910B。这也就意味着,如果用两张卡同时部署模型的话,H20可以有更多的显存剩余,也就能够获得更高的并发量。

计算精度

目前来说,按照昇腾官方的说法,在推理服务部署过程中,最高支持的精度只有fp16(较多支持)或者bf16(较少支持);相对的,H20最高支持fp64,在能力上H20能力偏高。

软件栈

对于H20来说,社区支持更为广泛,基于CUDA/cuDNN+PyTorch/Tensorflow的解决方案能够涵盖到工程与学术的各个方面,功能支持也相对更为完善,包括function call;相对的,910B在部署服务上,主要采用CANN+MindSpore,在算子的处理上有独特的处理方式,包括图编译引擎(GE)等。同时,function call仅有ChatGLM-6B支持,生态相对贫乏。

多租户分割

对于H20,基于原生MIG的支持,可以很方便地将单卡分解为多个实例,在多业务隔离上有着巨大的优势;相对的,910B没有对应的支持,只能够以容器作为对象,构成虚拟化的隔离方案。

集群处理

在服务器内,H20主要由NVLink赋能,带宽规格约为;而910B主要主要由HCCS处理,链路双向带宽最高

而在服务器外,H20使用NCCL,与NVLink是同一个体系;910B使用HCCL,与HCCS是同一个体系。

调优

在优化上,H20可以使用vLLm,实现更为精细的显存块,处理合适的情况下,可以获得极致的性能;相对的,910B的优化主要依赖其中的GE,因此优化过程相对来说更平台化,比如修改npuMemSize可以直接影响到KVCache的显存占用。