IP Library Granted Patent US 12,379,909
Granted Patent B2
US 12,379,909 · App. 18/308,570 · Granted Aug 5, 2025

Automated program conversion for heterogeneous and FaaS computing with minimal human intervention

Inventors: Dejan S. Milojicic (Milpitas, CA); Aditya Dhakal (Milpitas, CA); Eitan Frachtenberg (Portland, OR); Ninad Sanjay Hogade (Ft. Collins, CO); Rolando Pablo Hong Enriquez (London, GB); Gourav Rattihalli (Milpitas, CA); Tobias Pfandzelter (Milpitas, CA)
Assignee: Hewlett Packard Enterprise Development LP
G06F8/447G06F9/4881G06N5/022G06N20/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,379,909
App. No.
18/308,570
Granted
Aug 5, 2025
Kind
B2
Abstract

Systems and methods are provided for implementing an iterative function deployment in a Function-as-a-Service (FaaS) computing environment. For example, the system may receive a request to execute a program and convert machine-readable code from the request into functions that are deployable in the FaaS computing environment. The system may determine a first deployment of the functions that defines scheduling and execution tasks, and also an execution metric by a trained prediction model. The system may adjust execution of the plurality of functions and also adjust the execution metric in a second deployment. The system may implement the second deployment at run-time, such that the machine-readable code from the request is executed by the computing components of the FaaS infrastructure in accordance with the second deployment.

Claims (52)

1. A method comprising:

receiving a request to execute a program comprising machine-readable code;

converting, by a system comprising a hardware processor, the machine-readable code into a plurality of functions that are deployable in a Function-as-a-Service (FaaS) computing environment;

determining, by the system, a first deployment of the plurality of functions in the FaaS computing environment, the first deployment defining scheduling and execution tasks for each function at run-time on computing components of the FaaS computing environment;

determining, by a trained prediction model, an execution metric for the first deployment that corresponds with run-time operations of the first deployment;

adjusting, by the system, execution of the plurality of functions and also adjusting the execution metric in a second deployment of the plurality of functions in the FaaS computing environment; and

implementing the second deployment of the plurality of functions in the FaaS computing environment at run-time, the implementing causing execution of the machine-readable code by the computing components of the FaaS computing environment in accordance with the second deployment,

wherein the first deployment and the second deployment are determined prior to run-time.

2. The method of claim 1 , wherein the computing components of the FaaS computing environment comprise one or more of a set including an accelerator, a Field Programmable Gate Array (FPGA), or a Central Processing Unit (CPU).

3. The method of claim 1 , wherein the machine-readable code of the program comprises programmer annotations, and wherein the converting of the machine-readable code into the plurality of functions is based on the programmer annotations.

4. The method of claim 1 , wherein the converting and the determining of the first deployment and the second deployment are performed by a compiler in the system.

5. The method of claim 1 , wherein the computing components of the FaaS computing environment comprise virtual or physical computing components.

6. The method of claim 1 , wherein the converting comprises creating function calls of the plurality of functions in the FaaS computing environment.

7. The method of claim 1 , wherein the determining of the second deployment is part of an iterative adjustment, prior to run-time, of a deployment of the plurality of functions in the FaaS computing environment, the iterative adjustment comprising:

inputting a currently adjusted deployment of the plurality of functions starting with the first deployment to the trained prediction model to produce a predicted execution metric for the currently adjusted deployment that corresponds with run-time operations of the currently adjusted deployment,

determining a modified deployment of the plurality of functions in the FaaS computing environment, the determining of the modified deployment comprising adjusting an assignment of the plurality of functions to the computing components, and

proceeding to a next iteration of the iterative adjustment using the modified deployment as the currently adjusted deployment until the predicted execution metric of the currently adjusted deployment satisfies a threshold.

8. A system comprising:

a processor; and

a non-transitory storage medium storing machine-readable instructions executable on the processor to:

receive a request to execute a program comprising machine-readable code;

convert the machine-readable code into a plurality of functions that are deployable in a Function-as-a-Service (FaaS) computing environment;

determine, prior to run-time of the program, a first deployment of the plurality of functions in the FaaS computing environment, the first deployment defining scheduling and execution tasks for each function at the run-time of the program on computing components of the FaaS computing environment;

determine, by a trained prediction model, an execution metric for the first deployment that corresponds with run-time operations of the first deployment;

determine, prior to the run-time of the program, a second deployment of the plurality of functions in the FaaS computing environment, the determining of the second deployment comprising adjusting an assignment of the plurality of functions to the computing components; and

implement the second deployment of the plurality of functions in the FaaS computing environment at the run-time of the program, the implementing causing execution of the machine-readable code by the computing components of the FaaS computing environment in accordance with the second deployment.

9. The system of claim 8 , wherein the computing components of the FaaS computing environment comprise one or more of an accelerator, an FPGA, or a CPU.

10. The system of claim 8 , wherein the machine-readable code of the program comprises programmer annotations, and the converting of the machine-readable code into the plurality of functions is based on the programmer annotations.

11. The system of claim 8 , wherein the converting and the determining of the first deployment and the second deployment are performed by a compiler in the system.

12. The system of claim 8 , wherein the computing components of the FaaS computing environment comprise virtual or physical computing components.

13. The system of claim 8 , wherein the converting comprises creating function calls of the plurality of functions in the FaaS computing environment.

14. The system of claim 8 , wherein the machine-readable instructions are executable on the processor to:

