【发布时间】:2020-12-29 18:03:23
【问题描述】:
我正在使用知识蒸馏实现快速 DNN 模型训练,如下图所示,以并行运行教师和学生模型。
我检查了一些流行的存储库,例如 NervanaSystems/distiller 和 peterliht/knowledge-distillation-pytorch。它们逐步执行学生模型和教师模型的前向运算,即不在不同设备(GPU 或 CPU)上并行执行。
我正在尝试加快此训练过程,以便使用多个设备同时运行 2 个模型(例如,将一个模型加载到 CPU 上并且不中断另一个模型的 GPU 训练)。
并行运行 2 个模型的正确方法是什么?我可以使用 Python multiprocessing 库为 2 个模型启动 2 个进程,即加载 2 个模型实例并运行 forward() 吗?我正在使用 MXNet,但这是所有 ML 框架的普遍问题。
编辑:
我的计划是在 CPU 上放置一个轻量级的预训练教师模型,该模型仅在冻结参数的情况下运行前向传递。
学生模型是要在 GPU(分布式)上训练的大型模型。
此任务不适用于模型压缩。
我想将轻量级任务(教师的前向传递)移动到 CPU 可以增加重叠并使这条管道更快。
这个想法来自研讨会论文:Infer2Train: leveraging inference for better training of deep networks。
【问题讨论】:
标签: tensorflow machine-learning neural-network pytorch mxnet