US 12,189,629 B2
Optimizing job runtimes via prediction-based token allocation
Rathijit Sen, Madison, WI (US); Alekh Jindal, Sammamish, WA (US); Anish Yatin Pimpley, Somerville, MA (US); Shuo Li, Newton, MS (US); Anubha Srivastava, McAllen, TX (US); Vishal Lalchand Rohra, Boston, MA (US); Yi Zhu, Boston, MA (US); Hiren Shantilal Patel, Bothell, WA (US); Shi Qiao, Mercer Island, WA (US); Marc Todd Friedman, Seattle, WA (US); and Clemens Alden Szyperski, Bellevue, WA (US)
Assigned to Microsoft Technology Licensing, LLC., Redmond, WA (US)
Filed by Microsoft Technology Licensing, LLC, Redmond, WA (US)
Filed on Sep. 30, 2020, as Appl. No. 17/060,053.
Prior Publication US 2022/0100763 A1, Mar. 31, 2022
Int. Cl. G06F 16/00 (2019.01); G06F 16/2453 (2019.01); G06N 20/00 (2019.01)
CPC G06F 16/24545 (2019.01) [G06N 20/00 (2019.01)] 20 Claims
OG exemplary drawing
 
1. A method comprising:
receiving training data comprising historical run data, the historical run data comprising job characteristics, runtime results, and token counts for a plurality of prior jobs, the job characteristics comprising an intermediate representation of job scripts for the plurality of prior jobs generated by a compiler and job graph data, the token counts for the plurality of prior jobs comprising a number of virtual machine cores and an amount of memory;
generating simulated run data based at least on the historical run data including the intermediate representation, the simulated run data including runtimes for each of the plurality of prior jobs in the historical run data for a plurality of simulated token counts;
augmenting the training data with the simulated run data including the runtimes;
based at least on the augmented training data, training a token estimator, the token estimator comprising a machine learning (ML) model;
receiving the intermediate representation and the job graph data for a user-submitted job;
based at least on executing the received intermediate representation and the job graph data, generating, with the token estimator, token prediction data for the user-submitted job;
selecting, from the token counts for the plurality of prior jobs, a token count including the number of virtual machine cores and the amount of memory for the user-submitted job, based at least on the token prediction data;
identifying the selected token count including the number of virtual machine cores and the amount of memory to an execution environment; and
executing, with the execution environment, the user-submitted job in accordance with the selected token count including the number of virtual machine cores and the amount of memory.