determine the second deployment as part of an iterative adjustment, prior to the run-time of the program, of a deployment of the plurality of functions in the FaaS computing environment, the iterative adjustment comprising:

inputting a currently adjusted deployment of the plurality of functions starting with the first deployment to the trained prediction model to produce a predicted execution metric for the currently adjusted deployment that corresponds with run-time operations of the currently adjusted deployment,

determining a modified deployment of the plurality of functions in the FaaS computing environment, the determining of the modified deployment comprising adjusting an assignment of the plurality of functions to the computing components, and

proceeding to a next iteration of the iterative adjustment using the modified deployment as the currently adjusted deployment until the predicted execution metric of the currently adjusted deployment satisfies a threshold.

15. A non-transitory computer-readable storage medium comprising instructions that upon execution cause a system to:

receive a request to execute a program comprising machine-readable code;

convert the machine-readable code into a plurality of functions that are deployable in a Function-as-a-Service (FaaS) computing environment;

determine, prior to run-time of the program, a first deployment of the plurality of functions in the FaaS computing environment, the first deployment defining scheduling and execution tasks for each function at the run-time of the program on computing components of the FaaS computing environment;

determine, by a trained prediction model, an execution metric for the first deployment that corresponds with run-time operations of the first deployment;

determine, prior to the run-time of the program, a second deployment of the plurality of functions in the FaaS computing environment, the determining of the second deployment comprising adjusting an assignment of the plurality of functions to the computing components; and

implement the second deployment of the plurality of functions in the FaaS computing environment at the run-time of the program, the implementing causing execution of the machine-readable code by the computing components of the FaaS computing environment in accordance with the second deployment.

16. The non-transitory computer-readable storage medium of claim 15 , wherein the computing components of the FaaS computing environment comprise one or more of an accelerator, an FPGA, or a CPU.

17. The non-transitory computer-readable storage medium of claim 15 , wherein the machine-readable code of the program comprises programmer annotations, and the converting of the machine-readable code into the plurality of functions is based on the programmer annotations.

18. The non-transitory computer-readable storage medium of claim 15 , wherein the converting and the determining of the first deployment and the second deployment are performed by a compiler in the system.

19. The non-transitory computer-readable storage medium of claim 15 , wherein the converting comprises creating function calls of the plurality of functions in the FaaS computing environment.

20. The non-transitory computer-readable storage medium of claim 15 , wherein the instructions upon execution cause the system to:

determine the second deployment as part of an iterative adjustment, prior to the run-time of the program, of a deployment of the plurality of functions in the FaaS computing environment, the iterative adjustment comprising:

inputting a currently adjusted deployment of the plurality of functions starting with the first deployment to the trained prediction model to produce a predicted execution metric for the currently adjusted deployment that corresponds with run-time operations of the currently adjusted deployment,

determining a modified deployment of the plurality of functions in the FaaS computing environment, the determining of the modified deployment comprising adjusting an assignment of the plurality of functions to the computing components, and

proceeding to a next iteration of the iterative adjustment using the modified deployment as the currently adjusted deployment until the predicted execution metric of the currently adjusted deployment satisfies a threshold.

Assignments (3)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Aug 1, 2023
From: HEWLETT-PACKARD LIMITED
To: HEWLETT PACKARD ENTERPRISE DEVELOPMENT LP
Reel/Frame 064457/0402 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded May 22, 2023
From: MILOJICIC, DEJAN S.; DHAKAL, ADITYA; FRACHTENBERG, EITAN; HOGADE, NINAD SANJAY; RATTIHALLI, GOURAV; PFANDZELTER, TOBIAS
To: HEWLETT PACKARD ENTERPRISE DEVELOPMENT LP
Reel/Frame 063718/0099 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded May 22, 2023
From: HONG ENRIQUEZ, ROLANDO PABLO
To: HEWLETT-PACKARD LIMITED
Reel/Frame 063718/0309 →
Continuity (1)
Related Publication 20240362000A1 · Oct 31, 2024
References Cited (16)
US 10541942B2 · Bernat et al. · 2020 [cited by applicant]
US 10671360B1 · Todd et al. · 2020 [cited by applicant]
US 10678522B1 · Yerramreddy et al. · 2020 [cited by applicant]
US 11048800B2 · Sood et al. · 2021 [cited by applicant]
US 20190179678A1 · Banerjee · 2019 [cited by examiner]
US 20190317737A1 · Metsch · 2019 [cited by examiner]
US 20200195520A1 · Guim Bernat et al. · 2020 [cited by applicant]
US 20200241999A1 · Guim Bernat et al. · 2020 [cited by applicant]
US 20210021485A1 · Guim Bernat et al. · 2021 [cited by applicant]
US 20210132935A1 · Dinh et al. · 2021 [cited by applicant]
US 20210133066A1 · He · 2021 [cited by examiner]
WO 2020096639A1 · 2020 [cited by applicant]
WO WO2020207595A1 · 2020 [cited by examiner]
WO 2021040582A1 · 2021 [cited by applicant]
WO WO2023007210A1 · 2023 [cited by examiner]
Pimpalkhute, Varad, et al., MetaFaaS: Learning-to-learn on Serverless, Proceedings of the International Workshop on Big Data in Emergent Distributed Environments, Jun. 2022, 9 pages, [retrieved on Apr. 4, 2025]. Retriev… [cited by examiner]