Neural Network Code Execution With Dynamic Graph Construction
Find Innovative SolutionsGenerate Solutions
Solution Overview
Problem
Existing frameworks for creating neural network source codes are inefficient and struggle with complex graph structures, dynamic changes, and memory management issues, making it difficult to implement and debug neural networks effectively.
Innovation Solution
A new calculation procedure called 'Define-by-Run' dynamically extracts and stores graph structures during learning, allowing for meta changes and recalculating gradients, enabling the use of general-purpose programming languages and improving memory efficiency.
Engineering Contradictions & Design Principles
Engineering Contradiction Analysis
1Ease of manufacture
If a predetermined framework is used to create neural network source code, then the creation process becomes standardized, but the system becomes inefficient and struggles with complex graph structures
Solution Approach 1:
Instead of defining the neural network structure first and then running it (traditional approach), the patent inverts the process by running the network first to dynamically build the computation graph, then using that runtime graph for training. This inversion allows the system to handle complex graph structures more efficiently while maintaining ease of creation through standard programming languages.
Solution Approach 2:
The patent implements dynamic graph construction where the computation graph is built at runtime based on actual execution paths rather than being statically defined. This allows the graph structure to adapt dynamically during execution, improving efficiency with complex structures while maintaining simplicity in the creation process through conventional programming.
2Stability of the object's composition
If the graph structure is defined statically in advance, then the structure remains stable, but the system cannot handle dynamic changes and meta operations
Solution Approach 1:
The patent makes the computation graph dynamic by constructing it at runtime based on actual execution. The graph can be modified, extended, and adapted during execution to handle dynamic changes and meta operations, while still providing a stable foundation through the programmed logic that guides its construction.
Solution Approach 2:
The system serves itself by automatically building the computation graph during execution without requiring external definition. The runtime system self-constructs the graph structure based on the executed code, enabling both stability from the programmed logic and adaptability from the dynamic construction process.
3Ease of manufacture
If traditional frameworks are used, then implementation is straightforward, but memory management becomes inefficient
Solution Approach 1:
The patent extracts the graph construction process from the static definition phase and moves it to the runtime execution phase. This extraction allows memory to be allocated and managed more efficiently during execution, reducing memory waste while maintaining ease of implementation through standard programming languages.
Solution Approach 2:
The patent performs preliminary graph construction during the execution phase before training begins. By building the graph structure in advance during execution rather than at definition time, the system optimizes memory allocation and reduces memory management overhead during the actual training process.
Data Source
AI summary
There is provided an information processing device which efficiently executes machine learning. The information processing device according to one embodiment includes: an obtaining unit which obtains a source code including a code which defines Forward processing of each layer constituting a neural network; a storage unit which stores an association relationship between each Forward processing and Backward processing associated with each Forward processing; and an executing unit which successively executes each code included in the source code, and which calculates an output value of the Forward processing defined by the code based on an input value at a time of execution of each code, and generates a reference structure for Backward processing in a layer associated with the code based on the association relationship stored in the storage unit.


