IP Library Granted Patent US 11,176,485
Granted Patent B2
US 11,176,485 · App. 15/696,419 · Granted Nov 16, 2021

Dynamic integration of machine-learning modules

Inventors: Yangqing Jia (Sunnyvale, CA); Hsiu-Tung Alex Yu (Los Altos, CA); Joel Curtis McCall (Redmond, WA); Frank James Eisenhart, III (Seattle, WA); Andrew M. Rogers (Bellevue, WA)
Assignee: Facebook Inc.
G06N20/00H04W4/21H04L67/42H04W4/50H04W4/60H04W4/80
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 11,176,485
App. No.
15/696,419
Granted
Nov 16, 2021
Kind
B2
Abstract

In one embodiment, a method includes a system building a first machine-learning module and one or more secondary machine-learning modules for operating with an application. The first and second modules may be configured to utilize, in operation, particular types of processing hardware, respectively. The system may receive from a client device a request to download the application, and in response send to the device the application with the first module. The system may then receive another request to download a selected one of the secondary modules, which may be selected based on a determination by the application running on the device that the associated type of processing hardware is available. In response, the system may send the selected module to the device. The application may be configured to selectively use the first module or the selected module to perform an operation.

Claims (58)

1. A method comprising:

by a computing system, building a first machine-learning module for operating with an application, the first machine-learning module being configured to utilize, in operation, a first type of processing hardware;

by the computing system, building one or more secondary machine-learning modules for operating with the application, the one or more secondary machine-learning modules being configured to utilize, in operation, one or more secondary types of processing hardware, respectively, wherein the one or more secondary types of processing hardware are different from each other and different from the first type of processing hardware;

by the computing system, receiving from a first client device a first request to download the application;

by the computing system, sending a portion of the application with the first machine-learning module to the first client device in response to the first request to download the application;

by the computing system, after sending the portion of the application with the first machine-learning module to the first client device, receiving from the first client device a second request to download a selected one of the one or more secondary machine-learning modules, wherein the second request from the first client device to download the selected secondary machine-learning module is made after a determination by the application with the first machine-learning module that the secondary type of processing hardware associated with the selected secondary machine-learning module is available on the first client device; and

by the computing system, sending the selected secondary machine-learning module to the first client device in response to the second request;

wherein the application at run time is configured to integrate (1) the first machine-learning module that is first downloaded along with the application with (2) the selected secondary machine-learning module that is subsequently downloaded on the first client device after the determination by the application with the first machine-learning module that the secondary type of processing hardware associated with the selected secondary machine-learning module is available on the first client device, and

wherein the application is configured to selectively use the first machine-learning module or the selected secondary machine-learning module to perform an operation.

2. The method of claim 1 , further comprising:

by the computing system, receiving from a second client device a third request to download the application;

by the computing system, sending the application with the first machine-learning module to the second client device in response to the third request;

by the computing system, receiving from the second client device a fourth request to download a second selected one of the one or more secondary machine-learning modules, wherein the second selected secondary machine-learning module is different from the selected secondary machine-learning module requested by the first client device; and

by the computing system, sending the second selected secondary machine-learning module to the second client device in response to the fourth request.

3. The method of claim 1 , wherein the first type of processing hardware is a central processing unit, wherein the one or more secondary types of processing hardware comprises a graphical processing unit or an ARM processor.

4. The method of claim 1 , wherein the application is configured to use the first machine-learning module and the selected secondary machine-learning module in parallel to perform different operations.

5. The method of claim 1 , wherein the application sent to the first client device is configured to operate with each of the one or more secondary machine-learning modules.

6. The method of claim 1 , wherein the application is configured to perform the operation using the first machine-learning module prior to receiving the selected secondary machine-learning module.

7. The method of claim 1 , wherein the application is configured to throttle down, based on a determination that a battery level of the first client device is low, a performance of the secondary type of processing hardware associated with the selected secondary machine-learning module available on the first client device.

8. One or more computer-readable non-transitory storage media embodying software that is operable when executed to:

build a first machine-learning module for operating with an application, the first machine-learning module being configured to utilize, in operation, a first type of processing hardware;

build one or more secondary machine-learning modules for operating with the application, the one or more secondary machine-learning modules being configured to utilize, in operation, one or more secondary types of processing hardware, respectively, wherein the one or more secondary types of processing hardware are different from each other and different from the first type of processing hardware;

receive from a first client device a first request to download the application;

send a portion of the application with the first machine-learning module to the first client device in response to the first request to download the application;

after sending the portion of the application with the first machine-learning module to the first client device, receive from the first client device a second request to download a selected one of the one or more secondary machine-learning modules, wherein the second request from the first client device to download the selected secondary machine-learning module is made after a determination by the application with the first machine-learning module that the secondary type of processing hardware associated with the selected secondary machine-learning module is available on the first client device; and

