首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在知识蒸馏中,学生模型和教师模型如何并行运行?

在知识蒸馏中,学生模型和教师模型如何并行运行?
EN

Stack Overflow用户
提问于 2020-09-11 16:13:07
回答 1查看 329关注 0票数 0

我正在使用知识蒸馏实现快速的DNN模型训练,如下图所示,以并行运行教师和学生模型。

我查看了一些流行的代码库,比如NervanaSystems/distillerpeterliht/knowledge-distillation-pytorch。它们逐步执行学生和教师模型的前向操作,即不在不同的设备(GPU或CPU)上并行执行。

我正在尝试加快这个训练过程,以便使用多个设备同时运行两个模型(例如,在CPU上加载一个模型,而不中断另一个模型的GPU训练)。

并行运行两个模型的正确方法是什么?是否可以使用Python multiprocessing库为2个模型启动2个进程,即加载2个模型实例和运行forward()?我使用的是MXNet,但这是所有ML框架的通用问题。

编辑:

我的计划是在CPU上放置一个轻量级的预训练的教师模型,它只在参数冻结的情况下向前运行。

学生模型是一个需要在GPU (分布式)上进行训练的大型模型。此任务不适用于模型压缩。我认为将一个轻量级的任务(教师的前传)转移到CPU上可以增加重叠,并使此流水线更快。

这个想法来自一篇研讨会论文:Infer2Train: leveraging inference for better training of deep networks

EN

回答 1

Stack Overflow用户

发布于 2020-09-11 17:24:01

我正在尝试加快此培训过程,以便使用多个设备同时运行这两个模型

我怀疑这是否会带来任何速度,特别是在以下情况下:

(例如,在中央处理器上加载一个模型,而不中断另一个模型的图形处理器训练)。

因为深度学习是一个管道,它也使用CPU,可能是多个核心(例如,用于数据加载,但也用于接收指标,收集指标等)。

此外,与GPU/TPU相比,CPU对于神经网络训练是相当低效的,除非你有一些量身定制的CPU架构(比如MobileNet)。如果您对学生进行CPU培训,您可能会显著降低teacher管道元素的速度。

并行运行两个模型的正确方法是什么?

同样,根据型号的不同,最好使用2 GPU进行训练,并在它们之间拆分CPU核心来执行其他任务。在你的例子中,你必须在两个设备上同步教师和学生的预测。

我是否可以使用Python多处理库为2个模型启动2个进程,即加载2个模型实例并向前运行()?

PyTorch提供原语(例如,“他们的”multiprocessing包装器、未来等)。它可能会用来做这件事,不确定是mxnet还是类似的。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/63843254

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档