IP Library › Granted Patent US 12,282,807
Granted Patent B1
US 12,282,807 · App. 19/000,691 · Granted Apr 22, 2025

Systems and methods for multi-language training of machine learning models

Inventors: Xindian Long (Cary, NC); Liping Cai (Cary, NC); Xingqi Du (McKinney, TX); Steven Eric Krueger (Raleigh, NC); Joshua David Griffin (Harrisburg, NC); Yan Xu (Cary, NC); Scott Russell Pope (Cary, NC); Lawrence Edmund Lewis (Durham, NC)
Assignee: SAS INSTITUTE INC.
G06F9/54G06N20/00
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,282,807
App. No.
19/000,691
Granted
Apr 22, 2025
Kind
B1
Abstract

A system, method, and computer-program product includes receiving, by a controller node, a request to execute a client process associated with a first programming language and a plurality of threads; launching, by the controller node, a plurality of multi-language worker processes based on a number of threads associated with the client process; and instructing, by the controller node, the plurality of multi-language worker processes to execute the plurality of threads associated with the client process.

Claims (139)

1. A computer-program product comprising a non-transitory machine-readable storage medium storing computer instructions that, when executed by one or more processors, perform operations comprising:

receiving, by a controller node, a request to execute a client process associated with a first programming language and a plurality of threads;

launching, by the controller node, a plurality of multi-language worker processes based on a number of threads associated with the client process;

executing the plurality of threads associated with the client process using the plurality of multi-language worker processes, wherein executing a respective thread of the client process at a respective multi-language worker process includes:

loading a machine learning library associated with a second programming language;

executing, by the machine learning library, a multi-threaded data processing extension that receives one or more data messages, formatted in the first programming language, from the respective thread of the client process;

generating, by the multi-threaded data processing extension, one or more training artifacts based on the one or more data messages formatted in the first programming language;

training, by the machine learning library, a machine learning model in the second programming language based on the one or more training artifacts; and

transmitting, to the controller node, by the multi-threaded data processing extension, one or more second data messages that are formatted in the first programming language and include feedback data associated with the training of the machine learning model.

2. The computer-program product according to claim 1 , wherein the computer instructions, when executed by the one or more processors, perform operations further comprising:

implementing an application programming interface between the multi-threaded data processing extension and the machine learning model, wherein the application programming interface at least includes:

an application programming interface function for specifying a target training dataset and creating the request for the controller node to retrieve the target training dataset via the client process.

3. The computer-program product according to claim 1 , wherein the computer instructions, when executed by the one or more processors, perform operations further comprising:

implementing an application programming interface between the multi-threaded data processing extension and the machine learning model, wherein the application programming interface at least includes:

one or more application programming interface functions for configuring the machine learning model in the second programming language.

4. The computer-program product according to claim 1 , wherein:

a respective data message of the one or more data messages received by the multi-threaded data processing extension comprises a respective data sample and is received by a respective thread of the multi-threaded data processing extension, and

generating, by the multi-threaded data processing extension, the one or more training artifacts based on the one or more data messages includes:

applying, by the respective thread, one or more pre-processing transformations to the respective data sample, and

outputting, by the multi-threaded data processing extension, a data loader object that includes the respective data sample as a first training artifact after applying the one or more pre-processing transformations.

5. The computer-program product according to claim 4 , wherein:

a second respective data message of the one or more data messages received by the multi-threaded data processing extension comprises a second respective data sample and is received by a second respective thread of the multi-threaded data processing extension, and

generating, by the multi-threaded data processing extension, the one or more training artifacts based on the one or more data messages further includes:

applying, by the second respective thread, the one or more pre-processing transformations to the second respective data sample, and

outputting, by the multi-threaded data processing extension, the data loader object that includes the respective data sample as the first training artifact and the second respective data sample as a second training artifact after applying the one or more pre-processing transformations.

6. The computer-program product according to claim 1 , wherein:

the respective thread of the client process retrieves a plurality of data samples from a computer database, and

receiving, by the multi-threaded data processing extension, the one or more data messages, formatted in the first programming language, from the respective thread of the client process includes:

receiving a first data message comprising a first data sample of the plurality of data samples at a first thread of the multi-threaded data processing extension, and

receiving a second data message comprising a second data sample of the plurality of data samples at a second thread of the multi-threaded data processing extension.

