IP Library Granted Patent US 12,277,480
Granted Patent B1
US 12,277,480 · App. 15/934,091 · Granted Apr 15, 2025

In-flight scaling of machine learning training jobs

Inventors: Edo Liberty (New York, NY); Thomas Albert Faulhaber, Jr. (Seattle, WA); Zohar Karnin (Hoboken, NJ); Gowda Dayananda Anjaneyapura Range (Redmond, WA); Amir Sadoughi (New York, NY); Swaminathan Sivasubramanian (Sammamish, WA); Alexander Johannes Smola (Sunnyvale, CA); Stefano Stefani (Issaquah, WA); Craig Wiley (Redmond, WA)
Assignee: Amazon Technologies, Inc.
G06N20/00G06F9/4881
View Patent ↗
Loading inventors, assignments & file history…
Monitor This Case
Get email alerts when status or documents change.
Order Certified Copies
Most orders are placed with the USPTO same day — all within 24 business hours.
Order via The Patent Place →
Pre-filled with this patent's details
Quick Facts
Patent No.
US 12,277,480
App. No.
15/934,091
Granted
Apr 15, 2025
Kind
B1
Abstract

Techniques for in-flight scaling of machine learning training jobs are described. A request to execute a machine learning (ML) training job is received within a provider network, and the ML training job is executed using a first one or more compute instances. Upon a determination that a performance characteristic of the ML training job satisfies a scaling condition, a second one or more compute instances are added to the ML training job while the first one or more compute instances continue to execute portions of the ML training job.

Claims (79)

1. A computer-implemented method comprising:

executing code on a computing device including a processor to implement a model training system in a provider network;

executing code on another computing device including a processor to implement a training control system in the provider network;

executing a machine learning (ML) training job using a first one or more compute instances of the model training system, wherein each of the first one or more compute instances performs a plurality of iterations of a work routine for the ML training job, each iteration including obtaining an identifier of a work unit from a progress manager of the training control system, obtaining a current state associated with the ML training job from a parameter server of the training control system, executing logic to update the current state associated with the ML training job after completing the work unit, sending the updated current state associated with the ML training job to the parameter server of the training control system, and sending a message to the progress manager of the training control system indicating that the work unit is complete;

determining, by the progress manager of the training control system, that a first compute instance from among the first one or more compute instances of the model training system obtained a first identifier of a first work unit for the ML training job from the progress manager of the training control system at a first time and updated the current state of the first work unit for the ML training job at a second time;

deriving, by the progress manager of the training control system from the first time and the second time, a speed of the ML training job;

determining, by the progress manager of the training control system by comparing a predicted training time to a threshold and based at least in part on the deriving of the speed of the ML training job, that a progress of the ML training job is not satisfactory;

adding, by the model training system based at least in part on the determining that the progress of the ML training job is not satisfactory, a second one or more compute instances of the model training system to the ML training job while the first one or more compute instances of the model training system continue to execute portions of the ML training job, wherein the second one or more compute instances are of a different type than the first one or more compute instances, and wherein the different type is selected based on an execution characteristic of the ML training job that is determined to be problematic hindering performance of the ML training job;

providing, to the second one or more compute instances of the model training system, an identifier of the parameter server and an identifier of a set of data that the second one or more compute instances of the model training system is to process;

determining, by the progress manager of the training control system, that the progress of the ML training job is satisfactory; and

removing, by the model training system based at least in part on the determining that the progress of the ML training job is satisfactory, one or more compute instances of the second one or more compute instances of the model training system or of the first one or more compute instances of the model training system from the ML training job.

2. The computer-implemented method of claim 1 , wherein the determining that the progress of the ML training job is satisfactory comprises comparing the predicted training time to the threshold or comparing a learning rate to another threshold.

3. The computer-implemented method of claim 1 , the different type of the second one or more compute instances comprising at least one of:

a different number of virtual processors;

a different amount of random access memory (RAM);

a different amount of nonvolatile storage;

a different amount of networking capacity; or

a different type or amount of graphical processing units (GPUs) or field programmable gate arrays (FPGAs) available.

4. The computer-implemented method of claim 1 , wherein training code is executed within a container.

5. A computer-implemented method comprising:

executing code on a computing device including a processor to implement a model training system in a provider network;

executing code on another computing device including a processor to implement a training control system in the provider network;

executing, using a first one or more compute instances of the model training system, a machine learning (ML) training job by:

obtaining, from a progress manager of the training control system, a first identifier of a first work unit the first one or more compute instances are to perform for the ML training job;

obtaining, from a parameter server of the training control system, job state data associated with the ML training job;

after completing the first work unit, sending a message to the parameter server of the training control system to update the job state data associated with the ML training job; and

after completing the first work unit, sending a message to the progress manager of the training control system indicating that the first work unit has been completed;

determining, by the progress manager of the training control system, that the first one or more compute instances of the model training system obtained the first identifier of the first work unit at a first time and the job state data was updated at a second time;

deriving, by the progress manager of the training control system, from the first time and the second time, a speed of the ML training job;

determining, by the progress manager of the training control system, by comparing a predicted training time to a threshold and based at least in part on the deriving of the speed of the ML training job, that a progress of the ML training job is not satisfactory;

adding, by the model training system, based at least in part on the determining that the progress of the ML training job is not satisfactory, a second one or more compute instances of the model training system to the ML training job while the first one or more compute instances of the model training system continue to execute portions of the ML training job, wherein the second one or more compute instances are of a different type than the first one or more compute instances, and wherein the different type is selected based on an execution characteristic of the ML training job that is determined to be problematic hindering performance of the ML training job;

providing, to the second one or more compute instances of the model training system, an identifier of the parameter server and an identifier of a set of data that the second one or more compute instances of the model training system is to process;

determining, by the progress manager of the training control system, that the progress of the ML training job is satisfactory; and

removing, by the model training system, based at least in part on the determining that the progress of the ML training job is satisfactory, one or more compute instances of the second one or more compute instances of the model training system or the first one or more compute instances of the model training system from the ML training job.

6. The computer-implemented method of claim 5 , wherein the determining that the progress of the ML training job is satisfactory comprises comparing the predicted training time to the threshold or comparing a learning rate to another threshold.

7. The computer-implemented method of claim 5 , wherein the determining that a progress of the ML training job is not satisfactory further comprises comparing a learning rate to another threshold.

8. The computer-implemented method of claim 5 , the different type of the second one or more compute instances comprising at least one of:

a different number of virtual processors;

a different amount of random access memory (RAM);

a different amount of nonvolatile storage;

a different amount of networking capacity; or

a different type or amount of graphical processing units (GPUs) or field programmable gate arrays (FPGAs) available.

9. The computer-implemented method of claim 5 , wherein training code is executed within a container.

10. The computer-implemented method of claim 5 , wherein executing the ML training job by the first one or more compute instances further includes obtaining, from a job status manager, an identifier of a parameter server.

11. The computer-implemented method of claim 5 , further comprising:

receiving a request from a client to remove one or more compute instances from the ML training job, wherein the one or more compute instances are of the second one or more compute instances or of the first one or more compute instances; and

removing the one or more compute instances from the ML training job.

12. The computer-implemented method of claim 5 , further comprising:

receiving a request from a client to add one or more compute instances to the ML training job; and

adding the one or more compute instances to the ML training job while the first one or more compute instances and the second one or more compute instances continue to execute portions of the ML training job.

13. A system comprising:

a model training system implemented by a first one or more electronic devices; and

a training control system implemented by a second one or more electronic devices, the training control system including second instructions that upon execution cause the training control system to:

cause the model training system to execute a machine learning (ML) training job using a first one or more compute instances of the model training system such that the model training system:

obtains, from a progress manager of the training control system, a first identifier of a first work unit the first one or more compute instances are to perform for the ML training job;

obtains, from a parameter server of the training control system, job state data associated with the ML training job;

after completing the first work unit, sends a message to the parameter server of the training control system to update the job state data associated with the ML training job; and

after completing the first work unit, sends a message to the progress manager of the training control system indicating that the first work unit has been completed;

determine, by the progress manager of the training control system, that the first one or more compute instances of the model training system obtained the first identifier of the first work unit at a first time and the job state data was updated at a second time;

derive, by the progress manager of the training control system, from the first time and the second time, a speed of the ML training job;

determine, by the progress manager of the training control system, by comparing a predicted training time to a threshold and based at least in part on the deriving of the speed of the ML training job, that a progress of the ML training job is not satisfactory;

cause, by the model training system, based at least in part on the determining that the progress of the ML training job is not satisfactory, a second one or more compute instances of the model training system to be added to the ML training job while the first one or more compute instances of the model training system continue to execute portions of the ML training job, wherein the second one or more compute instances are of a different type than the first one or more compute instances, and wherein the different type is selected based on an execution characteristic of the ML training job that is determined to be problematic hindering performance of the ML training job;

provide, to the second one or more compute instances of the model training system, an identifier of the parameter server and an identifier of a set of data that the second one or more compute instances of the model training system is to process;

determine, by the progress manager of the training control system, that the progress of the ML training job is satisfactory; and

cause, by the model training system, based at least in part on the determining that the progress of the ML training job is satisfactory, one or more compute instances of the second one or more compute instances of the model training system or the first one or more compute instances of the model training system to be removed from the ML training job.

14. The system of claim 13 , wherein to determine that the progress of the ML training job is satisfactory the instructions upon execution further cause the training control system to compare the predicted training time to the threshold or compare a learning rate to another threshold.

15. The system of claim 13 , wherein the determining that a progress of the ML training job is not satisfactory further comprises comparing a learning rate to another threshold.

16. The system of claim 13 , the different type of the second one or more compute instances comprising at least one of:

a different number of virtual processors;

a different amount of random access memory (RAM);

a different amount of nonvolatile storage;

a different amount of networking capacity; or

a different type or amount of graphical processing units (GPUs) or field programmable gate arrays (FPGAs) available.

17. The system of claim 13 , wherein training code is executed within a container.

18. The system of claim 13 , wherein the first compute instance is further to obtain, from a job status manager, an identifier of a parameter server.

19. The system of claim 13 , wherein the second instructions upon execution further cause the training control system to:

upon a receipt of a request from a client to add one or more compute instances to the ML training job, cause the one or more compute instances to be added to the ML training job while the first one or more compute instances and the second one or more compute instances continue to execute portions of the ML training job.

20. The system of claim 13 , wherein the second instructions upon execution further cause the training control system to:

upon a receipt of a request from a client to remove one or more compute instances from the ML training job, wherein the one or more compute instances are of the second one or more compute instances or of the first one or more compute instances, cause the one or more compute instances to be removed to the ML training job.

