-
Notifications
You must be signed in to change notification settings - Fork 77
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
[Subgraph] Implement SubGraphBase
/SubGraphCpu
to update NetworkGraph
; adding graph_scope
property
#2865
base: main
Are you sure you want to change the base?
[Subgraph] Implement SubGraphBase
/SubGraphCpu
to update NetworkGraph
; adding graph_scope
property
#2865
Conversation
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
If I understood correctly, this PR aims to move almost all the basic functionalities of networkGraph to some instances of subgraph, which can have different compute engine backends variants in order to govern them! (CPU, GPU, ... )
Detailed explanations per commit helped my understanding a LOT! Really appreciate it😁
Looks Good to me!
…bGraphBase` - Moved the defined behavior from `NetworkGraph` to `SubGraphBase`. - Updated public methods of `NetworkGraph` to pass their behaviors to `SubGraphBase`. - Removed unused private methods in `NetworkGraph`. Signed-off-by: Eunju Yang <[email protected]>
…o SubGraphBase - Update the definition of forwarding operations in neuralnet to be defined within each subgraph type. - Modify the implementation so that both forwarding and incremental_forwarding can now be defined individually for each subgraph type. Signed-off-by: Eunju Yang <[email protected]>
- Update the definition of backwarding operations in neuralnet to be defined within each subgraph type. - `applyGradients` is also updated without taking any callback from outside. Signed-off-by: Eunju Yang <[email protected]>
… tests - Updated `SubGraphBase` to inherit `GraphNode` - Changed the `graph` type inside `NetworkGraph` from `SubGraphBase` to `GraphCore`, using `SubGraphBase` as its `GraphNode` type. - Allowed for the addition of multiple `SubGraphBase` graph nodes in the future. - Assumed that NetworkGraph always has a `default_subgraph` called default_subgraph, and updated the existing code to maintain compatibility. - Updated the relevant unit test codes. Signed-off-by: Eunju Yang <[email protected]>
- Refactored the input and label setup logic for subgraphs by splitting them into separate functions: `setInputs()` and `setLabels()`. - Introduced new functions `setInputs()` and `setLabels()` to handle input and label setups independently for each subgraph. Signed-off-by: Eunju Yang <[email protected]>
…hCpu` - Updated the base class `SubGraphBase` to become a virtual base class and implemented a derived class `SubGraphCpu`. - Set up `NetworkGraph` to default to creating and utilizing one instance of `SubGraphCpu`. - Declared several member functions related to memory management and computation engines as pure virtual functions (=0) in `SubGraphBase`. Signed-off-by: Eunju Yang <[email protected]>
- This commit adds a `graph_scope` property to designate the subgraph, which a layer belongs to. - This commit updates NetworkGraph's addLayer function to check the GraphName of the layer and create a subgraph if the graph doesn't exist. Signed-off-by: Eunju Yang <[email protected]>
- The previous version didn't implement a constructor for subgraph initialization. - This commit resolves the issue. Signed-off-by: Eunju Yang <[email protected]>
5f32216
to
dcebfd1
Compare
Dear reviewers,
Abstract
This PR aims to suggest the first draft to resolve #2864.
This PR implements
SubGraphBase
which is a virtual class withGraphCore subgraph
; thesubgraph
manages the layers included in the subgraph. Also, This PR updatsNetworkGraph
to manage multiple subgraph usngGraphCore graph
. To this end, it implemented theSubGraphBase
to inheritGraphNode
.Please note that, this draft only considers to implement the skeleton, so it doesn't fully consider to support multiple subgraphs. The feature will be added in later PR. However, it would be happy to listen your idea on managing multiple subgraphs.
List of commits
NetworkGraph
toSubGraphBase
.NetworkGraph
to pass their behaviors toSubGraphBase
.NetworkGraph
.applyGradients
is also updated without taking any callback fromoutside.
SubGraphBase
to inheritGraphNode
graph
type insideNetworkGraph
fromSubGraphBase
toGraphCore
, usingSubGraphBase
as itsGraphNode
type.SubGraphBase
graph nodes in the future.default_subgraph
called default_subgraph, and updated the existing code to maintain compatibility.setInputs()
andsetLabels()
.setInputs()
andsetLabels()
to handle input and label setups independently for each subgraph.SubGraphBase
to become a virtual base class and implemented a derived classSubGraphCpu
.NetworkGraph
to default to creating and utilizing one instance ofSubGraphCpu
.SubGraphBase
.graph_scope
property to designate the subgraph,which a layer belongs to.
GraphName of the layer and create a subgraph if the graph doesn't
exist.
Self evaluation: