From 8e7ba1b339b904c875dad70fbd412c9cbb0e7e23 Mon Sep 17 00:00:00 2001 From: Xiaoda Zhang Date: Thu, 15 Oct 2020 09:32:29 +0800 Subject: [PATCH] add the parallel-related documents --- design/meps/mep-parallel/MEP-PARALLEL.md | 196 +++++++++++++++++++++ .../meps/mep-parallel/auto-parallel-components.png | Bin 0 -> 52773 bytes sigs/README.md | 1 + sigs/parallel/README.md | 24 +++ sigs/parallel/docs/design-template.md | 0 sigs/parallel/meetings/meeting-template.md | 14 ++ 6 files changed, 235 insertions(+) create mode 100644 design/meps/mep-parallel/MEP-PARALLEL.md create mode 100644 design/meps/mep-parallel/auto-parallel-components.png create mode 100644 sigs/parallel/README.md create mode 100644 sigs/parallel/docs/design-template.md create mode 100644 sigs/parallel/meetings/meeting-template.md diff --git a/design/meps/mep-parallel/MEP-PARALLEL.md b/design/meps/mep-parallel/MEP-PARALLEL.md new file mode 100644 index 0000000..03b3776 --- /dev/null +++ b/design/meps/mep-parallel/MEP-PARALLEL.md @@ -0,0 +1,196 @@ +| title | authors | owning-sig | participating-sigs | status | creation-date | reviewers | approvers | stage | milestone | +| ------------ | -------------------- | ---------- | ------------------ | ----------- | ------------- | --------- | --------- | ----- | ------------- | +| MEP-PARALLEL | @stsuteng @xiaoda_zh | parallel | | provisional | 2020-10-14 | | TBD | beta | beta : "v0.5" | + +# MEP-PARALLEL: Auto-parallel + +## Table of Contents + + + +- [MEP-PARALLEL: Auto-parallel](#mep-parallel-auto-parallel) + - [Table of Contents](#table-of-contents) + - [Summary](#summary) + - [Motivation](#motivation) + - [Goals](#goals) + - [Non-Goals](#non-goals) + - [Proposal](#proposal) + - [User Stories](#user-stories) + - [Parallelizing training for general DNNs](#parallelizing-training-for-general-dnns) + - [Design Details](#design-details) + - [Test Plan](#test-plan) + - [Implementation History](#implementation-history) + - [Drawbacks](#drawbacks) + - [Alternatives](#alternatives) + - [References](#references) + + + +## Summary + + + +Auto-parallel is a functionality built in MindSpore to automatically parallelize the training of giant DNN models. While keeping the DNN descriptions identical to their single-device counterparts, it algorithmically finds good partitioning strategy for the given model. + +## Motivation + + + +It is increasingly important to find an efficient way to parallel train giant DNN models. However, there are multiple factors impacting the choice of parallel paradigms (Data-parallel, Model-parallel, and Hybird-parallel), including the size of training dataset, the size of the DNN model, the graph structure of the DNN model, the specification of hardware accelerators, etc. Different combinations of these factors prefer different parallel paradigms. It is desirable that a system takes these factors into account, and produces an efficient parallelization strategy for the given DNN model. + +### Goals + + + +- Easy use: The desired system should provide user-friendly interfaces. Ideally, parallel implementation is totally transparent to users. +- Good parallel speedup: The desired system can always find efficient parallelization strategy. + +### Non-Goals + + +- None + +## Proposal + + + +Auto-parallel aims to automatically find efficient parallelization strategy for any DNN model, while keeping the DNN descriptions same as their single-device counterparts. To do so, it captures the data flow graph defined by a DNN model, and partitions the data flow graph after evaluating the cost of different partition strategies. **Cost model** provides the mechanism to estimate the cost under a given strategy. **Tensor partitioning** and **Pipelined model-parallel** are two paradigms to implement Model-parallel. + +- **Cost model.** + The choice of different strategies depends on their associated costs. The costs here can be defined as the iteration time in training, which includes both computation and communication time. In most cases, the computation and communication can be overlapped. Instead of taking engineering efforts to investigate cost of each operator under possible strategies, it is desired to estimate the cost according the semantic of the operator and its inputs. + +- **Tensor partitioning.** + Tensor partitioning is a paradigm to implement Model-parallel. In this paradigm, each tensor in the DNN model is partitioned into slices. The data flow graph obtained by each device is symmetric, meaning that the sequences of operators assigned onto devices are same. The problem is to find an efficient partition strategy for each tensor. + +- **Pipelined model-parallel.** This is another paradigm to implement Model-parallel. In this paradigm, operators are assigned to different devices, while each operator itself is not partitioned. To address the low resource utilization problem, multiple training iterations can be active at the same time, so that the different batches are pipelined. The problem is to find a partition for the data flow graph. + +### User Stories + + + +#### Parallelizing training for general DNNs +Since the DNNs used in different areas are significantly different, it is challenging to design a universal system that can always find the best parallelization strategies for the given DNN model. The Cost model and two paradigms are important components in our consideration. Proposals according to these components and other designs to solve the parallelization problem are welcome. + +# Design Details + + + + + + +Auto-parallel consists of four main components: +- **Parallel model.** It provides the tensor layout (how each tensor is partitioned among devices), the distributed operator (the distributed counterpart of an operator), the distributed auto-grad (how to automatically generate derivatives of the distributed operators), etc. +- **Cost model.** It provides the interfaces of estimating cost of a distributed operator given a partition strategy. It also estimates cost of a tensor redistribution. +- **Parallel strategy search.** Given the data flow graph, it returns the parallelization strategy for each operator using the evaluations of **Cost model**. +- **Parallel partition.** Given the graph marked with strategy for each operator, it partitions the involved tensors for each operator, and it inserts necessary primitives to guarantee the correctness of partitioned operators. + +### Test Plan + + + +There are two types of testing strategies in Auto-parallel: + +- **Unit Test.** Every design for Auto-parallel should guarantee the correctness for each partitioned operator. + +- **System test**. Every effective design should be tested for at least one real DNN model, so that the searched strategy indeed leads to efficient performance. Auto-parallel module provides some verifications and performance testing. + +## Implementation History + + + +- Support an preliminary implementation of **Parallel model** and **Parallel partition** module. +- Support an algorithm of **Parallel strategy search** module. +- Support an preliminary implementation of **Cost model**. +- Enhance **Parallel partition** and **Parallel strategy search** module to support searching efficient strategy for a series of ResNet DNN models. +- Enhance **Cost model** module to precisely characterize memory cost, computation cost and communication cost. + +## Drawbacks + + +- Currently, the searched strategy returned by Auto-parallel may not always lead to the best iteration time. This is mainly due to the **Cost model** improperly estimates the execution cost of operators and entire models. + +## Alternatives + + +- Mesh-TF[1] partitions the data flow graph to minimize the memory consumption of each device. However, Mesh-TF may be suboptimal in end-to-end iteration time since it misses tensor redistribution strategies between two adjacent operators. +OptCNN[2] and Tofu[3] includes the tensor redistribution strategies, but they have problems when the data flow graph has complex graph structures. The algorithm in current Auto-parallel considers the tensor redistributions, and is able to deal with complex graph structures. +- The above works follow the **Tensor partitioning** paradigm. While GPipe[4] and PipeDream[5] are two implementations of **Pipelined model-parallel** paradigm. We are considering a hybrid design of combining these two paradigms. +## References +- [1] Noam Shazeer, Youlong Cheng, Niki Parmar, Dustin Tran, Ashish Vaswani, Penporn Koanantakool, Peter Hawkins, HyoukJoong Lee, Mingsheng Hong, Cliff Young, Ryan Sepassi, and Blake Hechtman. Mesh-TensorFlow: Deep Learning for Supercomputers. NeurIPS '18. +- [2] Zhihao Jia, Sina Lin, Charles R. Qi, and Alex Aiken. Exploring Hidden Dimensions in Accelerating Convolutional Neural Networks. ICML '18. +- [3] Minjie Wang, Chien-chin Huang, and Jinyang Li. Supporting Very Large Models Using Automatic Dataflow Graph Partitioning. EuroSys '19. +- [4] Yanping Huang, Youlong Cheng, Ankur Bapna, Orhan Firat, Dehao Chen, Mia Chen, HyoukJoong Lee, Jiquan Ngiam, Quoc V Le, Yonghui Wu, and zhifeng Chen. GPipe: Efficient Training of Giant Neural Networks using Pipeline Parallelism. NeurIPS '19. +- [5] Deepak Narayanan, Aaron Harlap, Amar Phanishayee, Vivek Seshadri, Nikhil R. Devanur, Gregory R. Ganger, Phillip B. Gibbons, and Matei Zaharia. PipeDream: Generalized Pipeline Parallelism for DNN Training. SOSP '19. \ No newline at end of file diff --git a/design/meps/mep-parallel/auto-parallel-components.png b/design/meps/mep-parallel/auto-parallel-components.png new file mode 100644 index 0000000000000000000000000000000000000000..13a8bb54008523437a1401cf0a383f7fddbba279 GIT binary patch literal 52773 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