我成功地将我的TensorFlow模型的一个版本移植到了Graphcore议会联盟,并运行了数据并行性。然而,全尺寸模型并不适合于单一的议会联盟,我正在寻找实现模型并行性的策略。
到目前为止,我还没有找到关于模型并行方法的信息,除了https://www.graphcore.ai/docs/targeting-the-ipu-from-tensorflow#sharding-a-graph中的TensorFlow指南中针对议会联盟的信息之外,在该指南中引入了切分的概念。
是否在多个IPU之间拆分我的模型的推荐方法?我还能参考更多的资源吗?
发布于 2020-06-23 16:15:34
切分包括在多个IPU之间对模型进行分区,以便每个议会联盟设备计算图形的一部分。但是,对于涉及单个图形中的多个模型的利基用例,通常建议采用这种方法。
跨多个IPU实现模型并行的另一种方法是流水线。模型在多个IPU上仍然被分割成多个计算阶段;各个阶段并行执行,一个阶段的输出是下一个阶段的输入。流水线确保在执行过程中改进硬件的使用,如果与分片相比,这将在吞吐量和延迟方面带来更好的效率和性能。
因此,流水线是跨多个IPU并行化模型的推荐方法。
您可以从本节 指南中找到更多关于针对议会联盟的流水线培训的详细信息。
在这个专门的指南中提供了对这两种模型并行方法的更全面的回顾。
您还可以考虑使用IPUPipelineEstimator:它是IPUEstimator的一个变体,它自动处理议会联盟上运行(流水线)程序的大部分方面。在这里,您可以找到一个代码示例,展示如何使用IPUPipelineEstimator在CIFAR-10数据集上训练一个简单的CNN。
https://stackoverflow.com/questions/62533916
复制相似问题