7. The computer-program product according to claim 1 , wherein:

the respective multi-language worker process performs computer instructions written in a native language of the respective multi-language worker process, including loading the machine learning library associated with the second programming language and training the machine learning model in the second programming language,

the native language of the respective multi-language worker process corresponds to the second programming language, and

the second programming language is different from the first programming language associated with the client process.

8. The computer-program product according to claim 1 , wherein executing the plurality of threads using the plurality of multi-language worker processes includes concurrently:

executing the respective thread of the client process at the respective multi-language worker process, and

executing a second respective thread of the client process at a second respective multi-language worker process, distinct from the respective multi-language worker process.

9. The computer-program product according to claim 1 , wherein the plurality of multi-language worker processes corresponds to:

a first number of multi-language worker processes when the number of threads associated with the client process corresponds to a first number of threads, and

a second number of multi-language worker processes when the number of threads associated with the client process corresponds to a second number of threads.

10. The computer-program product according to claim 1 , wherein:

the client process retrieves a training dataset from a computer database, and

the plurality of threads associated with the client process includes:

a first thread configured to obtain a first subset of data samples from the training dataset, and

a second thread configured to obtain a second subset of data samples from the training dataset.

11. The computer-program product according to claim 1 , wherein the feedback data included in a respective data message of the one or more second data messages transmitted to the controller node in the first programming language comprises at least one of:

one or more training logs associated with the machine learning model,

a weight of the machine learning model,

one or more performance metrics associated with the machine learning model, and

a training checkpoint associated with the machine learning model.

12. A computer-implemented method comprising:

receiving, by a controller node, a request to execute a client process associated with a first programming language and a plurality of threads;

launching, by the controller node, a plurality of multi-language worker processes based on a number of threads associated with the client process;

executing the plurality of threads associated with the client process using the plurality of multi-language worker processes, wherein executing a respective thread of the client process at a respective multi-language worker process includes:

loading a machine learning library associated with a second programming language;

executing, by the machine learning library, a multi-threaded data processing extension that receives one or more data messages, formatted in the first programming language, from the respective thread of the client process;

generating, by the multi-threaded data processing extension, one or more training artifacts based on the one or more data messages formatted in the first programming language;

training, by the machine learning library, a machine learning model in the second programming language based on the one or more training artifacts; and

transmitting, to the controller node, by the multi-threaded data processing extension, one or more second data messages that are formatted in the first programming language and include feedback data associated with the training of the machine learning model.

13. The computer-implemented method according to claim 12 , wherein the computer-implemented method further comprises:

implementing an application programming interface between the multi-threaded data processing extension and the machine learning model, wherein the application programming interface at least includes:

an application programming interface function for specifying a target training dataset and creating the request for the controller node to retrieve the target training dataset via the client process.

14. The computer-implemented method according to claim 12 , wherein the computer-implemented method further comprises:

implementing an application programming interface between the multi-threaded data processing extension and the machine learning model, wherein the application programming interface at least includes:

one or more application programming interface functions for configuring the machine learning model in the second programming language.

15. The computer-implemented method according to claim 12 , wherein:

a respective data message of the one or more data messages received by the multi-threaded data processing extension comprises a respective data sample and is received by a respective thread of the multi-threaded data processing extension, and

generating, by the multi-threaded data processing extension, the one or more training artifacts based on the one or more data messages includes:

applying, by the respective thread, one or more pre-processing transformations to the respective data sample, and

outputting, by the multi-threaded data processing extension, a data loader object that includes the respective data sample as a first training artifact after applying the one or more pre-processing transformations.

16. The computer-implemented method according to claim 15 , wherein:

a second respective data message of the one or more data messages received by the multi-threaded data processing extension comprises a second respective data sample and is received by a second respective thread of the multi-threaded data processing extension, and

generating, by the multi-threaded data processing extension, the one or more training artifacts based on the one or more data messages further includes:

applying, by the second respective thread, the one or more pre-processing transformations to the second respective data sample, and

outputting, by the multi-threaded data processing extension, the data loader object that includes the respective data sample as the first training artifact and the second respective data sample as a second training artifact after applying the one or more pre-processing transformations.

17. The computer-implemented method according to claim 12 , wherein:

the respective thread of the client process retrieves a plurality of data samples from a computer database, and

receiving, by the multi-threaded data processing extension, the one or more data messages, formatted in the first programming language, from the respective thread of the client process includes:

receiving a first data message comprising a first data sample of the plurality of data samples at a first thread of the multi-threaded data processing extension, and

receiving a second data message comprising a second data sample of the plurality of data samples at a second thread of the multi-threaded data processing extension.

18. The computer-implemented method according to claim 12 , wherein:

the respective multi-language worker process performs computer instructions written in a native language of the respective multi-language worker process, including loading the machine learning library associated with the second programming language and training the machine learning model in the second programming language,

the native language of the respective multi-language worker process corresponds to the second programming language, and

the second programming language is different from the first programming language associated with the client process.

19. The computer-implemented method according to claim 12 , wherein executing the plurality of threads using the plurality of multi-language worker processes includes concurrently:

executing the respective thread of the client process at the respective multi-language worker process, and

executing a second respective thread of the client process at a second respective multi-language worker process, distinct from the respective multi-language worker process.

20. The computer-implemented method according to claim 12 , wherein the plurality of multi-language worker processes corresponds to:

a first number of multi-language worker processes when the number of threads associated with the client process corresponds to a first number of threads, and

a second number of multi-language worker processes when the number of threads associated with the client process corresponds to a second number of threads.

21. A computer-implemented system comprising:

one or more processors;

a memory; and

a computer-readable medium operably coupled to the one or more processors, the computer-readable medium having computer-readable instructions stored thereon that, when executed by the one or more processors, cause a computing device to perform operations comprising:

receiving, by a controller node, a request to execute a client process associated with a first programming language and a plurality of threads;

launching, by the controller node, a plurality of multi-language worker processes based on a number of threads associated with the client process;

executing the plurality of threads associated with the client process using the plurality of multi-language worker processes, wherein executing a respective thread of the client process at a respective multi-language worker process includes:

loading a machine learning library associated with a second programming language;

executing, by the machine learning library, a multi-threaded data processing extension that receives one or more data messages, formatted in the first programming language, from the respective thread of the client process;

generating, by the multi-threaded data processing extension, one or more training artifacts based on the one or more data messages formatted in the first programming language;

training, by the machine learning library, a machine learning model in the second programming language based on the one or more training artifacts; and

transmitting, to the controller node, by the multi-threaded data processing extension, one or more second data messages that are formatted in the first programming language and include feedback data associated with the training of the machine learning model.

22. The computer-implemented system according to claim 21 , wherein the computer-readable instructions, when executed by the one or more processors, cause the computer device to perform operations further comprising:

implementing an application programming interface between the multi-threaded data processing extension and the machine learning model, wherein the application programming interface at least includes:

an application programming interface function for specifying a target training dataset and creating the request for the controller node to retrieve the target training dataset via the client process.

23. The computer-implemented system according to claim 21 , wherein the computer-readable instructions, when executed by the one or more processors, cause the computer device to perform operations further comprising:

implementing an application programming interface between the multi-threaded data processing extension and the machine learning model, wherein the application programming interface at least includes:

one or more application programming interface functions for configuring the machine learning model in the second programming language.

24. The computer-implemented system according to claim 21 , wherein:

a respective data message of the one or more data messages received by the multi-threaded data processing extension comprises a respective data sample and is received by a respective thread of the multi-threaded data processing extension, and

generating, by the multi-threaded data processing extension, the one or more training artifacts based on the one or more data messages includes:

applying, by the respective thread, one or more pre-processing transformations to the respective data sample, and

outputting, by the multi-threaded data processing extension, a data loader object that includes the respective data sample as a first training artifact after applying the one or more pre-processing transformations.

25. The computer-implemented system according to claim 24 , wherein:

a second respective data message of the one or more data messages received by the multi-threaded data processing extension comprises a second respective data sample and is received by a second respective thread of the multi-threaded data processing extension, and

generating, by the multi-threaded data processing extension, the one or more training artifacts based on the one or more data messages further includes:

applying, by the second respective thread, the one or more pre-processing transformations to the second respective data sample, and

outputting, by the multi-threaded data processing extension, the data loader object that includes the respective data sample as the first training artifact and the second respective data sample as a second training artifact after applying the one or more pre-processing transformations.

26. The computer-implemented system according to claim 21 , wherein:

the respective thread of the client process retrieves a plurality of data samples from a computer database, and

receiving, by the multi-threaded data processing extension, the one or more data messages, formatted in the first programming language, from the respective thread of the client process includes:

receiving a first data message comprising a first data sample of the plurality of data samples at a first thread of the multi-threaded data processing extension, and

receiving a second data message comprising a second data sample of the plurality of data samples at a second thread of the multi-threaded data processing extension.

27. The computer-implemented system according to claim 21 , wherein:

the respective multi-language worker process performs computer instructions written in a native language of the respective multi-language worker process, including loading the machine learning library associated with the second programming language and training the machine learning model in the second programming language,

the native language of the respective multi-language worker process corresponds to the second programming language, and

the second programming language is different from the first programming language associated with the client process.

28. The computer-implemented system according to claim 21 , wherein executing the plurality of threads using the plurality of multi-language worker processes includes concurrently:

executing the respective thread of the client process at the respective multi-language worker process, and

executing a second respective thread of the client process at a second respective multi-language worker process, distinct from the respective multi-language worker process.

29. The computer-implemented system according to claim 21 , wherein the plurality of multi-language worker processes corresponds to:

a first number of multi-language worker processes when the number of threads associated with the client process corresponds to a first number of threads, and

a second number of multi-language worker processes when the number of threads associated with the client process corresponds to a second number of threads.

30. An information processing apparatus for use in an electronic device, the information processing apparatus comprising means for:

receiving, by a controller node, a request to execute a client process associated with a first programming language and a plurality of threads;

launching, by the controller node, a plurality of multi-language worker processes based on a number of threads associated with the client process;

instructing, by the controller node, the plurality of multi-language worker processes to execute the plurality of threads associated with the client process, wherein instructing a respective multi-language worker process to execute a respective thread of the client process includes:

transmitting, to a multi-threaded data processing extension of the respective multi-language worker process, one or more data messages from the respective thread of the client process that are formatted in the first programming language; and

receiving, from the multi-threaded data processing extension, one or more second data messages that are formatted in the first programming language and include feedback data associated with a machine learning model trained (i) in a second programming language and (ii) based on the one or more data messages formatted in the first programming language.

Assignments (1)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jan 2, 2025
From: XU, YAN; CAI, LIPING; POPE, SCOTT RUSSELL; DU, XINGQI; KRUEGER, STEVEN ERIC; GRIFFIN, JOSHUA DAVID; LEWIS, LAWRENCE EDMUND; LONG, XINDIAN
To: SAS INSTITUTE INC.
Reel/Frame 069720/0320 →
Continuity (4)
Continuation In Part 19000641 · Dec 23, 2024
Provisional Application 63680807 · Aug 8, 2024
Provisional Application 63660761 · Jun 17, 2024
Provisional Application 63637188 · Apr 22, 2024
References Cited (42)
US 7406683B2 · Kalidindi · 2008 [cited by examiner]
US 11714683B1 · Roberts · 2023 [cited by examiner]
US 20230297350A1 · Brossard · 2023 [cited by examiner]
Rane et al., “Tools and frameworks for machine learning and deep learning: A review,” Deep Science Publishing, Chapter 4, 2024, pp. 80-95. [cited by applicant]
Rahrooh et al., “Towards a framework for interoperability and reproducibility of predictive models,” Elsevier, 2023, Journal of Biomedical Informatics, pp. 1-9. [cited by applicant]
Skopt, “Skopt's Top Level Minimization Functions,” 2017, pp. 1. [cited by applicant]
Lee et al., “Towards Ensuring Software Interoperability Between Deep Learning Frameworks,” Sciendo, vol. 13, No. 4., 2023, pp. 215-228. [cited by applicant]
Abukwaik et al.,. “How practical is it? Machine Learning for Identifying Conceptual Interoperability Constraints in API Documents,” arXiv:1812.02096v1 [cs.SE] , Dec. 5, 2018, pp. 1-20. [cited by applicant]
Nilsson et al., “Interoperability and machine-to-machine translation model with mappings to machine learning tasks,” Mar. 26, 2019, pp. 1-7. [cited by applicant]
Martin et al., “BPMN4sML: A BPMN Extension for Serverless Machine Learning; Technology Independent and Interoperable Modeling of Machine Learning Workflows and their Serverless Deployment Orchestration,” arXiv:2208.0203… [cited by applicant]
Grimmer et al., “Cross-Language Interoperability in a Multi-Language Runtime,” ACM Transactions on Programming Languages and Systems, vol. 40, No. 2, May 2018. [cited by applicant]
Makhachashvilli et al., “Digital Interoperability of Foreign Languages Education,” DHW, Dec. 2021, pp. 1-8. [cited by applicant]
Boukhers et al., “Enhancing Data Space Semantic Interoperability through Machine Learning: a Visionary Perspective,” ACM, May 2023, pp. 1-6. [cited by applicant]
AWS, “AMS Advanced User Guide,” Jun. 2024, pp. 1-864. [cited by applicant]
Azure Databricks, “Best Practices for Interoperability and Usability,” Nov. 2024, pp. 1-5. [cited by applicant]
Bridging Divides: Language Interoperability | Voltron Data, 2023, pp. 1-19. [cited by applicant]
ALTAIR, “ALTAIR SLC™ With Fully Integrated Sas Language Compiler,” Technical Document, May 2023, pp. 1-4. [cited by applicant]
Jacob Nilsson, “Machine Learning Concepts for Service Data Interoperability,” Cyber-Physical Systems, pp. 1-174, 2022. [cited by applicant]
Skopt, “Getting Started,” Scikit-Optimize Contributors, 2017, pp. 1. [cited by applicant]
Melodie Rush, “Getting Started with Python Integration to SAS Viya for Predictive Modeling—Fitting a Random Forest,” SAS, Jun. 2024, pp. 1-11. [cited by applicant]
“Getting Started with Ray Tune” Ray 2.24.0, 2024, pp. 1-4. [cited by applicant]
Github, “Hyperopt-Sklearn,” 2024, pp. 1-7. [cited by applicant]
Github, “Optuna/Optuna: A Hyerperameter Optimization Framework,” 2024, pp. 1-6. [cited by applicant]
Github, “Sassoftware/Python-Swat: The SAS Scripting Wrapper for Analytics Transfer (SWAT),” 2024, pp. 1-4. [cited by applicant]
Hyperopt, “The Alternative Hyperparameter Optimization Technique You Need to Know,” Feb. 2024, pp. 1-15. [cited by applicant]
Hyperopt, “Distributed Asynchronous Hyperparameter Optimization,” Jun. 2023, pp. 1-3. [cited by applicant]
Databricks, “Model Selection Using Scikit-Learn, Hyperopt, and MLflow,” 2024, pp. 1-7. [cited by applicant]
Databricks, “Hyperparameter Tuning,” 2024, pp. 1-3. [cited by applicant]
Ava Klissouras, “integrating SAS and Python: An Intern's Journey of Growth,” The SAS Data Science Blog, Jul. 2024, pp. 1-8. [cited by applicant]
Interop et al., “How do Multiple Languages Interact in One Project?” May 2009, pp. 1-5. [cited by applicant]
Azure Databricks, “Interoperability and Usability for the Data Lakehouse,” Jun. 2024, pp. 1-2. [cited by applicant]
Wikipedia, Language Interoperabiltiy, 2024, pp. 1-2. [cited by applicant]
Zeid et al., “Interoperability in Smart Manufacturing: Research Challenges,” MDPI, 2019, pp. 1-17. [cited by applicant]
Anh Nguyen, “Programming Language interoperability in cross-platform software development,” School of Science, 2022, pp. 1-64. [cited by applicant]
Zacharewicz et al., “Model Driven Interoperability for System Engineering,” Modelling, Aug. 2020, pp. 1-28. [cited by applicant]
“Optimize Your Optimization,” 2017, pp. 1-7. [cited by applicant]
“Optuna: A Hyperparameter Optimization Framework”, 2024, pp. 1-5. [cited by applicant]
“Ray Tune: Hyperparameter Tuning” 2024, pp. 1-3. [cited by applicant]
Scikit-Optimize, “Sequential Model-Based Optimization Toolbox,” Jun. 2024, pp. 1-8. [cited by applicant]
Scikit-Optimize 0.10.2, “Sequential Model-Based Optimization in Python,” 2024, pp. 1-2. [cited by applicant]
Nilsson et al., “AI Concepts for System of Systems Dynamic Interoperability,” MDPI, 2024, pp. 1-19. [cited by applicant]
Azure, “What is Azure Machine Learing?” Microsoft Learn, 2024, pp. 1-9. [cited by applicant]
Cited By (1)
US 12,461,943