US10817335B2ActiveUtilityA1

System and method of schedule validation and optimization of machine learning flows for cloud computing

Assignee: ATLANTIC TECHNICAL ORGANIZATION LLCPriority: May 10, 2017Filed: May 8, 2019Granted: Oct 27, 2020
Est. expiryMay 10, 2037(~10.8 yrs left)· nominal 20-yr term from priority
Inventors:Arturo Geigel
G06N 20/00G06F 9/4881G06F 9/5044G06F 9/451
54
PatentIndex Score
0
Cited by
12
References
20
Claims

Abstract

A distributed machine learning engine is proposed that allows for optimization and parallel execution of the machine learning tasks. The system allows for a graphical representation of the underlying parallel execution and allows the user the ability to select additional execution configurations that will allow the system to either take advantage of processing capability or to limit the available computing power. The engine is able to run from a single machine to a heterogeneous cloud of computing devices. The engine is capable of being aware of the machine learning task, its parallel execution constraints and the underlying heterogeneous infrastructure to allow for optimal execution based on speed or reduced execution to comply with other constraints such as allowable time, costs, or other miscellaneous parameters.

Claims

exact text as granted — not AI-modified
The invention claimed is: 
     
       1. A method of generating an execution matrix, the execution matrix having a plurality of execution slots for placement of operations defining an execution routine to be performed on corresponding underlying execution hardware, the method comprising:
 receiving a plurality of nodes corresponding to manually arranged functionality icons, each functionality icon representing an operation; 
 receiving a plurality of links between the functionality icons, each link defining a predecessor-successor relationship between two of the functionality icons; 
 identifying one or more terminator nodes from among the plurality of nodes; 
 placing the one or more terminator nodes in an array; 
 placing the remainder of the plurality of nodes in the array according to the predecessor-successor relationships defined by the plurality of links; and 
 pushing the array into the execution matrix. 
 
     
     
       2. The method of  claim 1 , further comprising calculating a total number of the plurality of links. 
     
     
       3. The method of  claim 2 , wherein said placing the remainder of the plurality of nodes in the array includes, for each node, iterating a link counter up to the total number of the plurality of links. 
     
     
       4. The method of  claim 1 , further comprising calculating a horizontal X dimension and a vertical Y dimension of the array. 
     
     
       5. The method of  claim 4 , wherein said calculating the horizontal X dimension includes initializing the X dimension after the one or more terminator nodes are placed in the array. 
     
     
       6. The method of  claim 4 , wherein said calculating the horizontal X dimension includes increasing the X dimension by a value equal to a number of nodes placed in the array. 
     
     
       7. The method of  claim 4 , wherein said calculating the vertical Y dimension includes determining a number of nodes to be placed in one column of the array by verifying predecessor and successor dependencies of the nodes. 
     
     
       8. The method of  claim 1 , further comprising inverting the execution matrix. 
     
     
       9. The method of  claim 1 , wherein an empty execution slot in the execution matrix on a predecessor side of a node defines a slack with respect to an operation corresponding to the node. 
     
     
       10. The method of  claim 1 , further comprising:
 assigning hardware to each of the nodes; 
 estimating a time required by the assigned hardware for execution of the operations corresponding to the nodes in one or more rows of the execution matrix; and 
 determining whether the assignment of hardware is optimal based on the estimated time. 
 
     
     
       11. The method of  claim 10 , further comprising reassigning the hardware if said determining does not result in a determination that the assignment of hardware is optimal. 
     
     
       12. The method of  claim 11 , wherein said reassigning includes:
 identifying a slack with respect to an operation corresponding to a node of the execution matrix, the slack defined by an empty execution slot in the execution matrix on a predecessor side of the node; and 
 reassigning the hardware to maximize execution performance based on the identified slack. 
 
     
     
       13. The method of  claim 10 , wherein said determining is further based on previous hardware assignments. 
     
     
       14. The method of  claim 10 , wherein said estimating is based on constraints imposed by predecessor and successor nodes of each node. 
     
     
       15. The method of  claim 10 , wherein said estimating includes estimating a cumulative execution time for all of the nodes in the execution matrix. 
     
     
       16. The method of  claim 10 , further comprising:
 generating a graphical user interface comprising a display of the execution matrix; and 
 updating the display of the execution matrix in response to changes in the assigned hardware. 
 
     
     
       17. The method of  claim 16 , wherein
 the graphical user interface includes one or more user interface elements for modifying an arrangement of the execution slots in the execution matrix, and 
 the method further comprises reassigning the hardware to the nodes in response to a user's interaction with the one or more user interface elements. 
 
     
     
       18. The method of  claim 17 , wherein the one or more user interface elements include a user interface element for modifying a number of vertical columns or a number of horizontal rows of the execution matrix. 
     
     
       19. A non-transitory program storage medium on which are stored instructions executable by a processor to perform operations for generating an execution matrix, the execution matrix having a plurality of execution slots for placement of operations defining an execution routine to be performed on corresponding underlying execution hardware, the operations for generating the execution matrix comprising:
 receiving a plurality of nodes corresponding to manually arranged functionality icons, each functionality icon representing an operation; 
 receiving a plurality of links between the functionality icons, each link defining a predecessor-successor relationship between two of the functionality icons; 
 identifying one or more terminator nodes from among the plurality of nodes; 
 placing the one or more terminator nodes in an array; 
 placing the remainder of the plurality of nodes in the array according to the predecessor-successor relationships defined by the plurality of links; and 
 pushing the array into the execution matrix. 
 
     
     
       20. A system for generating an execution matrix, the execution matrix having a plurality of execution slots for placement of operations defining an execution routine to be performed on corresponding underlying execution hardware, the system comprising:
 a user terminal for generating a manual arrangement of functionality icons, each functionality icon representing an operation; 
 an execution manager for receiving a plurality of nodes corresponding to the manually arranged functionality icons, receiving a plurality of links between the functionality icons, each link defining a predecessor-successor relationship between two of the functionality icons, identifying one or more terminator nodes from among the plurality of nodes, placing the one or more terminator nodes in an array, placing the remainder of the plurality of nodes in the array according to the predecessor-successor relationships defined by the plurality of links, and pushing the array into the execution matrix; and 
 a controller for assigning hardware to each of the nodes.

Join the waitlist — get patent alerts

Track US10817335B2 — get alerts on status changes and closely related new filings.

We store only your email — no account needed. See our privacy policy.