send the selected secondary machine-learning module to the first client device in response to the second request;

wherein the application at run time is configured to integrate (1) the first machine-learning module that is first downloaded along with the application with (2) the selected secondary machine-learning module that is subsequently downloaded on the first client device after the determination by the application with the first machine-learning module that the secondary type of processing hardware associated with the selected secondary machine-learning module is available on the first client device, and

wherein the application is configured to selectively use the first machine-learning module or the selected secondary machine-learning module to perform an operation.

9. The media of claim 8 , wherein the software is further operable when executed to:

receive from a second client device a third request to download the application;

send the application with the first machine-learning module to the second client device in response to the third request;

receive from the second client device a fourth request to download a second selected one of the one or more secondary machine-learning modules, wherein the second selected secondary machine-learning module is different from the selected secondary machine-learning module requested by the first client device; and

send the second selected secondary machine-learning module to the second client device in response to the fourth request.

10. The media of claim 8 , wherein the first type of processing hardware is a central processing unit, wherein the one or more secondary types of processing hardware comprises a graphical processing unit or an ARM processor.

11. The media of claim 8 , wherein the application is configured to use the first machine-learning module and the selected secondary machine-learning module in parallel to perform different operations.

12. The media of claim 8 , wherein the application sent to the first client device is configured to operate with each of the one or more secondary machine-learning modules.

13. The media of claim 8 , wherein the application is configured to perform the operation using the first machine-learning module prior to receiving the selected secondary machine-learning module.

14. The media of claim 8 , wherein the application is configured to throttle down, based on a determination that a battery level of the first client device is low, a performance of the secondary type of processing hardware associated with the selected secondary machine-learning module available on the first client device.

15. A system comprising:

one or more processors; and

one or more computer-readable non-transitory storage media coupled to one or more of the processors and comprising instructions operable when executed by one or more of the processors to cause the system to:

build a first machine-learning module for operating with an application, the first machine-learning module being configured to utilize, in operation, a first type of processing hardware;

build one or more secondary machine-learning modules for operating with the application, the one or more secondary machine-learning modules being configured to utilize, in operation, one or more secondary types of processing hardware, respectively, wherein the one or more secondary types of processing hardware are different from each other and different from the first type of processing hardware;

receive from a first client device a first request to download the application;

send a portion of the application with the first machine-learning module to the first client device in response to the first request to download the application;

after sending the portion of the application with the first machine-learning module to the first client device, receive from the first client device a second request to download a selected one of the one or more secondary machine-learning modules, wherein the second request from the first client device to download the selected secondary machine-learning module is made after a determination by the application with the first machine-learning module that the secondary type of processing hardware associated with the selected secondary machine-learning module is available on the first client device; and

send the selected secondary machine-learning module to the first client device in response to the second request;

wherein the application at run time is configured to integrate (1) the first machine-learning module that is first downloaded along with the application with (2) the selected secondary machine-learning module that is subsequently downloaded on the first client device after the determination by the application with the first machine-learning module that the secondary type of processing hardware associated with the selected secondary machine-learning module is available on the first client device, and

wherein the application is configured to selectively use the first machine-learning module or the selected secondary machine-learning module to perform an operation.

16. The system of claim 15 , wherein the processors are further operable when executing the instructions to:

receive from a second client device a third request to download the application;

send the application with the first machine-learning module to the second client device in response to the third request;

receive from the second client device a fourth request to download a second selected one of the one or more secondary machine-learning modules, wherein the second selected secondary machine-learning module is different from the selected secondary machine-learning module requested by the first client device; and

send the second selected secondary machine-learning module to the second client device in response to the fourth request.

17. The system of claim 15 , wherein the application is configured to use the first machine-learning module and the selected secondary machine-learning module in parallel to perform different operations.

18. The system of claim 15 , wherein the application sent to the first client device is configured to operate with each of the one or more secondary machine-learning modules.

19. The system of claim 15 , wherein the application is configured to perform the operation using the first machine-learning module prior to receiving the selected secondary machine-learning module.

20. The system of claim 15 , wherein the application is configured to throttle down, based on a determination that a battery level of the first client device is low, a performance of the secondary type of processing hardware associated with the selected secondary machine-learning module available on the first client device.

Assignments (2)
CHANGE OF NAME Recorded Dec 20, 2021
From: FACEBOOK, INC.
To: META PLATFORMS, INC.
Reel/Frame 058553/0802 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Nov 7, 2017
From: JIA, YANGQING; YU, HSIU-TUNG ALEX; MCCALL, JOEL CURTIS; EISENHART, FRANK JAMES, III; ROGERS, ANDREW M.
To: FACEBOOK, INC.
Reel/Frame 044052/0599 →
Continuity (1)
Related Publication 20190073607A1 · Mar 7, 2019