Assignments (1)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Aug 2, 2021
From: LIBERTY, EDO; ANJANEYAPURA RANGE, GOWDA DAYANANDA; SADOUGHI, AMIR; WILEY, CRAIG; FAULHABER, THOMAS ALBERT; STEFANI, STEFANO; KARNIN, ZOHAR; SMOLA, ALEXANDER JOHANNES; SIVASUBRAMANIAN, SWAMINATHAN
To: AMAZON TECHNOLOGIES, INC.
Reel/Frame 057055/0357 →
Continuity (1)
Provisional Application 62590134 · Nov 22, 2017
References Cited (103)
US 6263308B1 · Heckerman et al. · 2001 [cited by applicant]
US 6321307B1 · Maguire et al. · 2001 [cited by applicant]
US 8244651B1 · Lin et al. · 2012 [cited by applicant]
US 8311967B1 · Lin et al. · 2012 [cited by applicant]
US 8996372B1 · Secker-Walker et al. · 2015 [cited by applicant]
US 9350747B2 · Mclarnon et al. · 2016 [cited by applicant]
US 9830315B1 · Xiao et al. · 2017 [cited by applicant]
US 10228959B1 · Anderson et al. · 2019 [cited by applicant]
US 10275710B1 · Teredesai et al. · 2019 [cited by applicant]
US 10303388B1 · Lieberman et al. · 2019 [cited by applicant]
US 10490183B2 · Singh et al. · 2019 [cited by applicant]
US 10534965B2 · Singhal et al. · 2020 [cited by applicant]
US 10621019B1 · Faulhaber et al. · 2020 [cited by applicant]
US 10810491B1 · Xia et al. · 2020 [cited by applicant]
US 10831519B2 · Faulhaber et al. · 2020 [cited by applicant]
US 10904360B1 · Govan et al. · 2021 [cited by applicant]
US 11257002B2 · Faulhaber et al. · 2022 [cited by applicant]
US 11537439B1 · Liberty et al. · 2022 [cited by applicant]
US 11550614B2 · Faulhaber et al. · 2023 [cited by applicant]
US 11748610B1 · Majumder et al. · 2023 [cited by applicant]
US 20040010582A1 · Oliver · 2004 [cited by applicant]
US 20060288346A1 · Santos · 2006 [cited by examiner]
US 20120060172A1 · Abouzour · 2012 [cited by examiner]
US 20130283265A1 · Acharya et al. · 2013 [cited by applicant]
US 20140089495A1 · Akolkar et al. · 2014 [cited by applicant]
US 20150170053A1 · Miao · 2015 [cited by applicant]
US 20150332169A1 · Bivens et al. · 2015 [cited by applicant]
US 20150339572A1 · Achin et al. · 2015 [cited by applicant]
US 20150379072A1 · Dirac et al. · 2015 [cited by applicant]
US 20160092252A1 · Wagner · 2016 [cited by applicant]
US 20160093294A1 · Kapralova et al. · 2016 [cited by applicant]
US 20160197777A1 · Tarantino et al. · 2016 [cited by applicant]
US 20160210175A1 · Morimura et al. · 2016 [cited by applicant]
US 20170093639A1 · Dabbagh et al. · 2017 [cited by applicant]
US 20170111233A1 · Kokkula et al. · 2017 [cited by applicant]
US 20170148433A1 · Catanzaro · 2017 [cited by examiner]
US 20170161905A1 · Reyzin · 2017 [cited by examiner]
US 20170177860A1 · Suarez et al. · 2017 [cited by applicant]
US 20170212829A1 · Bales et al. · 2017 [cited by applicant]
US 20170213156A1 · Hammond et al. · 2017 [cited by applicant]
US 20170213213A1 · Tomlinson, Jr. · 2017 [cited by applicant]
US 20170220949A1 · Feng et al. · 2017 [cited by applicant]
US 20170293859A1 · Gusev et al. · 2017 [cited by applicant]
US 20170329520A1 · Bivens · 2017 [cited by examiner]
US 20180053099A1 · Beller et al. · 2018 [cited by applicant]
US 20180060068A1 · Ferrara et al. · 2018 [cited by applicant]
US 20180089592A1 · Zeiler et al. · 2018 [cited by applicant]
US 20180095778A1 · Aydelott et al. · 2018 [cited by applicant]
US 20180293463A1 · Brown · 2018 [cited by applicant]
US 20180300653A1 · Srinivasan et al. · 2018 [cited by applicant]
US 20180324204A1 · Mcclory et al. · 2018 [cited by applicant]
US 20180336479A1 · Guttmann · 2018 [cited by applicant]
US 20180359259A1 · Leon · 2018 [cited by applicant]
US 20190036789A1 · Kaplunov et al. · 2019 [cited by applicant]
US 20190081955A1 · Chugtu et al. · 2019 [cited by applicant]
US 20190095794A1 · Aldana López · 2019 [cited by examiner]
US 20190102700A1 · Babu et al. · 2019 [cited by applicant]
US 20190114370A1 · Cerino et al. · 2019 [cited by applicant]
US 20190114672A1 · Jacobs et al. · 2019 [cited by applicant]
US 20190147331A1 · Arditi · 2019 [cited by examiner]
US 20190156244A1 · Faulhaber et al. · 2019 [cited by applicant]
US 20190253519A1 · Milosevic et al. · 2019 [cited by applicant]
US 20200026576A1 · Kaplan · 2020 [cited by applicant]
US 20200027014A1 · Wen et al. · 2020 [cited by applicant]
US 20200219028A1 · Papaemmanouil et al. · 2020 [cited by applicant]
US 20200311617A1 · Swan et al. · 2020 [cited by applicant]
CN 104246744A · 2014 [cited by applicant]
CN 105051693A · 2015 [cited by applicant]
CN 114546391A · 2022 [cited by applicant]
JP 2017520068A · 2017 [cited by applicant]
JP 2017524183A · 2017 [cited by applicant]
KR 1020110127498A · 2011 [cited by applicant]
TW 201705722A · 2017 [cited by applicant]
WO 2016053950A1 · 2016 [cited by applicant]
Aurick Qiao, Abutalib Aghayev, Weiren Yu, Haoyang Chen, Qirong Ho, Garth A. Gibson, Eric P. Xing: Litz: Elastic Framework for High-Performance Distributed Machine Learning. Parallel Data Lab, Jun. 2017 (Year: 2017). [cited by examiner]
M. Wajahat, A. Gandhi, A. Karve and A. Kochut, Using machine learning for black-box autoscaling, Seventh International Green and Sustainable Computing Conference (IGSC), 2016 (Year: 2016). [cited by examiner]
Hang Qi, Evan R. Sparks, Ameet Talwalkar, Paleo: A Performance Model for Deep Neural Networks, openreview.net, Nov. 2016 (Year: 2016). [cited by examiner]
Li, Mu, et al. “Scaling distributed machine learning with the parameter server.” 11th {USENIX} Symposium on Operating Systems Design and Implementation ({OSDI} 14). 2014. (Year: 2014). [cited by examiner]
Lee, Yun Seong Lee, et al. “Dolphin: Runtime optimization for distributed machine learning.” Proc. of ICML ML Systems Workshop. 2016. (Year: 2016). [cited by examiner]
Cui, Henggang, et al. “Exploiting iterative-ness for parallel ML computations.” Proceedings of the ACM Symposium on Cloud Computing. 2014. (Year: 2014). [cited by examiner]
Sun, Chenggen, et al. “DPS: A DSM-based Parameter Server for Machine Learning.” Jun. 14, 2017 International Symposium on Pervasive Systems (pp. 20-27). (Year: 2017). [cited by examiner]
Harlap, Aaron, et al. “Solving the straggler problem for iterative convergent parallel ML.” (2015). (Year: 2015). [cited by examiner]
Dean, Jeff, and Rajat Mongaâ TensorFlow. “Large-Scale Machine Learning on Heterogeneous Distributed Systemsâ.” TensorFlow.org (2015). (Year: 2015). [cited by examiner]
Andrea Matsunaga, On the use of machine learning to predict the time and resources consumed by applications. (Year: 2010). [cited by applicant]
Non-Final Rejection Mailed on Jan. 25, 2021 for U.S. Appl. No. 15/934,046. [cited by applicant]
Li, Mu, et al., “Parameter Server for Distributed Machine Learning”, Carenegie Mellon University, 10 pages. [cited by applicant]
Advisory Action, U.S. Appl. No. 15/934,046, filed Jul. 29, 2021, 3 pages. [cited by applicant]
Advisory Action, U.S. Appl. No. 15/934,046, filed Jul. 29, 2022, 3 pages. [cited by applicant]
Binbin Yong, Intelligent monitor system based on cloud and convolutional neural network. (Year: 2017). [cited by applicant]
Eli M. Dow, A Host-Agnostic, Supervised Machine Learning Approach to Automated Overload Detection in Virtual Machine Workloads. (Year: 2017). [cited by applicant]
Final Office Action, U.S. Appl. No. 15/934,046, filed Jun. 3, 2022, 23 pages. [cited by applicant]
Final Office Action, U.S. Appl. No. 15/934,046, filed Jun. 11, 2021, 13 pages. [cited by applicant]
Javier Alonso, Predicting Software Anomalies using Machine Learning Techniques. (Year: 2011). [cited by applicant]
Non-Final Office Action, U.S. App. No. 15/934,046, filed Oct. 28, 2021, 12 pages. [cited by applicant]
Notice of Allowance, U.S. App. No. 15/934,046, filed Sep. 1, 2022, 7 pages. [cited by applicant]
Rohit Punnoose, Prediction of Employee Turnover in Organizations using Machine Learning Algorithms. (Year: 2016). [cited by applicant]
Graepel, Thore, Kristin Lauter, and Michael Naehrig, “ML confidential: Machine learning on encrypted data.” International Conference on Information Security and Cryptology. Springer, Berlin, Heidelberg, 2012. (Year: 201… [cited by applicant]
Wendell, Patrick, et al. “Donar: decentralized server selection for cloud services.” Proceedings of the ACM SIGCOMM 2010 conference. 2010. (Year: 2010). [cited by applicant]
Final Rejection, U.S. App. No. 15/950, 131, filed Mar. 20, 2023, 15 pages. [cited by applicant]
International Search Report and Written Opinion for International Application No. PCT/US2018/062064, Notification mailed Feb. 20, 2019. [cited by applicant]
Non-Final Rejection, U.S. Appl. No. 15/821,585, filed Aug. 30, 2022, 13 pages. [cited by applicant]
Notice of Allowance, U.S. Appl. No. 15/821,585, filed Jun. 14, 2023, 7 pages. [cited by applicant]
Notice of Allowance, U.S. Appl. No. 15/821,585, filed Jun. 22, 2023, 2 pages. [cited by applicant]
Cited By (1)
US 12,725,074