我注意到deepspeed和zero开关是互斥的。打开零和使用ds_config来配置它之间有什么区别,以及直接使用deepspeed?
uttx8gqw1#
enabled_zero 开启了 ZeRO-Inference(并使用了 ds_config 中的配置),而 enabled_deepspeed 使用 DeepSpeed-Inference。在 MII 中,默认行为是使用 DeepSpeed-Inference。关于两者之间的区别,请参考下面的内容:
enabled_zero
ds_config
enabled_deepspeed
ZeRO-Inference(latest release here)主要针对我们希望在非常有限的 GPU 内存上运行大型模型进行推理的情况。它利用 ZeRO 卸载功能将大部分模型权重移动到 CPU 内存(甚至 NVME 存储)中。由于与卸载权重相关的开销,因此通常不适合将低延迟推理作为优先事项的使用场景。
DeepSpeed-Inference 是一个单独的引擎,为运行推理引入了许多优化。例如,我们支持在数万个模型上进行自定义内核注入,这可以显著提高延迟和吞吐量。这可能是您在进行推理时获得最低延迟的最佳选择,但需要更多的 GPU 内存。
tvz2xvvm2#
感谢您耐心的回答。
2条答案
按热度按时间uttx8gqw1#
enabled_zero
开启了 ZeRO-Inference(并使用了ds_config
中的配置),而enabled_deepspeed
使用 DeepSpeed-Inference。在 MII 中,默认行为是使用 DeepSpeed-Inference。关于两者之间的区别,请参考下面的内容:ZeRO-Inference(latest release here)主要针对我们希望在非常有限的 GPU 内存上运行大型模型进行推理的情况。它利用 ZeRO 卸载功能将大部分模型权重移动到 CPU 内存(甚至 NVME 存储)中。由于与卸载权重相关的开销,因此通常不适合将低延迟推理作为优先事项的使用场景。
DeepSpeed-Inference 是一个单独的引擎,为运行推理引入了许多优化。例如,我们支持在数万个模型上进行自定义内核注入,这可以显著提高延迟和吞吐量。这可能是您在进行推理时获得最低延迟的最佳选择,但需要更多的 GPU 内存。
tvz2xvvm2#
感谢您耐心的回答。