IP Library Granted Patent US 12,229,150
Granted Patent B2
US 12,229,150 · App. 16/793,881 · Granted Feb 18, 2025

Intelligent compute request scoring and routing

Inventors: Matthew Lynch (Brooklyn, NY); Brandon Krieger (New York, NY); Giulio Mecocci (Brooklyn, NY); Kyle Patron (Philadelphia, PA); Kevin Pyc (New York, NY); Sander Kromwijk (New York, NY)
Assignee: Palantir Technologies Inc.
G06F16/24578G06F9/5027
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,229,150
App. No.
16/793,881
Granted
Feb 18, 2025
Kind
B2
Abstract

A system and methods for determining computer resource allocation, the system having a network communication interface configured to receive a query from a device, the query indicating a request to perform a processing operation on a portion of one or more data set. The system may also include data storage for data including historical information related to processing of data sets by back-end computer resources, and hardware processors configured to determine one or more scores associated with a query and based at least in part on the historical information. The system may determine a particular back-end computer resource with a highest score, provide a compute request to the particular back-end computer resource to perform a processing operation on a portion of one or more data sets, and store processing information related to the processing of the compute request by the particular back-end computer resource as historical information.

Claims (48)

1. A system comprising:

one or more computer processors configured to execute computer-executable instructions to cause the system to at least:

receive, via a user input, a query indicating a request to perform a processing operation on a portion of one or more data sets;

determine that the query includes user defined code for running by a back-end computer resource, the user defined code including a custom script to perform specific operations;

determine one or more scores associated with the query, including at least:

a first score based at least in part on the query including the user defined code, wherein the first score indicates a level of risk of executing the user defined code; and

a second score based at least in part on a scope of the processing operation including one or more of a type of processing being performed or a size of the one or more data sets being processed;

in response to determining that the query includes user defined code, filter a set of back-end resources to exclude back-end resources not configured to execute the user defined code;

determine, based on the received query, the determined one or more scores, and historical information of prior processing outcomes, a back-end resource of the filtered set of back-end resources to execute the query;

determine a stop parameter based on the user defined code, the stop parameter indicating one or more of a run-time limit, a memory usage limit, or a post-processing action configured to stop the determined back-end computer resource;

generate a compute request including the query and the stop parameter; and

provide the compute request to the determined back-end computer resource.

2. The system of claim 1 , wherein the back-end computer resource that receives the query is indicated by a highest score of the one or more scores associated with the query.

3. The system of claim 1 , wherein at least one of the scores is based on an originator of the query.

4. The system of claim 3 , wherein the originator is associated with a predefined group of a number of groups that the query may be associated with.

5. The system of claim 1 , wherein the historical information includes processing time.

6. The system of claim 1 , wherein the historical information includes size of the data set.

7. The system of claim 1 , wherein the historical information includes characteristics of the back-end computer resource.

8. The system of claim 1 , wherein the historical information includes query originator data.

9. The system of claim 1 , wherein the historical information includes data set information corresponding to a particular data set processed by the back-end computer resource.

10. The system of claim 1 , wherein the one or more computer processors are further configured to execute the computer-executable instructions to at least receive processing information from two or more back-end computer resources and save the processing information as historical information.

11. The system of claim 1 , wherein the one or more computer processors are further configured to execute the computer-executable instructions to control a lifecycle parameter of the back-end computer resource.

12. The system of claim 11 , wherein controlling a lifecycle parameter comprises setting a start parameter of the back-end computer resource.

13. The system of claim 11 , wherein controlling a lifecycle parameter comprises controlling a start of a back-end computer resource with similar compute parameters.

14. The system of claim 1 , wherein the one or more computer processors are further configured to execute computer-executable instructions to start the back-end computer resource to process the compute request for a query with user defined code and stop the determined back-end computer resource when the compute request is completed.

15. The system of claim 1 , wherein the user defined code is not selectable from a user interface.

16. The system of claim 1 , wherein the level of risk indicates a risk of causing a divide by zero operation or an incomplete processing flow, and the instructions further cause the system to:

trim the query by replacing a portion of the query with previously computed data associated with previous execution of the portion of the query.

17. The system of claim 1 , wherein the instructions further cause the system to:

dynamically adjust one or more scores in real-time based on current health status of the back-end resources.

18. A method of resource allocation, comprising:

receiving, via a user input, a query indicating a request to perform a processing operation on a portion of one or more data sets;

determining that the query includes user defined code for running by a back-end computer resource, the user defined code including a custom script to perform specific operations;

determining one or more scores associated with the query, including at least:

a first score based at least in part on the query including the user defined code, wherein the first score indicates a level of risk of executing the user defined code; and

