US11121949B2 - Distributed assignment of video analytics tasks in cloud computing environments to reduce bandwidth utilization - Google Patents

Distributed assignment of video analytics tasks in cloud computing environments to reduce bandwidth utilization Download PDF

Info

Publication number
US11121949B2
US11121949B2 US16/736,539 US202016736539A US11121949B2 US 11121949 B2 US11121949 B2 US 11121949B2 US 202016736539 A US202016736539 A US 202016736539A US 11121949 B2 US11121949 B2 US 11121949B2
Authority
US
United States
Prior art keywords
video analytics
video
task
tasks
assignment
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
US16/736,539
Other versions
US20200322238A1 (en
Inventor
Hong-Min Chu
Shao-Wen Yang
Yen-Kuang Chen
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Intel Corp
Original Assignee
Intel Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Intel Corp filed Critical Intel Corp
Priority to US16/736,539 priority Critical patent/US11121949B2/en
Publication of US20200322238A1 publication Critical patent/US20200322238A1/en
Assigned to INTEL CORPORATION reassignment INTEL CORPORATION ASSIGNMENT OF ASSIGNORS INTEREST (SEE DOCUMENT FOR DETAILS). Assignors: CHU, Hong-Min, CHEN, YEN-KUANG, YANG, Shao-wen
Priority to US17/473,597 priority patent/US11463333B2/en
Application granted granted Critical
Publication of US11121949B2 publication Critical patent/US11121949B2/en
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L43/00Arrangements for monitoring or testing data switching networks
    • H04L43/04Processing captured monitoring data, e.g. for logfile generation
    • H04L43/045Processing captured monitoring data, e.g. for logfile generation for graphical visualisation of monitoring data
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/02Protocols based on web technology, e.g. hypertext transfer protocol [HTTP]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L12/00Data switching networks
    • H04L12/28Data switching networks characterised by path configuration, e.g. LAN [Local Area Networks] or WAN [Wide Area Networks]
    • H04L12/44Star or tree networks
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L41/00Arrangements for maintenance, administration or management of data switching networks, e.g. of packet switching networks
    • H04L41/08Configuration management of networks or network elements
    • H04L41/0896Bandwidth or capacity management, i.e. automatically increasing or decreasing capacities
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L41/00Arrangements for maintenance, administration or management of data switching networks, e.g. of packet switching networks
    • H04L41/12Discovery or management of network topologies

Definitions

  • This disclosure relates generally to video analytics processing in cloud computing environments and, more particularly, to distributed assignment of video analytics tasks in cloud computing environments to reduce bandwidth utilization.
  • Video analytics involves processing video data to detect and identify content, features, information, events, etc., contained in the video frames represented by the video data.
  • video analytics can be used in a wide variety of applications, such as license plate detection for toll collection, facial recognition for passport control operations, object detection for airport screening, etc. Due to its associated processing requirements, video analytics applications can be natural candidates for implementation in a cloud computing environment.
  • FIGS. 1A-1B illustrate an example conventional assignment of video analytics processing tasks in an example cloud computing environment, and an example distributed assignment of video analytics processing tasks in the example cloud computing environment in accordance with the teachings of this disclosure.
  • FIGS. 2A-2B illustrates an example directed acyclic graph and example model ordering, model parallelism and data parallelism properties that may be used to implement distributed assignment of video analytics processing tasks in the example cloud computing environment of FIG. 1B .
  • FIG. 3 illustrates an example distributed video analytics task assignment determined for the example cloud computing environment of FIG. 1B based on the example directed acyclic graph and the example model ordering, model parallelism and data parallelism properties of FIGS. 2A-2B .
  • FIG. 4 is a block diagram of an example video analytics task scheduler that may be used to implement distributed assignment of video analytics processing tasks in the example cloud computing environment of FIG. 1B based on the example directed acyclic graph and the example model ordering, model parallelism and data parallelism properties of FIGS. 2A-2B to achieve the example distributed video analytics task assignment of FIG. 3 .
  • FIG. 5 illustrates an example task assignment procedure to be performed by the example video analytics task scheduler of FIG. 4 to implement distributed assignment of video analytics processing tasks in the example cloud computing environment of FIG. 1B .
  • FIG. 6 illustrates an example implementation of an example cost function to be evaluated by the example video analytics task scheduler of FIG. 4 when performing the example task assignment procedure of FIG. 5 .
  • FIG. 7 illustrates an example implementation of an example task ordering constraint to be satisfied by the example video analytics task scheduler of FIG. 4 when performing the example task assignment procedure of FIG. 5 .
  • FIG. 8 illustrates an example implementation of an example resource utilization constraint to be satisfied by the example video analytics task scheduler of FIG. 4 when performing the example task assignment procedure of FIG. 5 .
  • FIG. 9 illustrates an example implementation of an example bandwidth utilization constraint to be satisfied by the example video analytics task scheduler of FIG. 4 when performing the example task assignment procedure of FIG. 5 .
  • FIG. 10 is a flowchart representative of example machine readable instructions that may be executed to implement the example video analytics task scheduler of FIG. 4 and/or to perform the example task assignment procedure of FIG. 5 .
  • FIG. 11 is a block diagram of an example processor platform structured to execute the example machine readable instructions of FIG. 10 to implement the example video analytics task scheduler of FIG. 4 .
  • Example task assignment methods disclosed herein for video analytics processing in a cloud computing environment include determining a directed acyclic graph including nodes and edges to represent video sources, a cloud computing platform, and intermediate network devices in the cloud computing environment.
  • the intermediate network devices include those network elements, such as routers, gateways, etc., that communicate data from the video sources to the cloud computing platform.
  • Disclosed example task assignment methods also include specifying task orderings for respective sequences of video analytics processing tasks to be executed in the cloud computing environment on respective video source data generated by respective ones of the video sources.
  • Disclosed example task assignment methods further include assigning, based on the directed acyclic graph and the task orderings, combinations of the video sources, the intermediate network devices and the cloud computing platform to execute the respective sequences of video analytics processing tasks to reduce an overall bandwidth utilized by the sequences of video analytics processing tasks in the cloud computing environment.
  • the nodes of the directed acyclic graph include a root node to represent the cloud computing platform, leaf nodes (also referred to as edge nodes in some contexts) to represent the video source devices, and intermediate nodes to represent the intermediate network devices.
  • the edges of the directed acyclic graph include a first set of edges representing available communication paths between the video source devices and the intermediate network devices, and a second set of edges representing available communication paths between the intermediate network devices and the cloud computing platform in the cloud computing environment.
  • the directed acyclic graph defines, for each leaf node, one respective uplink data path from that leaf node to the cloud computing platform.
  • a first leaf node of the directed acyclic graph corresponds to a first video source
  • a first combination of nodes defines a first uplink path from the first leaf node to the cloud computing platform
  • the assigning performed by the methods includes assigning at least some of the first combination of nodes included in the first uplink path to execute a first one of the sequences of video analytics processing tasks to preserve, along the first uplink path, a first task ordering for the first one of the sequences of video analytics processing tasks.
  • the assigning performed by the methods further includes (1) assigning a first node in the first combination of nodes to execute a first task in the first one of the sequences of video analytics processing tasks, the first node at a first position of the first uplink path, (2) assigning a second node in the first combination of nodes to execute a second task in the first one of the sequences of video analytics processing tasks, the second node at a second position of the first uplink path subsequent to the first position, and (3) assigning the second node to execute each other task in the first one of the sequences of video analytics processing tasks ordered between the first task and the second task in the first task ordering.
  • the assigning performed by the methods is further based on a resource utilization constraint and a bandwidth utilization constraint.
  • the resource utilization constraint is to ensure available processing resources represented by the leaf nodes and the intermediate nodes of the directed acyclic graph are not exceeded
  • the bandwidth utilization constraint is to ensure available bandwidths represented by the first set of edges and the second set of edges of the directed acyclic graph are not exceeded.
  • the assigning performed by the methods further includes iteratively determining different candidate assignments of respective combination of the video sources, the intermediate network devices and the cloud computing platform to execute the respective sequences of video analytics processing tasks associated with the video sources.
  • Some such disclosed example task assignment methods also include, for a first one of the candidate assignments: (1) evaluating a first matrix-based equation to determine whether the first one of the candidate assignments satisfies the resource utilization constraint, (2) evaluating a second matrix-based equation to determine whether the first one of the candidate assignments satisfies the bandwidth utilization constraint, and (3) retaining the first one of the candidate assignments when the first one of the candidate assignments utilizes a lower overall bandwidth in the cloud computing environment than a prior retained second one of the candidate assignments.
  • the assigning performed by the methods further includes defining dummy tasks to represent generation of the respective video source data by the respective ones of the video sources.
  • Some such disclosed example task assignment methods also include inserting the dummy tasks at initial positions of the respective sequences of video analytics processing tasks associated with the respective ones of the video sources, and using the respective sequences of video analytics processing tasks updated to include the dummy tasks to evaluate the first and second matrix-based equations.
  • Video analytics processing is becoming ever more pervasive in modern society given its ability to improve convenience and security in a host of different applications, such as license plate detection for toll collection, facial recognition for passport control operations, object detection for airport screening, etc.
  • Video analytics processing is also a natural candidate for implementation in a cloud computing environment due to its computationally intensive processing requirements.
  • conventional cloud computing implementations assign most, if not all, of the video analytics processing tasks for a given application to the cloud computing platform itself, with little to no video analytics processing being executed by other video source devices and/or network devices external to the cloud computing platform.
  • such conventional cloud computing implementations can utilize excessive network bandwidth to communicate the raw video data from the video source devices to the cloud computing platform for video analytics processing.
  • the teachings of the present disclosure provide technical solutions to the technical problem of excessive bandwidth utilization by video analytics applications in a cloud computing environment.
  • distributed assignment of video analytics processing tasks in accordance with the teaching of this disclosure offloads at least some of the video analytics processing tasks from the cloud computing platform to the video source devices and/or other network devices in the cloud computing environment to reduce the overall network bandwidth utilized for video analytics processing.
  • the video analytics processing tasks can be assigned to the video source devices and other network devices external to the cloud computing platform, the amount of data conveyed in an uplink direction from the video sources to the cloud computing platform in the cloud computing environment can be reduced.
  • Video analytics processing can usually be modeled as an ordered sequence of video analytics tasks to be performed on input video data, with tasks later in the sequence outputting data having lower bandwidth requirements than earlier tasks in the sequence. This is referred to herein as the “model ordering property” of video analytics processing.
  • video analytics processing for license plate recognition may include a license plate detection task to detect an object in a video frame that is consistent with a license plate, an optical character recognition (OCR) task to determine a license plate number of a license plate detected by the license plate detection task, and a comparison task to compare the license plate number determined from the OCR task with a reference library to recognize the license plate number and provide a pointer to a database containing registration details (e.g., vehicle owner, make, model, year, registration status, etc.) associated with the license plate number.
  • OCR optical character recognition
  • the output of the license plate detection task may be an image
  • the output of the OCR task may be a string of characters (which has lower bandwidth attributes than the image output from the license plate detection task)
  • the output of the comparison task may be a pointer (e.g., such as a memory address, which may have lower bandwidth attributes that the string of characters output from the OCR task).
  • the ordered sequence of video analytics tasks can often be performed in parallel in a pipelined manner such that earlier video data (e.g., video data associated with time t ⁇ 1) can be processed by a video analytics task (e.g., the OCR task) that is later in the ordered task sequence while later video data (e.g., video data associated with time t) can also be processed by a video analytics task (e.g., the license plate recognition task) that is earlier in the ordered task sequence.
  • a video analytics task e.g., the license plate recognition task
  • This is referred to herein as the “model parallelism property” of video analytics processing.
  • video analytics processing of video data from different video data sources can often be performed in parallel. This is referred to herein as the “data parallelism property” of video analytics processing.
  • example distributed video analytics task assignment procedures disclosed herein take advantage of such model ordering, model parallelism and/or data parallelism properties to distribute assignment of data analytics processing tasks to video source devices and other network devices external to the cloud computing platform to reduce overall bandwidth utilization in the cloud computing environment.
  • example distributed video analytics task assignment procedures utilize a directed acyclic graph (DAG) to represent the topology of the cloud computing environment.
  • the DAG is further used to assign video source devices and/or other network devices to execute video analytics processing tasks in a manner that maintains the model ordering and model parallelism properties of the particular video analytics application being implemented.
  • example distributed video analytics task assignment procedures disclosed herein utilize an overall bandwidth utilization cost function in combination with one or more constraint functions to reduce, or even minimize, the overall network bandwidth to be utilized in the cloud computing environment for video analytics processing while also ensuring that constraints on the amounts of individual computing resources and/or bandwidths of the video source devices and/or other network devices to be utilized for video analytics processing are satisfied.
  • cost and constraint functions are matrix-based to further take advantage of the data parallelism properties of the particular video analytics application being implemented.
  • FIGS. 1A-1B a block diagram of an example cloud computing environment 100 structured to support video analytics processing applications is illustrated in FIGS. 1A-1B .
  • FIG. 1A illustrates an example conventional assignment 105 of video analytics processing tasks in the example cloud computing environment 100 .
  • FIG. 1B illustrates an example distributed assignment 110 of video analytics processing tasks in the example cloud computing environment 100 in accordance with the teachings of this disclosure.
  • the example cloud computing environment 100 includes a group of one or more example video sources 115 in communication with an example cloud computing platform 120 via a group of one or more intermediate network devices 125 .
  • the video source(s) 115 can be implemented by any number(s) and/or type(s) of video source devices and/or any other edge device(s) capable of producing video data.
  • the video source(s) 115 can include one or more video cameras, computers, smartphones, image sensors, etc. In the illustrated example of FIGS.
  • the example cloud computing platform 120 can be implemented by any number(s) and/or type(s) of cloud computing platforms, such as one or more cloud computing platforms provided by Intel®, Amazon®, Google®, IBM®, Microsoft®, etc., and/or a host of other cloud computing platform providers.
  • the intermediate network device(s) 125 can be implemented by any number(s) and/or type(s) of network devices capable of routing and/or otherwise receiving and transmitting video data in a network.
  • the intermediate network device(s) 125 can include one or more gateways, routers, bridges, servers, etc.
  • the video source(s) 115 are interconnected with (or, more generally, in communication with) the intermediate network device(s) 125 via a first set of example communication paths 130
  • the intermediate network device(s) 125 are interconnected with (or, more generally, in communication with) the cloud computing platform 120 via a second set of example communication paths 135 .
  • a third set of example communication paths may provide further interconnections between some or all of the intermediate network device(s) 125 to implement a robust networking topology.
  • the communications paths 130 and 135 can be implemented by any number(s) and/or type(s) of communication paths capable of conveying data between devices.
  • the communications paths 130 and 135 can be implemented by one or more tunnels, data flows, links, channels, etc., in one or more communication networks, such as the Internet.
  • the phrase “in communication,” including variances thereof, encompasses direct communication and/or indirect communication through one or more intermediary components and does not require direct physical (e.g., wired) communication and/or constant communication, but rather additionally includes selective communication at periodic or aperiodic intervals, as well as one-time events.
  • the cloud computing environment 100 is to be used to implement an example license plate video analytics application 140 that performs license plate recognition on respective video data output from the different video sources 115 .
  • the example license plate video analytics application 140 of FIGS. 1A-1B includes a sequence of video analytics tasks including an example license plate detection task 145 , an example OCR task 150 , and an example comparison task 155 .
  • the example license plate detection task 145 detects an object in a video frame that is consistent with a license plate.
  • the example OCR task 150 determines a license plate number of a license plate image detected by the license plate detection task 145 .
  • the example comparison task 155 compares the license plate number determined from the OCR task 150 with a reference library to recognize the license plate number and provide a pointer to a database containing registration details (e.g., vehicle owner, make, model, year, registration status, etc.) associated with the license plate number.
  • registration details e.g., vehicle owner, make, model, year, registration status, etc.
  • the sequence of video analytics tasks implementing the example license plate video analytics application 140 is an ordered sequence having a particular task ordering, with the example license plate detection task 145 to be performed on video data output from a particular video source 115 , followed by the OCR task 150 processing data output from the license plate detection task 145 , followed by the comparison task 155 processing data output from the OCR task 150 .
  • the ordered sequence of video analytics tasks implementing the example license plate video analytics application 140 are such that tasks later in the sequence output data having lower bandwidth requirements than earlier tasks in the sequence.
  • the output of the license plate detection task 145 may be an image
  • the output of the OCR task 150 may be a string of characters (which has lower bandwidth attributes than the image output from the license plate detection task 145 )
  • the output of the comparison task 155 may be a pointer (e.g., such as a memory address, which may have lower bandwidth attributes than the string of characters output from the OCR task 150 ).
  • all of the video analytics processing tasks to performed on the video data from the respective video sources 115 are assigned to the cloud computing platform 120 .
  • the cloud computing platform 120 is assigned the license plate detection task 145 , the OCR task 150 and the comparison task 155 for execution on each stream of video data received from each video source 115 , as shown.
  • Such a conventional task assignment places the bulk of the video analytics processing at the cloud computing platform 120 , but at the expense of utilizing substantial network bandwidth to send the raw video data from each of the video sources 115 to the cloud computing platform 120 for processing by the license plate detection task 145 , the OCR task 150 and the comparison task 155 .
  • each video source 115 will utilize a bandwidth of approximately 27.2 Mbps in the cloud computing environment 100 .
  • the total bandwidth utilization for the example conventional video analytics task assignment 105 will be approximately L ⁇ 27.2 Mbps, where L is the number of video sources 115 . If the number of video sources 115 (L) providing raw video data to be processed is large, the conventional video analytics task assignment 105 may result in an impractical, or even impossible, solution depending on the amount of available bandwidth in the cloud computing environment 100 .
  • the distributed video analytics task assignment 110 of FIG. 1B assigns, in accordance with the teachings of this disclosure, one or more of the video analytics processing tasks of the example license plate video analytics application 140 to one or more of the video sources 115 and/or the intermediate network devices 125 , which are external to the cloud computing platform 120 in the cloud computing environment 100 .
  • the distributed video analytics task assignment 110 illustrated in the example of FIG. 1B assigns, as disclosed in further detail below, the video sources 115 to execute respective license plate detection tasks 145 on their respective video data.
  • the distributed video analytics task assignment 110 of the illustrated example also assigns the intermediate network devices 125 to execute the OCR tasks 150 on respective output data, if any, received from the respective license plate detection tasks 145 .
  • the distributed video analytics task assignment 110 shown in the example of FIG. 1B further assigns the cloud computing platform 120 to execute the comparison task 155 on respective output data, if any, received from the respective OCR tasks 150 .
  • the example distributed video analytics task assignment 110 of FIG. 1B reduces the overall bandwidth utilized by the example license plate video analytics application 140 in the cloud computing environment 100 relative to the example conventional video analytics task assignment 105 .
  • the respective license plate detection tasks 145 executed by the video sources 115 may output no data (and, thus, utilize no bandwidth) if a license plate is not detected in the video data.
  • the respective license plate detection tasks 145 can output video data representing just the image of the license plate, rather than the entire video frame.
  • the bandwidth utilized by the license plate detection tasks 145 will be a fraction a (where a is given by, for example, a ratio of license plate area divided by total video frame area) of the bandwidth (e.g., 27.2 Mbps) associated with the raw video data generated by each video source 115 .
  • the total bandwidth utilized on the example communication paths 130 for the example license plate video analytics application 140 is less than L ⁇ 27.2 ⁇ Mbps (because some license plate detection tasks 145 will output no data when no license plate is detected), which is a fraction of the bandwidth utilized by the conventional video analytics task assignment 105 .
  • the example distributed video analytics task assignment 110 of FIG. 1B results in an even further bandwidth reduction on the example communication paths 135 of the cloud computing environment 100 .
  • the OCR task 150 executed by the respective intermediate network device 125 may output no data (and, thus, utilize no bandwidth) if a license plate was not detected by its respective input license plate detection task 145 .
  • the respective OCR task 150 can output metadata representing just the license plate number, rather than video data. Accordingly, the bandwidth utilized on the example communication paths 135 of FIG.
  • the OCR tasks 150 will be approximately L ⁇ the number of bits used to represent the license plate number (or less when no license plate is detected), which will be substantially less than the L ⁇ 27.2 Mbps utilized by the conventional video analytics task assignment 105 of FIG. 1A .
  • the example distributed video analytics task assignment 110 of FIG. 1B takes advantage of the model ordering, model parallelism and data parallelism properties of the video analytics processing to be performed in the example cloud computing environment 100 .
  • disclosed example distributed video analytics task assignment procedures utilize a directed acyclic graph (DAG) to represent the topology of the cloud computing environment 100 , which includes the devices and communication path in the environment 100 , as well as the available computing resources and bandwidth resources for the devices and communication paths in the environment 100 .
  • DAG directed acyclic graph
  • Disclosed example distributed video analytics task assignment procedures further utilize the DAG to assign one or more of the video source devices 115 and/or intermediate network devices 125 to execute the video analytics processing tasks (e.g., the tasks 145 - 155 ) in a manner that maintains the model ordering, model parallelism and data parallelism properties of the particular video analytics application (e.g., the application 140 ) being implemented in the cloud computing environment 100 .
  • the video analytics processing tasks e.g., the tasks 145 - 155
  • the particular video analytics application e.g., the application 140
  • FIGS. 2A-2B An example directed acyclic graph (DAG) 200 for use by example distributed video analytics task assignment procedures disclosed herein to assign one or more of the example video source devices 115 and/or the example intermediate network devices 125 to execute the video analytics processing tasks in the example cloud computing environment 100 of FIG. 1B is illustrated in FIGS. 2A-2B .
  • the example DAG 200 includes example nodes (corresponding to circles in FIGS. 2A-2B ) to represent the physical and/or logical devices included in the cloud computing environment 100 .
  • the DAG 200 includes example leaf nodes 215 A-D (also referred to as leaf nodes 215 A-D) representing the example video sources 115 of FIG. 1B , and an example root node 220 representing the example cloud computing platform 120 of FIG. 1B .
  • the DAG 200 of the illustrated example further includes example intermediate nodes 225 A-B representing the example intermediate network devices 125 of FIG. 1B .
  • the example DAG 200 also includes edges (represented by directed lines in FIGS. 2A-2B ) to represent the uplink, or upstream, communication paths between the devices represented by the nodes of the DAG 200 .
  • the DAG 200 includes a first set of example edges 230 A-D representing the example communication paths 130 between the example video sources 115 and the example intermediate network devices 125 of FIG. 1B .
  • the DAG 200 of the illustrated example also includes a second set of example edges 235 A-B representing the example communication paths 135 between the example intermediate network devices 125 and the example cloud computing platform 120 of FIG. 1B .
  • the DAG 200 can include additional set(s) of edges to represent additional communication paths between some or all of the intermediate network devices 125 .
  • the leaf nodes 215 A-D and intermediate nodes 225 A-B are associated with respective computing resource capacities corresponding to the respective devices they represent.
  • the computing resource capacities of the cloud computing platform 120 are assumed to have no impact on task assignment, in at least some examples.
  • computing resource capacities can include central processing unit (CPU) cycles, graphical processing unit (GPU) cycles, memory capacity, etc., available at the respective device for executing one or more video analytics tasks.
  • the edges 230 A-D and 235 A-B represent the connectivity between the nodes of the DAG 200 , and are associated with respective bandwidth capacities specifying, for example, the amount of bandwidth available for carrying data associated with one or more video analytics tasks.
  • a DAG such as the example DAG 200 , defines one respective uplink data path from each leaf node 215 A-D (representing its respective video source 115 ) to the root node 220 (representing the cloud computing platform 120 ).
  • the leaf node 215 A has one uplink data path to the root node 220 , namely, from the leaf node 215 A along the edge 230 A to the intermediate node 225 A, and from the intermediate node 225 A along the edge 235 A to the root node 220 .
  • the leaf node 215 B has one uplink data path to the root node 220 , namely, from the leaf node 215 B along the edge 230 B to the intermediate node 225 A, and from the intermediate node 225 A along the edge 235 A to the root node 220 .
  • the leaf node 215 C has one uplink data path to the root node 220 , namely, from the leaf node 215 C along the edge 230 C to the intermediate node 225 B, and from the intermediate node 225 B along the edge 235 B to the root node 220 .
  • the leaf node 215 D has one uplink data path to the root node 220 , namely, from the leaf node 215 D along the edge 230 D to the intermediate node 225 B, and from the intermediate node 225 B along the edge 235 B to the root node 220 .
  • FIG. 2A also illustrates the model ordering and parallelism properties of example video analytics tasks to be assigned by disclosed example distributed video analytics task assignment procedures to implement an example video analytics application 240 in the example cloud computing environment 100 .
  • the video analytics application 240 can be divided into three (3) tasks, such as an example video analytics task 245 , an example video analytics task 250 and an example video analytics task 255 , which are to be performed on respective video data generated at (or otherwise associated with) respective ones of the leaf nodes 215 A-D of the DAG 200 .
  • Each of the video analytics processing tasks 245 - 255 is associated with a respective set of processing requirements, such as CPU cycles, GPU cycles, memory capacity, etc.
  • example video analytics task 245 , the example video analytics task 250 and the example video analytics task 255 have a specific task ordering (which is represented in FIG. 2A by the directed lines in connecting the tasks 245 , 250 and 255 ), which corresponds to the model ordering property of the example video analytics application 240 .
  • the ordered sequence of example video analytics tasks 245 - 255 can often be performed in parallel in a pipelined manner such that earlier video data (e.g., video data associated with time t ⁇ 1) associated with a given leaf node 215 A-D can be processed by a video analytics task (e.g., the task 250 ) that is later in the ordered task sequence while later video data (e.g., video data associated with time t) associated with the same leaf node 215 A-D can also be processed by a video analytics task (e.g., the task 245 ) that is earlier in the ordered task sequence.
  • This is referred to as the model parallelism property of the example video analytics application 240 .
  • the video analytics application 240 can correspond to the example license plate video analytics application 140 of FIG. 1B , with the example video analytics tasks 245 - 255 corresponding to the example license plate detection task 145 , the example OCR task 150 and the example comparison task 155 , respectively.
  • the example license plate detection task 145 exhibits model ordering and model parallelism properties similar to the example video analytics application 240 .
  • the video analytics application 240 can correspond to a facial recognition application, with the example video analytics tasks 245 - 255 corresponding to a skintone filtering task, a face detection task and a face identification task, respectively. As such, this facial recognition application exhibits model ordering and model parallelism properties similar to the example video analytics application 240 .
  • FIG. 2B further illustrates the data parallelism property of example video analytics tasks to be assigned by disclosed example distributed video analytics task assignment procedures to implement an example video analytics application 240 in the example cloud computing environment 100 .
  • the example video analytics task 245 , the example video analytics task 250 and the example video analytics task 255 of the video analytics application 240 are able to be performed in parallel on different video data generated at (or otherwise associated with) different ones of the leaf nodes 215 A-D.
  • a first sequence of the video analytics tasks 245 , 250 and 255 which is represented as a sequence of example video analytics tasks 245 A, 250 A and 255 A in FIG.
  • FIG. 2B is performed on video data associated with the example leaf node 215 A in parallel with a second sequence of the video analytics tasks 245 , 250 and 255 , which is represented as a sequence of example video analytics tasks 245 B, 250 B and 255 B, being performed on video data associated with the example leaf node 215 B.
  • This processing can further be performed in parallel with a third sequence of the video analytics tasks 245 , 250 and 255 , which is represented as a sequence of example video analytics tasks 245 C, 250 C and 255 C, being performed on video data associated with the example leaf node 215 C.
  • This processing can further be performed in parallel with a fourth sequence of the video analytics tasks 245 , 250 and 255 , which is represented as a sequence of example video analytics tasks 245 D, 250 D and 255 D, being performed on video data associated with the example leaf node 215 D.
  • FIG. 3 An example distributed video analytics task assignment for implementing the example video analytics application 240 in the example cloud computing environment 100 of FIG. 1B , which can be determined using on the example DAG 200 and the model ordering, model parallelism and data parallelism properties of FIGS. 2A-2B in accordance with the teachings of this disclosure, is illustrated in FIG. 3 . As disclosed in further detail below, the example distributed video analytics task assignment of FIG.
  • the 3 is determined by an example video analytics task scheduler disclosed herein to assign the video analytics tasks 245 A-D, 250 A-D and 255 A-D of the example video analytics application 240 to combinations of one or more of the leaf nodes 215 A-D, the intermediate nodes 225 A-B and/or the root node 220 of the DAG 200 with an objective to reduce, or even minimize, the overall bandwidth (e.g., determined as a sum of the individual utilized bandwidths) utilized on the edges 230 A-D and 235 A-B of the DAG 200 , while also satisfying the constraints that the computing resource and bandwidth capacities of the nodes 215 A-D and 225 A-B and the edges 230 A-D and 235 A-B are not exceeded by the computing resource and bandwidth requirements of the video analytics tasks 245 A-D, 250 A-D and 255 A-D, and while satisfying the constraints that the video analytics tasks 245 A-D, 250 A-D and 255 A-D are performed according to the model ordering, model parallelism and data parallelism
  • this objective is met by the illustrated example distributed video analytics task assignment as follows.
  • the video analytics task 245 A is executed by leaf node 215 A
  • the video analytics tasks 250 A and 255 A are executed by the intermediate node 225 A (which corresponds to a first one of the intermediate network devices 125 ).
  • the video analytics task 245 B is executed by leaf node 215 B
  • the video analytics tasks 250 B is executed by the intermediate node 225 A
  • the video analytics tasks 255 B is executed by the root node 220 (which corresponds to the cloud computing platform 120 ).
  • the video analytics tasks 245 C, 250 C and 255 C are executed by leaf node 215 C.
  • the video analytics task 245 D is executed by leaf node 215 D
  • the video analytics tasks 250 D is executed by the intermediate node 225 B (which corresponds to a second one of the intermediate network devices 125 )
  • the video analytics tasks 255 D is executed by the root node 220 . As illustrated in FIG.
  • the example distributed video analytics task assignment preserves the model ordering, model parallelism and data parallelism properties by ensuring, for example, that the sequence of video analytics tasks associated with a given leaf node 215 A-D are performed in order along the respective uplink path from that leaf node to the root node 220 , and that there are sufficient computing resources and bandwidth at the assigned nodes and along the corresponding edges to allow the tasks to be executed in parallel.
  • the illustrated example distributed video analytics task assignment assumes that node 225 A has sufficient computing resources and output bandwidth to execute tasks 250 A, 255 A and 250 B in parallel, and that node 215 C has sufficient computing resources and output bandwidth to execute tasks 245 C, 250 C and 255 C in parallel.
  • FIG. 4 A block diagram of an example video analytics task scheduler 400 structured to implement an example distributed video analytics task assignment procedure to assign video analytics tasks in cloud computing environments, such as the example cloud computing environment 100 , in accordance with the teachings of this disclosure is illustrated in FIG. 4 .
  • the example video analytics task scheduler 400 of FIG. 4 includes an example user interface 405 to accept an example network topology 410 describing the example cloud computing environment 100 in which video analytics tasks are to be assigned for execution.
  • the user interface 405 of the illustrated example also accepts example application characteristics 415 describing characteristics of the video analytics application whose video analytics tasks are to be assigned for execution in the cloud computing environment 100 .
  • the example user interface 405 can be implemented by any number(s) and/or type(s) of interfaces, such as a graphical user interface (GUI) to accept user input data, a command line interface to accept user input data, a data interface to accept files, messages, etc., formatted to contain data specifying the network topology 410 and/or the application characteristics 415 , etc.
  • GUI graphical user interface
  • the network topology 410 includes data identifying the example video sources 115 , the example intermediate network devices 125 and the example cloud computing platform 120 .
  • the example network topology 410 also includes data identifying the example communication paths 130 and 135 , and specifying the architecture/layout of interconnections among the example video sources 115 , the example intermediate network devices 125 and the example cloud computing platform 120 using the communication paths 130 and 135 .
  • the example network topology 410 of the illustrated example further specifies the computing resource capacities (e.g., CPU cycles, GPU cycles, memory capacity, etc., available for executing one or more video analytics tasks) of the example video sources 115 and the example intermediate network devices 125 , and the bandwidth capacities (amount of bandwidth available for carrying data associated with one or more video analytics tasks) of the communication paths 130 and 135 .
  • the network topology 410 can be represented in any data format, such as a binary file, a text file, a database, etc.
  • the application characteristics 415 include data identifying sequences of video analytics tasks, such as the example tasks 245 A-D, 250 A-D, 255 A-D, included in the video analytics application to be executed in the cloud computing environment 100 .
  • the example application characteristics 415 also include data specifying task orderings (or, in other words, the model orderings) for the sequences of video analytics tasks. (In the illustrated example, the video analytics tasks are presumed to exhibit the model and data parallelism properties described above.).
  • the example application characteristics 415 of the illustrated example further include data specifying the processing requirements (e.g., CPU cycles, GPU cycles, memory capacity, etc.) for respective ones of the video analytics tasks (e.g., such as the processing requirements for respective ones of the video analytics tasks 245 A-D, 250 A-D, 255 A-D.
  • the application characteristics 415 can be represented in any data format, such as a binary file, a text file, a database, etc.
  • the example video analytics task scheduler 400 further includes example storage 420 to store the example network topology 410 and the example application characteristics 415 obtained by the user interface 405 .
  • the example storage 420 can be implemented by any number(s) and/or type(s) of storage and/or memory device, a database, etc.
  • the storage 420 can be implemented by the mass storage device 1128 and/or the volatile memory 1114 included in the example processing system 1100 of FIG. 11 , which is described in greater detail below.
  • the video analytics task scheduler 400 of the illustrated example includes an example directed acyclic graph determiner 425 to determine a directed acyclic graph, such as the example DAG 200 , for the example cloud computing environment 100 based on the example network topology 410 .
  • the directed acyclic graph determiner 425 accesses the network topology 410 from the storage 420 and constructs a DAG, such as the DAG 200 , having example nodes 215 A-D, 225 A-B and 220 corresponding, respectively, to the example video sources 115 , the example intermediate network devices 125 and the example cloud computing platform 120 identified in the example network topology 410 .
  • the directed acyclic graph determiner 425 also constructs the DAG 200 to interconnect the nodes 215 A-D, 225 A-B and 220 with example edges 230 A-D and 235 A-B corresponding, respectively, to the example communication paths 130 and 135 identified in the example network topology 410 .
  • V d represents the set of nodes (e.g., nodes 215 A-D, 225 A-B and 220 ) corresponding to the example devices (e.g., devices 115 , 125 and 120 ) included in the example cloud computing
  • the DAG G d ⁇ V d , E d > determined by the example directed acyclic graph determiner 425 further includes, for each edge E d , a function d : E d ⁇ R that represents the bandwidth capacity specified in the network topology 410 for the communication path corresponding to that node edge E d .
  • the functions ⁇ d : V d ⁇ R and d : E d ⁇ R map, respectively, the specified computing resource capacities and bandwidth capacities to real numbers for further use by the example video analytics task scheduler 400 , as described in detail below.
  • the functions ⁇ d : V d and/or g d : E d could map the specified computing resource capacities and/or bandwidth capacities to compound data types.
  • the video analytics task scheduler 400 of the illustrated example also includes an example task ordering specifier 430 to specify a task ordering for the sequences of video analytics tasks identified in the application characteristics 415 .
  • the task ordering specifier 430 accesses the application characteristics 415 from the storage 420 and uses that data to specify task orderings of the respective sequences of video analytics tasks 245 A-D, 250 A-D, 255 A-D, to be performed on video source data generated or otherwise obtained at the video sources 115 corresponding to the leaf nodes of the DAG determined by the directed acyclic graph determiner 425 .
  • the functions ⁇ s : V s ⁇ R and g s : E s ⁇ R map, respectively, the specified computing resource requirements and bandwidth requirements to real numbers for further use by the example video analytics task scheduler 400 , as described in detail below.
  • the functions ⁇ s : V s and/or g s : E s could map the specified computing resource capacities and/or bandwidth capacities to compound data types.
  • the video analytics task scheduler 400 of the illustrated example further includes an example candidate assignment determiner 435 , an example constraint evaluator 440 and an example task assignment selector 445 to implement an example distributed video analytics task assignment procedure in accordance with the teachings of this disclosure.
  • the distributed video analytics task assignment procedure implemented by the candidate assignment determiner 435 , the constraint evaluator 440 and the task assignment selector 445 assigns combinations of the video sources 115 , the intermediate network devices 125 and the cloud computing platform 120 specified in the network topology 410 to execute the respective sequences of video analytics tasks specified in the application characteristics 415 , with the assignment based on the DAG determined by the directed acyclic graph determiner 425 and the task orderings determined by the task ordering specifier 430 .
  • the distributed video analytics task assignment procedure implemented by the candidate assignment determiner 435 , the constraint evaluator 440 and the task assignment selector 445 operates to perform such a task assignment to reduce (or even minimize) an overall bandwidth utilized by the sequences of video analytics processing tasks in the cloud computing environment 100 .
  • FIGS. 5-9 An example distributed video analytics task assignment procedure 500 implemented by the example candidate assignment determiner 435 , the example constraint evaluator 440 and the example task assignment selector 445 of the example video analytics task scheduler 400 of FIG. 4 is illustrated in FIGS. 5-9 .
  • the distributed video analytics task assignment procedure 500 which is also referred to as the example task assignment procedure 500 , yields a task assignment that assigns combinations of the devices 115 - 125 in the cloud computing environment 100 to execute the respective sequences of video analytics tasks specified in the application characteristics 415 , with the task assignment based on the DAG determined by the directed acyclic graph determiner 425 and the task orderings determined by the task ordering specifier 430 .
  • the task assignment procedure 500 of the illustrated example further operates to determine an output task assignment such that an example upstream cost 505 is reduced, or minimized, relative other possible candidate task assignment, while ensuring the output task assignment satisfies a set of example constraints 510 - 525 .
  • the upstream cost 505 which is further illustrated in FIG. 6 , defines a metric representing the overall bandwidth utilized by the respective sequences of video analytics tasks specified in the application characteristics 415 when assigned to the devices 115 - 125 in the cloud computing environment 100 according to the output task assignment.
  • the constraint functions 510 - 525 include an example resource utilization constraint 510 , an example bandwidth utilization constraint 515 , an example ordering constraint 520 and an example single choice constraint 525 .
  • the example resource utilization constraint 510 which is further illustrated in FIG.
  • the example bandwidth utilization constraint 515 which is further illustrated in FIG. 9 , ensures available bandwidths represented by the sets of edges of the directed acyclic graph (and which correspond to the available bandwidths of the communication paths 130 - 135 represented by those edges) are not exceeded by the output task assignment.
  • the example ordering constraint 520 which is further illustrated in FIG.
  • the example single choice constraint 525 ensures that each node of the DAG in the uplink path for a given video source outputs data for only one of the tasks in that source's sequence of video analytics tasks.
  • the combination of the ordering constraint 520 and the single choice constraint 525 provide that multiple video analytics tasks for a given video source can be assigned to one node of the DAG (corresponding to the device 115 - 125 represented by that node), but the tasks will be performed in order and only the last task in the group will output data from the node.
  • task assignment procedure 500 it is assumed that tasks ordered later in the task ordering for a particular sequence of video analytics tasks are associated with lower bandwidth utilization than tasks ordered earlier in the task ordering for the particular sequence of video analytics tasks.
  • N Number of tasks in a sequence of video analytics tasks to be performed on video data from a given video source x i j
  • a last task assignment vector representing the last task in the sequence of video analytics tasks assigned to the j th device in the uplink data path of the DAG for the i th video source ST n
  • the bandwidth required by the n th task in the sequence of video analytics tasks sr n The computing resources required by the n th task in the sequence of video analytics tasks
  • the sequence of video analytics tasks (ST n ) to be performed for a given video source is represented by the ordered sequence T: ST 1 ⁇ ST 2 ⁇ . . . ⁇ ST N .
  • the example task assignment procedure 500 of FIG. 5 also defines dummy tasks, ST 0 , which represents generation of the raw video data by the respective video source.
  • the dummy tasks are associated with respective required bandwidths UB 0 that correspond to the required bandwidths for the raw video data generated by the respective video sources.
  • the dummy tasks are also associated with computing resource requirements of zero.
  • the example task assignment procedure 500 inserts these dummy tasks at the initial positions of the respective sequences of video analytics tasks for the respective video sources.
  • this modified sequence of video analytics tasks can be represented by the ordered sequence T′: ST 0 ⁇ ST 1 ⁇ ST 2 ⁇ . . . ⁇ ST N .
  • the example task assignment procedure 500 uses these modified sequences of video analytics tasks, which include the dummy tasks ST 0 , to evaluate matrix-based equations representing the example resource utilization constraint 510 and the example bandwidth utilization constraint 515 , which are discussed in further detail below.
  • the candidate assignment determiner 435 , the constraint evaluator 440 and the task assignment selector 445 implement the example task assignment procedure 500 with integer linear programming.
  • the directed acyclic graph determiner 425 determined the example DAG 200 of FIGS. 2A-2B and 3 to represent the cloud computing environment 100
  • the task orderings determined by the task ordering specifier 430 correspond to the respective sequences of tasks 245 A-D, 250 A-D and 255 A-D illustrated in FIGS. 2A-2B and 3 .
  • the candidate assignment determiner 435 of the illustrated example iteratively determines respective candidate assignments that assign DAG nodes to execute tasks in the respective sequences of video analytics tasks for the respective video sources.
  • the respective sequence of video analytics tasks T: ST 1 ⁇ ST 2 ⁇ ST 3 for that leaf node is the ordered sequence of tasks T: ⁇ 245 a ⁇ 250 a ⁇ 255 a ⁇ .
  • the candidate assignment determiner 435 of the illustrated example determines a candidate assignment of nodes to execute this sequence of video analytics tasks T: ⁇ 245 a ⁇ 250 a ⁇ 255 a ⁇ by using the DAG 200 to identify the combination of nodes in the uplink path from leaf node 215 a to the root node 220 corresponding to the cloud computing platform 120 , which in this example is the ordered combination of nodes ⁇ 215 a , 225 a , 220 ⁇ .
  • the candidate assignment determiner 435 assigns at least some (e.g., one or more) of the combination of nodes ⁇ 215 a , 225 a , 220 ⁇ to execute the sequence of video analytics tasks T: ⁇ 245 a ⁇ 250 a ⁇ 255 a ⁇ in a manner that preserves the task ordering along the uplink path defined by the ordered combination of nodes ⁇ 215 a , 225 a , 220 ⁇ .
  • the candidate assignment determiner 435 could assign the node 215 a to execute the task 245 a , assign the node 225 a to execute the tasks 250 a and 255 a in order, and not assign any tasks to the root node 220 , as shown in the example of FIG. 3 .
  • the example candidate assignment determiner 435 would continue to determine candidate task assignments in a similar manner for the other ones of the video sources 115 represented by the other leaf nodes 215 b - d in the DAG 200 .
  • the candidate assignment determiner 435 utilizes the last task assignment vector x i j defined in Table 1 to determine, for a given processing iteration, the respective candidate task assignment associated with a given leaf node of the DAG 200 .
  • the last task assignment vector x i j is a vector representing the last task in the sequence of video analytics tasks assigned to the j th device in the uplink data path of the DAG for the i th video source.
  • the candidate assignment determiner 435 determines a last task in the sequence of video analytics tasks to be processed by that node. Then, for nodes at adjacent positions in the uplink data path, the candidate assignment determiner 435 looks at the last task assigned to the preceding node and the last task assigned to the subsequent node and assigns any intervening video analytics tasks in the sequence to the subsequent node.
  • the example constraint evaluator 440 determines whether the example resource utilization constraint 510 and the example bandwidth utilization constraint 515 are satisfied for the candidate task assignments. (In the illustrated example, the candidate assignment determiner 435 ensures that the example ordering constraint 520 and the example single choice constraint 525 are satisfied for the candidate task assignments.)
  • the example resource utilization constraint 510 ensures that the respective resources capacities, represented by R 1 , . . . , R M , for the M devices in the cloud computing environment 100 are not exceeded by the combination of candidate task assignments for the respective video sources.
  • the example bandwidth utilization constraint 515 ensures that the respective bandwidth capacities, represented by U 1 , . . . , U M , for the M of the respective communication paths at the outputs of the M devices in the cloud computing environment 100 are not exceeded by the combination of candidate task assignments for the respective video sources.
  • the example constraint evaluator 440 evaluates an example matrix-based equation to determine whether the resource utilization constraint 510 is satisfied. Evaluation of the matrix-based equation for the resource utilization constraint 510 involves multiplying a matrix A i j by the vector (x i j ⁇ x i j-1 ) at each node in the DAG in the uplink path (i) and DAG level (j) associated the leaf node (i) in the DAG 200 .
  • the matrix Ar i j is an M ⁇ (N+1) matrix, with the rows corresponding to respective nodes in the DAG 200 (representing the devices in the cloud computing environment 100 ), and the columns corresponding to the computing resource requirements for the sequence of analytics processing tasks to be performed on the video source data generated by leaf nodes (i).
  • the vector (x i j ⁇ x i j-1 ) is the difference between the last task assignment vectors at the adjacent positions j and (j ⁇ 1) in the DAG 200 .
  • the constraint evaluator 440 evaluates the matrix Ar i j multiplied by the vector (x i j ⁇ x i j-1 ) over all the uplink paths for the leaf nodes (i) and over all the levels (j) of the DAG 200 and sums the results to determine the amount of computing resources to be utilized by the combination of candidate task assignments at each device in the cloud computing environment 100 .
  • the constraint evaluator 440 determines the resource utilization constraint 510 is satisfied. Otherwise, if any of the computing resource capacities of the devices are exceeded, the constraint evaluator 440 determines the resource utilization constraint 510 is not satisfied.
  • the example constraint evaluator 440 evaluates another example matrix-based equation to determine whether the bandwidth utilization constraint 515 is satisfied. Evaluation of the matrix-based equation for the bandwidth utilization constraint 515 involves multiplying a matrix Ae i j by the vector x i j at each node in the DAG in the uplink path (i) and DAG level (j) associated the leaf node (i) in the DAG 200 .
  • the matrix Ae i j is an Mx (N+1) matrix, with the rows corresponding to respective nodes in the DAG 200 (representing the devices in the cloud computing environment 100 ), and the columns corresponding to the bandwidth requirements for the sequence of analytics processing tasks to be performed on the video source data generated by leaf nodes (i).
  • the vector x i j is the last task assignment vector for the node at the position j in the DAG 200 . As shown in FIG.
  • the constraint evaluator 440 evaluates the matrix Ae i j multiplied by the vector x i j over all the uplink paths for the leaf nodes (i) and over all the levels (j) of the DAG 200 and sums the results to determine the amount of bandwidth to be utilized by the combination of candidate task assignments at the output of each device in the cloud computing environment 100 . If the bandwidth capacities of none of the paths at the outputs of the devices are exceeded by the bandwidth to be utilized by the combination of candidate task assignments, then the constraint evaluator 440 determines the bandwidth utilization constraint 515 is satisfied. Otherwise, if any of the bandwidth capacities are exceeded, the constraint evaluator 440 determines the bandwidth utilization constraint 515 is not satisfied.
  • the example task assignment selector 445 then evaluates the example upstream cost 505 for the combination of candidate task assignments. As illustrated in the example of FIG. 6 , the example task assignment selector 445 evaluates another example matrix-based equation to determine the upstream cost 505 of the given combination of candidate task assignments determined for the current processing iteration. In the illustrated example of FIG. 6 , the upstream cost 505 corresponds to the overall bandwidth utilized by the combination of candidate task assignments in the cloud computing environment 100 , but additional and/or alternative costs can be evaluated by the task assignment selector 445 .
  • Evaluation of the matrix-based equation for the upstream cost 505 involves multiplying a vector c by the vector x i j at each node in the DAG in the uplink path (i) and DAG level (j) associated the leaf node (i) in the DAG 200 .
  • the vector c is an (N+1) ⁇ 1 vector, with the elements corresponding to the respective bandwidths utilized by the respective tasks in the modified task sequence T′:ST 0 ⁇ ST 1 ⁇ ST 2 ⁇ . . . ⁇ ST N .
  • the vector x i j is the last task assignment vector for the node at the position j in the DAG 200 . As shown in FIG.
  • the constraint evaluator 440 evaluates the vector c multiplied by the vector x i j over all the uplink paths for the leaf nodes (i) and over all the levels (j) of the DAG 200 and sums the results to determine the overall amount of bandwidth to be utilized by the combination of candidate task assignments in the cloud computing environment 100 .
  • the task assignment selector 445 compares the upstream cost 505 determined for the combination of candidate task assignments determined in the current processing iterations with the upstream cost 505 , if any, for another combination of candidate task assignments determined in a prior processing iteration. If the combination of candidate task assignments for the current processing iteration results in a reduced upstream cost 505 , the task assignment selector 445 retains the current combination of candidate task assignments and discards the prior combination. In some examples, the task assignment selector 445 repeats this processing for each iteration of the candidate assignment determiner 435 determining a different combination of candidate task assignments.
  • the task assignment selector 445 will have retained the combination of candidate task assignments yielding the best (e.g., lowest or minimum) upstream cost 505 .
  • the task assignment selector 445 outputs this combination of candidate task assignments as the resulting distributed assignment 110 for assigning the respective sequences of video analytics tasks identified in the application characteristics 415 to the devices 115 , 125 and 120 in the cloud computing environment 100 .
  • the task assignment selector 445 can display and/or otherwise output the resulting distributed assignment 110 via the user interface 405 .
  • the task assignment selector 445 outputs, via one or more commands, messages, configuration files, etc., the resulting distributed assignment 110 to the devices 115 , 125 and 120 in the cloud computing environment 100 to configure the devices 115 , 125 and 120 to execute their respective assigned video analytics processing tasks, if any.
  • While an example manner of implementing the example video analytics task scheduler 400 is illustrated in FIG. 4 , one or more of the elements, processes and/or devices illustrated in FIG. 4 may be combined, divided, re-arranged, omitted, eliminated and/or implemented in any other way.
  • any of the example user interface 405 , the example network topology 410 , the example application characteristics 415 , the example storage 420 , the example directed acyclic graph determiner 425 , the example task ordering specifier 430 , the example candidate assignment determiner 435 , the example constraint evaluator 440 , the example task assignment selector 445 and/or, more generally, the example video analytics task scheduler 400 could be implemented by one or more analog or digital circuit(s), logic circuits, programmable processor(s), application specific integrated circuit(s) (ASIC(s)), programmable logic device(s) (PLD(s)) and/or field programmable logic device(s) (FPLD(s)).
  • At least one of the example video analytics task scheduler 400 , the example user interface 405 , the example network topology 410 , the example application characteristics 415 , the example storage 420 , the example directed acyclic graph determiner 425 , the example task ordering specifier 430 , the example candidate assignment determiner 435 , the example constraint evaluator 440 and/or the example task assignment selector 445 is/are hereby expressly defined to include a tangible computer readable storage device or storage disk such as a memory, a digital versatile disk (DVD), a compact disk (CD), a Blu-ray disk, etc. storing the software and/or firmware.
  • the example video analytics task scheduler 400 may include one or more elements, processes and/or devices in addition to, or instead of, those illustrated in FIG. 4 , and/or may include more than one of any or all of the illustrated elements, processes and devices.
  • a flowchart representative of an example process for implementing the example video analytics task scheduler 400 , the example user interface 405 , the example network topology 410 , the example application characteristics 415 , the example storage 420 , the example directed acyclic graph determiner 425 , the example task ordering specifier 430 , the example candidate assignment determiner 435 , the example constraint evaluator 440 and/or the example task assignment selector 445 is shown in FIG. 10 .
  • the machine readable instructions comprise one or more programs for execution by a processor, such as the processor 1112 shown in the example processor platform 1100 discussed below in connection with FIG. 11 .
  • the one or more programs, or portion(s) thereof may be embodied in software stored on a tangible computer readable storage medium such as a CD-ROM, a floppy disk, a hard drive, a digital versatile disk (DVD), a Blu-ray DiskTM, or a memory associated with the processor 1112 , but the entire program or programs and/or portions thereof could alternatively be executed by a device other than the processor 1112 and/or embodied in firmware or dedicated hardware (e.g., implemented by an ASIC, a PLD, an FPLD, discrete logic, etc.).
  • firmware or dedicated hardware e.g., implemented by an ASIC, a PLD, an FPLD, discrete logic, etc.
  • the example video analytics task scheduler 400 many other methods of implementing the example video analytics task scheduler 400 , the example user interface 405 , the example network topology 410 , the example application characteristics 415 , the example storage 420 , the example directed acyclic graph determiner 425 , the example task ordering specifier 430 , the example candidate assignment determiner 435 , the example constraint evaluator 440 and/or the example task assignment selector 445 may alternatively be used.
  • the order of execution of the blocks may be changed, and/or some of the blocks described may be changed, eliminated, combined and/or subdivided into multiple blocks.
  • the example process of FIG. 10 may be implemented using coded instructions (e.g., computer and/or machine readable instructions) stored on a tangible computer readable storage medium such as a hard disk drive, a flash memory, a read-only memory (ROM), a compact disk (CD), a digital versatile disk (DVD), a cache, a random-access memory (RAM) and/or any other storage device or storage disk in which information is stored for any duration (e.g., for extended time periods, permanently, for brief instances, for temporarily buffering, and/or for caching of the information).
  • a tangible computer readable storage medium is expressly defined to include any type of computer readable storage device and/or storage disk and to exclude propagating signals and to exclude transmission media.
  • tangible computer readable storage medium and “tangible machine readable storage medium” are used interchangeably. Additionally or alternatively, the example process of FIG. 10 may be implemented using coded instructions (e.g., computer and/or machine readable instructions) stored on a non-transitory computer and/or machine readable medium such as a hard disk drive, a flash memory, a ROM, a CD, a DVD, a cache, a RAM and/or any other storage device or storage disk in which information is stored for any duration (e.g., for extended time periods, permanently, for brief instances, for temporarily buffering, and/or for caching of the information).
  • coded instructions e.g., computer and/or machine readable instructions
  • a non-transitory computer and/or machine readable medium such as a hard disk drive, a flash memory, a ROM, a CD, a DVD, a cache, a RAM and/or any other storage device or storage disk in which information is stored for any duration (e.g., for extended time periods, permanently
  • non-transitory computer readable medium is expressly defined to include any type of computer readable storage device and/or storage disk and to exclude propagating signals and to exclude transmission media.
  • phrase “at least” is used as the transition term in a preamble of a claim, it is open-ended in the same manner as the terms “comprising” and “including” are open ended.
  • computer readable and “machine readable” are considered equivalent unless indicated otherwise.
  • An example program 1000 may be executed to implement the example video analytics task scheduler 400 , is illustrated in FIG. 10 .
  • the example program 1000 of FIG. 10 begins execution at block 1005 at which the example user interface 405 of the video analytics task scheduler 400 obtains the network topology 410 for the cloud computing environment 100 , as described above.
  • the example directed acyclic graph determiner 425 of the video analytics task scheduler 400 uses the network topology 410 to determine, as described above, a directed acyclic graph, such as the example DAG 200 , representing the devices and uplink data paths from the video sources 115 to the cloud computing platform 120 of the cloud computing environment 100 .
  • the example user interface 405 obtains, as described above, the application characteristics 415 specifying the respective sequences of video analytics processing tasks to be executed in the cloud computing environment 100 on the video data associated with the respective video sources 115 .
  • the example task ordering specifier 430 of the video analytics task scheduler 400 determines task orderings for the respective sequences of video analytics processing tasks specified in the application characteristics 415 .
  • the example candidate assignment determiner 435 of the video analytics task scheduler 400 begins a set of processing iterations to determine respective candidate assignments that assign nodes of the DAG 200 to execute tasks in the respective sequences of video analytics tasks for the respective video sources 115 .
  • the candidate assignment determiner 435 determines, for each video source 115 represented by an leaf node of the DAG 200 , a respective candidate assignment of the devices in the cloud computing environment 100 to the tasks in the sequence of video analytics tasks for that source such that the candidate assignment satisfies the task ordering for the sequence of video analytics tasks along the source's uplink data path in the DAG 200 .
  • the example constraint evaluator 440 of the video analytics task scheduler 400 determines, as described above, whether the example resource utilization constraint 510 and the example bandwidth utilization constraint 515 are satisfied for the combination of candidate task assignments determined at block 1025 for the group of video sources 115 in the cloud computing environment 100 . If the constraints are not satisfied (block 1035 ), processing returns to block 1025 at which the candidate assignment determiner 435 determines a different combination of candidate task assignments for the group of video sources 115 . However, if the constraints are satisfied (block 1035 ), processing proceeds to block 1040 .
  • the example task assignment selector 445 of the video analytics task scheduler 400 evaluates, as described above, the example upstream cost 505 for the combination of candidate task assignments determined at block 1025 .
  • the task assignment selector 445 compares, as described above, the upstream cost 505 determined for the current combination of candidate task assignments with the upstream cost 505 , if any, for another combination of candidate task assignments determined in a prior processing iteration. If the current combination of candidate task assignments does not exhibit a reduced upstream cost 505 (block 1045 ), processing returns to block 1025 at which the candidate assignment determiner 435 determines a different combination of candidate task assignments for the group of video sources 115 .
  • the task assignment selector 445 retains the current combination of candidate task assignments and discards the prior combination, as described above. If there are other combinations of candidate task assignments to evaluate (block 1055 ), processing returns to block 1025 at which the candidate assignment determiner 435 determines a different combination of candidate task assignments for the group of video sources 115 . Otherwise, at block 1060 , the task assignment selector 445 outputs, as described above, the final retained combinations of candidate task assignments as the distributed assignment 110 for assigning the respective sequences of video analytics tasks identified in the application characteristics 415 to the devices 115 , 125 and 120 in the cloud computing environment 100 . Execution of the example program 1000 then ends
  • FIG. 11 is a block diagram of an example processor platform 1100 capable of executing the instructions of FIG. 10 to implement the example video analytics task scheduler 400 of FIG. 4 .
  • the processor platform 1100 can be, for example, a server, a personal computer, a mobile device (e.g., a cell phone, a smart phone, a tablet such as an iPadTM), a personal digital assistant (PDA), an Internet appliance, etc., or any other type of computing device.
  • the processor platform 1100 of the illustrated example includes a processor 1112 .
  • the processor 1112 of the illustrated example is hardware.
  • the processor 1112 can be implemented by one or more integrated circuits, logic circuits, microprocessors or controllers from any desired family or manufacturer.
  • the processor 1112 is configured via example instructions 1132 , which include one or more the example instructions of FIG. 10 , to implement the example directed acyclic graph determiner 425 , the example task ordering specifier 430 , the example candidate assignment determiner 435 , the example constraint evaluator 440 and/or the example task assignment selector 445 of FIG. 4 .
  • the processor 1112 of the illustrated example includes a local memory 1113 (e.g., a cache).
  • the processor 1112 of the illustrated example is in communication with a main memory including a volatile memory 1114 and a non-volatile memory 1116 via a link 1118 .
  • the link 1118 may be implemented by a bus, one or more point-to-point connections, etc., or a combination thereof.
  • the volatile memory 1114 may be implemented by Synchronous Dynamic Random Access Memory (SDRAM), Dynamic Random Access Memory (DRAM), RAMBUS Dynamic Random Access Memory (RDRAM) and/or any other type of random access memory device.
  • the non-volatile memory 1116 may be implemented by flash memory and/or any other desired type of memory device. Access to the main memory 1114 , 1116 is controlled by a memory controller.
  • the processor platform 1100 of the illustrated example also includes an interface circuit 1120 .
  • the interface circuit 1120 may be implemented by any type of interface standard, such as an Ethernet interface, a universal serial bus (USB), and/or a PCI express interface.
  • one or more input devices 1122 are connected to the interface circuit 1120 .
  • the input device(s) 1122 permit(s) a user to enter data and commands into the processor 1112 .
  • the input device(s) can be implemented by, for example, an audio sensor, a microphone, a camera (still or video), a keyboard, a button, a mouse, a touchscreen, a track-pad, a trackball, a trackbar (such as an isopoint), a voice recognition system and/or any other human-machine interface.
  • many systems, such as the processor platform 1100 can allow the user to control the computer system and provide data to the computer using physical gestures, such as, but not limited to, hand or body movements, facial expressions, and face recognition.
  • One or more output devices 1124 are also connected to the interface circuit 1120 of the illustrated example.
  • the output devices 1124 can be implemented, for example, by display devices (e.g., a light emitting diode (LED), an organic light emitting diode (OLED), a liquid crystal display, a cathode ray tube display (CRT), a touchscreen, a tactile output device, a printer and/or speakers).
  • the interface circuit 1120 of the illustrated example thus, typically includes a graphics driver card, a graphics driver chip or a graphics driver processor.
  • the interface circuit 1120 further utilized one or more of the input devices 1122 and/or the output devices 1124 to implement the example user interface 405 of FIG. 4 .
  • the interface circuit 1120 of the illustrated example also includes a communication device such as a transmitter, a receiver, a transceiver, a modem and/or network interface card to facilitate exchange of data with external machines (e.g., computing devices of any kind) via a network 1126 (e.g., an Ethernet connection, a digital subscriber line (DSL), a telephone line, coaxial cable, a cellular telephone system, etc.).
  • a communication device such as a transmitter, a receiver, a transceiver, a modem and/or network interface card to facilitate exchange of data with external machines (e.g., computing devices of any kind) via a network 1126 (e.g., an Ethernet connection, a digital subscriber line (DSL), a telephone line, coaxial cable, a cellular telephone system, etc.).
  • DSL digital subscriber line
  • the processor platform 1100 of the illustrated example also includes one or more mass storage devices 1128 for storing software and/or data.
  • mass storage devices 1128 include floppy disk drives, hard drive disks, compact disk drives, Blu-ray disk drives, RAID (redundant array of independent disks) systems, and digital versatile disk (DVD) drives.
  • mass storage devices 1128 stores the example network topology 410 and the example application characteristics 415 .
  • Coded instructions 1132 corresponding to the instructions of FIG. 10 may be stored in the mass storage device 1128 , in the volatile memory 1114 , in the non-volatile memory 1116 , in the local memory 1113 and/or on a removable tangible computer readable storage medium, such as a CD or DVD 1136 .
  • the foregoing disclosure provides examples of distributing assignment of video analytics tasks in an example cloud computing environment 100 to reduce bandwidth utilization.
  • the disclosure is not limited thereto.
  • example distributed video analytics task assignment procedures were described from the perspective of an example license plate recognition application, such procedures are not limited thereto.
  • distributed video analytics task assignment procedures as disclosed herein can be used to distribute assignment of video analytics processing tasks in a cloud computing environment for any video analytics processing application exhibiting the model ordering, model parallelism and data parallelism properties described above.
  • the distributed task assignment procedures can be applied to distribute assignment of tasks in a cloud computing environment for any workload (and not just video analytics workloads) exhibiting the model ordering, model parallelism and data parallelism properties described above.
  • the following further examples which include subject matter such as a task assignment method for video analytics processing in a cloud computing environment, means for assigning video analytics processing tasks in a cloud computing environment, at least one computer-readable medium including instructions that, when executed by a processor, cause the processor to assign video analytics processing tasks in a cloud computing environment, and an apparatus and/or a system for assigning video analytics processing tasks in a cloud computing environment are disclosed herein.
  • the disclosed examples can be implemented individually and/or in one or more combinations.
  • Example 1 is an apparatus to perform task assignment for video analytics processing in a cloud computing environment.
  • the apparatus of example 1 includes a directed acyclic graph determiner to determine a directed acyclic graph including nodes and edges to represent a plurality of video sources, a cloud computing platform, and a plurality of intermediate network devices in the cloud computing environment, the plurality of intermediate network devices to communicate data from the video sources to the cloud computing platform.
  • the apparatus of example 1 also includes a task ordering specifier to specify task orderings for respective sequences of video analytics processing tasks to be executed in the cloud computing environment on respective video source data generated by respective ones of the video sources.
  • the apparatus of example 1 further includes a task scheduler to assign, based on the directed acyclic graph and the task orderings, combinations of the video sources, the intermediate network devices and the cloud computing platform to execute the respective sequences of video analytics processing tasks to reduce an overall bandwidth utilized by the sequences of video analytics processing tasks in the cloud computing environment.
  • Example 2 includes the subject matter of example 1, wherein the nodes of the directed acyclic graph include a root node to represent the cloud computing platform, leaf nodes to represent the video source devices, and intermediate nodes to represent the intermediate network devices; and the edges of the directed acyclic graph include a first set of edges representing available communication paths between the video source devices and the intermediate network devices, and a second set of edges representing available communication paths between the intermediate network devices and the cloud computing platform in the cloud computing environment.
  • Example 3 includes the subject matter of example 2, wherein for each leaf node, the directed acyclic graph defines one respective uplink data path from that leaf node to the cloud computing platform.
  • Example 4 includes the subject matter of example 3, wherein a first leaf node of the directed acyclic graph corresponds to a first video source, a first combination of nodes defines a first uplink path from the first leaf node to the cloud computing platform, and the task scheduler is to assign at least some of the first combination of nodes included in the first uplink path to execute a first one of the sequences of video analytics processing tasks to preserve, along the first uplink path, a first task ordering for the first one of the sequences of video analytics processing tasks.
  • Example 5 includes the subject matter of example 4, wherein tasks ordered later in the first task ordering for the first one of the sequences of video analytics processing tasks are associated with lower bandwidth utilization than tasks ordered earlier in the first task ordering for the first one of the sequences of video analytics processing tasks, and the task scheduler is further to: (1) assign a first node in the first combination of nodes to execute a first task in the first one of the sequences of video analytics processing tasks, the first node at a first position of the first uplink path; (2) assign a second node in the first combination of nodes to execute a second task in the first one of the sequences of video analytics processing tasks, the second node at a second position of the first uplink path subsequent to the first position; and (3) assign the second node to execute each other task in the first one of the sequences of video analytics processing tasks ordered between the first task and the second task in the first task ordering.
  • Example 6 includes the subject matter of any one of example 1 to 5, wherein the task scheduler is further to assign the combinations of the video sources, the intermediate network devices and the cloud computing platform to execute the respective sequences of video analytics processing tasks based on a resource utilization constraint and a bandwidth utilization constraint, the resource utilization constraint to ensure available processing resources represented by the leaf nodes and the intermediate nodes of the directed acyclic graph are not exceeded, and the bandwidth utilization constraint to ensure available bandwidths represented by the first set of edges and the second set of edges of the directed acyclic graph are not exceeded.
  • Example 7 includes the subject matter of example 6, wherein the task scheduler further includes a candidate assignment determiner to iteratively determine different candidate assignments of respective combination of the video sources, the intermediate network devices and the cloud computing platform to execute the respective sequences of video analytics processing tasks associated with the video sources.
  • the task scheduler of example 7 also includes a constraint evaluator to: (1) evaluate a first matrix-based equation for a first one of the candidate assignments to determine whether the first one of the candidate assignments satisfies the resource utilization constraint; and (2) evaluate a second matrix-based equation to determine whether the first one of the candidate assignments satisfies the bandwidth utilization constraint.
  • the task scheduler of example 7 also includes a task assignment selector to retain the first one of the candidate assignments when the first one of the candidate assignments utilizes a lower overall bandwidth in the cloud computing environment than a prior retained second one of the candidate assignments.
  • Example 8 includes the subject matter of example 7, wherein the constraint evaluator is further to: (1) define dummy tasks to represent generation of the respective video source data by the respective ones of the video sources; (2) insert the dummy tasks at initial positions of the respective sequences of video analytics processing tasks associated with the respective ones of the video sources; and (3) use the respective sequences of video analytics processing tasks updated to include the dummy tasks to evaluate the first and second matrix-based equations.
  • Example 9 is a task assignment method for video analytics processing in a cloud computing environment.
  • the method of example 9 includes determining, by executing an instruction with a processor, a graph including nodes and edges to represent a plurality of video sources, a cloud computing platform, and a plurality of intermediate network devices in the cloud computing environment, the plurality of intermediate network devices to communicate data from the video sources to the cloud computing platform.
  • the method of example 9 also includes specifying, by executing an instruction with the processor, task orderings for respective sequences of video analytics processing tasks to be executed in the cloud computing environment on respective video source data generated by respective ones of the video sources.
  • the method of example 9 further includes assigning, by executing an instruction with the processor and based on the graph and the task orderings, combinations of the video sources, the intermediate network devices and the cloud computing platform to execute the respective sequences of video analytics processing tasks to reduce an overall bandwidth utilized by the sequences of video analytics processing tasks in the cloud computing environment.
  • Example 10 includes the subject matter of example 9, wherein the nodes of the graph include a root node to represent the cloud computing platform, leaf nodes to represent the video source devices, and intermediate nodes to represent the intermediate network devices; and the edges of the graph include a first set of edges representing available communication paths between the video source devices and the intermediate network devices, and a second set of edges representing available communication paths between the intermediate network devices and the cloud computing platform in the cloud computing environment
  • Example 11 includes the subject matter of example 10, wherein the graph is a directed acyclic graph and, for each leaf node, the directed acyclic graph defines one respective uplink data path from that leaf node to the cloud computing platform.
  • Example 12 includes the subject matter of example 11, wherein a first leaf node of the directed acyclic graph corresponds to a first video source, a first combination of nodes defines a first uplink path from the first leaf node to the cloud computing platform, and the assigning includes assigning at least some of the first combination of nodes included in the first uplink path to execute a first one of the sequences of video analytics processing tasks to preserve, along the first uplink path, a first task ordering for the first one of the sequences of video analytics processing tasks.
  • Example 13 includes the subject matter of example 12, wherein tasks ordered later in the first task ordering for the first one of the sequences of video analytics processing tasks are associated with lower bandwidth utilization than tasks ordered earlier in the first task ordering for the first one of the sequences of video analytics processing tasks, and the assigning further includes: (1) assigning a first node in the first combination of nodes to execute a first task in the first one of the sequences of video analytics processing tasks, the first node at a first position of the first uplink path; (2) assigning a second node in the first combination of nodes to execute a second task in the first one of the sequences of video analytics processing tasks, the second node at a second position of the first uplink path subsequent to the first position; and (3) assigning the second node to execute each other task in the first one of the sequences of video analytics processing tasks ordered between the first task and the second task in the first task ordering.
  • Example 14 includes the subject matter of any one of examples 9 to 13, wherein the assigning is further based on a resource utilization constraint and a bandwidth utilization constraint, the resource utilization constraint to ensure available processing resources represented by the leaf nodes and the intermediate nodes of the graph are not exceeded, and the bandwidth utilization constraint to ensure available bandwidths represented by the first set of edges and the second set of edges of the graph are not exceeded.
  • Example 15 includes the subject matter of example 14, wherein the assigning further includes: (1) iteratively determining different candidate assignments of respective combination of the video sources, the intermediate network devices and the cloud computing platform to execute the respective sequences of video analytics processing tasks associated with the video sources; and (2) for a first one of the candidate assignments: (a) evaluating a first matrix-based equation to determine whether the first one of the candidate assignments satisfies the resource utilization constraint; (b) evaluating a second matrix-based equation to determine whether the first one of the candidate assignments satisfies the bandwidth utilization constraint; and (c) retaining the first one of the candidate assignments when the first one of the candidate assignments utilizes a lower overall bandwidth in the cloud computing environment than a prior retained second one of the candidate assignments.
  • Example 16 includes the subject matter of example 15, wherein the assigning further includes: (1) defining dummy tasks to represent generation of the respective video source data by the respective ones of the video sources; (2) inserting the dummy tasks at initial positions of the respective sequences of video analytics processing tasks associated with the respective ones of the video sources; and (3) using the respective sequences of video analytics processing tasks updated to include the dummy tasks to evaluate the first and second matrix-based equations.
  • Example 17 is a tangible computer readable storage medium including computer readable instructions which, when executed, cause a processor to at least: (1) determine a directed acyclic graph including nodes and edges to represent a plurality of video sources, a cloud computing platform, and a plurality of intermediate network devices in a cloud computing environment, the plurality of intermediate network devices to communicate data from the video sources to the cloud computing platform; (2) specify task orderings for respective sequences of video analytics processing tasks to be executed in the cloud computing environment on respective video source data generated by respective ones of the video sources; and (3) assign, based on the directed acyclic graph and the task orderings, combinations of the video sources, the intermediate network devices and the cloud computing platform to execute the respective sequences of video analytics processing tasks.
  • Example 18 includes the subject matter of example 17, wherein the nodes of the directed acyclic graph include a root node to represent the cloud computing platform, leaf nodes to represent the video source devices, and intermediate nodes to represent the intermediate network devices; and the edges of the directed acyclic graph include a first set of edges representing available communication paths between the video source devices and the intermediate network devices, and a second set of edges representing available communication paths between the intermediate network devices and the cloud computing platform in the cloud computing environment.
  • Example 19 includes the subject matter of example 18, wherein for each leaf node, the directed acyclic graph defines one respective uplink data path from that leaf node to the cloud computing platform.
  • Example 20 includes the subject matter of example 19, wherein a first leaf node of the directed acyclic graph corresponds to a first video source, a first combination of nodes defines a first uplink path from the first leaf node to the cloud computing platform, and the instructions, when executed, further cause the processor to assign at least some of the first combination of nodes included in the first uplink path to execute a first one of the sequences of video analytics processing tasks to preserve, along the first uplink path, a first task ordering for the first one of the sequences of video analytics processing tasks.
  • Example 21 includes the subject matter of example 20, wherein tasks ordered later in the first task ordering for the first one of the sequences of video analytics processing tasks are associated with lower bandwidth utilization than tasks ordered earlier in the first task ordering for the first one of the sequences of video analytics processing tasks, and the instructions, when executed, further cause the processor to: (1) assign a first node in the first combination of nodes to execute a first task in the first one of the sequences of video analytics processing tasks, the first node at a first position of the first uplink path; (2) assign a second node in the first combination of nodes to execute a second task in the first one of the sequences of video analytics processing tasks, the second node at a second position of the first uplink path subsequent to the first position; and (3) assign the second node to execute each other task in the first one of the sequences of video analytics processing tasks ordered between the first task and the second task in the first task ordering.
  • Example 22 includes the subject matter of any one of examples 17 to 21, wherein the instructions, when executed, further cause the processor to assign the combinations of the video sources, the intermediate network devices and the cloud computing platform to execute the respective sequences of video analytics processing tasks based on a resource utilization constraint and a bandwidth utilization constraint, the resource utilization constraint to ensure available processing resources represented by the leaf nodes and the intermediate nodes of the directed acyclic graph are not exceeded, and the bandwidth utilization constraint to ensure available bandwidths represented by the first set of edges and the second set of edges of the directed acyclic graph are not exceeded.
  • Example 23 includes the subject matter of example 22, wherein the instructions, when executed, further cause the processor to: (1) iteratively determine different candidate assignments of respective combination of the video sources, the intermediate network devices and the cloud computing platform to execute the respective sequences of video analytics processing tasks associated with the video sources; and (2) for a first one of the candidate assignments: (a) evaluate a first matrix-based equation to determine whether the first one of the candidate assignments satisfies the resource utilization constraint; (b) evaluate a second matrix-based equation to determine whether the first one of the candidate assignments satisfies the bandwidth utilization constraint; and (c) retain the first one of the candidate assignments when the first one of the candidate assignments utilizes a lower overall bandwidth in the cloud computing environment than a prior retained second one of the candidate assignments.
  • Example 24 includes the subject matter of example 23, wherein the instructions, when executed, further cause the processor to: (1) define dummy tasks to represent generation of the respective video source data by the respective ones of the video sources; (2) insert the dummy tasks at initial positions of the respective sequences of video analytics processing tasks associated with the respective ones of the video sources; and (3) use the respective sequences of video analytics processing tasks updated to include the dummy tasks to evaluate the first and second matrix-based equations.
  • Example 25 is a tangible computer readable storage medium including computer readable instructions which, when executed, cause a processor to perform the method defined of any one of examples 9 to 16.
  • Example 26 is an apparatus including a processor to perform the method defined of any one of examples 9 to 16.
  • Example 27 is a system to perform task assignment for video analytics processing in a cloud computing environment.
  • the system of example 27 includes means for determining a graph including nodes and edges to represent a plurality of video sources, a cloud computing platform, and a plurality of intermediate network devices in the cloud computing environment, the plurality of intermediate network devices to communicate data from the video sources to the cloud computing platform.
  • the system of example 27 also includes means for specifying task orderings for respective sequences of video analytics processing tasks to be executed in the cloud computing environment on respective video source data generated by respective ones of the video sources.
  • the system of example 27 further includes means for assigning, based on the graph and the task orderings, combinations of the video sources, the intermediate network devices and the cloud computing platform to execute the respective sequences of video analytics processing tasks to reduce an overall bandwidth utilized by the sequences of video analytics processing tasks in the cloud computing environment.
  • Example 28 includes the subject matter of example 27, wherein the nodes of the graph include a root node to represent the cloud computing platform, leaf nodes to represent the video source devices, and intermediate nodes to represent the intermediate network devices; and the edges of the graph include a first set of edges representing available communication paths between the video source devices and the intermediate network devices, and a second set of edges representing available communication paths between the intermediate network devices and the cloud computing platform in the cloud computing environment.
  • Example 29 includes the subject matter of example 28, wherein the graph is a directed acyclic graph and, for each leaf node, the directed acyclic graph defines one respective uplink data path from that leaf node to the cloud computing platform.
  • Example 30 includes the subject matter of example 29, wherein a first leaf node of the directed acyclic graph corresponds to a first video source, a first combination of nodes defines a first uplink path from the first leaf node to the cloud computing platform, and the means for assigning include means for assigning at least some of the first combination of nodes included in the first uplink path to execute a first one of the sequences of video analytics processing tasks to preserve, along the first uplink path, a first task ordering for the first one of the sequences of video analytics processing tasks.
  • Example 31 includes the subject matter of example 30, wherein tasks ordered later in the first task ordering for the first one of the sequences of video analytics processing tasks are associated with lower bandwidth utilization than tasks ordered earlier in the first task ordering for the first one of the sequences of video analytics processing tasks, and the means for assigning further include (1) means for assigning a first node in the first combination of nodes to execute a first task in the first one of the sequences of video analytics processing tasks, the first node at a first position of the first uplink path; (2) means for assigning a second node in the first combination of nodes to execute a second task in the first one of the sequences of video analytics processing tasks, the second node at a second position of the first uplink path subsequent to the first position; and (3) means for assigning the second node to execute each other task in the first one of the sequences of video analytics processing tasks ordered between the first task and the second task in the first task ordering.
  • Example 32 includes the subject matter of any one of examples 27 to 31, wherein the means for assigning is further based on a resource utilization constraint and a bandwidth utilization constraint, the resource utilization constraint to ensure available processing resources represented by the leaf nodes and the intermediate nodes of the graph are not exceeded, and the bandwidth utilization constraint to ensure available bandwidths represented by the first set of edges and the second set of edges of the graph are not exceeded.
  • Example 33 includes the subject matter of example 32, wherein the means for assigning further includes: (1) means for iteratively determining different candidate assignments of respective combination of the video sources, the intermediate network devices and the cloud computing platform to execute the respective sequences of video analytics processing tasks associated with the video sources; and (2) for a first one of the candidate assignments: (a) means for evaluating a first matrix-based equation to determine whether the first one of the candidate assignments satisfies the resource utilization constraint; (b) means for evaluating a second matrix-based equation to determine whether the first one of the candidate assignments satisfies the bandwidth utilization constraint; and (c) means for retaining the first one of the candidate assignments when the first one of the candidate assignments utilizes a lower overall bandwidth in the cloud computing environment than a prior retained second one of the candidate assignments.
  • Example 34 includes the subject matter of example 33, wherein the means for assigning further includes: (1) means for defining dummy tasks to represent generation of the respective video source data by the respective ones of the video sources; (2) means for inserting the dummy tasks at initial positions of the respective sequences of video analytics processing tasks associated with the respective ones of the video sources; and (3) means for using the respective sequences of video analytics processing tasks updated to include the dummy tasks to evaluate the first and second matrix-based equations.

Abstract

Example task assignment methods disclosed herein for video analytics processing in a cloud computing environment include determining a graph, such as a directed acyclic graph, including nodes and edges to represent a plurality of video sources, a cloud computing platform, and a plurality of intermediate network devices in the cloud computing environment. Disclosed example task assignment methods also include specifying task orderings for respective sequences of video analytics processing tasks to be executed in the cloud computing environment on respective video source data generated by respective ones of the video sources. Disclosed example task assignment methods further include assigning, based on the graph and the task orderings, combinations of the video sources, the intermediate network devices and the cloud computing platform to execute the respective sequences of video analytics processing tasks to reduce an overall bandwidth utilized by the sequences of video analytics processing tasks in the cloud computing environment.

Description

RELATED APPLICATION(S)
This patent arises from a continuation of U.S. patent application Ser. No. 15/364,200, (now U.S. Pat. No. 10,567,248), which is entitled “DISTRIBUTED ASSIGNMENT OF VIDEO ANALYTICS TASKS IN CLOUD COMPUTING ENVIRONMENTS TO REDUCE BANDWIDTH UTILIZATION,” and which was filed on Nov. 29, 2016. Priority to U.S. patent application Ser. No. 15/364,200 is claimed. U.S. patent application Ser. No. 15/364,200 is hereby incorporated herein by reference in its entirety.
FIELD OF THE DISCLOSURE
This disclosure relates generally to video analytics processing in cloud computing environments and, more particularly, to distributed assignment of video analytics tasks in cloud computing environments to reduce bandwidth utilization.
BACKGROUND
Video analytics involves processing video data to detect and identify content, features, information, events, etc., contained in the video frames represented by the video data. The use of video analytics is becoming ever more pervasive in modern society given its ability to improve convenience and security in a host of different applications. For example, video analytics can be used in a wide variety of applications, such as license plate detection for toll collection, facial recognition for passport control operations, object detection for airport screening, etc. Due to its associated processing requirements, video analytics applications can be natural candidates for implementation in a cloud computing environment.
BRIEF DESCRIPTION OF THE DRAWINGS
FIGS. 1A-1B illustrate an example conventional assignment of video analytics processing tasks in an example cloud computing environment, and an example distributed assignment of video analytics processing tasks in the example cloud computing environment in accordance with the teachings of this disclosure.
FIGS. 2A-2B illustrates an example directed acyclic graph and example model ordering, model parallelism and data parallelism properties that may be used to implement distributed assignment of video analytics processing tasks in the example cloud computing environment of FIG. 1B.
FIG. 3 illustrates an example distributed video analytics task assignment determined for the example cloud computing environment of FIG. 1B based on the example directed acyclic graph and the example model ordering, model parallelism and data parallelism properties of FIGS. 2A-2B.
FIG. 4 is a block diagram of an example video analytics task scheduler that may be used to implement distributed assignment of video analytics processing tasks in the example cloud computing environment of FIG. 1B based on the example directed acyclic graph and the example model ordering, model parallelism and data parallelism properties of FIGS. 2A-2B to achieve the example distributed video analytics task assignment of FIG. 3.
FIG. 5 illustrates an example task assignment procedure to be performed by the example video analytics task scheduler of FIG. 4 to implement distributed assignment of video analytics processing tasks in the example cloud computing environment of FIG. 1B.
FIG. 6 illustrates an example implementation of an example cost function to be evaluated by the example video analytics task scheduler of FIG. 4 when performing the example task assignment procedure of FIG. 5.
FIG. 7 illustrates an example implementation of an example task ordering constraint to be satisfied by the example video analytics task scheduler of FIG. 4 when performing the example task assignment procedure of FIG. 5.
FIG. 8 illustrates an example implementation of an example resource utilization constraint to be satisfied by the example video analytics task scheduler of FIG. 4 when performing the example task assignment procedure of FIG. 5.
FIG. 9 illustrates an example implementation of an example bandwidth utilization constraint to be satisfied by the example video analytics task scheduler of FIG. 4 when performing the example task assignment procedure of FIG. 5.
FIG. 10 is a flowchart representative of example machine readable instructions that may be executed to implement the example video analytics task scheduler of FIG. 4 and/or to perform the example task assignment procedure of FIG. 5.
FIG. 11 is a block diagram of an example processor platform structured to execute the example machine readable instructions of FIG. 10 to implement the example video analytics task scheduler of FIG. 4.
The figures are not to scale. Wherever possible, the same reference numbers will be used throughout the drawing(s) and accompanying written description to refer to the same or like parts, elements, etc.
DETAILED DESCRIPTION
Methods, apparatus, systems and articles of manufacture (i.e., physical storage media) to distribute assignment of video analytics tasks in cloud computing environments to reduce bandwidth utilization are disclosed herein. Example task assignment methods disclosed herein for video analytics processing in a cloud computing environment include determining a directed acyclic graph including nodes and edges to represent video sources, a cloud computing platform, and intermediate network devices in the cloud computing environment. The intermediate network devices include those network elements, such as routers, gateways, etc., that communicate data from the video sources to the cloud computing platform. Disclosed example task assignment methods also include specifying task orderings for respective sequences of video analytics processing tasks to be executed in the cloud computing environment on respective video source data generated by respective ones of the video sources. Disclosed example task assignment methods further include assigning, based on the directed acyclic graph and the task orderings, combinations of the video sources, the intermediate network devices and the cloud computing platform to execute the respective sequences of video analytics processing tasks to reduce an overall bandwidth utilized by the sequences of video analytics processing tasks in the cloud computing environment.
In some disclosed examples, the nodes of the directed acyclic graph include a root node to represent the cloud computing platform, leaf nodes (also referred to as edge nodes in some contexts) to represent the video source devices, and intermediate nodes to represent the intermediate network devices. In some disclosed examples, the edges of the directed acyclic graph include a first set of edges representing available communication paths between the video source devices and the intermediate network devices, and a second set of edges representing available communication paths between the intermediate network devices and the cloud computing platform in the cloud computing environment. Furthermore, in some disclosed examples, the directed acyclic graph defines, for each leaf node, one respective uplink data path from that leaf node to the cloud computing platform.
For example, in some disclosed example task assignment methods, a first leaf node of the directed acyclic graph corresponds to a first video source, a first combination of nodes defines a first uplink path from the first leaf node to the cloud computing platform, and the assigning performed by the methods includes assigning at least some of the first combination of nodes included in the first uplink path to execute a first one of the sequences of video analytics processing tasks to preserve, along the first uplink path, a first task ordering for the first one of the sequences of video analytics processing tasks. Furthermore, in some such disclosed example task assignment methods, tasks ordered later in the first task ordering for the first one of the sequences of video analytics processing tasks are associated with lower bandwidth utilization than tasks ordered earlier in the first task ordering for the first one of the sequences of video analytics processing tasks. Accordingly, in some such disclosed example task assignment methods, the assigning performed by the methods further includes (1) assigning a first node in the first combination of nodes to execute a first task in the first one of the sequences of video analytics processing tasks, the first node at a first position of the first uplink path, (2) assigning a second node in the first combination of nodes to execute a second task in the first one of the sequences of video analytics processing tasks, the second node at a second position of the first uplink path subsequent to the first position, and (3) assigning the second node to execute each other task in the first one of the sequences of video analytics processing tasks ordered between the first task and the second task in the first task ordering.
Additionally or alternatively, in some disclosed example task assignment methods, the assigning performed by the methods is further based on a resource utilization constraint and a bandwidth utilization constraint. In some such examples, the resource utilization constraint is to ensure available processing resources represented by the leaf nodes and the intermediate nodes of the directed acyclic graph are not exceeded, and the bandwidth utilization constraint is to ensure available bandwidths represented by the first set of edges and the second set of edges of the directed acyclic graph are not exceeded.
For example, in some such disclosed example task assignment methods, the assigning performed by the methods further includes iteratively determining different candidate assignments of respective combination of the video sources, the intermediate network devices and the cloud computing platform to execute the respective sequences of video analytics processing tasks associated with the video sources. Some such disclosed example task assignment methods also include, for a first one of the candidate assignments: (1) evaluating a first matrix-based equation to determine whether the first one of the candidate assignments satisfies the resource utilization constraint, (2) evaluating a second matrix-based equation to determine whether the first one of the candidate assignments satisfies the bandwidth utilization constraint, and (3) retaining the first one of the candidate assignments when the first one of the candidate assignments utilizes a lower overall bandwidth in the cloud computing environment than a prior retained second one of the candidate assignments.
Furthermore, in some such disclosed example task assignment methods, the assigning performed by the methods further includes defining dummy tasks to represent generation of the respective video source data by the respective ones of the video sources. Some such disclosed example task assignment methods also include inserting the dummy tasks at initial positions of the respective sequences of video analytics processing tasks associated with the respective ones of the video sources, and using the respective sequences of video analytics processing tasks updated to include the dummy tasks to evaluate the first and second matrix-based equations.
These and other example methods, apparatus, systems and articles of manufacture (e.g., physical storage media) to distribute assignment of video analytics tasks in cloud computing environments to reduce bandwidth utilization are disclosed in further detail below.
As noted above, video analytics is becoming ever more pervasive in modern society given its ability to improve convenience and security in a host of different applications, such as license plate detection for toll collection, facial recognition for passport control operations, object detection for airport screening, etc. Video analytics processing is also a natural candidate for implementation in a cloud computing environment due to its computationally intensive processing requirements. However, conventional cloud computing implementations assign most, if not all, of the video analytics processing tasks for a given application to the cloud computing platform itself, with little to no video analytics processing being executed by other video source devices and/or network devices external to the cloud computing platform. As a result, such conventional cloud computing implementations can utilize excessive network bandwidth to communicate the raw video data from the video source devices to the cloud computing platform for video analytics processing.
Unlike such conventional cloud computing implementations, the teachings of the present disclosure provide technical solutions to the technical problem of excessive bandwidth utilization by video analytics applications in a cloud computing environment. For example, unlike such conventional cloud computing implementations, distributed assignment of video analytics processing tasks in accordance with the teaching of this disclosure offloads at least some of the video analytics processing tasks from the cloud computing platform to the video source devices and/or other network devices in the cloud computing environment to reduce the overall network bandwidth utilized for video analytics processing. As disclosed in further detail below, by assigning at least some of the video analytics processing tasks to the video source devices and other network devices external to the cloud computing platform, the amount of data conveyed in an uplink direction from the video sources to the cloud computing platform in the cloud computing environment can be reduced.
Video analytics processing can usually be modeled as an ordered sequence of video analytics tasks to be performed on input video data, with tasks later in the sequence outputting data having lower bandwidth requirements than earlier tasks in the sequence. This is referred to herein as the “model ordering property” of video analytics processing. For example, video analytics processing for license plate recognition may include a license plate detection task to detect an object in a video frame that is consistent with a license plate, an optical character recognition (OCR) task to determine a license plate number of a license plate detected by the license plate detection task, and a comparison task to compare the license plate number determined from the OCR task with a reference library to recognize the license plate number and provide a pointer to a database containing registration details (e.g., vehicle owner, make, model, year, registration status, etc.) associated with the license plate number. In such an example, the output of the license plate detection task may be an image, the output of the OCR task may be a string of characters (which has lower bandwidth attributes than the image output from the license plate detection task), and the output of the comparison task may be a pointer (e.g., such as a memory address, which may have lower bandwidth attributes that the string of characters output from the OCR task).
Also, for a given video source, the ordered sequence of video analytics tasks can often be performed in parallel in a pipelined manner such that earlier video data (e.g., video data associated with time t−1) can be processed by a video analytics task (e.g., the OCR task) that is later in the ordered task sequence while later video data (e.g., video data associated with time t) can also be processed by a video analytics task (e.g., the license plate recognition task) that is earlier in the ordered task sequence. This is referred to herein as the “model parallelism property” of video analytics processing. Furthermore, video analytics processing of video data from different video data sources can often be performed in parallel. This is referred to herein as the “data parallelism property” of video analytics processing. As disclosed in further detail below, example distributed video analytics task assignment procedures disclosed herein take advantage of such model ordering, model parallelism and/or data parallelism properties to distribute assignment of data analytics processing tasks to video source devices and other network devices external to the cloud computing platform to reduce overall bandwidth utilization in the cloud computing environment.
For example, and as disclosed in further detail below, disclosed example distributed video analytics task assignment procedures utilize a directed acyclic graph (DAG) to represent the topology of the cloud computing environment. The DAG is further used to assign video source devices and/or other network devices to execute video analytics processing tasks in a manner that maintains the model ordering and model parallelism properties of the particular video analytics application being implemented. Moreover, example distributed video analytics task assignment procedures disclosed herein utilize an overall bandwidth utilization cost function in combination with one or more constraint functions to reduce, or even minimize, the overall network bandwidth to be utilized in the cloud computing environment for video analytics processing while also ensuring that constraints on the amounts of individual computing resources and/or bandwidths of the video source devices and/or other network devices to be utilized for video analytics processing are satisfied. In some examples, such cost and constraint functions are matrix-based to further take advantage of the data parallelism properties of the particular video analytics application being implemented.
Turning to the figures, a block diagram of an example cloud computing environment 100 structured to support video analytics processing applications is illustrated in FIGS. 1A-1B. FIG. 1A illustrates an example conventional assignment 105 of video analytics processing tasks in the example cloud computing environment 100. FIG. 1B illustrates an example distributed assignment 110 of video analytics processing tasks in the example cloud computing environment 100 in accordance with the teachings of this disclosure.
The example cloud computing environment 100 includes a group of one or more example video sources 115 in communication with an example cloud computing platform 120 via a group of one or more intermediate network devices 125. In the illustrated example of FIGS. 1A-1B, the video source(s) 115 can be implemented by any number(s) and/or type(s) of video source devices and/or any other edge device(s) capable of producing video data. For example, the video source(s) 115 can include one or more video cameras, computers, smartphones, image sensors, etc. In the illustrated example of FIGS. 1A-1B, the example cloud computing platform 120 can be implemented by any number(s) and/or type(s) of cloud computing platforms, such as one or more cloud computing platforms provided by Intel®, Amazon®, Google®, IBM®, Microsoft®, etc., and/or a host of other cloud computing platform providers. In the illustrated example of FIGS. 1A-1B, the intermediate network device(s) 125 can be implemented by any number(s) and/or type(s) of network devices capable of routing and/or otherwise receiving and transmitting video data in a network. For example, the intermediate network device(s) 125 can include one or more gateways, routers, bridges, servers, etc.
In the example cloud computing environment 100, the video source(s) 115 are interconnected with (or, more generally, in communication with) the intermediate network device(s) 125 via a first set of example communication paths 130, and the intermediate network device(s) 125 are interconnected with (or, more generally, in communication with) the cloud computing platform 120 via a second set of example communication paths 135. (In some examples, a third set of example communication paths, not shown, may provide further interconnections between some or all of the intermediate network device(s) 125 to implement a robust networking topology.) In the illustrated example of FIGS. 1A-1B, the communications paths 130 and 135 can be implemented by any number(s) and/or type(s) of communication paths capable of conveying data between devices. For example, the communications paths 130 and 135 can be implemented by one or more tunnels, data flows, links, channels, etc., in one or more communication networks, such as the Internet.
As used herein, the phrase “in communication,” including variances thereof, encompasses direct communication and/or indirect communication through one or more intermediary components and does not require direct physical (e.g., wired) communication and/or constant communication, but rather additionally includes selective communication at periodic or aperiodic intervals, as well as one-time events.
In the illustrated example of FIGS. 1A-1B, the cloud computing environment 100 is to be used to implement an example license plate video analytics application 140 that performs license plate recognition on respective video data output from the different video sources 115. The example license plate video analytics application 140 of FIGS. 1A-1B includes a sequence of video analytics tasks including an example license plate detection task 145, an example OCR task 150, and an example comparison task 155. The example license plate detection task 145 detects an object in a video frame that is consistent with a license plate. The example OCR task 150 determines a license plate number of a license plate image detected by the license plate detection task 145. The example comparison task 155 compares the license plate number determined from the OCR task 150 with a reference library to recognize the license plate number and provide a pointer to a database containing registration details (e.g., vehicle owner, make, model, year, registration status, etc.) associated with the license plate number.
In the illustrated example of FIGS. 1A-1B, the sequence of video analytics tasks implementing the example license plate video analytics application 140 is an ordered sequence having a particular task ordering, with the example license plate detection task 145 to be performed on video data output from a particular video source 115, followed by the OCR task 150 processing data output from the license plate detection task 145, followed by the comparison task 155 processing data output from the OCR task 150. Furthermore, the ordered sequence of video analytics tasks implementing the example license plate video analytics application 140 are such that tasks later in the sequence output data having lower bandwidth requirements than earlier tasks in the sequence. For example, the output of the license plate detection task 145 may be an image, the output of the OCR task 150 may be a string of characters (which has lower bandwidth attributes than the image output from the license plate detection task 145), and the output of the comparison task 155 may be a pointer (e.g., such as a memory address, which may have lower bandwidth attributes than the string of characters output from the OCR task 150).
In the example conventional video analytics task assignment 105 illustrated in FIG. 1A, all of the video analytics processing tasks to performed on the video data from the respective video sources 115 are assigned to the cloud computing platform 120. As such, the cloud computing platform 120 is assigned the license plate detection task 145, the OCR task 150 and the comparison task 155 for execution on each stream of video data received from each video source 115, as shown. Such a conventional task assignment places the bulk of the video analytics processing at the cloud computing platform 120, but at the expense of utilizing substantial network bandwidth to send the raw video data from each of the video sources 115 to the cloud computing platform 120 for processing by the license plate detection task 145, the OCR task 150 and the comparison task 155. For example, if the video sources 115 output 1080p high definition video at 25 frames per second (fps), then each video source 115 will utilize a bandwidth of approximately 27.2 Mbps in the cloud computing environment 100. Thus, the total bandwidth utilization for the example conventional video analytics task assignment 105 will be approximately L×27.2 Mbps, where L is the number of video sources 115. If the number of video sources 115 (L) providing raw video data to be processed is large, the conventional video analytics task assignment 105 may result in an impractical, or even impossible, solution depending on the amount of available bandwidth in the cloud computing environment 100.
In contrast, the distributed video analytics task assignment 110 of FIG. 1B assigns, in accordance with the teachings of this disclosure, one or more of the video analytics processing tasks of the example license plate video analytics application 140 to one or more of the video sources 115 and/or the intermediate network devices 125, which are external to the cloud computing platform 120 in the cloud computing environment 100. For example, the distributed video analytics task assignment 110 illustrated in the example of FIG. 1B assigns, as disclosed in further detail below, the video sources 115 to execute respective license plate detection tasks 145 on their respective video data. The distributed video analytics task assignment 110 of the illustrated example also assigns the intermediate network devices 125 to execute the OCR tasks 150 on respective output data, if any, received from the respective license plate detection tasks 145. The distributed video analytics task assignment 110 shown in the example of FIG. 1B further assigns the cloud computing platform 120 to execute the comparison task 155 on respective output data, if any, received from the respective OCR tasks 150.
The example distributed video analytics task assignment 110 of FIG. 1B reduces the overall bandwidth utilized by the example license plate video analytics application 140 in the cloud computing environment 100 relative to the example conventional video analytics task assignment 105. For example, in the distributed video analytics task assignment 110, the respective license plate detection tasks 145 executed by the video sources 115 may output no data (and, thus, utilize no bandwidth) if a license plate is not detected in the video data. Moreover, if a license plate is detected, the respective license plate detection tasks 145 can output video data representing just the image of the license plate, rather than the entire video frame. Accordingly, the bandwidth utilized by the license plate detection tasks 145 will be a fraction a (where a is given by, for example, a ratio of license plate area divided by total video frame area) of the bandwidth (e.g., 27.2 Mbps) associated with the raw video data generated by each video source 115. Thus, the total bandwidth utilized on the example communication paths 130 for the example license plate video analytics application 140 is less than L×27.2α Mbps (because some license plate detection tasks 145 will output no data when no license plate is detected), which is a fraction of the bandwidth utilized by the conventional video analytics task assignment 105.
Relative to the conventional video analytics task assignment 105 of FIG. 1A, the example distributed video analytics task assignment 110 of FIG. 1B results in an even further bandwidth reduction on the example communication paths 135 of the cloud computing environment 100. For example, in the distributed video analytics task assignment 110, the OCR task 150 executed by the respective intermediate network device 125 may output no data (and, thus, utilize no bandwidth) if a license plate was not detected by its respective input license plate detection task 145. Moreover, if a license plate is detected, the respective OCR task 150 can output metadata representing just the license plate number, rather than video data. Accordingly, the bandwidth utilized on the example communication paths 135 of FIG. 1B by the OCR tasks 150 will be approximately L×the number of bits used to represent the license plate number (or less when no license plate is detected), which will be substantially less than the L×27.2 Mbps utilized by the conventional video analytics task assignment 105 of FIG. 1A.
The example distributed video analytics task assignment 110 of FIG. 1B takes advantage of the model ordering, model parallelism and data parallelism properties of the video analytics processing to be performed in the example cloud computing environment 100. To determine a distributed task assignment, such as the example distributed video analytics task assignment 110 of FIG. 1B, disclosed example distributed video analytics task assignment procedures utilize a directed acyclic graph (DAG) to represent the topology of the cloud computing environment 100, which includes the devices and communication path in the environment 100, as well as the available computing resources and bandwidth resources for the devices and communication paths in the environment 100. Disclosed example distributed video analytics task assignment procedures further utilize the DAG to assign one or more of the video source devices 115 and/or intermediate network devices 125 to execute the video analytics processing tasks (e.g., the tasks 145-155) in a manner that maintains the model ordering, model parallelism and data parallelism properties of the particular video analytics application (e.g., the application 140) being implemented in the cloud computing environment 100.
An example directed acyclic graph (DAG) 200 for use by example distributed video analytics task assignment procedures disclosed herein to assign one or more of the example video source devices 115 and/or the example intermediate network devices 125 to execute the video analytics processing tasks in the example cloud computing environment 100 of FIG. 1B is illustrated in FIGS. 2A-2B. The example DAG 200 includes example nodes (corresponding to circles in FIGS. 2A-2B) to represent the physical and/or logical devices included in the cloud computing environment 100. For example, the DAG 200 includes example leaf nodes 215A-D (also referred to as leaf nodes 215A-D) representing the example video sources 115 of FIG. 1B, and an example root node 220 representing the example cloud computing platform 120 of FIG. 1B. The DAG 200 of the illustrated example further includes example intermediate nodes 225A-B representing the example intermediate network devices 125 of FIG. 1B.
The example DAG 200 also includes edges (represented by directed lines in FIGS. 2A-2B) to represent the uplink, or upstream, communication paths between the devices represented by the nodes of the DAG 200. For example, the DAG 200 includes a first set of example edges 230A-D representing the example communication paths 130 between the example video sources 115 and the example intermediate network devices 125 of FIG. 1B. The DAG 200 of the illustrated example also includes a second set of example edges 235A-B representing the example communication paths 135 between the example intermediate network devices 125 and the example cloud computing platform 120 of FIG. 1B. (Although not shown, in some example, the DAG 200 can include additional set(s) of edges to represent additional communication paths between some or all of the intermediate network devices 125.)
In the example DAG 200 of FIGS. 2A-2B, the leaf nodes 215A-D and intermediate nodes 225A-B are associated with respective computing resource capacities corresponding to the respective devices they represent. (The computing resource capacities of the cloud computing platform 120 are assumed to have no impact on task assignment, in at least some examples.) For example, such computing resource capacities can include central processing unit (CPU) cycles, graphical processing unit (GPU) cycles, memory capacity, etc., available at the respective device for executing one or more video analytics tasks. In the example DAG 200, the edges 230A-D and 235A-B represent the connectivity between the nodes of the DAG 200, and are associated with respective bandwidth capacities specifying, for example, the amount of bandwidth available for carrying data associated with one or more video analytics tasks.
As illustrated in the examples of FIG. 2A-2B, a DAG, such as the example DAG 200, defines one respective uplink data path from each leaf node 215A-D (representing its respective video source 115) to the root node 220 (representing the cloud computing platform 120). For instance, in the example DAG 200, the leaf node 215A has one uplink data path to the root node 220, namely, from the leaf node 215A along the edge 230A to the intermediate node 225A, and from the intermediate node 225A along the edge 235A to the root node 220. Similarly, in the example DAG 200, the leaf node 215B has one uplink data path to the root node 220, namely, from the leaf node 215B along the edge 230B to the intermediate node 225A, and from the intermediate node 225A along the edge 235A to the root node 220. Similarly, in the example DAG 200, the leaf node 215C has one uplink data path to the root node 220, namely, from the leaf node 215C along the edge 230C to the intermediate node 225B, and from the intermediate node 225B along the edge 235B to the root node 220. Similarly, in the example DAG 200, the leaf node 215D has one uplink data path to the root node 220, namely, from the leaf node 215D along the edge 230D to the intermediate node 225B, and from the intermediate node 225B along the edge 235B to the root node 220.
FIG. 2A also illustrates the model ordering and parallelism properties of example video analytics tasks to be assigned by disclosed example distributed video analytics task assignment procedures to implement an example video analytics application 240 in the example cloud computing environment 100. In the illustrated example of FIG. 2A, the video analytics application 240 can be divided into three (3) tasks, such as an example video analytics task 245, an example video analytics task 250 and an example video analytics task 255, which are to be performed on respective video data generated at (or otherwise associated with) respective ones of the leaf nodes 215A-D of the DAG 200. Each of the video analytics processing tasks 245-255 is associated with a respective set of processing requirements, such as CPU cycles, GPU cycles, memory capacity, etc. Furthermore, the example video analytics task 245, the example video analytics task 250 and the example video analytics task 255 have a specific task ordering (which is represented in FIG. 2A by the directed lines in connecting the tasks 245, 250 and 255), which corresponds to the model ordering property of the example video analytics application 240.
Also, for a given leaf node 215A-D, the ordered sequence of example video analytics tasks 245-255 can often be performed in parallel in a pipelined manner such that earlier video data (e.g., video data associated with time t−1) associated with a given leaf node 215A-D can be processed by a video analytics task (e.g., the task 250) that is later in the ordered task sequence while later video data (e.g., video data associated with time t) associated with the same leaf node 215A-D can also be processed by a video analytics task (e.g., the task 245) that is earlier in the ordered task sequence. This is referred to as the model parallelism property of the example video analytics application 240. For example, the video analytics application 240 can correspond to the example license plate video analytics application 140 of FIG. 1B, with the example video analytics tasks 245-255 corresponding to the example license plate detection task 145, the example OCR task 150 and the example comparison task 155, respectively. As such, the example license plate detection task 145 exhibits model ordering and model parallelism properties similar to the example video analytics application 240. As another example, the video analytics application 240 can correspond to a facial recognition application, with the example video analytics tasks 245-255 corresponding to a skintone filtering task, a face detection task and a face identification task, respectively. As such, this facial recognition application exhibits model ordering and model parallelism properties similar to the example video analytics application 240.
FIG. 2B further illustrates the data parallelism property of example video analytics tasks to be assigned by disclosed example distributed video analytics task assignment procedures to implement an example video analytics application 240 in the example cloud computing environment 100. In the illustrated example of FIG. 2B, the example video analytics task 245, the example video analytics task 250 and the example video analytics task 255 of the video analytics application 240 are able to be performed in parallel on different video data generated at (or otherwise associated with) different ones of the leaf nodes 215A-D. For example, a first sequence of the video analytics tasks 245, 250 and 255, which is represented as a sequence of example video analytics tasks 245A, 250A and 255A in FIG. 2B, is performed on video data associated with the example leaf node 215A in parallel with a second sequence of the video analytics tasks 245, 250 and 255, which is represented as a sequence of example video analytics tasks 245B, 250B and 255B, being performed on video data associated with the example leaf node 215B. This processing can further be performed in parallel with a third sequence of the video analytics tasks 245, 250 and 255, which is represented as a sequence of example video analytics tasks 245C, 250C and 255C, being performed on video data associated with the example leaf node 215C. This processing can further be performed in parallel with a fourth sequence of the video analytics tasks 245, 250 and 255, which is represented as a sequence of example video analytics tasks 245D, 250D and 255D, being performed on video data associated with the example leaf node 215D.
An example distributed video analytics task assignment for implementing the example video analytics application 240 in the example cloud computing environment 100 of FIG. 1B, which can be determined using on the example DAG 200 and the model ordering, model parallelism and data parallelism properties of FIGS. 2A-2B in accordance with the teachings of this disclosure, is illustrated in FIG. 3. As disclosed in further detail below, the example distributed video analytics task assignment of FIG. 3 is determined by an example video analytics task scheduler disclosed herein to assign the video analytics tasks 245A-D, 250A-D and 255A-D of the example video analytics application 240 to combinations of one or more of the leaf nodes 215A-D, the intermediate nodes 225A-B and/or the root node 220 of the DAG 200 with an objective to reduce, or even minimize, the overall bandwidth (e.g., determined as a sum of the individual utilized bandwidths) utilized on the edges 230A-D and 235A-B of the DAG 200, while also satisfying the constraints that the computing resource and bandwidth capacities of the nodes 215A-D and 225A-B and the edges 230A-D and 235A-B are not exceeded by the computing resource and bandwidth requirements of the video analytics tasks 245A-D, 250A-D and 255A-D, and while satisfying the constraints that the video analytics tasks 245A-D, 250A-D and 255A-D are performed according to the model ordering, model parallelism and data parallelism properties of the example video analytics application 240.
In FIG. 3, this objective is met by the illustrated example distributed video analytics task assignment as follows. For the leaf node 215A (which corresponds to a first one of the video sources 115), the video analytics task 245A is executed by leaf node 215A, and the video analytics tasks 250A and 255A are executed by the intermediate node 225A (which corresponds to a first one of the intermediate network devices 125). For the leaf node 215B (which corresponds to a second one of the video sources 115), the video analytics task 245B is executed by leaf node 215B, and the video analytics tasks 250B is executed by the intermediate node 225A, and the video analytics tasks 255B is executed by the root node 220 (which corresponds to the cloud computing platform 120). For the leaf node 215C (which corresponds to a third one of the video sources 115), the video analytics tasks 245C, 250C and 255C are executed by leaf node 215C. For the leaf node 215D (which corresponds to a fourth one of the video sources 115), the video analytics task 245D is executed by leaf node 215D, and the video analytics tasks 250D is executed by the intermediate node 225B (which corresponds to a second one of the intermediate network devices 125), and the video analytics tasks 255D is executed by the root node 220. As illustrated in FIG. 3, the example distributed video analytics task assignment preserves the model ordering, model parallelism and data parallelism properties by ensuring, for example, that the sequence of video analytics tasks associated with a given leaf node 215A-D are performed in order along the respective uplink path from that leaf node to the root node 220, and that there are sufficient computing resources and bandwidth at the assigned nodes and along the corresponding edges to allow the tasks to be executed in parallel. For example, the illustrated example distributed video analytics task assignment assumes that node 225A has sufficient computing resources and output bandwidth to execute tasks 250A, 255A and 250B in parallel, and that node 215C has sufficient computing resources and output bandwidth to execute tasks 245C, 250C and 255C in parallel.
A block diagram of an example video analytics task scheduler 400 structured to implement an example distributed video analytics task assignment procedure to assign video analytics tasks in cloud computing environments, such as the example cloud computing environment 100, in accordance with the teachings of this disclosure is illustrated in FIG. 4. The example video analytics task scheduler 400 of FIG. 4 includes an example user interface 405 to accept an example network topology 410 describing the example cloud computing environment 100 in which video analytics tasks are to be assigned for execution. The user interface 405 of the illustrated example also accepts example application characteristics 415 describing characteristics of the video analytics application whose video analytics tasks are to be assigned for execution in the cloud computing environment 100. As such, the example user interface 405 can be implemented by any number(s) and/or type(s) of interfaces, such as a graphical user interface (GUI) to accept user input data, a command line interface to accept user input data, a data interface to accept files, messages, etc., formatted to contain data specifying the network topology 410 and/or the application characteristics 415, etc.
In the illustrated example of FIG. 4, the network topology 410 includes data identifying the example video sources 115, the example intermediate network devices 125 and the example cloud computing platform 120. The example network topology 410 also includes data identifying the example communication paths 130 and 135, and specifying the architecture/layout of interconnections among the example video sources 115, the example intermediate network devices 125 and the example cloud computing platform 120 using the communication paths 130 and 135. The example network topology 410 of the illustrated example further specifies the computing resource capacities (e.g., CPU cycles, GPU cycles, memory capacity, etc., available for executing one or more video analytics tasks) of the example video sources 115 and the example intermediate network devices 125, and the bandwidth capacities (amount of bandwidth available for carrying data associated with one or more video analytics tasks) of the communication paths 130 and 135. As such, the network topology 410 can be represented in any data format, such as a binary file, a text file, a database, etc.
In the illustrated example, the application characteristics 415 include data identifying sequences of video analytics tasks, such as the example tasks 245A-D, 250A-D, 255A-D, included in the video analytics application to be executed in the cloud computing environment 100. The example application characteristics 415 also include data specifying task orderings (or, in other words, the model orderings) for the sequences of video analytics tasks. (In the illustrated example, the video analytics tasks are presumed to exhibit the model and data parallelism properties described above.). The example application characteristics 415 of the illustrated example further include data specifying the processing requirements (e.g., CPU cycles, GPU cycles, memory capacity, etc.) for respective ones of the video analytics tasks (e.g., such as the processing requirements for respective ones of the video analytics tasks 245A-D, 250A-D, 255A-D. As such, the application characteristics 415 can be represented in any data format, such as a binary file, a text file, a database, etc.
The example video analytics task scheduler 400 further includes example storage 420 to store the example network topology 410 and the example application characteristics 415 obtained by the user interface 405. The example storage 420 can be implemented by any number(s) and/or type(s) of storage and/or memory device, a database, etc. For example, the storage 420 can be implemented by the mass storage device 1128 and/or the volatile memory 1114 included in the example processing system 1100 of FIG. 11, which is described in greater detail below.
The video analytics task scheduler 400 of the illustrated example includes an example directed acyclic graph determiner 425 to determine a directed acyclic graph, such as the example DAG 200, for the example cloud computing environment 100 based on the example network topology 410. For example, the directed acyclic graph determiner 425 accesses the network topology 410 from the storage 420 and constructs a DAG, such as the DAG 200, having example nodes 215A-D, 225A-B and 220 corresponding, respectively, to the example video sources 115, the example intermediate network devices 125 and the example cloud computing platform 120 identified in the example network topology 410. The directed acyclic graph determiner 425 also constructs the DAG 200 to interconnect the nodes 215A-D, 225A-B and 220 with example edges 230A-D and 235A-B corresponding, respectively, to the example communication paths 130 and 135 identified in the example network topology 410.
Stated mathematically, the example directed acyclic graph determiner 425 determines a DAG, Gd, represented as Gd=<Vd, Ed>, where Vd represents the set of nodes (e.g., nodes 215A-D, 225A-B and 220) corresponding to the example devices (e.g., devices 115, 125 and 120) included in the example cloud computing environment 100, and Ed represents the set of edges (e.g., edges 230A-D and 235A-B) corresponding to the example communication paths (e.g., the communication paths 130 and 135) included in the example cloud computing environment 100, and which connects the nodes Vd in accordance with the network topology 410. The DAG Gd=<Vd, Ed> determined by the example directed acyclic graph determiner 425 also includes, for each node Vd, a function ƒd: Vd→R that represents the computing resource capacity specified in the network topology 410 for the device corresponding to that node Vd. The DAG Gd=<Vd, Ed> determined by the example directed acyclic graph determiner 425 further includes, for each edge Ed, a functiond: Ed→R that represents the bandwidth capacity specified in the network topology 410 for the communication path corresponding to that node edge Ed. In the illustrated example, the functions ƒd: Vd→R andd: Ed→R map, respectively, the specified computing resource capacities and bandwidth capacities to real numbers for further use by the example video analytics task scheduler 400, as described in detail below. However, in other example, the functions ƒd: Vd and/or gd: Ed could map the specified computing resource capacities and/or bandwidth capacities to compound data types.
The video analytics task scheduler 400 of the illustrated example also includes an example task ordering specifier 430 to specify a task ordering for the sequences of video analytics tasks identified in the application characteristics 415. For example, the task ordering specifier 430 accesses the application characteristics 415 from the storage 420 and uses that data to specify task orderings of the respective sequences of video analytics tasks 245A-D, 250A-D, 255A-D, to be performed on video source data generated or otherwise obtained at the video sources 115 corresponding to the leaf nodes of the DAG determined by the directed acyclic graph determiner 425. Stated mathematically, the example task ordering specifier 430 determines task orderings, Gs, represented as Gs=<Vs, Es>, which is a totally ordered set in which V, represents the set of video analytics tasks 245A-D, 250A-D, 255A-D (also referred to as jobs) to be executed in the example cloud computing environment 100, and Es represents the dependencies/communication between the sequences of the video analytics tasks V. The task ordering Gs=<Vs, Es> determined by the example task ordering specifier 430 also includes, for each task Vs, a function ƒs: Vs→R that represents the computing resource requirements specified in the application characteristics 415 for that task V. The task ordering Gs=<Vs, Es> determined by the example task ordering specifier 430 further includes, for each task interdependency Es, a function gs: Es→R that represents the bandwidth requirements associated with that task interdependency Es. In the illustrated example, the functions ƒs: Vs→R and gs: Es→R map, respectively, the specified computing resource requirements and bandwidth requirements to real numbers for further use by the example video analytics task scheduler 400, as described in detail below. However, in other example, the functions ƒs: Vs and/or gs: Es could map the specified computing resource capacities and/or bandwidth capacities to compound data types.
The video analytics task scheduler 400 of the illustrated example further includes an example candidate assignment determiner 435, an example constraint evaluator 440 and an example task assignment selector 445 to implement an example distributed video analytics task assignment procedure in accordance with the teachings of this disclosure. In the illustrated example, the distributed video analytics task assignment procedure implemented by the candidate assignment determiner 435, the constraint evaluator 440 and the task assignment selector 445 assigns combinations of the video sources 115, the intermediate network devices 125 and the cloud computing platform 120 specified in the network topology 410 to execute the respective sequences of video analytics tasks specified in the application characteristics 415, with the assignment based on the DAG determined by the directed acyclic graph determiner 425 and the task orderings determined by the task ordering specifier 430. Furthermore, the distributed video analytics task assignment procedure implemented by the candidate assignment determiner 435, the constraint evaluator 440 and the task assignment selector 445 operates to perform such a task assignment to reduce (or even minimize) an overall bandwidth utilized by the sequences of video analytics processing tasks in the cloud computing environment 100.
An example distributed video analytics task assignment procedure 500 implemented by the example candidate assignment determiner 435, the example constraint evaluator 440 and the example task assignment selector 445 of the example video analytics task scheduler 400 of FIG. 4 is illustrated in FIGS. 5-9. Turning to FIG. 5, the distributed video analytics task assignment procedure 500, which is also referred to as the example task assignment procedure 500, yields a task assignment that assigns combinations of the devices 115-125 in the cloud computing environment 100 to execute the respective sequences of video analytics tasks specified in the application characteristics 415, with the task assignment based on the DAG determined by the directed acyclic graph determiner 425 and the task orderings determined by the task ordering specifier 430. The task assignment procedure 500 of the illustrated example further operates to determine an output task assignment such that an example upstream cost 505 is reduced, or minimized, relative other possible candidate task assignment, while ensuring the output task assignment satisfies a set of example constraints 510-525.
For example, the upstream cost 505, which is further illustrated in FIG. 6, defines a metric representing the overall bandwidth utilized by the respective sequences of video analytics tasks specified in the application characteristics 415 when assigned to the devices 115-125 in the cloud computing environment 100 according to the output task assignment. In the illustrated example, the constraint functions 510-525 include an example resource utilization constraint 510, an example bandwidth utilization constraint 515, an example ordering constraint 520 and an example single choice constraint 525. The example resource utilization constraint 510, which is further illustrated in FIG. 8, ensures that the output task assignment determined by task assignment procedure 500 ensure available processing resources represented by the leaf nodes and the intermediate nodes of the DAG determined by the directed acyclic graph determiner 425 (and which correspond to the available processing resources of the devices 115-125 represented by those nodes) are not exceeded by the output task assignment. The example bandwidth utilization constraint 515, which is further illustrated in FIG. 9, ensures available bandwidths represented by the sets of edges of the directed acyclic graph (and which correspond to the available bandwidths of the communication paths 130-135 represented by those edges) are not exceeded by the output task assignment. The example ordering constraint 520, which is further illustrated in FIG. 7, ensures that the respective sequence of video analytics tasks specified in the application characteristics 415 for a particular path are assigned to a combination of nodes of the DAG that are included in the uplink path for that video source in a manner that preserves the task ordering for that respective sequence of video analytics tasks. The example single choice constraint 525 ensures that each node of the DAG in the uplink path for a given video source outputs data for only one of the tasks in that source's sequence of video analytics tasks. The combination of the ordering constraint 520 and the single choice constraint 525 provide that multiple video analytics tasks for a given video source can be assigned to one node of the DAG (corresponding to the device 115-125 represented by that node), but the tasks will be performed in order and only the last task in the group will output data from the node. In the illustrated example task assignment procedure 500, it is assumed that tasks ordered later in the task ordering for a particular sequence of video analytics tasks are associated with lower bandwidth utilization than tasks ordered earlier in the task ordering for the particular sequence of video analytics tasks.
Definitions of some of the variables utilized by the example task assignment procedure 500 are provided in Table 1.
TABLE 1
Variable Definition
M Number of devices 115-125 included in the cloud computing
environment 100 (which also corresponds to the number of
nodes in the DAG)
L Number of video source devices 115 included in the cloud
computing environment 100 (which also corresponds to the
number of leaf nodes in the DAG)
f The depth of the DAG, which corresponds to the maximum
number of levels from an leaf node to the root node in the
DAG (e.g., f = 3 for the example DAG 200 of FIGS. 2A-2B,
but other example DAGs could have other numbers of levels
of nodes)
N Number of tasks in a sequence of video analytics tasks to
be performed on video data from a given video source
xi j A last task assignment vector representing the last task in
the sequence of video analytics tasks assigned to the jth
device in the uplink data path of the DAG for the ith video
source
STn The nth task in the sequence of video analytics tasks;
thus, the sequence of tasks can be represented by the
ordered sequence T: ST1 → ST2 → . . . → STN
UBn The bandwidth required by the nth task in the sequence of
video analytics tasks
srn The computing resources required by the nth task in the
sequence of video analytics tasks
As noted in Table 1, the sequence of video analytics tasks (STn) to be performed for a given video source is represented by the ordered sequence T: ST1→ST2→ . . . →STN. The example task assignment procedure 500 of FIG. 5 also defines dummy tasks, ST0, which represents generation of the raw video data by the respective video source. The dummy tasks are associated with respective required bandwidths UB0 that correspond to the required bandwidths for the raw video data generated by the respective video sources. The dummy tasks are also associated with computing resource requirements of zero. The example task assignment procedure 500 inserts these dummy tasks at the initial positions of the respective sequences of video analytics tasks for the respective video sources. For a given video source, this modified sequence of video analytics tasks can be represented by the ordered sequence T′: ST0→ST1→ST2→ . . . →STN. The example task assignment procedure 500 uses these modified sequences of video analytics tasks, which include the dummy tasks ST0, to evaluate matrix-based equations representing the example resource utilization constraint 510 and the example bandwidth utilization constraint 515, which are discussed in further detail below.
Execution of the example task assignment procedure 500 by the example candidate assignment determiner 435, the example constraint evaluator 440 and the example task assignment selector 445 of the example video analytics task scheduler 400 of FIG. 4 is now described. In some examples, the candidate assignment determiner 435, the constraint evaluator 440 and the task assignment selector 445 implement the example task assignment procedure 500 with integer linear programming. For convenience, but without loss of generality, it is assumed that the directed acyclic graph determiner 425 determined the example DAG 200 of FIGS. 2A-2B and 3 to represent the cloud computing environment 100, and the task orderings determined by the task ordering specifier 430 correspond to the respective sequences of tasks 245A-D, 250A-D and 255 A-D illustrated in FIGS. 2A-2B and 3. The candidate assignment determiner 435 of the illustrated example iteratively determines respective candidate assignments that assign DAG nodes to execute tasks in the respective sequences of video analytics tasks for the respective video sources.
For example, for a given video source 115, such as the source corresponding to leaf node 215 a in the DAG 200, the respective sequence of video analytics tasks T: ST1→ST2→ST3 for that leaf node is the ordered sequence of tasks T: {245 a250 a255 a}. The candidate assignment determiner 435 of the illustrated example determines a candidate assignment of nodes to execute this sequence of video analytics tasks T: {245 a250 a255 a} by using the DAG 200 to identify the combination of nodes in the uplink path from leaf node 215 a to the root node 220 corresponding to the cloud computing platform 120, which in this example is the ordered combination of nodes {215 a, 225 a, 220}. Then, for the video source 115 corresponding to leaf node 215 a, the candidate assignment determiner 435 assigns at least some (e.g., one or more) of the combination of nodes {215 a, 225 a, 220} to execute the sequence of video analytics tasks T: {245 a250 a255 a} in a manner that preserves the task ordering along the uplink path defined by the ordered combination of nodes {215 a, 225 a, 220}. For example, the candidate assignment determiner 435 could assign the node 215 a to execute the task 245 a, assign the node 225 a to execute the tasks 250 a and 255 a in order, and not assign any tasks to the root node 220, as shown in the example of FIG. 3. For a given processing iteration, the example candidate assignment determiner 435 would continue to determine candidate task assignments in a similar manner for the other ones of the video sources 115 represented by the other leaf nodes 215 b-d in the DAG 200.
In some examples, the candidate assignment determiner 435 utilizes the last task assignment vector xi j defined in Table 1 to determine, for a given processing iteration, the respective candidate task assignment associated with a given leaf node of the DAG 200. As noted in Table 1, the last task assignment vector xi j is a vector representing the last task in the sequence of video analytics tasks assigned to the jth device in the uplink data path of the DAG for the ith video source. In some examples, for each node in the uplink data path from a given leaf node to the root node of the DAG 200, the candidate assignment determiner 435 determines a last task in the sequence of video analytics tasks to be processed by that node. Then, for nodes at adjacent positions in the uplink data path, the candidate assignment determiner 435 looks at the last task assigned to the preceding node and the last task assigned to the subsequent node and assigns any intervening video analytics tasks in the sequence to the subsequent node.
For example, if the leaf node 215 a of the DAG 200 corresponds to i=1, and the ordered combination of nodes {215 a, 225 a, 220} corresponds to j={1, 2, 3}, then in such an example, the candidate assignment determiner 435 would determine the last task assignment vector x1 1 for node 215 a to be x1 1=[1 0 0]T, where the first position in the vector corresponds to the first task (245 a) in the sequence, the second position corresponds to the second task (250 a) in the sequence, and the third position corresponds to the third task (255 a) in the sequence. Thus, the last task assignment vector x1 1=[1 0 0]T indicates that the task 245 a is the last task in the sequence for leaf node 215 a (i=1) to be executed by node 215 a (j=1). Continuing, in this example, the candidate assignment determiner 435 would determine the last task assignment vector x1 2 for node 225 a to be x1 2=[0 0 1]T, which indicates that the task 255 a is the last task in the sequence for leaf node 215 a (i=1) to be executed by node 225 a (j=2). In this example, the candidate assignment determiner 435 would then assign any intervening tasks between the last task to be executed by node 215 a (j=1) and the last task to be executed by node 225 a (j=2) for execution by node 225 a (j=2), which is at the subsequent position along the uplink data path for leaf node 225 a. Thus, in this example, the candidate assignment determiner 435 would also assign task 250 a for execution by the node 225 a (j=2).
After the candidate assignment determiner 435 determines the candidate task assignments of respective combinations of nodes of the DAG 200 to execute the respective sequences of video analytics tasks associated with the respective video sources represented by the leaf nodes of the DAG, the example constraint evaluator 440 determines whether the example resource utilization constraint 510 and the example bandwidth utilization constraint 515 are satisfied for the candidate task assignments. (In the illustrated example, the candidate assignment determiner 435 ensures that the example ordering constraint 520 and the example single choice constraint 525 are satisfied for the candidate task assignments.) The example resource utilization constraint 510 ensures that the respective resources capacities, represented by R1, . . . , RM, for the M devices in the cloud computing environment 100 are not exceeded by the combination of candidate task assignments for the respective video sources. The example bandwidth utilization constraint 515 ensures that the respective bandwidth capacities, represented by U1, . . . , UM, for the M of the respective communication paths at the outputs of the M devices in the cloud computing environment 100 are not exceeded by the combination of candidate task assignments for the respective video sources.
As illustrated in the example of FIG. 8, the example constraint evaluator 440 evaluates an example matrix-based equation to determine whether the resource utilization constraint 510 is satisfied. Evaluation of the matrix-based equation for the resource utilization constraint 510 involves multiplying a matrix Ai j by the vector (xi j−xi j-1) at each node in the DAG in the uplink path (i) and DAG level (j) associated the leaf node (i) in the DAG 200. The matrix Ari j is an M×(N+1) matrix, with the rows corresponding to respective nodes in the DAG 200 (representing the devices in the cloud computing environment 100), and the columns corresponding to the computing resource requirements for the sequence of analytics processing tasks to be performed on the video source data generated by leaf nodes (i). The matrix Ari j is a sparse matrix, with the rows having zero values unless the particular row of the matrix corresponds to the device at the (i, j) position in the DAG 200 (e.g., if Dj (i)=Dk in FIG. 9). The vector (xi j−xi j-1) is the difference between the last task assignment vectors at the adjacent positions j and (j−1) in the DAG 200. As shown in FIG. 8, the constraint evaluator 440 evaluates the matrix Ari j multiplied by the vector (xi j−xi j-1) over all the uplink paths for the leaf nodes (i) and over all the levels (j) of the DAG 200 and sums the results to determine the amount of computing resources to be utilized by the combination of candidate task assignments at each device in the cloud computing environment 100. If the computing resource capacities of none of the devices are exceeded by the computing resources to be utilized by the combination of candidate task assignments, then the constraint evaluator 440 determines the resource utilization constraint 510 is satisfied. Otherwise, if any of the computing resource capacities of the devices are exceeded, the constraint evaluator 440 determines the resource utilization constraint 510 is not satisfied.
As illustrated in the example of FIG. 9, the example constraint evaluator 440 evaluates another example matrix-based equation to determine whether the bandwidth utilization constraint 515 is satisfied. Evaluation of the matrix-based equation for the bandwidth utilization constraint 515 involves multiplying a matrix Aei j by the vector xi j at each node in the DAG in the uplink path (i) and DAG level (j) associated the leaf node (i) in the DAG 200. The matrix Aei j is an Mx (N+1) matrix, with the rows corresponding to respective nodes in the DAG 200 (representing the devices in the cloud computing environment 100), and the columns corresponding to the bandwidth requirements for the sequence of analytics processing tasks to be performed on the video source data generated by leaf nodes (i). The matrix Aei j is a sparse matrix, with the rows having zero values unless the particular row of the matrix corresponds to the device at the (i,j) position in the DAG 200 (e.g., if Dj (i)=Dk in FIG. 9). The vector xi j is the last task assignment vector for the node at the position j in the DAG 200. As shown in FIG. 9, the constraint evaluator 440 evaluates the matrix Aei j multiplied by the vector xi j over all the uplink paths for the leaf nodes (i) and over all the levels (j) of the DAG 200 and sums the results to determine the amount of bandwidth to be utilized by the combination of candidate task assignments at the output of each device in the cloud computing environment 100. If the bandwidth capacities of none of the paths at the outputs of the devices are exceeded by the bandwidth to be utilized by the combination of candidate task assignments, then the constraint evaluator 440 determines the bandwidth utilization constraint 515 is satisfied. Otherwise, if any of the bandwidth capacities are exceeded, the constraint evaluator 440 determines the bandwidth utilization constraint 515 is not satisfied.
Assuming the constraint evaluator 440 determines the resource utilization constraint 510 and the bandwidth utilization constraint 515 are satisfied for a given combination of candidate task assignments, the example task assignment selector 445 then evaluates the example upstream cost 505 for the combination of candidate task assignments. As illustrated in the example of FIG. 6, the example task assignment selector 445 evaluates another example matrix-based equation to determine the upstream cost 505 of the given combination of candidate task assignments determined for the current processing iteration. In the illustrated example of FIG. 6, the upstream cost 505 corresponds to the overall bandwidth utilized by the combination of candidate task assignments in the cloud computing environment 100, but additional and/or alternative costs can be evaluated by the task assignment selector 445. Evaluation of the matrix-based equation for the upstream cost 505 involves multiplying a vector c by the vector xi j at each node in the DAG in the uplink path (i) and DAG level (j) associated the leaf node (i) in the DAG 200. The vector c is an (N+1)×1 vector, with the elements corresponding to the respective bandwidths utilized by the respective tasks in the modified task sequence T′:ST0→ST1→ST2→ . . . →STN. The vector xi j is the last task assignment vector for the node at the position j in the DAG 200. As shown in FIG. 6, the constraint evaluator 440 evaluates the vector c multiplied by the vector xi j over all the uplink paths for the leaf nodes (i) and over all the levels (j) of the DAG 200 and sums the results to determine the overall amount of bandwidth to be utilized by the combination of candidate task assignments in the cloud computing environment 100.
In the illustrated example, the task assignment selector 445 compares the upstream cost 505 determined for the combination of candidate task assignments determined in the current processing iterations with the upstream cost 505, if any, for another combination of candidate task assignments determined in a prior processing iteration. If the combination of candidate task assignments for the current processing iteration results in a reduced upstream cost 505, the task assignment selector 445 retains the current combination of candidate task assignments and discards the prior combination. In some examples, the task assignment selector 445 repeats this processing for each iteration of the candidate assignment determiner 435 determining a different combination of candidate task assignments. After the processing iterations are completed, the task assignment selector 445 will have retained the combination of candidate task assignments yielding the best (e.g., lowest or minimum) upstream cost 505. The task assignment selector 445 outputs this combination of candidate task assignments as the resulting distributed assignment 110 for assigning the respective sequences of video analytics tasks identified in the application characteristics 415 to the devices 115, 125 and 120 in the cloud computing environment 100. For example, the task assignment selector 445 can display and/or otherwise output the resulting distributed assignment 110 via the user interface 405. Additionally or alternatively, in some examples, the task assignment selector 445 outputs, via one or more commands, messages, configuration files, etc., the resulting distributed assignment 110 to the devices 115, 125 and 120 in the cloud computing environment 100 to configure the devices 115, 125 and 120 to execute their respective assigned video analytics processing tasks, if any.
While an example manner of implementing the example video analytics task scheduler 400 is illustrated in FIG. 4, one or more of the elements, processes and/or devices illustrated in FIG. 4 may be combined, divided, re-arranged, omitted, eliminated and/or implemented in any other way. Further, the example user interface 405, the example network topology 410, the example application characteristics 415, the example storage 420, the example directed acyclic graph determiner 425, the example task ordering specifier 430, the example candidate assignment determiner 435, the example constraint evaluator 440, the example task assignment selector 445 and/or, more generally, the example video analytics task scheduler 400 of FIG. 4 may be implemented by hardware, software, firmware and/or any combination of hardware, software and/or firmware. Thus, for example, any of the example user interface 405, the example network topology 410, the example application characteristics 415, the example storage 420, the example directed acyclic graph determiner 425, the example task ordering specifier 430, the example candidate assignment determiner 435, the example constraint evaluator 440, the example task assignment selector 445 and/or, more generally, the example video analytics task scheduler 400 could be implemented by one or more analog or digital circuit(s), logic circuits, programmable processor(s), application specific integrated circuit(s) (ASIC(s)), programmable logic device(s) (PLD(s)) and/or field programmable logic device(s) (FPLD(s)). When reading any of the apparatus or system claims of this patent to cover a purely software and/or firmware implementation, at least one of the example video analytics task scheduler 400, the example user interface 405, the example network topology 410, the example application characteristics 415, the example storage 420, the example directed acyclic graph determiner 425, the example task ordering specifier 430, the example candidate assignment determiner 435, the example constraint evaluator 440 and/or the example task assignment selector 445 is/are hereby expressly defined to include a tangible computer readable storage device or storage disk such as a memory, a digital versatile disk (DVD), a compact disk (CD), a Blu-ray disk, etc. storing the software and/or firmware. Further still, the example video analytics task scheduler 400 may include one or more elements, processes and/or devices in addition to, or instead of, those illustrated in FIG. 4, and/or may include more than one of any or all of the illustrated elements, processes and devices.
A flowchart representative of an example process for implementing the example video analytics task scheduler 400, the example user interface 405, the example network topology 410, the example application characteristics 415, the example storage 420, the example directed acyclic graph determiner 425, the example task ordering specifier 430, the example candidate assignment determiner 435, the example constraint evaluator 440 and/or the example task assignment selector 445 is shown in FIG. 10. In some examples, the machine readable instructions comprise one or more programs for execution by a processor, such as the processor 1112 shown in the example processor platform 1100 discussed below in connection with FIG. 11. The one or more programs, or portion(s) thereof, may be embodied in software stored on a tangible computer readable storage medium such as a CD-ROM, a floppy disk, a hard drive, a digital versatile disk (DVD), a Blu-ray Disk™, or a memory associated with the processor 1112, but the entire program or programs and/or portions thereof could alternatively be executed by a device other than the processor 1112 and/or embodied in firmware or dedicated hardware (e.g., implemented by an ASIC, a PLD, an FPLD, discrete logic, etc.). Further, although the example hardware operations and/or machine readable instructions are described with reference to the flowchart illustrated in FIG. 10, many other methods of implementing the example video analytics task scheduler 400, the example user interface 405, the example network topology 410, the example application characteristics 415, the example storage 420, the example directed acyclic graph determiner 425, the example task ordering specifier 430, the example candidate assignment determiner 435, the example constraint evaluator 440 and/or the example task assignment selector 445 may alternatively be used. For example, with reference to the flowchart illustrated in FIG. 10, the order of execution of the blocks may be changed, and/or some of the blocks described may be changed, eliminated, combined and/or subdivided into multiple blocks.
As mentioned above, the example process of FIG. 10 may be implemented using coded instructions (e.g., computer and/or machine readable instructions) stored on a tangible computer readable storage medium such as a hard disk drive, a flash memory, a read-only memory (ROM), a compact disk (CD), a digital versatile disk (DVD), a cache, a random-access memory (RAM) and/or any other storage device or storage disk in which information is stored for any duration (e.g., for extended time periods, permanently, for brief instances, for temporarily buffering, and/or for caching of the information). As used herein, the term tangible computer readable storage medium is expressly defined to include any type of computer readable storage device and/or storage disk and to exclude propagating signals and to exclude transmission media. As used herein, “tangible computer readable storage medium” and “tangible machine readable storage medium” are used interchangeably. Additionally or alternatively, the example process of FIG. 10 may be implemented using coded instructions (e.g., computer and/or machine readable instructions) stored on a non-transitory computer and/or machine readable medium such as a hard disk drive, a flash memory, a ROM, a CD, a DVD, a cache, a RAM and/or any other storage device or storage disk in which information is stored for any duration (e.g., for extended time periods, permanently, for brief instances, for temporarily buffering, and/or for caching of the information). As used herein, the term non-transitory computer readable medium is expressly defined to include any type of computer readable storage device and/or storage disk and to exclude propagating signals and to exclude transmission media. As used herein, when the phrase “at least” is used as the transition term in a preamble of a claim, it is open-ended in the same manner as the terms “comprising” and “including” are open ended. Also, as used herein, the terms “computer readable” and “machine readable” are considered equivalent unless indicated otherwise.
An example program 1000 may be executed to implement the example video analytics task scheduler 400, is illustrated in FIG. 10. With reference to the preceding figures and associated written descriptions, the example program 1000 of FIG. 10 begins execution at block 1005 at which the example user interface 405 of the video analytics task scheduler 400 obtains the network topology 410 for the cloud computing environment 100, as described above. At block 1010, the example directed acyclic graph determiner 425 of the video analytics task scheduler 400 uses the network topology 410 to determine, as described above, a directed acyclic graph, such as the example DAG 200, representing the devices and uplink data paths from the video sources 115 to the cloud computing platform 120 of the cloud computing environment 100. At block 1015, the example user interface 405 obtains, as described above, the application characteristics 415 specifying the respective sequences of video analytics processing tasks to be executed in the cloud computing environment 100 on the video data associated with the respective video sources 115. At block 1020, the example task ordering specifier 430 of the video analytics task scheduler 400 determines task orderings for the respective sequences of video analytics processing tasks specified in the application characteristics 415.
Next, at block 1025, the example candidate assignment determiner 435 of the video analytics task scheduler 400 begins a set of processing iterations to determine respective candidate assignments that assign nodes of the DAG 200 to execute tasks in the respective sequences of video analytics tasks for the respective video sources 115. For example, and as described above, at block 1025 the candidate assignment determiner 435 determines, for each video source 115 represented by an leaf node of the DAG 200, a respective candidate assignment of the devices in the cloud computing environment 100 to the tasks in the sequence of video analytics tasks for that source such that the candidate assignment satisfies the task ordering for the sequence of video analytics tasks along the source's uplink data path in the DAG 200. At block 1030, the example constraint evaluator 440 of the video analytics task scheduler 400 determines, as described above, whether the example resource utilization constraint 510 and the example bandwidth utilization constraint 515 are satisfied for the combination of candidate task assignments determined at block 1025 for the group of video sources 115 in the cloud computing environment 100. If the constraints are not satisfied (block 1035), processing returns to block 1025 at which the candidate assignment determiner 435 determines a different combination of candidate task assignments for the group of video sources 115. However, if the constraints are satisfied (block 1035), processing proceeds to block 1040.
At block 1040, the example task assignment selector 445 of the video analytics task scheduler 400 evaluates, as described above, the example upstream cost 505 for the combination of candidate task assignments determined at block 1025. At block 1045, the task assignment selector 445 compares, as described above, the upstream cost 505 determined for the current combination of candidate task assignments with the upstream cost 505, if any, for another combination of candidate task assignments determined in a prior processing iteration. If the current combination of candidate task assignments does not exhibit a reduced upstream cost 505 (block 1045), processing returns to block 1025 at which the candidate assignment determiner 435 determines a different combination of candidate task assignments for the group of video sources 115. However, if the current combination of candidate task assignments does exhibit a reduced upstream cost 505 (block 1045), at block 1050 the task assignment selector 445 retains the current combination of candidate task assignments and discards the prior combination, as described above. If there are other combinations of candidate task assignments to evaluate (block 1055), processing returns to block 1025 at which the candidate assignment determiner 435 determines a different combination of candidate task assignments for the group of video sources 115. Otherwise, at block 1060, the task assignment selector 445 outputs, as described above, the final retained combinations of candidate task assignments as the distributed assignment 110 for assigning the respective sequences of video analytics tasks identified in the application characteristics 415 to the devices 115, 125 and 120 in the cloud computing environment 100. Execution of the example program 1000 then ends
FIG. 11 is a block diagram of an example processor platform 1100 capable of executing the instructions of FIG. 10 to implement the example video analytics task scheduler 400 of FIG. 4. The processor platform 1100 can be, for example, a server, a personal computer, a mobile device (e.g., a cell phone, a smart phone, a tablet such as an iPad™), a personal digital assistant (PDA), an Internet appliance, etc., or any other type of computing device.
The processor platform 1100 of the illustrated example includes a processor 1112. The processor 1112 of the illustrated example is hardware. For example, the processor 1112 can be implemented by one or more integrated circuits, logic circuits, microprocessors or controllers from any desired family or manufacturer. In the illustrated example of FIG. 11, the processor 1112 is configured via example instructions 1132, which include one or more the example instructions of FIG. 10, to implement the example directed acyclic graph determiner 425, the example task ordering specifier 430, the example candidate assignment determiner 435, the example constraint evaluator 440 and/or the example task assignment selector 445 of FIG. 4.
The processor 1112 of the illustrated example includes a local memory 1113 (e.g., a cache). The processor 1112 of the illustrated example is in communication with a main memory including a volatile memory 1114 and a non-volatile memory 1116 via a link 1118. The link 1118 may be implemented by a bus, one or more point-to-point connections, etc., or a combination thereof. The volatile memory 1114 may be implemented by Synchronous Dynamic Random Access Memory (SDRAM), Dynamic Random Access Memory (DRAM), RAMBUS Dynamic Random Access Memory (RDRAM) and/or any other type of random access memory device. The non-volatile memory 1116 may be implemented by flash memory and/or any other desired type of memory device. Access to the main memory 1114, 1116 is controlled by a memory controller.
The processor platform 1100 of the illustrated example also includes an interface circuit 1120. The interface circuit 1120 may be implemented by any type of interface standard, such as an Ethernet interface, a universal serial bus (USB), and/or a PCI express interface.
In the illustrated example, one or more input devices 1122 are connected to the interface circuit 1120. The input device(s) 1122 permit(s) a user to enter data and commands into the processor 1112. The input device(s) can be implemented by, for example, an audio sensor, a microphone, a camera (still or video), a keyboard, a button, a mouse, a touchscreen, a track-pad, a trackball, a trackbar (such as an isopoint), a voice recognition system and/or any other human-machine interface. Also, many systems, such as the processor platform 1100, can allow the user to control the computer system and provide data to the computer using physical gestures, such as, but not limited to, hand or body movements, facial expressions, and face recognition.
One or more output devices 1124 are also connected to the interface circuit 1120 of the illustrated example. The output devices 1124 can be implemented, for example, by display devices (e.g., a light emitting diode (LED), an organic light emitting diode (OLED), a liquid crystal display, a cathode ray tube display (CRT), a touchscreen, a tactile output device, a printer and/or speakers). The interface circuit 1120 of the illustrated example, thus, typically includes a graphics driver card, a graphics driver chip or a graphics driver processor.
In the illustrated example of FIG. 11, the interface circuit 1120 further utilized one or more of the input devices 1122 and/or the output devices 1124 to implement the example user interface 405 of FIG. 4.
The interface circuit 1120 of the illustrated example also includes a communication device such as a transmitter, a receiver, a transceiver, a modem and/or network interface card to facilitate exchange of data with external machines (e.g., computing devices of any kind) via a network 1126 (e.g., an Ethernet connection, a digital subscriber line (DSL), a telephone line, coaxial cable, a cellular telephone system, etc.).
The processor platform 1100 of the illustrated example also includes one or more mass storage devices 1128 for storing software and/or data. Examples of such mass storage devices 1128 include floppy disk drives, hard drive disks, compact disk drives, Blu-ray disk drives, RAID (redundant array of independent disks) systems, and digital versatile disk (DVD) drives. In the illustrated example of FIG. 11, one or more of the mass storage devices 1128 stores the example network topology 410 and the example application characteristics 415.
Coded instructions 1132 corresponding to the instructions of FIG. 10 may be stored in the mass storage device 1128, in the volatile memory 1114, in the non-volatile memory 1116, in the local memory 1113 and/or on a removable tangible computer readable storage medium, such as a CD or DVD 1136.
The foregoing disclosure provides examples of distributing assignment of video analytics tasks in an example cloud computing environment 100 to reduce bandwidth utilization. However, the disclosure is not limited thereto. For example, although example distributed video analytics task assignment procedures were described from the perspective of an example license plate recognition application, such procedures are not limited thereto. Rather, distributed video analytics task assignment procedures as disclosed herein can be used to distribute assignment of video analytics processing tasks in a cloud computing environment for any video analytics processing application exhibiting the model ordering, model parallelism and data parallelism properties described above. Moreover, the distributed task assignment procedures can be applied to distribute assignment of tasks in a cloud computing environment for any workload (and not just video analytics workloads) exhibiting the model ordering, model parallelism and data parallelism properties described above.
The following further examples, which include subject matter such as a task assignment method for video analytics processing in a cloud computing environment, means for assigning video analytics processing tasks in a cloud computing environment, at least one computer-readable medium including instructions that, when executed by a processor, cause the processor to assign video analytics processing tasks in a cloud computing environment, and an apparatus and/or a system for assigning video analytics processing tasks in a cloud computing environment are disclosed herein. The disclosed examples can be implemented individually and/or in one or more combinations.
Example 1 is an apparatus to perform task assignment for video analytics processing in a cloud computing environment. The apparatus of example 1 includes a directed acyclic graph determiner to determine a directed acyclic graph including nodes and edges to represent a plurality of video sources, a cloud computing platform, and a plurality of intermediate network devices in the cloud computing environment, the plurality of intermediate network devices to communicate data from the video sources to the cloud computing platform. The apparatus of example 1 also includes a task ordering specifier to specify task orderings for respective sequences of video analytics processing tasks to be executed in the cloud computing environment on respective video source data generated by respective ones of the video sources. The apparatus of example 1 further includes a task scheduler to assign, based on the directed acyclic graph and the task orderings, combinations of the video sources, the intermediate network devices and the cloud computing platform to execute the respective sequences of video analytics processing tasks to reduce an overall bandwidth utilized by the sequences of video analytics processing tasks in the cloud computing environment.
Example 2 includes the subject matter of example 1, wherein the nodes of the directed acyclic graph include a root node to represent the cloud computing platform, leaf nodes to represent the video source devices, and intermediate nodes to represent the intermediate network devices; and the edges of the directed acyclic graph include a first set of edges representing available communication paths between the video source devices and the intermediate network devices, and a second set of edges representing available communication paths between the intermediate network devices and the cloud computing platform in the cloud computing environment.
Example 3 includes the subject matter of example 2, wherein for each leaf node, the directed acyclic graph defines one respective uplink data path from that leaf node to the cloud computing platform.
Example 4 includes the subject matter of example 3, wherein a first leaf node of the directed acyclic graph corresponds to a first video source, a first combination of nodes defines a first uplink path from the first leaf node to the cloud computing platform, and the task scheduler is to assign at least some of the first combination of nodes included in the first uplink path to execute a first one of the sequences of video analytics processing tasks to preserve, along the first uplink path, a first task ordering for the first one of the sequences of video analytics processing tasks.
Example 5 includes the subject matter of example 4, wherein tasks ordered later in the first task ordering for the first one of the sequences of video analytics processing tasks are associated with lower bandwidth utilization than tasks ordered earlier in the first task ordering for the first one of the sequences of video analytics processing tasks, and the task scheduler is further to: (1) assign a first node in the first combination of nodes to execute a first task in the first one of the sequences of video analytics processing tasks, the first node at a first position of the first uplink path; (2) assign a second node in the first combination of nodes to execute a second task in the first one of the sequences of video analytics processing tasks, the second node at a second position of the first uplink path subsequent to the first position; and (3) assign the second node to execute each other task in the first one of the sequences of video analytics processing tasks ordered between the first task and the second task in the first task ordering.
Example 6 includes the subject matter of any one of example 1 to 5, wherein the task scheduler is further to assign the combinations of the video sources, the intermediate network devices and the cloud computing platform to execute the respective sequences of video analytics processing tasks based on a resource utilization constraint and a bandwidth utilization constraint, the resource utilization constraint to ensure available processing resources represented by the leaf nodes and the intermediate nodes of the directed acyclic graph are not exceeded, and the bandwidth utilization constraint to ensure available bandwidths represented by the first set of edges and the second set of edges of the directed acyclic graph are not exceeded.
Example 7 includes the subject matter of example 6, wherein the task scheduler further includes a candidate assignment determiner to iteratively determine different candidate assignments of respective combination of the video sources, the intermediate network devices and the cloud computing platform to execute the respective sequences of video analytics processing tasks associated with the video sources. The task scheduler of example 7 also includes a constraint evaluator to: (1) evaluate a first matrix-based equation for a first one of the candidate assignments to determine whether the first one of the candidate assignments satisfies the resource utilization constraint; and (2) evaluate a second matrix-based equation to determine whether the first one of the candidate assignments satisfies the bandwidth utilization constraint. The task scheduler of example 7 also includes a task assignment selector to retain the first one of the candidate assignments when the first one of the candidate assignments utilizes a lower overall bandwidth in the cloud computing environment than a prior retained second one of the candidate assignments.
Example 8 includes the subject matter of example 7, wherein the constraint evaluator is further to: (1) define dummy tasks to represent generation of the respective video source data by the respective ones of the video sources; (2) insert the dummy tasks at initial positions of the respective sequences of video analytics processing tasks associated with the respective ones of the video sources; and (3) use the respective sequences of video analytics processing tasks updated to include the dummy tasks to evaluate the first and second matrix-based equations.
Example 9 is a task assignment method for video analytics processing in a cloud computing environment. The method of example 9 includes determining, by executing an instruction with a processor, a graph including nodes and edges to represent a plurality of video sources, a cloud computing platform, and a plurality of intermediate network devices in the cloud computing environment, the plurality of intermediate network devices to communicate data from the video sources to the cloud computing platform. The method of example 9 also includes specifying, by executing an instruction with the processor, task orderings for respective sequences of video analytics processing tasks to be executed in the cloud computing environment on respective video source data generated by respective ones of the video sources. The method of example 9 further includes assigning, by executing an instruction with the processor and based on the graph and the task orderings, combinations of the video sources, the intermediate network devices and the cloud computing platform to execute the respective sequences of video analytics processing tasks to reduce an overall bandwidth utilized by the sequences of video analytics processing tasks in the cloud computing environment.
Example 10 includes the subject matter of example 9, wherein the nodes of the graph include a root node to represent the cloud computing platform, leaf nodes to represent the video source devices, and intermediate nodes to represent the intermediate network devices; and the edges of the graph include a first set of edges representing available communication paths between the video source devices and the intermediate network devices, and a second set of edges representing available communication paths between the intermediate network devices and the cloud computing platform in the cloud computing environment
Example 11 includes the subject matter of example 10, wherein the graph is a directed acyclic graph and, for each leaf node, the directed acyclic graph defines one respective uplink data path from that leaf node to the cloud computing platform.
Example 12 includes the subject matter of example 11, wherein a first leaf node of the directed acyclic graph corresponds to a first video source, a first combination of nodes defines a first uplink path from the first leaf node to the cloud computing platform, and the assigning includes assigning at least some of the first combination of nodes included in the first uplink path to execute a first one of the sequences of video analytics processing tasks to preserve, along the first uplink path, a first task ordering for the first one of the sequences of video analytics processing tasks.
Example 13 includes the subject matter of example 12, wherein tasks ordered later in the first task ordering for the first one of the sequences of video analytics processing tasks are associated with lower bandwidth utilization than tasks ordered earlier in the first task ordering for the first one of the sequences of video analytics processing tasks, and the assigning further includes: (1) assigning a first node in the first combination of nodes to execute a first task in the first one of the sequences of video analytics processing tasks, the first node at a first position of the first uplink path; (2) assigning a second node in the first combination of nodes to execute a second task in the first one of the sequences of video analytics processing tasks, the second node at a second position of the first uplink path subsequent to the first position; and (3) assigning the second node to execute each other task in the first one of the sequences of video analytics processing tasks ordered between the first task and the second task in the first task ordering.
Example 14 includes the subject matter of any one of examples 9 to 13, wherein the assigning is further based on a resource utilization constraint and a bandwidth utilization constraint, the resource utilization constraint to ensure available processing resources represented by the leaf nodes and the intermediate nodes of the graph are not exceeded, and the bandwidth utilization constraint to ensure available bandwidths represented by the first set of edges and the second set of edges of the graph are not exceeded.
Example 15 includes the subject matter of example 14, wherein the assigning further includes: (1) iteratively determining different candidate assignments of respective combination of the video sources, the intermediate network devices and the cloud computing platform to execute the respective sequences of video analytics processing tasks associated with the video sources; and (2) for a first one of the candidate assignments: (a) evaluating a first matrix-based equation to determine whether the first one of the candidate assignments satisfies the resource utilization constraint; (b) evaluating a second matrix-based equation to determine whether the first one of the candidate assignments satisfies the bandwidth utilization constraint; and (c) retaining the first one of the candidate assignments when the first one of the candidate assignments utilizes a lower overall bandwidth in the cloud computing environment than a prior retained second one of the candidate assignments.
Example 16 includes the subject matter of example 15, wherein the assigning further includes: (1) defining dummy tasks to represent generation of the respective video source data by the respective ones of the video sources; (2) inserting the dummy tasks at initial positions of the respective sequences of video analytics processing tasks associated with the respective ones of the video sources; and (3) using the respective sequences of video analytics processing tasks updated to include the dummy tasks to evaluate the first and second matrix-based equations.
Example 17 is a tangible computer readable storage medium including computer readable instructions which, when executed, cause a processor to at least: (1) determine a directed acyclic graph including nodes and edges to represent a plurality of video sources, a cloud computing platform, and a plurality of intermediate network devices in a cloud computing environment, the plurality of intermediate network devices to communicate data from the video sources to the cloud computing platform; (2) specify task orderings for respective sequences of video analytics processing tasks to be executed in the cloud computing environment on respective video source data generated by respective ones of the video sources; and (3) assign, based on the directed acyclic graph and the task orderings, combinations of the video sources, the intermediate network devices and the cloud computing platform to execute the respective sequences of video analytics processing tasks.
Example 18 includes the subject matter of example 17, wherein the nodes of the directed acyclic graph include a root node to represent the cloud computing platform, leaf nodes to represent the video source devices, and intermediate nodes to represent the intermediate network devices; and the edges of the directed acyclic graph include a first set of edges representing available communication paths between the video source devices and the intermediate network devices, and a second set of edges representing available communication paths between the intermediate network devices and the cloud computing platform in the cloud computing environment.
Example 19 includes the subject matter of example 18, wherein for each leaf node, the directed acyclic graph defines one respective uplink data path from that leaf node to the cloud computing platform.
Example 20 includes the subject matter of example 19, wherein a first leaf node of the directed acyclic graph corresponds to a first video source, a first combination of nodes defines a first uplink path from the first leaf node to the cloud computing platform, and the instructions, when executed, further cause the processor to assign at least some of the first combination of nodes included in the first uplink path to execute a first one of the sequences of video analytics processing tasks to preserve, along the first uplink path, a first task ordering for the first one of the sequences of video analytics processing tasks.
Example 21 includes the subject matter of example 20, wherein tasks ordered later in the first task ordering for the first one of the sequences of video analytics processing tasks are associated with lower bandwidth utilization than tasks ordered earlier in the first task ordering for the first one of the sequences of video analytics processing tasks, and the instructions, when executed, further cause the processor to: (1) assign a first node in the first combination of nodes to execute a first task in the first one of the sequences of video analytics processing tasks, the first node at a first position of the first uplink path; (2) assign a second node in the first combination of nodes to execute a second task in the first one of the sequences of video analytics processing tasks, the second node at a second position of the first uplink path subsequent to the first position; and (3) assign the second node to execute each other task in the first one of the sequences of video analytics processing tasks ordered between the first task and the second task in the first task ordering.
Example 22 includes the subject matter of any one of examples 17 to 21, wherein the instructions, when executed, further cause the processor to assign the combinations of the video sources, the intermediate network devices and the cloud computing platform to execute the respective sequences of video analytics processing tasks based on a resource utilization constraint and a bandwidth utilization constraint, the resource utilization constraint to ensure available processing resources represented by the leaf nodes and the intermediate nodes of the directed acyclic graph are not exceeded, and the bandwidth utilization constraint to ensure available bandwidths represented by the first set of edges and the second set of edges of the directed acyclic graph are not exceeded.
Example 23 includes the subject matter of example 22, wherein the instructions, when executed, further cause the processor to: (1) iteratively determine different candidate assignments of respective combination of the video sources, the intermediate network devices and the cloud computing platform to execute the respective sequences of video analytics processing tasks associated with the video sources; and (2) for a first one of the candidate assignments: (a) evaluate a first matrix-based equation to determine whether the first one of the candidate assignments satisfies the resource utilization constraint; (b) evaluate a second matrix-based equation to determine whether the first one of the candidate assignments satisfies the bandwidth utilization constraint; and (c) retain the first one of the candidate assignments when the first one of the candidate assignments utilizes a lower overall bandwidth in the cloud computing environment than a prior retained second one of the candidate assignments.
Example 24 includes the subject matter of example 23, wherein the instructions, when executed, further cause the processor to: (1) define dummy tasks to represent generation of the respective video source data by the respective ones of the video sources; (2) insert the dummy tasks at initial positions of the respective sequences of video analytics processing tasks associated with the respective ones of the video sources; and (3) use the respective sequences of video analytics processing tasks updated to include the dummy tasks to evaluate the first and second matrix-based equations.
Example 25 is a tangible computer readable storage medium including computer readable instructions which, when executed, cause a processor to perform the method defined of any one of examples 9 to 16.
Example 26 is an apparatus including a processor to perform the method defined of any one of examples 9 to 16.
Example 27 is a system to perform task assignment for video analytics processing in a cloud computing environment. The system of example 27 includes means for determining a graph including nodes and edges to represent a plurality of video sources, a cloud computing platform, and a plurality of intermediate network devices in the cloud computing environment, the plurality of intermediate network devices to communicate data from the video sources to the cloud computing platform. The system of example 27 also includes means for specifying task orderings for respective sequences of video analytics processing tasks to be executed in the cloud computing environment on respective video source data generated by respective ones of the video sources. The system of example 27 further includes means for assigning, based on the graph and the task orderings, combinations of the video sources, the intermediate network devices and the cloud computing platform to execute the respective sequences of video analytics processing tasks to reduce an overall bandwidth utilized by the sequences of video analytics processing tasks in the cloud computing environment.
Example 28 includes the subject matter of example 27, wherein the nodes of the graph include a root node to represent the cloud computing platform, leaf nodes to represent the video source devices, and intermediate nodes to represent the intermediate network devices; and the edges of the graph include a first set of edges representing available communication paths between the video source devices and the intermediate network devices, and a second set of edges representing available communication paths between the intermediate network devices and the cloud computing platform in the cloud computing environment.
Example 29 includes the subject matter of example 28, wherein the graph is a directed acyclic graph and, for each leaf node, the directed acyclic graph defines one respective uplink data path from that leaf node to the cloud computing platform.
Example 30 includes the subject matter of example 29, wherein a first leaf node of the directed acyclic graph corresponds to a first video source, a first combination of nodes defines a first uplink path from the first leaf node to the cloud computing platform, and the means for assigning include means for assigning at least some of the first combination of nodes included in the first uplink path to execute a first one of the sequences of video analytics processing tasks to preserve, along the first uplink path, a first task ordering for the first one of the sequences of video analytics processing tasks.
Example 31 includes the subject matter of example 30, wherein tasks ordered later in the first task ordering for the first one of the sequences of video analytics processing tasks are associated with lower bandwidth utilization than tasks ordered earlier in the first task ordering for the first one of the sequences of video analytics processing tasks, and the means for assigning further include (1) means for assigning a first node in the first combination of nodes to execute a first task in the first one of the sequences of video analytics processing tasks, the first node at a first position of the first uplink path; (2) means for assigning a second node in the first combination of nodes to execute a second task in the first one of the sequences of video analytics processing tasks, the second node at a second position of the first uplink path subsequent to the first position; and (3) means for assigning the second node to execute each other task in the first one of the sequences of video analytics processing tasks ordered between the first task and the second task in the first task ordering.
Example 32 includes the subject matter of any one of examples 27 to 31, wherein the means for assigning is further based on a resource utilization constraint and a bandwidth utilization constraint, the resource utilization constraint to ensure available processing resources represented by the leaf nodes and the intermediate nodes of the graph are not exceeded, and the bandwidth utilization constraint to ensure available bandwidths represented by the first set of edges and the second set of edges of the graph are not exceeded.
Example 33 includes the subject matter of example 32, wherein the means for assigning further includes: (1) means for iteratively determining different candidate assignments of respective combination of the video sources, the intermediate network devices and the cloud computing platform to execute the respective sequences of video analytics processing tasks associated with the video sources; and (2) for a first one of the candidate assignments: (a) means for evaluating a first matrix-based equation to determine whether the first one of the candidate assignments satisfies the resource utilization constraint; (b) means for evaluating a second matrix-based equation to determine whether the first one of the candidate assignments satisfies the bandwidth utilization constraint; and (c) means for retaining the first one of the candidate assignments when the first one of the candidate assignments utilizes a lower overall bandwidth in the cloud computing environment than a prior retained second one of the candidate assignments.
Example 34 includes the subject matter of example 33, wherein the means for assigning further includes: (1) means for defining dummy tasks to represent generation of the respective video source data by the respective ones of the video sources; (2) means for inserting the dummy tasks at initial positions of the respective sequences of video analytics processing tasks associated with the respective ones of the video sources; and (3) means for using the respective sequences of video analytics processing tasks updated to include the dummy tasks to evaluate the first and second matrix-based equations.
Although certain example methods, apparatus and articles of manufacture have been disclosed herein, the scope of coverage of this patent is not limited thereto. On the contrary, this patent covers all methods, apparatus and articles of manufacture fairly falling within the scope of the claims of this patent.

Claims (24)

What is claimed is:
1. At least one non-transitory computer readable medium comprising computer readable instructions that, when executed, cause at least one processor to at least:
obtain input data describing at least one sequence of video analytics tasks, at least one of the video analytics tasks in the at least one sequence of video analytics tasks to be executed on at least one video frame of a plurality of video frames from a first one of a plurality of cameras, the plurality of cameras to communicate with a cloud platform via a plurality of network devices, the at least one of the video analytics tasks in the at least one sequence of video analytics tasks to detect an object represented in the at least one video frame from the first one of the cameras;
determine an assignment to cause ones of the video analytics tasks to execute at corresponding ones of the first one of the cameras, one or more of the network devices and the cloud platform, the assignment to be determined based on computational capacities and network capacities associated with at least some of the first one of the cameras and the one or more network devices, the assignment to permit execution of the at least one sequence of video analytics tasks on the video frames from the first one of the cameras; and
update the assignment of the ones of the video analytics tasks to reduce bandwidth utilization by the at least one sequence of video analytics tasks.
2. The at least one non-transitory computer readable medium of claim 1, wherein the at least one sequence of video analytics tasks is to perform license plate recognition on the at least one video frame from the first one of the cameras.
3. The at least one non-transitory computer readable medium of claim 1, wherein the computational capacities include graphical processing unit (GPU) resources associated with the first one of the cameras.
4. The at least one non-transitory computer readable medium of claim 1, wherein the at least one sequence of video analytics tasks includes at least a first video analytics task, a second video analytics task and a third video analytics task, and the assignment is to cause the first video analytics task to execute at the first one of the cameras, the second video analytics task to execute at a first one of the network devices, and the third video analytics task to execute at the cloud platform.
5. The at least one non-transitory computer readable medium of claim 4, wherein the first video analytics task is to process the at least one video frame from the first one of the cameras, the second video analytics task is to process an output of the first video analytics task, and the third video analytics task is to process an output of the second video analytics task.
6. The at least one non-transitory computer readable medium of claim 1, wherein the at least one sequence of video analytics tasks is pipelined.
7. The at least one non-transitory computer readable medium of claim 1, wherein the instructions, when executed, cause the at least one processor to determine the assignment iteratively.
8. An apparatus comprising:
at least one storage device and/or at least one storage disk including input data describing at least one sequence of video analytics tasks, at least one of the video analytics tasks in the at least one sequence of video analytics tasks to be executed on at least one video frame of a plurality of video frames from a first one of a plurality of cameras, the plurality of cameras to communicate with a cloud platform via a plurality of network devices, the at least one of the video analytics tasks in the at least one sequence of video analytics tasks to detect an object represented in the at least one video frame from the first one of the cameras; and
at least one processor to execute computer readable instructions to at least:
determine an assignment of the video analytics tasks to corresponding ones of the first one of the cameras, one or more of the network devices and the cloud platform, the assignment to be determined based on computational capacities and network capacities associated with at least some of the first one of the cameras and the one or more network devices, the assignment to permit execution of the at least one sequence of video analytics tasks on the video frames from the first one of the cameras; and
update the assignment of the video analytics tasks to corresponding ones of the first one of the cameras, the one or more of the network devices or the cloud platform to reduce bandwidth utilization by the at least one sequence of video analytics tasks.
9. The apparatus of claim 8, wherein the at least one sequence of video analytics tasks is to perform license plate recognition on the at least one video frame from the first one of the cameras.
10. The apparatus of claim 8, wherein the computational capacities include graphical processing unit (GPU) resources associated with the first one of the cameras.
11. The apparatus of claim 8, wherein the at least one sequence of video analytics tasks includes at least a first video analytics task, a second video analytics task and a third video analytics task, and the assignment is to cause the first video analytics task to execute at the first one of the cameras, the second video analytics task to execute at a first one of the network devices, and the third video analytics task to execute at the cloud platform.
12. The apparatus of claim 11, wherein the first video analytics task is to process the at least one video frame from the first one of the cameras, the second video analytics task is to process an output of the first video analytics task, and the third video analytics task is to process an output of the second video analytics task.
13. The apparatus of claim 8, wherein the at least one sequence of video analytics tasks is pipelined.
14. The apparatus of claim 8, wherein the at least one processor is to determine the assignment iteratively.
15. At least one non-transitory computer readable medium comprising computer readable instructions that, when executed, cause at least one processor to at least:
obtain input data describing at least one sequence of video analytics tasks, at least one of the video analytics tasks in the at least one sequence of video analytics tasks to be executed on at least one video frame of a plurality of video frames from a first one of a plurality of cameras, the plurality of cameras to communicate with a cloud platform via a plurality of network devices, the at least one of the video analytics tasks in the at least one sequence of video analytics tasks to detect an object represented in the at least one video frame from the first one of the cameras;
determine an assignment to cause the video analytics tasks to be executed at a combination of one or more of the network devices and the cloud platform, the assignment to be determined based on computational capacities and network capacities associated with at least some of the one or more network devices, the assignment to permit execution of the at least one sequence of video analytics tasks on the video frames from the first one of the cameras; and
update the assignment of the video analytics tasks to reduce bandwidth utilization by the at least one sequence of video analytics tasks.
16. The at least one non-transitory computer readable medium of claim 15, wherein the at least one sequence of video analytics tasks is to perform license plate recognition on the at least one video frame from the first one of the cameras.
17. The at least one non-transitory computer readable medium of claim 15, wherein the at least one sequence of video analytics tasks includes at least a first video analytics task and a second video analytics task, and the assignment is to cause the first video analytics task to execute at a first one of the network devices, and the second video analytics task to execute at the cloud platform.
18. The at least one non-transitory computer readable medium of claim 15, wherein the at least one sequence of video analytics tasks is pipelined.
19. The at least one non-transitory computer readable medium of claim 15, wherein the instructions, when executed, cause the at least one processor to determine the assignment iteratively.
20. An apparatus comprising:
memory; and
at least one processor to execute computer readable instructions to at least:
obtain input data describing at least one sequence of video analytics tasks, at least one of the video analytics tasks in the at least one sequence of video analytics tasks to be executed on at least one video frame of a plurality of video frames from a first one of a plurality of cameras, the plurality of cameras to communicate with a cloud platform via a plurality of network devices, the at least one of the video analytics tasks in the at least one sequence of video analytics tasks to detect an object represented in the at least one video frame from the first one of the cameras;
determine an assignment to cause the video analytics tasks to be executed at a combination of one or more of the network devices and the cloud platform, the assignment to be determined based on computational capacities and network capacities associated with at least some of the one or more network devices, the assignment to permit execution of the at least one sequence of video analytics tasks on the video frames from the first one of the cameras; and
update the assignment of the video analytics tasks to reduce bandwidth utilization by the at least one sequence of video analytics tasks.
21. The apparatus of claim 20, wherein the at least one sequence of video analytics tasks is to perform license plate recognition on the at least one video frame from the first one of the cameras.
22. The apparatus of claim 20, wherein the at least one sequence of video analytics tasks includes at least a first video analytics task and a second video analytics task, and the assignment is to cause the first video analytics task to execute at a first one of the network devices, and the second video analytics task to execute at the cloud platform.
23. The apparatus of claim 20, wherein the at least one sequence of video analytics tasks is pipelined.
24. The apparatus of claim 20, wherein the at least one processor is to determine the assignment iteratively.
US16/736,539 2016-11-29 2020-01-07 Distributed assignment of video analytics tasks in cloud computing environments to reduce bandwidth utilization Active US11121949B2 (en)

Priority Applications (2)

Application Number Priority Date Filing Date Title
US16/736,539 US11121949B2 (en) 2016-11-29 2020-01-07 Distributed assignment of video analytics tasks in cloud computing environments to reduce bandwidth utilization
US17/473,597 US11463333B2 (en) 2016-11-29 2021-09-13 Distributed assignment of video analytics tasks in cloud computing environments to reduce bandwidth utilization

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US15/364,200 US10567248B2 (en) 2016-11-29 2016-11-29 Distributed assignment of video analytics tasks in cloud computing environments to reduce bandwidth utilization
US16/736,539 US11121949B2 (en) 2016-11-29 2020-01-07 Distributed assignment of video analytics tasks in cloud computing environments to reduce bandwidth utilization

Related Parent Applications (1)

Application Number Title Priority Date Filing Date
US15/364,200 Continuation US10567248B2 (en) 2016-11-29 2016-11-29 Distributed assignment of video analytics tasks in cloud computing environments to reduce bandwidth utilization

Related Child Applications (1)

Application Number Title Priority Date Filing Date
US17/473,597 Continuation US11463333B2 (en) 2016-11-29 2021-09-13 Distributed assignment of video analytics tasks in cloud computing environments to reduce bandwidth utilization

Publications (2)

Publication Number Publication Date
US20200322238A1 US20200322238A1 (en) 2020-10-08
US11121949B2 true US11121949B2 (en) 2021-09-14

Family

ID=62192932

Family Applications (3)

Application Number Title Priority Date Filing Date
US15/364,200 Expired - Fee Related US10567248B2 (en) 2016-11-29 2016-11-29 Distributed assignment of video analytics tasks in cloud computing environments to reduce bandwidth utilization
US16/736,539 Active US11121949B2 (en) 2016-11-29 2020-01-07 Distributed assignment of video analytics tasks in cloud computing environments to reduce bandwidth utilization
US17/473,597 Active US11463333B2 (en) 2016-11-29 2021-09-13 Distributed assignment of video analytics tasks in cloud computing environments to reduce bandwidth utilization

Family Applications Before (1)

Application Number Title Priority Date Filing Date
US15/364,200 Expired - Fee Related US10567248B2 (en) 2016-11-29 2016-11-29 Distributed assignment of video analytics tasks in cloud computing environments to reduce bandwidth utilization

Family Applications After (1)

Application Number Title Priority Date Filing Date
US17/473,597 Active US11463333B2 (en) 2016-11-29 2021-09-13 Distributed assignment of video analytics tasks in cloud computing environments to reduce bandwidth utilization

Country Status (2)

Country Link
US (3) US10567248B2 (en)
WO (1) WO2018102062A1 (en)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11463333B2 (en) 2016-11-29 2022-10-04 Intel Corporation Distributed assignment of video analytics tasks in cloud computing environments to reduce bandwidth utilization

Families Citing this family (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11210823B1 (en) * 2018-06-04 2021-12-28 Swoop Inc. Systems and methods for attributing value to data analytics-driven system components
US10922145B2 (en) * 2018-09-04 2021-02-16 Target Brands, Inc. Scheduling software jobs having dependencies
US11080078B2 (en) 2018-09-19 2021-08-03 Microsoft Technology Licensing, Llc Processing files via edge computing device
CN109561148B (en) * 2018-11-30 2021-03-23 湘潭大学 Distributed task scheduling method based on directed acyclic graph in edge computing network
EP3901762B1 (en) * 2018-12-21 2023-08-09 Nippon Telegraph And Telephone Corporation Distributed processing assistance apparatus, distributed processing assistance method, and program
US20220167026A1 (en) * 2019-03-21 2022-05-26 Nokia Technologies Oy Network based media processing control
CN110366210B (en) * 2019-06-20 2023-01-06 华南理工大学 Calculation unloading method for stateful data stream application
US11107100B2 (en) * 2019-08-09 2021-08-31 International Business Machines Corporation Distributing computational workload according to tensor optimization
US10841183B1 (en) * 2019-10-18 2020-11-17 Huawei Technologies Canada Co., Ltd. Method and system for reliability-aware embedding of a virtual network onto an elastic optical network
CN111222465B (en) * 2019-11-07 2023-06-13 深圳云天励飞技术股份有限公司 Convolutional neural network-based image analysis method and related equipment
CN111027196B (en) * 2019-12-03 2023-04-28 南方电网科学研究院有限责任公司 Simulation analysis task processing method and device for power equipment and storage medium
US11106919B1 (en) * 2020-06-02 2021-08-31 ULTINOUS Zrt. Processing of video streams
US11363094B2 (en) * 2020-07-20 2022-06-14 International Business Machines Corporation Efficient data processing in a mesh network of computing devices
US11757986B2 (en) 2020-10-23 2023-09-12 Dell Products L.P. Implementing an intelligent network of distributed compute nodes
CN112379985B (en) * 2020-11-16 2022-10-14 深圳供电局有限公司 Computing task allocation method and device in cloud edge computing environment
US20230231904A1 (en) * 2022-01-14 2023-07-20 Dell Products, L.P. Cloud provisioning readiness verification
CN114827677B (en) * 2022-03-08 2024-02-09 浙江微能科技有限公司 Artificial intelligence analysis load balancing method and device

Citations (23)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20050262470A1 (en) * 2004-05-21 2005-11-24 Microsoft Corporation Method and system for graph analysis and synchronization
US20070297332A1 (en) * 2006-06-22 2007-12-27 James Andrew Broberg Distributed resource allocation in stream processing systems
US20080184245A1 (en) 2007-01-30 2008-07-31 March Networks Corporation Method and system for task-based video analytics processing
US20100011410A1 (en) * 2008-07-10 2010-01-14 Weimin Liu System and method for data mining and security policy management
US7680038B1 (en) * 2005-04-25 2010-03-16 Electronic Arts, Inc. Dynamic bandwidth detection and response for online games
US20130051250A1 (en) * 2011-08-22 2013-02-28 Cisco Technology, Inc. Dynamic multi-path forwarding for shared-media communication networks
US20140282586A1 (en) * 2013-03-15 2014-09-18 Advanced Elemental Technologies Purposeful computing
US20150039444A1 (en) * 2013-07-31 2015-02-05 Ryan Hardin Application of dynamic tokens
US20150046678A1 (en) * 2013-08-08 2015-02-12 Linear Algebra Technologies Limited Apparatus, systems, and methods for providing configurable computational imaging pipeline
WO2015147764A1 (en) 2014-03-28 2015-10-01 Kisa Mustafa A method for vehicle recognition, measurement of relative speed and distance with a single camera
US20160034306A1 (en) * 2014-07-31 2016-02-04 Istreamplanet Co. Method and system for a graph based video streaming platform
US20160124739A1 (en) * 2014-10-30 2016-05-05 Google Inc. Minimizing Image Copying During Partition Updates
US9344751B1 (en) * 2015-05-08 2016-05-17 Istreamplanet Co. Coordination of fault-tolerant video stream processing in cloud-based video streaming system
US20160174192A1 (en) * 2014-12-11 2016-06-16 Texas Instruments Incoporated Scheduler for power-efficient time slotted protocol
US20160210263A1 (en) 2012-11-21 2016-07-21 International Business Machines Corporation Scheduling and execution of dag-structured computation on rdma-connected clusters
US20160255355A1 (en) * 2013-10-11 2016-09-01 Telefonaktiebolaget Lm Ericsson (Publ) Method and arrangement for video transcoding using mode or motion or in-loop filter information
US20160299897A1 (en) 2015-04-09 2016-10-13 Veritoll, Llc License plate matching systems and methods
US20160314818A1 (en) * 2015-04-23 2016-10-27 Adidas Ag Method and device for associating frames in a video of an activity of a person with an event
US20170060574A1 (en) * 2015-08-27 2017-03-02 FogHorn Systems, Inc. Edge Intelligence Platform, and Internet of Things Sensor Streams System
US20170243083A1 (en) * 2016-02-23 2017-08-24 Xerox Corporation Generating a virtual world to assess real-world video analysis performance
US20180052711A1 (en) * 2015-03-13 2018-02-22 Hangzhou Hikvision Digital Technology Co., Ltd. Method and system for scheduling video analysis tasks
US20180069933A1 (en) * 2016-09-03 2018-03-08 Microsoft Technology Licensing, Llc Iot gateway for weakly connected settings
US10567248B2 (en) 2016-11-29 2020-02-18 Intel Corporation Distributed assignment of video analytics tasks in cloud computing environments to reduce bandwidth utilization

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10015720B2 (en) * 2014-03-14 2018-07-03 GoTenna, Inc. System and method for digital communication between computing devices
WO2020185707A1 (en) * 2019-03-08 2020-09-17 goTenna Inc. Method for utilization-based traffic throttling in a wireless mesh network

Patent Citations (23)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20050262470A1 (en) * 2004-05-21 2005-11-24 Microsoft Corporation Method and system for graph analysis and synchronization
US7680038B1 (en) * 2005-04-25 2010-03-16 Electronic Arts, Inc. Dynamic bandwidth detection and response for online games
US20070297332A1 (en) * 2006-06-22 2007-12-27 James Andrew Broberg Distributed resource allocation in stream processing systems
US20080184245A1 (en) 2007-01-30 2008-07-31 March Networks Corporation Method and system for task-based video analytics processing
US20100011410A1 (en) * 2008-07-10 2010-01-14 Weimin Liu System and method for data mining and security policy management
US20130051250A1 (en) * 2011-08-22 2013-02-28 Cisco Technology, Inc. Dynamic multi-path forwarding for shared-media communication networks
US20160210263A1 (en) 2012-11-21 2016-07-21 International Business Machines Corporation Scheduling and execution of dag-structured computation on rdma-connected clusters
US20140282586A1 (en) * 2013-03-15 2014-09-18 Advanced Elemental Technologies Purposeful computing
US20150039444A1 (en) * 2013-07-31 2015-02-05 Ryan Hardin Application of dynamic tokens
US20150046678A1 (en) * 2013-08-08 2015-02-12 Linear Algebra Technologies Limited Apparatus, systems, and methods for providing configurable computational imaging pipeline
US20160255355A1 (en) * 2013-10-11 2016-09-01 Telefonaktiebolaget Lm Ericsson (Publ) Method and arrangement for video transcoding using mode or motion or in-loop filter information
WO2015147764A1 (en) 2014-03-28 2015-10-01 Kisa Mustafa A method for vehicle recognition, measurement of relative speed and distance with a single camera
US20160034306A1 (en) * 2014-07-31 2016-02-04 Istreamplanet Co. Method and system for a graph based video streaming platform
US20160124739A1 (en) * 2014-10-30 2016-05-05 Google Inc. Minimizing Image Copying During Partition Updates
US20160174192A1 (en) * 2014-12-11 2016-06-16 Texas Instruments Incoporated Scheduler for power-efficient time slotted protocol
US20180052711A1 (en) * 2015-03-13 2018-02-22 Hangzhou Hikvision Digital Technology Co., Ltd. Method and system for scheduling video analysis tasks
US20160299897A1 (en) 2015-04-09 2016-10-13 Veritoll, Llc License plate matching systems and methods
US20160314818A1 (en) * 2015-04-23 2016-10-27 Adidas Ag Method and device for associating frames in a video of an activity of a person with an event
US9344751B1 (en) * 2015-05-08 2016-05-17 Istreamplanet Co. Coordination of fault-tolerant video stream processing in cloud-based video streaming system
US20170060574A1 (en) * 2015-08-27 2017-03-02 FogHorn Systems, Inc. Edge Intelligence Platform, and Internet of Things Sensor Streams System
US20170243083A1 (en) * 2016-02-23 2017-08-24 Xerox Corporation Generating a virtual world to assess real-world video analysis performance
US20180069933A1 (en) * 2016-09-03 2018-03-08 Microsoft Technology Licensing, Llc Iot gateway for weakly connected settings
US10567248B2 (en) 2016-11-29 2020-02-18 Intel Corporation Distributed assignment of video analytics tasks in cloud computing environments to reduce bandwidth utilization

Non-Patent Citations (6)

* Cited by examiner, † Cited by third party
Title
International Bureau, "International Preliminary Report on Patentability," mailed in connection with International Patent Application No. PCT/US2017/058814, dated Jun. 4, 2019, 7 pages.
International Searching Authority "International Search Report," mailed in connection with International Patent Application No. PCT/US2017/058814, dated Mar. 9, 2018, 3 pages.
International Searching Authority "Written Opinion," mailed in connection with International Patent Application No. PCT/US2017/058814, dated Mar. 9, 2018, 6 pages.
United States Patent and Trademark Office, "Final Office Action," mailed in connection with U.S. Appl. No. 15/364,200, dated Apr. 8, 2019, 24 pages.
United States Patent and Trademark Office, "Non-final Office Action," mailed in connection with U.S. Appl. No. 15/364,200, dated Oct. 11, 2018, 18 pages.
United States Patent and Trademark Office, "Notice of Allowance," mailed in connection with U.S. Appl. No. 15/364,200, dated Oct. 8, 2019, 9 pages.

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11463333B2 (en) 2016-11-29 2022-10-04 Intel Corporation Distributed assignment of video analytics tasks in cloud computing environments to reduce bandwidth utilization

Also Published As

Publication number Publication date
US20180152361A1 (en) 2018-05-31
US20200322238A1 (en) 2020-10-08
WO2018102062A1 (en) 2018-06-07
US10567248B2 (en) 2020-02-18
US11463333B2 (en) 2022-10-04
US20220173987A1 (en) 2022-06-02

Similar Documents

Publication Publication Date Title
US11121949B2 (en) Distributed assignment of video analytics tasks in cloud computing environments to reduce bandwidth utilization
JP7382925B2 (en) Machine learning runtime library for neural network acceleration
US10963783B2 (en) Technologies for optimized machine learning training
KR102164427B1 (en) Determining the order of execution of neural networks
WO2020253466A1 (en) Method and device for generating test case of user interface
CN106855952B (en) Neural network-based computing method and device
US20230062238A1 (en) Pooling Processing Method and System Applied to Convolutional Neural Network
WO2019001418A1 (en) Data sharing system and data sharing method therefor
US20210295168A1 (en) Gradient compression for distributed training
CN110969198A (en) Distributed training method, device, equipment and storage medium for deep learning model
US11321625B2 (en) Quantum circuit optimization using machine learning
CN111142938B (en) Task processing method and device for heterogeneous chip and electronic equipment
CN108776833B (en) Data processing method, system and computer readable storage medium
US20210232921A1 (en) Methods and systems for managing processing of neural network across heterogeneous processors
US11521007B2 (en) Accelerator resource utilization by neural networks
JP2020107042A (en) Learning model generation device, learning model generation method, and program
CN111914987A (en) Data processing method and device based on neural network, equipment and readable medium
CN113780365A (en) Sample generation method and device
WO2018166499A1 (en) Text classification method and device, and storage medium
CN110009091B (en) Optimization of learning network in equivalence class space
US20220343146A1 (en) Method and system for temporal graph neural network acceleration
US11531578B1 (en) Profiling and debugging for remote neural network execution
CN113055546A (en) System and method for processing images
CN113391795A (en) Method and system for realizing self-adaptive mapping of application scene and software development kit
CN111461310A (en) Neural network device, neural network system and method for processing neural network model

Legal Events

Date Code Title Description
FEPP Fee payment procedure

Free format text: ENTITY STATUS SET TO UNDISCOUNTED (ORIGINAL EVENT CODE: BIG.); ENTITY STATUS OF PATENT OWNER: LARGE ENTITY

STPP Information on status: patent application and granting procedure in general

Free format text: FINAL REJECTION MAILED

STCV Information on status: appeal procedure

Free format text: NOTICE OF APPEAL FILED

STPP Information on status: patent application and granting procedure in general

Free format text: NOTICE OF ALLOWANCE MAILED -- APPLICATION RECEIVED IN OFFICE OF PUBLICATIONS

AS Assignment

Owner name: INTEL CORPORATION, CALIFORNIA

Free format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNORS:CHU, HONG-MIN;YANG, SHAO-WEN;CHEN, YEN-KUANG;SIGNING DATES FROM 20161223 TO 20170203;REEL/FRAME:056240/0228

STPP Information on status: patent application and granting procedure in general

Free format text: PUBLICATIONS -- ISSUE FEE PAYMENT VERIFIED

STCF Information on status: patent grant

Free format text: PATENTED CASE