Neural Network Operating System for Parallel Training

Resolve Bottlenecks,
Find Innovative Solutions
Generate Solutions

Solution Overview

Problem

Training deep neural networks is inefficient due to the exponential increase in mathematical calculations with the size and complexity of the network, and existing tools struggle to parallelize operations effectively, leading to significant training delays.

Innovation Solution

The neural network operating system arranges calculations in quasi-threads, suspends non-essential threads until dependencies are resolved, and combines operations into batched calculations to optimize training, allowing for efficient parallel processing and automatic mini-batching, even with user-defined code.

Engineering Contradictions & Design Principles

VSEngineering Contradiction Analysis

1Adaptability or versatility

If neural network size and complexity are increased, then the network's capability and accuracy are improved, but the number of mathematical calculations increases exponentially, leading to longer training time

Engineering Contradiction:
Improvenetwork capabilityVSAvoidtraining time
Core Design Contradiction:
Adaptability or versatilityVSLoss of time

Solution Approach 1:

The patent segments the neural network training process into multiple independent threads that can be executed concurrently. Each thread handles a portion of the computational workload, allowing parallel processing of mathematical operations. This segmentation enables the system to process larger networks by distributing calculations across multiple threads, thereby reducing overall training time despite the exponential increase in required calculations.

Inventive Principle:
Principle #1Segmentation

2Reliability

If operations are propagated sequentially through the neural network, then calculation accuracy is maintained, but subsequent operations must wait for previous results, preventing effective parallelization

Engineering Contradiction:
Improvecalculation accuracyVSAvoidparallelization efficiency
Core Design Contradiction:
ReliabilityVSProductivity

Solution Approach 1:

The patent implements dynamic thread management where threads are created, suspended, and resumed based on data dependency relationships. When a thread encounters an operation that depends on results from another thread, it suspends itself and allows other independent threads to execute. This dynamic approach maintains calculation accuracy by respecting dependency constraints while maximizing parallelization opportunities, thereby improving productivity without sacrificing reliability.

Inventive Principle:
Principle #15Dynamics

3Adaptability or versatility

If user code is used to define and train the neural network, then flexibility and customization are achieved, but the user may not arrange operations in an efficient manner for parallel processing

Engineering Contradiction:
Improvecode flexibilityVSAvoidtraining efficiency
Core Design Contradiction:
Adaptability or versatilityVSProductivity

Solution Approach 1:

The patent introduces an intermediary system that sits between the user code and the actual execution engine. This intermediary automatically analyzes the user-defined operations, identifies parallelization opportunities, and manages thread creation and coordination. The intermediary translates user-friendly code into optimized parallel execution plans, allowing users to maintain code flexibility while achieving high training efficiency through automatic operation arrangement and parallel processing.

Inventive Principle:
Principle #24Intermediary (Mediator)

Data Source

PatentUS10956535B2Operating a neural network defined by user code
Publication Date: 2021.03.23 MICROSOFT TECHNOLOGY LICENSING LLC
  • US10956535B2 patent drawing
  • US10956535B2 patent drawing
  • US10956535B2 patent drawing

AI summary

Disclosed in some examples are methods, systems, machine-readable media, and devices which operate a neural network defined by user code. A method includes identifying, operations from user code that are integral in operating the neural network, combining a subset of the identified operations into a single processing sequence to be transmitted to an array of hardware processors, performing operations that are not integral in operation of the neural network in a separate thread of execution from the operations that are integral in operating the neural network; and mapping results to the combined operations that were included in the single processing sequence.