a second score based at least in part on a scope of the processing operation including one or more of a type of processing being performed or a size of the one or more data sets being processed;

in response to determining that the query includes user defined code, filtering a set of back-end resources to exclude back-end resources not configured to execute the user defined code;

determining, based on the received query, the determined one or more scores, and historical information of prior processing outcomes from previous queries, a back-end resource of the filtered set of back-end resources to execute the query;

determining a stop parameter based on the user defined code, the stop parameter indicating one or more of a run-time limit, a memory usage limit, or a post-processing action configured to stop the determined back-end computer resource;

generating a compute request including the query and the stop parameter; and

providing the compute request to the determined back-end resource;

wherein the method is performed by one or more computer hardware processors configured to execute computer-executable instructions stored on a non-transitory computer storage medium.

19. The method of claim 18 , further comprising starting the back-end resource for a query with user defined code, and stopping the back-end resource when the compute request is completed.

20. The method of claim 18 , further comprising:

starting the back-end computer resource;

providing a compute request to the back-end resource; and

stopping the determined backend resource based on the stop parameter.

21. The method of claim 18 , wherein the user defined code is not selectable from a user interface.

Assignments (2)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Sep 14, 2023
From: LYNCH, MATTHEW; KRIEGER, BRANDON; MECOCCI, GIULIO; PATRON, KYLE; PYC, KEVIN; KROMWIJK, SANDER
To: PALANTIR TECHNOLOGIES INC.
Reel/Frame 064910/0615 →
SECURITY INTEREST Recorded Jul 3, 2022
From: PALANTIR TECHNOLOGIES INC.
To: WELLS FARGO BANK, N.A.
Reel/Frame 060572/0506 →
Continuity (3)
Continuation 16175371 · Oct 30, 2018
Provisional Application 62729204 · Sep 10, 2018
Related Publication 20200183945A1 · Jun 11, 2020
References Cited (78)
US 5515488A · Hoppe et al. · 1996 [cited by applicant]
US 6006225A · Bowman et al. · 1999 [cited by applicant]
US 6789074B1 · Hara · 2004 [cited by examiner]
US 8972337B1 · Gupta · 2015 [cited by applicant]
US 9686086B1 · Nguyen et al. · 2017 [cited by applicant]
US 10057373B1 · Chang · 2018 [cited by applicant]
US 10606851B1 · Lynch et al. · 2020 [cited by applicant]
US 10754701B1 · Wagner · 2020 [cited by examiner]
US 10831549B1 · Radhakrishnan · 2020 [cited by examiner]
US 20040186826A1 · Choi et al. · 2004 [cited by applicant]
US 20050192937A1 · Barsness · 2005 [cited by examiner]
US 20050262050A1 · Fagin et al. · 2005 [cited by applicant]
US 20060026116A1 · Day et al. · 2006 [cited by applicant]
US 20060041544A1 · Santosuosso · 2006 [cited by examiner]
US 20080201748A1 · Hasek et al. · 2008 [cited by applicant]
US 20090007101A1 · Azar et al. · 2009 [cited by applicant]
US 20090112799A1 · Barsness · 2009 [cited by examiner]
US 20110219020A1 · Oks et al. · 2011 [cited by applicant]
US 20120023120A1 · Kanefsky · 2012 [cited by applicant]
US 20120084316A1 · Koenig et al. · 2012 [cited by applicant]
US 20120198462A1 · Cham et al. · 2012 [cited by applicant]
US 20120278339A1 · Wang · 2012 [cited by applicant]
US 20130024484A1 · Banerjee et al. · 2013 [cited by applicant]
US 20130067581A1 · Venketeshwar · 2013 [cited by examiner]
US 20130275381A1 · De Schrijvr et al. · 2013 [cited by applicant]
US 20140053091A1 · Hou et al. · 2014 [cited by applicant]
US 20140059062A1 · Ahn · 2014 [cited by examiner]
US 20140082647A1 · Verrilli et al. · 2014 [cited by applicant]
US 20140090081A1 · Mattsson et al. · 2014 [cited by applicant]
US 20140280056A1 · Kelly · 2014 [cited by applicant]
US 20140282160A1 · Zarpas · 2014 [cited by applicant]
US 20140282163A1 · MacKinlay et al. · 2014 [cited by applicant]
US 20150234898A1 · Choi et al. · 2015 [cited by applicant]
US 20150324371A1 · Guo · 2015 [cited by applicant]
US 20160021117A1 · Harmon et al. · 2016 [cited by applicant]
US 20160029248A1 · Syed et al. · 2016 [cited by applicant]
US 20160034214A1 · Kamp et al. · 2016 [cited by applicant]
US 20160041984A1 · Kaneda et al. · 2016 [cited by applicant]
US 20160042009A1 · Gkoulalas-Divanis · 2016 [cited by examiner]
US 20160092510A1 · Samantaray et al. · 2016 [cited by applicant]
US 20160119209A1 · Rosengarten · 2016 [cited by applicant]
US 20160134723A1 · Gupta et al. · 2016 [cited by applicant]
US 20160171235A1 · Konik · 2016 [cited by examiner]
US 20160171236A1 · Konik et al. · 2016 [cited by applicant]
US 20160259939A1 · Bobritsky · 2016 [cited by examiner]
US 20170111445A1 · Kunde · 2017 [cited by examiner]
US 20170206372A1 · Jung · 2017 [cited by applicant]
US 20170220703A1 · Martha · 2017 [cited by applicant]
US 20170262196A1 · Hirose · 2017 [cited by applicant]
US 20170270189A1 · Kaneda · 2017 [cited by examiner]
US 20170337209A1 · Schaet et al. · 2017 [cited by applicant]
US 20180039399A1 · Kaltegaertner et al. · 2018 [cited by applicant]
US 20180121426A1 · Barsness et al. · 2018 [cited by applicant]
US 20180300174A1 · Karanasos et al. · 2018 [cited by applicant]
US 20180343321A1 · Chang · 2018 [cited by applicant]
US 20180349431A1 · Garcia Tellez · 2018 [cited by examiner]
US 20200042647A1 · Pandey · 2020 [cited by examiner]
US 20230315519A1 · Krieger et al. · 2023 [cited by applicant]
EP 2608070 · 2013 [cited by applicant]
EP 3620934 · 2020 [cited by applicant]
EP 4198764 · 2023 [cited by applicant]
EP 4254186 · 2023 [cited by applicant]
KR 101512647 · 2015 [cited by applicant]
TW 200939043 · 2009 [cited by applicant]
Official Communication for European Patent Application No. 19196317.2 dated Feb. 17, 2020, 13 pages. [cited by applicant]
Howe et al., “SAVVYSEARCH—A Metasearch Engine That Learns Which Search Engines to Query”, AI Magazine, American Association for Artificial Intelligence, vol. 18, No. 2, Jul. 21, 1997, 8 pages. [cited by applicant]
Wikipedia, “User-defined function”, Jan. 21, 2018, retrieved from the Internet: http://en.wikipedia.org/w/index.php?title=User-defined_function&oldid=821540195 on Feb. 4, 2020, 4 pages. [cited by applicant]
Official Communication for European Patent Application No. 19196317.2 dated Feb. 8, 2021, 6 pages. [cited by applicant]
Decision to Refuse a European Patent Application for European Patent Application No. 19196317.2 dated Dec. 5, 2022, 20 pages. [cited by applicant]
Official Communication for European Patent Application No. 19196317.2 dated Jan. 21, 2022, 11 pages. [cited by applicant]
Official Communication for European Patent Application No. 23156695.1 dated Mar. 6, 2023, 14 pages. [cited by applicant]
Official Communication for European Patent Application No. 23165009.4 dated Jun. 30, 2023, 12 pages. [cited by applicant]
Afify Ghada M et al: “A hybrid filtering approach for storage optimization in main-memory cloud|database”, Egyptian Informatics Journal, Elsevier, Amsterdam, NL, vol. 16, No. 3, Aug. 21, 2015 (Aug. 21, 2015), pp. 329-33… [cited by applicant]
Brooks et al., “Hoptrees: Branching History Navigation for Hierarchies,” Sep. 2, 2013, Network and Parallel Computing, pp. 316-333. [cited by applicant]
Ravishankar Ramamurthy et al: “A Case for Fractured Mirrors”, Proceedings of the Twenty-Seventh International Conference On Very Large Data Bases, Roma, Sep. 11-14, Morgan Kaufman, Orlando, FLA, Jan. 1, 2002 (Jan. 1, 20… [cited by applicant]
“SAP BusinessObjects Explorer Online Help,” Mar. 19, 2012, retrieved on Apr. 21, 2016 http://help.sap.com/businessobject/product_guides/boexir4/en/xi4_exp_user_en.pdf. [cited by applicant]
Zaharia et al., “Resilient Distributed Datasets: A Fault-Tolerant Abstractions for In-Memory Cluster Computing,” Proceedings of the 9th USENIX Conference on Networked Systems and Design and Implementation, 2012, 14 page… [cited by applicant]
Official Communication for European Patent Application No. 19196317.2 dated Nov. 14, 2019, 15 pages. [cited by applicant]