Neural Network Intermediate Output Access via Data Flow Graph Augmentation

Resolve Bottlenecks,
Find Innovative Solutions
Generate Solutions

Solution Overview

Problem

Accessing intermediate outputs in neural networks is challenging due to the need for modifying and recompiling program code, which is resource-intensive and can alter the network's behavior, leading to erroneous results.

Innovation Solution

A compiler is configured to save intermediate outputs by inserting save operations into the data flow graph, allowing for access to these outputs without modifying the original program code, thereby preserving the network's behavior.

Engineering Contradictions & Design Principles

VSEngineering Contradiction Analysis

1Loss of information

If program code is modified to access intermediate outputs, then access to intermediate outputs is enabled, but compilation time and resource consumption increase

Engineering Contradiction:
Improveaccess to intermediate outputsVSAvoidcompilation time
Core Design Contradiction:
Loss of informationVSLoss of time

Solution Approach 1:

The patent applies preliminary action by having the compiler automatically insert save operations into the data flow graph during the initial compilation process. This allows intermediate outputs to be saved without requiring subsequent code modifications or recompilations, thus enabling access to intermediate outputs while avoiding repeated compilation time losses.

Inventive Principle:
Principle #10Preliminary action

2Loss of information

If program code is modified to access intermediate outputs, then access to intermediate outputs is enabled, but neural network behavior may change leading to erroneous results

Engineering Contradiction:
Improveaccess to intermediate outputsVSAvoidneural network behavior consistency
Core Design Contradiction:
Loss of informationVSReliability

Solution Approach 1:

The patent uses an intermediary approach by introducing save operations as mediator elements in the data flow graph. These save operations act as transparent intermediaries that capture intermediate outputs without interfering with the original computation flow, thus enabling access to intermediate outputs while preserving the neural network's original behavior and reliability.

Inventive Principle:
Principle #24Intermediary (Mediator)

3Loss of information

If program code is modified to access intermediate outputs, then access to intermediate outputs is enabled, but device complexity increases

Engineering Contradiction:
Improveaccess to intermediate outputsVSAvoidprogram code complexity
Core Design Contradiction:
Loss of informationVSDevice complexity

Solution Approach 1:

The patent applies self-service by enabling the compiler to automatically generate and insert save operations into the data flow graph without requiring manual code modifications. This self-service approach allows intermediate outputs to be accessed while avoiding the increased program code complexity that would result from manual modifications.

Inventive Principle:
Principle #25Self-service

Data Source

PatentUS11748622B1Saving intermediate outputs of a neural network
Publication Date: 2023.09.05 AMAZON TECH INC
  • US11748622B1 patent drawing
  • US11748622B1 patent drawing
  • US11748622B1 patent drawing

AI summary

A computing system is configured to access intermediate outputs of a neural network by augmenting a data flow graph generated for the neural network. The data flow graph includes a plurality of nodes interconnected by connections, each node representing an operation to be executed by the neural network. To access the intermediate output, the data flow graph is augmented by inserting a node representing an operation that saves the output of a node which produces the intermediate output. The node representing the save operation is inserted while maintaining all existing nodes and connections in the data flow graph, thereby preserving the behavior of the data flow graph. The augmenting can be performed using a compiler that generates the data flow graph from program code.