System and method for adapting a neural network model on a hardware platform

Information

  • Patent Grant
  • 12136030
  • Patent Number
    12,136,030
  • Date Filed
    Thursday, March 16, 2023
    a year ago
  • Date Issued
    Tuesday, November 5, 2024
    2 months ago
  • Inventors
    • Driscoll; Michael (Mountain View, CA, US)
  • Original Assignees
  • Examiners
    • Bali; Vikkram
    Agents
    • FOLEY & LARDNER LLP
Abstract
Systems and methods for adapting a neural network model on a hardware platform. An example method includes obtaining neural network model information comprising decision points associated with a neural network, with one or more first decision points being associated with a layout of the neural network. Platform information associated with a hardware platform for which the neural network model information is to be adapted is accessed. Constraints associated with adapting the neural network model information to the hardware platform are determined based on the platform information, with a first constraint being associated with a processing resource of the hardware platform and with a second constraint being associated with a performance metric. A candidate configuration for the neural network is generated via execution of a satisfiability solver based on the constraints, with the candidate configuration assigns values to the plurality of decision points.
Description
INCORPORATION BY REFERENCE TO ANY PRIORITY APPLICATIONS

Any and all applications for which a foreign or domestic priority claim is identified in the Application Data Sheet as filed with the present application are hereby incorporated by reference under 37 CFR 1.57.


BACKGROUND OF THE INVENTION
Field of the Invention

This specification relates generally to the machine learning field, and more specifically to a new and useful system and method for adapting a neural network model on a platform.


Description of the Related Art

Neural networks are being increasingly relied upon for disparate problems due to, as an example, the ease at which they can label, or otherwise classify, input data. For example, a neural network may be used to assign an object label to a portion of an input image. An example portion of an input image may depict a person and a neural network may therefore assign a ‘person’ label to this example portion. A neural network may be defined, at least in part, by different combinations of hyperparameters and parameters. Example hyperparameters may include a number of layers, activation functions, number of neurons per layer, techniques for training a neural network, and so on. Example parameters may include information learned during training, such as values of weights, biases, and so on. Commonly, different neural networks with differing hyperparameters are trained. These different neural networks are then used to analyze the same validation training set and a particular neural network is selected for future use based on the desired performance or accuracy goals of the particular application.


For machine learning applications, it may often be desirable to implement and/or configure neural networks on previously-unimplemented platforms (e.g., software/hardware combination). However, implementing or configuring a neural network for a given platform and/or application (e.g., a use case) can be extremely difficult, because different neural networks, hardware components, software, and/or applications may have different requirements which impose complex constraints on the configuration. For example, autonomous vehicles may be constrained to implement neural networks for their artificial intelligence systems using a relatively limited set of hardware implemented in the vehicle itself, which may lead to hardware platform constraints in terms of implementation and performance. Increasingly, there is also a demand for machine learning and deep learning on mobile devices such as smart phones and tablets. In order to enable deep learning and other processing-heavy and computationally intensive techniques, the neural network model used must be adapted to generate configurations that satisfy all constraints of the platform in question.


This satisfiability problem can be complex and require a significant amount of time, energy, and resources to explore manually by a developer or administrator of the system implementing the neural network model. For example, there may be many “decision points” at which a choice must be made from many options for each configuration variable, which may drastically increase the number of potential configurations usable for a given platform. There are many decisions to make about which algorithms to implement, which data layout to implement, which of many options to select for each decision point, and more. All of these decisions have an impact on whether the neural network will run on the platform, the network performance (e.g., evaluation time, memory usage, power usage, etc.), the accuracy and performance of the neural network model, or other neural network metrics. In addition, a decision at any given decision point in this process may often cause the configuration to be invalid, given other constraints imposed at other decision points, and determining this satisfiability or unsatisfiability requires research and calculation. For example, using a deep learning library or software development kit (SDK) such as NVIDIA's CUDA Deep Neural Network library (cuDNN) requires manually consulting the documentation at every decision point to explore the implications of each option at a decision point.


SUMMARY OF THE INVENTION

One embodiment is a method implemented by a system of one or more processors. The method may include: obtaining neural network model information comprising a plurality of decision points associated with a neural network, wherein one or more first decision points are associated with a layout of the neural network; accessing platform information associated with a hardware platform for which the neural network model information is to be adapted; determining, based on the platform information, constraints associated with adapting the neural network model information to the hardware platform, wherein a first constraint is associated with a processing resource of the hardware platform and wherein a second constraint is associated with a performance metric; and generating a candidate configuration for the neural network via execution of a satisfiability solver based on the constraints, wherein the candidate configuration assigns values to the plurality of decision points.


Another embodiment is a system comprising one or more processors and non-transitory computer storage media storing instructions that when executed by the one or more processors, cause the one or more processors to perform operations including: obtaining neural network model information comprising a plurality of decision points associated with a neural network, wherein one or more first decision points are associated with a layout of the neural network; accessing platform information associated with a hardware platform for which the neural network model information is to be adapted; determining, based on the platform information, constraints associated with adapting the neural network model information to the hardware platform, wherein a first constraint is associated with a processing resource of the hardware platform and wherein a second constraint is associated with a performance metric; and generating a candidate configuration for the neural network via execution of a satisfiability solver based on the constraints, wherein the candidate configuration assigns values to the plurality of decision points.


Yet another embodiment is a non-transitory computer storage media storing instructions that when executed by a system of one or more processors, cause the one or more processors to perform operations including: obtaining neural network model information comprising a plurality of decision points associated with a neural network, wherein one or more first decision points are associated with a layout of the neural network; accessing platform information associated with a hardware platform for which the neural network model information is to be adapted; determining, based on the platform information, constraints associated with adapting the neural network model information to the hardware platform, wherein a first constraint is associated with a processing resource of the hardware platform and wherein a second constraint is associated with a performance metric; and generating a candidate configuration for the neural network via execution of a satisfiability solver based on the constraints, wherein the candidate configuration assigns values to the plurality of decision points.





BRIEF DESCRIPTION OF THE DRAWINGS


FIG. 1 is a schematic representation of an example model configuration system.



FIG. 2 is a flowchart representation of an example model configuration method.





DETAILED DESCRIPTION OF THE PREFERRED EMBODIMENT

The following description of the embodiments of the disclosed technology is not intended to limit the disclosed technology to these particular embodiments, but rather to enable any person skilled in the art to make and use the disclosed technology.


Although embodiments described throughout generally relate to systems and methods for neural network model adaption and configuration, it will be appreciated by those skilled in the art that the systems and methods described can be implemented and/or adapted for a variety of purposes within the machine learning and/or deep learning fields or for neural networks generally.


Introduction


In an embodiment, techniques, systems, and methods, are described to determine a neural network configuration which is adapted to a specific platform. An example platform may represent a processing architecture, an amount of memory, and so on as described herein. Additionally, a platform may represent a particular cloud or virtual machine architecture or instance. It may be appreciated that different platforms may complicate the implementation of a neural network. For example, a certain graphics processing unit architecture may allow for specific instructions to be executed. In this example, a neural network configuration may be determined which leverages these instructions. As another example, a certain lower-powered processing architecture may have limited memory. In this example, a neural network configuration may be determined which is able to work within this limited memory.


As will be described, satisfiability techniques (e.g., constraint satisfaction techniques) may be used to determine a configuration of a neural network based on received input information associated with a hardware or software platform. Example input information may include different configurations, decision points, platform information, and so on. Advantageously, example solvers may be employed to rapidly determine the configuration of the current platform. An example solver may be a satisfiability modulo theories (SMT) solver. This example solver may use techniques, such as Davis-Putnam-Logemann-Loveland (DPLL) algorithms, Boolean Satisfiability Problem (SAT) techniques, Shostak's method, Nelsen-Oppen approaches, and/or combinations thereof. In this way, a neural network may be rapidly adapted to different platforms.


Overview


One embodiment of a system and method includes: using a constraint satisfaction method to determine a set of candidate configurations, based on a neural network (e.g., a representation thereof), a set of possible choices at each decision point, and a set of constraints (e.g., for a platform, the network, the use case, user-imposed, etc.). In variants, the system and method for model adaption and configuration can include: traversing the neural network to identify one or more decision points, each represented by a “configuration variable” requiring a valid value; identifying one or more constraints between/among variables specified by the hardware platform for each of the variables of the decision points; identifying one or more model constraints specified by the hardware platform for the neural network model; identifying one or more performance constraints for operating the neural network model on the hardware platform; executing a satisfiability modulo theories (SMT) solver for the neural network model, wherein the variable constraints, model constraints, and performance constraints are inputs for the SMT solver; receiving one or more candidate configurations from the SMT solver; for each of the received candidate configurations, determining that the candidate configuration is satisfiable; and determining a configuration from a number of received candidate configurations that satisfies target performance metrics.


The system and method function to traverse the neural network model, determine configuration variables (and/or decision points) and network constraints; to identify valid candidate configurations using a constraint satisfaction solver (e.g., an SMT solver, a SAT solver, etc.), given a set of auxiliary constraints; and optionally to select a configuration or configurations that satisfy one or more target performance metrics. Generating a functionally correct, valid implementation of a neural network, such as a deep neural network (DNN) can be a primary aim as a result. Additionally or alternatively, the system and method can output a platform selection (e.g., a hardware selection, a software selection), a neural network selection (e.g., select the neural network to use from a set of candidate networks), or determine any other suitable parameter.


In order to produce a concrete implementation of an abstract neural network, a number of implementation decisions about one or more of system's data layout, numerical precision, algorithm selection, data padding, accelerator use, stride, and more may be made. These decisions may be made on a per-layer or per-tensor basis, so there can potentially be hundreds of decisions, or more, to make for a particular network. Embodiments of the invention take many factors into account before implementing the neural network because many configurations are not supported by underlying software or hardware platforms, and such configurations will result in an inoperable implementation.


As an illustration of one potential challenge, configuring a convolution layer using the NVIDIA CUDA® Deep Neural Network library (cuDNN) (NVIDIA Corporation), which is a library of primitives for deep neural networks, may include the following decisions:

    • Input tensor: datatype (2+ options), layout (2+ options), padding (4 options).
    • Output tensor: datatype, layout, padding.
    • Filter: datatype, layout, padding.
    • Algorithm: 10 options.
    • Precision: 2 options (16-bit or 32-bit floating point arithmetic).
    • Hardware: 2 options (CUDA cores or tensor cores).


Although this example of a convolution presents a large space of possible configurations, many configurations are invalid because they are not implemented by the neural network software development kit (SDK), such as cuDNN and/or constituent layers. Furthermore, the validity of many configurations depends on the convolution parameters; some convolution algorithms don't support certain convolution types or methods (e.g., strided convolutions), and some hardware platforms require specific sizes of tensors. The problem is even more challenging in a convolutional network, where choices have implications across neighbors. For example, the layout of a producer's output tensor should match the layout of a consumer's input tensor.


The systems and methods described herein seek to select a neural network model configuration that satisfies all constraints by, in one embodiment, enumerating a list of valid configurations by casting the configuration problem as a satisfiability problem, and using a constraint satisfaction solver (e.g., an SMT solver) to identify valid configurations for the particular platform where the neural network will run.


All or portions of the method can be performed at a predetermined frequency, performed upon occurrence of an execution event or triggering condition, or performed at any suitable time.


System


As shown in FIG. 1, the model configuration system 100 can include: a hardware platform 102, a neural network model 105, a model configuration platform 110, a traversal module 120, a constraints module 130, a constraint satisfaction solver 140 (e.g., SMT solver 140), a datastore 150, a configurations module 160, and a performance module 170.


All or portions of the system 100 can be implemented in: a local computing system, a remote computing system (e.g., cloud computing system, AWS, and so on), or at any other suitable computing location. The remote computing system can belong to or be maintained by an entity or organization, an individual, a third-party system, or any other suitable user or operator of a computing system. The system 100 may represent a system of one or more processors, one or more computers, one or more virtual machines executing on one or more computers, and so on.


In variants, the model configuration platform 110 functions to facilitate communication between various components of the system (e.g., between the neural network model and the datastore, the hardware platform and the constraints module, etc.), but can additionally or alternatively perform any other suitable functionality. The model configuration platform can additionally or alternatively host or execute the other components of the system (e.g., the neural network model). The model configuration platform 110 can be: a computer system, a network of computer systems, a set of processing systems (e.g., processors, ASICs, etc.), or otherwise configured.


The neural network model 105 functions as a representation of a neural network. In some embodiments, the neural network model 105 is a model of a neural network (for which a configuration is to be determined) that is stored or implemented on the same computer device as the model configuration platform 110, while in other embodiments the neural network model 105, hardware platform 102, and model configuration platform 110 are all components of separate computer devices. In some embodiments, the neural network model 105 can represent one of a plurality of candidate models stored by the system. Any combination of components and computer devices may be contemplated.


In some embodiments, the neural network model 105 may represent a deep learning neural network or set of neural networks, non-deep learning neural network(s), or a combination of deep learning and non-deep learning neural networks. In some embodiments, the neural network model 105 is capable of performing or executing tasks related to machine learning and/or deep learning techniques.


In some embodiments, the neural network model 105 can be a graph (e.g., a directed acyclic graph), wherein each graph node can represent a layer and each edge can represent a tensor (e.g., input/output tensor). However, the neural network model 105 can be otherwise represented for analysis. Each node and/or edge can be associated with one or more layer or tensor: identifiers, constraints, requirements, variables that need values, or any other suitable information. The neural network model 105 can be automatically generated (e.g., from neural network code, such as Python, TensorFlow, Keras, and so on), manually generated, or otherwise generated.


The hardware platform 102 can be a computing system, network, or other hardware embodiment that is targeted for a possible hosting or implementation of the neural network model 105. The hardware platform 102 can be associated with hardware platform data (e.g., stored in a hardware characterization database), which can be sent to the model configuration platform 110. The hardware platform data can include one or more constraints of the hardware platform (e.g., constraints on the configuration variables, such as the maximum or required tensor size, the number of parallel tasks that can be performed, the memory availability, etc.).


The traversal module 120 operates to traverse the neural network model 105 to identify one or more decision points. In some embodiments, each of the decision points include at least one variable (configuration variable) requiring a valid value. In some embodiments, the traversal module 120 identifies the decision points by identifying at least one of the variables and determining a choice, option, decision path, branching point, and/or potential modification of the variable. In some embodiments, traversing the neural network model includes stepping through each of the steps in the neural network model one by one in order. In some cases, traversal includes testing or evaluating one or more boundaries or edge cases of the steps in the neural network model. In some embodiments, traversing the neural network model includes stepping through the neural network model (e.g., graph), identifying the variables for each layer (node), identifying the variables for each tensor (edge), and determining constraints between the layers and/or tensors (e.g., the tensors for preceding and successive layers must match).


Examples of decision points in the neural network module may include:

    • a. tensor10_layout=LayoutChoice(NCHW, NHWC, . . . )
    • b. conv3_alg=ConvAlgChoice(GEMM, PRECOMP_GEMM, FFT, WINOGRAD, . . . )
    • c. tensor10_shape0=3


Constraints module 130 operates to identify one or more constraints for adapting the neural network model 105 to the hardware platform 102. In some embodiments, the constraints module 130 identifies one or more variable constraints specified by the hardware platform for the neural network model, specific to the variable being implemented on the hardware platform. In some embodiments, the constraints module 130 identifies one or more model constraints specified by the hardware platform for the neural network model, specific to the neural network model being implemented on the hardware platform. Example hardware constraints may relate to a processing resource of the hardware platform, such as memory size, cache size, processor information (e.g., speed), instructions capable of being implemented, and so on. In some embodiments, the constraints module 130 identifies one or more performance constraints specified by the hardware platform for operating the neural network model on the hardware platform, including any constraints required by one or more low-level processors of the hardware platform.


For example, constraints among variables that are imposed by the hardware platform may include such constraints as:

    • a. Variable constraint: require((conv3_alg==GEMM)->(conv3_hardware==CudaCores))
    • b. Model constraint: require((conv3_hardware==TensorCores) (tensor10_shape0%8==0))
    • c. Model constraint: require(tensor10_layout==tensor12_layout)
    • d. Performance constraint for running on Tensor Cores: require(conv3_hardware==TensorCores)


Additionally or alternatively, the constraints module 130 can specify software constraints (e.g., imposed by the operating system, etc.), use-case constraints, or any other suitable constraints. Constraints can include: a specific set of variable values that can be used (e.g., for a given piece of software, use case, etc.), variable relationships, or any other suitable set of constraints. The constraints can be determined: from a standards guide, from an API (e.g., for the software, hardware, etc.), received from a user (e.g., manually specified), obtained via automated performance of an internet or web-based, search, or otherwise determined.


The constraint satisfaction solver 140 operates to execute a constraint satisfaction method to determine values for the configuration variables (e.g., decision points). The constraint satisfaction solver is preferably an SMT solver that executes a satisfiability modulo theories (SMT) solving method for the neural network model, with the one or more identified constraints (including, e.g., variable constraints, model constraints, and/or performance constraints) and variable value options being fed into or ingested by the SMT solver 140 as inputs. In some embodiments, other suitable solvers may be used and fall within the scope of the disclosure herein. The variable value options can be: all values available for the given variable (e.g., all algorithm options for a given layer, all data types for a given data format, etc.); only values permitted by the constraints (e.g., only tensor lengths available for the given piece of hardware, such that the neural network may fit in memory); or be any other suitable set of value options. The variable value options can be: retrieved from a global database, retrieved from a database for the hardware or software, received from a user, or otherwise determined. In some embodiments, the SMT solver analyzes the configuration variables at the decision points, the available value options for each of the configuration variables, and the constraints (e.g., to the variables, model, and performance). The SMT solver then finds an assignment value for each the configuration variables that satisfies all of the constraints. In variants, the set of valid configuration variable values can be considered a “configuration” for the neural network. If constructed correctly, the result is a valid working configuration of the neural network model adapted to operate on the hardware platform. In some embodiments, the SMT solver provides the variable values to one or more operators or administrators of the model configuration platform 110, neural network model 105 and/or hardware platform 102, and the operators or administrators can manually or semi-manually declare variables from within the network, software, or hardware configuration. In some embodiments, the variables can be a specific format such as enumerations (e.g., one of four different values), integers, and more. In some embodiments, a list of variables is generated, and constraints between the variables are added to the list, and the list is ingested by the SMT solver.


In some embodiments, the variables are analyzed in terms of data layouts for one or more tensors that can include many values. In some embodiments, such tensors are not assigned variable values manually. In some embodiments, if a tensor is encountered by the SMT solver, the SMT solver includes a numerical value for the tensor, such as an integer in order for the tensor to be cache-compatible or cache-resident, or compatible with other elements.


In some embodiments, the SMT solver outputs a candidate configuration. If the candidate configuration is satisfiable (e.g., as determined by the configurations module 160), then the candidate configuration can be considered (e.g., labeled) a valid configuration, and stored for further analysis. In this variation, a new constraint, excluding the valid configuration can be added, and the SMT solver can be re-run with the new constraint. This can enable the system and method to successively generate multiple valid configurations for further analysis. In this variation, running successive solver instances on the problem (e.g., combination of constraint variables, value options, and constraints) can be halted when: no valid configurations are output (e.g., the problem is unsatisfiable), a predetermined number of valid configurations are generated, the valid configurations satisfy a performance metric (e.g., evaluation time, power consumption, memory consumption, etc. falls below a threshold value, etc.), or when any other suitable condition is satisfied. For example, when the SMT solver outputs a valid configuration, the system then adds the configuration to the set of constraints in a negated sense. The SMT solver method is then run again, and another valid configuration is generated from the negated valid configuration. Alternatively or additionally, multiple solver instances can be concurrently run on the problem, wherein valid configurations output by the instances can be subsequently compared and analyzed.


In some embodiments, the neural network model includes a number of convolutional algorithms that can be chosen. For example, for libraries such as cuDNN, certain algorithms may imply certain layouts or decisions. When one element or parameter is modified, an invalid configuration may result. If the SMT solver produces a layout for a tensor, then the SMT solver ensures that all variables within the configuration are compatible with the layout throughout the entire network.


The datastore 150 of the system may include one or more databases in which neural network data, hardware platform data, constraints, valid configurations, target performance metrics, configurations that satisfy one or more of the target performance metrics, neural network variables, and other pieces of data can be stored. The data can be: determined by the system (e.g., calculated, learned, etc. from data retrieved, received, or otherwise collected from, e.g., the neural network model 105 and/or the hardware platform 102), received from a user, operator or administrator, retrieved from an external database or remote network or computing system, or otherwise determined. In some embodiments, the datastore also stores output from the SMT solver, including analysis results and configuration information. Other various data or entities may be stored.


The configurations module 160 operates to receive one or more candidate configurations from the SMT solver, and, for each of the received candidate configurations, determine that the candidate configuration is satisfiable (e.g., all configuration variables have a value that satisfies all constraints; that all variables within every decision point are compatible within the neural network model and when operating on the hardware platform; etc.). In some embodiments, the configurations module 150 records the candidate configuration as valid upon such a determination, and stores it in the database 150.


In some embodiments, if the candidate configuration is unsatisfiable, the analysis ends there. In some embodiments, the configurations module 160 optionally inspects data in an “unsat core” within the SMT solver for insight into the minimum set of constraints that couldn't be satisfied. In some embodiments, overconstraint is possible in terms of so many constraints being ingested by the SMT solver that no satisfactory working configuration is possible. In some embodiments, the SMT solver can be configured to provide the unsat core data for manual removal or tweaking.


The performance module 170 operates to determine a “good” configuration (e.g., fast, low power, efficient memory usage, etc.) from a number of received candidate configurations, where the “good” configuration satisfies all constraints, and satisfies one or more target performance metrics. The performance module 170 can use one or more of: one or more target performance metrics, a set of rules, a set of heuristics, and/or an automated empirical search for “good” configurations. In some embodiments, a decision tree is used for heuristics analysis and/or the empirical search in order to determine a potentially more optimal configuration. In one variation, the performance module 170 can run the neural network with each valid configuration on the platform (e.g., using a test set of data, such as images), gather and/or receive target performance metrics, and compare the target performance metrics for each valid configuration run to select a “good” configuration (e.g., configuration that has the shortest evaluation time, consumes the least amount of power, consumes the least amount of memory, generates the least amount of heat, is the most accurate and/or otherwise performant, etc.). However, the performance module 170 can select a valid configuration for deployment (from the set of valid configurations output by the SMT solver), in any other suitable manner.


In some embodiments, additional constraints are added automatically or manually to determine one or more matching configurations that are labeled as “good” configurations. For example, if the hardware platform 102 is an accelerator, additional constraints can be imposed such as requiring data to be 16-bit floating points. Adding more data points will, in many cases, reduce the number of valid configurations and lead to a smaller number of potentially more optimized configurations that satisfy all constraints. In some embodiments, a metric is used or determined for a configuration that satisfies one or more target performance metrics, such as shortest evaluation time of the neural network model (e.g., time frame for a solution), lowest amount of power used, memory optimization, throughput optimization, and more. In some embodiments, such metrics include a threshold for the metric that must be met in order for a valid configuration to be labeled as a configuration that satisfies one or more of the target performance metrics.


In some embodiments, metrics such as accuracy are orthogonal or secondary considerations in determining a configuration that satisfies one or more target performance metrics, while in other embodiments they may be primary considerations such that a threshold accuracy must be exceeded in order for a configuration that satisfies the target performance metrics to be determined.


In some embodiments, once a potentially more optimized configuration is determined, the value assignments for the variables that were determined to constitute a configuration that satisfies the target performance metrics are propagated to the neural network model for operation on the hardware platform 102 or other hardware platform.


In some embodiments, an example embodiment of the system 100 or model configuration platform 110 can include a script, such as a python script, that ingests the neural network model data, constructs an SMT solver, traverses the network, declares variables and constraints, executes the SMT solver, receives assignments to the variables from the SMT solver based on a configuration that satisfies one or more target performance metrics, and then propagates the assigned values for the variables back to the neural network model.


In some embodiments, analysis results, graph visualizations, and other output can be provided via an interactive graphical user interface (GUI) such as a dashboard for neural network model operators and/or administrators. The GUI may be presented by a user device or the system 100. For example, the system 100 may generate the GUI or the user device may present the GUI and receive information from the system 100 for inclusion in the GUI. In some embodiments, the GUI allows for interaction with layers and edges between layers, and a user may be able to add constraints and remove constraints. In some embodiments, an output includes a representation of the neural network model as a graph, such as a directed acyclic graph. For example, one or more candidate configurations may be presented in the GUI. User input, such as user input to update constraints and/or adjust a neural network, may cause triggering of the SMT solver. As an example, the SMT solver may determine an updated candidate configuration.


Example Flowchart



FIG. 2 is a flowchart representation of the object detection method.


S210 includes traversing a neural network model to identify decision points, as described above with respect to the traversal module 120.


S220 includes identifying variable constraints, model constraints and performance constraints, as described above with respect to the constraints module 130.


S230 includes executing an SMT solver for the neural network model, as described above with respect to the SMT solver 140.


The method can optionally include, S240, which includes receiving candidate configurations, as described above with respect to the configurations module 160.


S250 includes determining that the candidate configurations are satisfiable, as described above with respect to the configurations module 160.


S260 includes determining a configuration that satisfies one or more target performance metrics, as described above with respect to the performance module 170.


Embodiments of the system and/or method can include every combination and permutation of the various system components and the various method processes, wherein one or more instances of the method and/or processes described herein can be performed asynchronously (e.g., sequentially), concurrently (e.g., in parallel), or in any other suitable order by and/or using one or more instances of the systems, elements, and/or entities described herein.


Additional Embodiments

All of the processes described herein may be embodied in, and fully automated, via software code modules executed by a computing system that includes one or more computers or processors. The code modules may be stored in any type of non-transitory computer-readable medium or other computer storage device. Some or all the methods may be embodied in specialized computer hardware.


Many other variations than those described herein will be apparent from this disclosure. For example, depending on the embodiment, certain acts, events, or functions of any of the algorithms described herein can be performed in a different sequence or can be added, merged, or left out altogether (for example, not all described acts or events are necessary for the practice of the algorithms). Moreover, in certain embodiments, acts or events can be performed concurrently, for example, through multi-threaded processing, interrupt processing, or multiple processors or processor cores or on other parallel architectures, rather than sequentially. In addition, different tasks or processes can be performed by different machines and/or computing systems that can function together.


The various illustrative logical blocks and modules described in connection with the embodiments disclosed herein can be implemented or performed by a machine, such as a processing unit or processor, a digital signal processor (DSP), an application specific integrated circuit (ASIC), a field programmable gate array (FPGA) or other programmable logic device, discrete gate or transistor logic, discrete hardware components, or any combination thereof designed to perform the functions described herein. A processor can be a microprocessor, but in the alternative, the processor can be a controller, microcontroller, or state machine, combinations of the same, or the like. A processor can include electrical circuitry configured to process computer-executable instructions. In another embodiment, a processor includes an FPGA or other programmable device that performs logic operations without processing computer-executable instructions. A processor can also be implemented as a combination of computing devices, for example, a combination of a DSP and a microprocessor, a plurality of microprocessors, one or more microprocessors in conjunction with a DSP core, or any other such configuration. Although described herein primarily with respect to digital technology, a processor may also include primarily analog components. For example, some or all of the signal processing algorithms described herein may be implemented in analog circuitry or mixed analog and digital circuitry. A computing environment can include any type of computer system, including, but not limited to, a computer system based on a microprocessor, a mainframe computer, a digital signal processor, a portable computing device, a device controller, or a computational engine within an appliance, to name a few.


Conditional language such as, among others, “can,” “could,” “might” or “may,” unless specifically stated otherwise, are understood within the context as used in general to convey that certain embodiments include, while other embodiments do not include, certain features, elements and/or steps. Thus, such conditional language is not generally intended to imply that features, elements and/or steps are in any way required for one or more embodiments or that one or more embodiments necessarily include logic for deciding, with or without user input or prompting, whether these features, elements and/or steps are included or are to be performed in any particular embodiment.


Disjunctive language such as the phrase “at least one of X, Y, or Z,” unless specifically stated otherwise, is understood with the context as used in general to present that an item, term, etc., may be either X. Y, or Z, or any combination thereof (for example, X, Y. and/or Z). Thus, such disjunctive language is not generally intended to, and should not, imply that certain embodiments require at least one of X, at least one of Y, or at least one of Z to each be present.


Any process descriptions, elements or blocks in the flow diagrams described herein and/or depicted in the attached figures should be understood as potentially representing modules, segments, or portions of code which include one or more executable instructions for implementing specific logical functions or elements in the process. Alternate implementations are included within the scope of the embodiments described herein in which elements or functions may be deleted, executed out of order from that shown, or discussed, including substantially concurrently or in reverse order, depending on the functionality involved as would be understood by those skilled in the art.


Unless otherwise explicitly stated, articles such as “a” or “an” should generally be interpreted to include one or more described items. Accordingly, phrases such as “a device configured to” are intended to include one or more recited devices. Such one or more recited devices can also be collectively configured to carry out the stated recitations. For example, “a processor configured to carry out recitations A, B and C” can include a first processor configured to carry out recitation A working in conjunction with a second processor configured to carry out recitations B and C.


It should be emphasized that many variations and modifications may be made to the above-described embodiments, the elements of which are to be understood as being among other acceptable examples. All such modifications and variations are intended to be included herein within the scope of this disclosure.

Claims
  • 1. A method implemented by a system of one or more processors, the method comprising: obtaining neural network model information comprising a plurality of decision points associated with a neural network, wherein one or more first decision points are associated with a layout of the neural network;determining, based on the platform neural network model information, constraints associated with adapting the neural network model information to a hardware platform, wherein a first constraint is associated with a processing resource of the hardware platform, wherein a second constraint is associated with a performance metric, and wherein the constraints are enforced on a per-layer or per-tensor basis; andgenerating a candidate configuration for the neural network via execution of a satisfiability solver based on the constraints, wherein the candidate configuration assigns values to the plurality of decision points; andresponsive to updated constraints corresponding to the candidate configuration as a negation, generating an updated candidate configuration, such that the neural network is configured to the hardware platform.
  • 2. The method of claim 1, wherein one of the first decision points is associated with a tensor size, and wherein the candidate configuration selects a value of the tensor size based on the determined constraints, such that the tensor size is configured to fit in memory of the hardware platform.
  • 3. The method of claim 1, wherein one or more other decision points are associated with one or more of numerical precision, algorithm selection, data padding, accelerator use, or stride.
  • 4. The method of claim 1, wherein the neural network model information is associated with a directed graph, and wherein determining the decision points comprises: traversing the directed graph, wherein decision points are identified for each node and edge of the directed graph.
  • 5. The method of claim 1, wherein a performance metric comprises one or more of evaluation time, power consumption, or memory consumption.
  • 6. The method of claim 1, wherein a third constraint is associated with adapting the neural network to a software platform, and wherein the third constraint relates to an operating system executing on the hardware platform.
  • 7. The method of claim 1, further comprising: selecting an output candidate configuration based on analyzing the candidate configuration and the updated second candidate configuration,wherein input data is provided to the candidate configuration and the second updated candidate configuration, and wherein the output candidate configuration is selected based on performance metrics associated with the candidate configuration and the updated second candidate configuration.
  • 8. The method of claim 1, further comprising: successively generating a plurality of candidate configurations, wherein each of the plurality of candidate configurations assigns different values to the decision points; andhalting generation of successive candidate configuration, wherein halting is based on a threshold number of candidate configurations being generated, the satisfiability solver indicates unsatisfiability, or a performance metric is below a threshold.
  • 9. The method of claim 1, further comprising generating an interactive user interface, wherein the interactive user interface: presents a dashboard presenting the candidate configuration; andresponds to user input associated with updating the determined constraints, wherein the satisfiability solver is triggered to determine an updated candidate configuration based on the user input.
  • 10. A system comprising one or more processors and non-transitory computer storage media storing instructions that when executed by the one or more processors, cause the one or more processors to perform operations comprising: obtaining neural network model information comprising a plurality of decision points associated with a neural network, wherein one or more first decision points are associated with a layout of the neural network;determining, based on the platform neural network model information, constraints associated with adapting the neural network model information to a hardware platform, wherein a first constraint is associated with a processing resource of the hardware platform, wherein a second constraint is associated with a performance metric, and wherein the constraints are enforced on a per-layer or per-tensor basis; andgenerating a candidate configuration for the neural network via execution of a satisfiability solver based on the constraints, wherein the candidate configuration assigns values to the plurality of decision points; andresponsive to updated constraints corresponding to the candidate configuration as a negation, generating an updated candidate configuration, such that the neural network is configured to the hardware platform.
  • 11. The system of claim 10, wherein one of the first decision points is associated with a tensor size, and wherein the candidate configuration selects a value of the tensor size based on the determined constraints, such that the tensor size is configured to fit in memory of the hardware platform.
  • 12. The system of claim 10, wherein the neural network model information is associated with a directed graph, and wherein determining the decision points comprises: traversing the directed graph, wherein decision points are identified for each node and edge of the directed graph.
  • 13. The system of claim 10, wherein a performance metric comprises one or more of evaluation time, power consumption, or memory consumption.
  • 14. The system of claim 10, wherein the operations further comprise: selecting an output candidate configuration based on analyzing the candidate configuration and the updated second candidate configuration,wherein input data is provided to the candidate configuration and the updated second candidate configuration and wherein the output candidate configuration is selected based on performance metrics associated with the candidate configuration and the updated second candidate configuration.
  • 15. The system of claim 10, wherein the operations further comprise generating an interactive user interface, wherein the interactive user interface: presents a dashboard presenting the candidate configuration; andresponds to user input associated with updating the determined constraints, wherein the satisfiability solver is triggered to determine an updated candidate configuration based on the user input.
  • 16. Non-transitory computer storage media storing instructions that when executed by a system of one or more processors, cause the one or more processors to perform operations comprising: obtaining neural network model information comprising a plurality of decision points associated with a neural network, wherein one or more first decision points are associated with a layout of the neural network;determining, based on the platform neural network model information, constraints associated with adapting the neural network model information to a hardware platform, wherein a first constraint is associated with a processing resource of the hardware platform, wherein a second constraint is associated with a performance metric, and wherein the constraints are enforced on a per-layer or per-tensor basis; andgenerating a candidate configuration for the neural network via execution of a satisfiability solver based on the constraints, wherein the candidate configuration assigns values to the plurality of decision points; andresponsive to updated constraints corresponding to the candidate configuration as a negation, generating an updated candidate configuration, such that the neural network is configured to the hardware platform.
  • 17. The non-transitory computer storage media of claim 16, wherein one of the first decision points is associated with a tensor size, and wherein the candidate configuration selects a value of the tensor size based on the determined constraints, such that the tensor size is configured to fit in memory of the hardware platform.
  • 18. The non-transitory computer storage media of claim 16, wherein the operations further comprise generating an interactive user interface, wherein the interactive user interface: presents a dashboard presenting the candidate configuration; andresponds to user input associated with updating the determined constraints, wherein the satisfiability solver is triggered to determine an updated candidate configuration based on the user input.
US Referenced Citations (588)
Number Name Date Kind
6882755 Silverstein et al. May 2005 B2
7209031 Nakai et al. Apr 2007 B2
7747070 Puri Jun 2010 B2
7904867 Burch et al. Mar 2011 B2
7974492 Nishijima Jul 2011 B2
8165380 Choi et al. Apr 2012 B2
8369633 Lu et al. Feb 2013 B2
8406515 Cheatle et al. Mar 2013 B2
8509478 Haas et al. Aug 2013 B2
8588470 Rodriguez et al. Nov 2013 B2
8744174 Hamada et al. Jun 2014 B2
8773498 Lindbergh Jul 2014 B2
8912476 Fogg et al. Dec 2014 B2
8913830 Sun et al. Dec 2014 B2
8928753 Han et al. Jan 2015 B2
8972095 Furuno et al. Mar 2015 B2
8976269 Duong Mar 2015 B2
9008422 Eid et al. Apr 2015 B2
9081385 Ferguson et al. Jul 2015 B1
9275289 Li et al. Mar 2016 B2
9586455 Sugai et al. Mar 2017 B2
9672437 McCarthy Jun 2017 B2
9710696 Wang et al. Jul 2017 B2
9738223 Zhang et al. Aug 2017 B2
9754154 Craig et al. Sep 2017 B2
9767369 Furman et al. Sep 2017 B2
9965865 Agrawal et al. May 2018 B1
10133273 Linke Nov 2018 B2
10140252 Fowers et al. Nov 2018 B2
10140544 Zhao et al. Nov 2018 B1
10146225 Ryan Dec 2018 B2
10152655 Krishnamurthy et al. Dec 2018 B2
10167800 Chung et al. Jan 2019 B1
10169680 Sachdeva et al. Jan 2019 B1
10192016 Ng et al. Jan 2019 B2
10216189 Haynes Feb 2019 B1
10228693 Micks et al. Mar 2019 B2
10242293 Shim et al. Mar 2019 B2
10248121 VandenBerg, III Apr 2019 B2
10262218 Lee et al. Apr 2019 B2
10282623 Ziyaee et al. May 2019 B1
10296828 Viswanathan May 2019 B2
10303961 Stoffel et al. May 2019 B1
10310087 Laddha et al. Jun 2019 B2
10311312 Yu et al. Jun 2019 B2
10318848 Dijkman et al. Jun 2019 B2
10325178 Tang et al. Jun 2019 B1
10331974 Zia et al. Jun 2019 B2
10338600 Yoon et al. Jul 2019 B2
10343607 Kumon et al. Jul 2019 B2
10359783 Williams et al. Jul 2019 B2
10366290 Wang et al. Jul 2019 B2
10372130 Kaushansky et al. Aug 2019 B1
10373019 Nariyambut Murali et al. Aug 2019 B2
10373026 Kim et al. Aug 2019 B1
10380741 Yedla et al. Aug 2019 B2
10394237 Xu et al. Aug 2019 B2
10395144 Zeng et al. Aug 2019 B2
10402646 Klaus Sep 2019 B2
10402986 Ray et al. Sep 2019 B2
10414395 Sapp et al. Sep 2019 B1
10423934 Zanghi et al. Sep 2019 B1
10436615 Agarwal et al. Oct 2019 B2
10452905 Segalovitz et al. Oct 2019 B2
10460053 Olson et al. Oct 2019 B2
10467459 Chen et al. Nov 2019 B2
10468008 Beckman et al. Nov 2019 B2
10468062 Levinson et al. Nov 2019 B1
10470510 Koh et al. Nov 2019 B1
10474160 Huang et al. Nov 2019 B2
10474161 Huang et al. Nov 2019 B2
10474928 Sivakumar et al. Nov 2019 B2
10489126 Kumar et al. Nov 2019 B2
10489972 Atsmon Nov 2019 B2
10503971 Dang et al. Dec 2019 B1
10514711 Bar-Nahum et al. Dec 2019 B2
10528824 Zou Jan 2020 B2
10529078 Abreu et al. Jan 2020 B2
10529088 Fine et al. Jan 2020 B2
10534854 Sharma et al. Jan 2020 B2
10535191 Sachdeva et al. Jan 2020 B2
10542930 Sanchez et al. Jan 2020 B1
10546197 Shrestha et al. Jan 2020 B2
10546217 Albright et al. Jan 2020 B2
10552682 Jonsson et al. Feb 2020 B2
10559386 Neuman Feb 2020 B1
10565475 Lecue et al. Feb 2020 B2
10567674 Kirsch Feb 2020 B2
10568570 Sherpa et al. Feb 2020 B1
10572717 Zhu et al. Feb 2020 B1
10574905 Srikanth et al. Feb 2020 B2
10579058 Oh et al. Mar 2020 B2
10579063 Haynes et al. Mar 2020 B2
10579897 Redmon et al. Mar 2020 B2
10586280 McKenna et al. Mar 2020 B2
10591914 Palanisamy et al. Mar 2020 B2
10592785 Zhu et al. Mar 2020 B2
10599701 Liu Mar 2020 B2
10599930 Lee et al. Mar 2020 B2
10599958 He et al. Mar 2020 B2
10606990 Tuli et al. Mar 2020 B2
10609434 Singhai et al. Mar 2020 B2
10614344 Anthony et al. Apr 2020 B2
10621513 Deshpande et al. Apr 2020 B2
10627818 Sapp et al. Apr 2020 B2
10628432 Guo et al. Apr 2020 B2
10628686 Ogale et al. Apr 2020 B2
10628688 Kim et al. Apr 2020 B1
10629080 Kazemi et al. Apr 2020 B2
10636161 Uchigaito Apr 2020 B2
10636169 Estrada et al. Apr 2020 B2
10642275 Silva et al. May 2020 B2
10645344 Marman et al. May 2020 B2
10649464 Gray May 2020 B2
10650071 Asgekar et al. May 2020 B2
10652565 Zhang et al. May 2020 B1
10656657 Djuric et al. May 2020 B2
10657391 Chen et al. May 2020 B2
10657418 Marder et al. May 2020 B2
10657934 Kolen et al. May 2020 B1
10661902 Tavshikar May 2020 B1
10664750 Greene May 2020 B2
10671082 Huang et al. Jun 2020 B2
10671886 Price et al. Jun 2020 B2
10678244 Iandola et al. Jun 2020 B2
10678839 Gordon et al. Jun 2020 B2
10678997 Ahuja et al. Jun 2020 B2
10679129 Baker Jun 2020 B2
10685159 Su et al. Jun 2020 B2
10685188 Zhang et al. Jun 2020 B1
10692000 Surazhsky et al. Jun 2020 B2
10692242 Morrison et al. Jun 2020 B1
10693740 Coccia et al. Jun 2020 B2
10698868 Guggilla et al. Jun 2020 B2
10699119 Lo et al. Jun 2020 B2
10699140 Kench et al. Jun 2020 B2
10699477 Levinson et al. Jun 2020 B2
10713502 Tiziani Jul 2020 B2
10719759 Kutliroff Jul 2020 B2
10725475 Yang et al. Jul 2020 B2
10726264 Sawhney et al. Jul 2020 B2
10726279 Kim et al. Jul 2020 B1
10726374 Engineer et al. Jul 2020 B1
10732261 Wang et al. Aug 2020 B1
10733262 Miller et al. Aug 2020 B2
10733482 Lee et al. Aug 2020 B1
10733638 Jain et al. Aug 2020 B1
10733755 Liao et al. Aug 2020 B2
10733876 Moura et al. Aug 2020 B2
10740563 Dugan Aug 2020 B2
10740914 Xiao et al. Aug 2020 B2
10748062 Rippel et al. Aug 2020 B2
10748247 Paluri Aug 2020 B2
10751879 Li et al. Aug 2020 B2
10755112 Mabuchi Aug 2020 B2
10755575 Johnston et al. Aug 2020 B2
10757330 Ashrafi Aug 2020 B2
10762396 Vallespi et al. Sep 2020 B2
10768628 Martin et al. Sep 2020 B2
10768629 Song et al. Sep 2020 B2
10769446 Chang et al. Sep 2020 B2
10769483 Nirenberg et al. Sep 2020 B2
10769493 Yu et al. Sep 2020 B2
10769494 Xiao et al. Sep 2020 B2
10769525 Redding et al. Sep 2020 B2
10776626 Lin et al. Sep 2020 B1
10776673 Kim et al. Sep 2020 B2
10776939 Ma et al. Sep 2020 B2
10779760 Lee et al. Sep 2020 B2
10783381 Yu et al. Sep 2020 B2
10783454 Shoaib et al. Sep 2020 B2
10789402 Vemuri et al. Sep 2020 B1
10789544 Fiedel et al. Sep 2020 B2
10790919 Kolen et al. Sep 2020 B1
10796221 Zhang et al. Oct 2020 B2
10796355 Price et al. Oct 2020 B1
10796423 Goja Oct 2020 B2
10798368 Briggs et al. Oct 2020 B2
10803325 Bai et al. Oct 2020 B2
10803328 Bai et al. Oct 2020 B1
10803743 Abari et al. Oct 2020 B2
10805629 Liu et al. Oct 2020 B2
10809730 Chintakindi Oct 2020 B2
10810445 Kangaspunta Oct 2020 B1
10816346 Wheeler et al. Oct 2020 B2
10816992 Chen Oct 2020 B2
10817731 Vallespi et al. Oct 2020 B2
10817732 Porter et al. Oct 2020 B2
10819923 McCauley et al. Oct 2020 B1
10824122 Mummadi et al. Nov 2020 B2
10824862 Qi et al. Nov 2020 B2
10828790 Nemallan Nov 2020 B2
10832057 Chan et al. Nov 2020 B2
10832093 Taralova et al. Nov 2020 B1
10832414 Pfeiffer Nov 2020 B2
10832418 Karasev et al. Nov 2020 B1
10833785 O'Shea et al. Nov 2020 B1
10836379 Xiao et al. Nov 2020 B2
10838936 Cohen Nov 2020 B2
10839230 Charette et al. Nov 2020 B2
10839578 Coppersmith et al. Nov 2020 B2
10843628 Kawamoto et al. Nov 2020 B2
10845820 Wheeler Nov 2020 B2
10845943 Ansari et al. Nov 2020 B1
10846831 Raduta Nov 2020 B2
10846888 Kaplanyan et al. Nov 2020 B2
10853670 Sholingar et al. Dec 2020 B2
10853739 Truong et al. Dec 2020 B2
10860919 Kanazawa et al. Dec 2020 B2
10860924 Burger Dec 2020 B2
10867444 Russell et al. Dec 2020 B2
10871444 Al et al. Dec 2020 B2
10871782 Milstein et al. Dec 2020 B2
10872204 Zhu et al. Dec 2020 B2
10872254 Mangla et al. Dec 2020 B2
10872326 Garner Dec 2020 B2
10872531 Liu et al. Dec 2020 B2
10885083 Moeller-Bertram et al. Jan 2021 B2
10887433 Fu et al. Jan 2021 B2
10890898 Akella et al. Jan 2021 B2
10891715 Li Jan 2021 B2
10891735 Yang et al. Jan 2021 B2
10893070 Wang et al. Jan 2021 B2
10893107 Callari et al. Jan 2021 B1
10896763 Kempanna et al. Jan 2021 B2
10901416 Khanna et al. Jan 2021 B2
10901508 Laszlo et al. Jan 2021 B2
10902551 Mellado et al. Jan 2021 B1
10908068 Amer et al. Feb 2021 B2
10908606 Stein et al. Feb 2021 B2
10909368 Guo et al. Feb 2021 B2
10909453 Myers et al. Feb 2021 B1
10915783 Hallman et al. Feb 2021 B1
10917522 Segalis et al. Feb 2021 B2
10921817 Kangaspunta Feb 2021 B1
10922578 Banerjee et al. Feb 2021 B2
10924661 Vasconcelos et al. Feb 2021 B2
10928508 Swaminathan Feb 2021 B2
10929757 Baker et al. Feb 2021 B2
10930065 Grant et al. Feb 2021 B2
10936908 Ho et al. Mar 2021 B1
10937186 Wang et al. Mar 2021 B2
10943101 Agarwal et al. Mar 2021 B2
10943132 Wang et al. Mar 2021 B2
10943355 Fagg et al. Mar 2021 B2
11263529 Yoon et al. Mar 2022 B2
11610117 Driscoll Mar 2023 B2
20030035481 Hahm Feb 2003 A1
20050162445 Sheasby et al. Jul 2005 A1
20060072847 Chor et al. Apr 2006 A1
20060224533 Thaler Oct 2006 A1
20060280364 Ma et al. Dec 2006 A1
20090016571 Tijerina et al. Jan 2009 A1
20100118157 Kameyama May 2010 A1
20120109915 Kamekawa May 2012 A1
20120110491 Cheung May 2012 A1
20120134595 Fonseca et al. May 2012 A1
20150104102 Carreira et al. Apr 2015 A1
20160132786 Balan et al. May 2016 A1
20160328856 Mannino et al. Nov 2016 A1
20170011281 Dihkman et al. Jan 2017 A1
20170158134 Shigemura Jun 2017 A1
20170206434 Nariyambut et al. Jul 2017 A1
20180012411 Richey et al. Jan 2018 A1
20180018590 Szeto et al. Jan 2018 A1
20180039853 Liu et al. Feb 2018 A1
20180067489 Oder et al. Mar 2018 A1
20180068459 Zhang et al. Mar 2018 A1
20180068540 Romanenko et al. Mar 2018 A1
20180074506 Branson Mar 2018 A1
20180121762 Han et al. May 2018 A1
20180150081 Gross et al. May 2018 A1
20180211403 Hotson et al. Jul 2018 A1
20180308012 Mummadi et al. Oct 2018 A1
20180314878 Lee et al. Nov 2018 A1
20180357511 Misra et al. Dec 2018 A1
20180374105 Azout et al. Dec 2018 A1
20190023277 Roger et al. Jan 2019 A1
20190025773 Yang et al. Jan 2019 A1
20190042894 Anderson Feb 2019 A1
20190042919 Peysakhovich et al. Feb 2019 A1
20190042944 Nair et al. Feb 2019 A1
20190042948 Lee et al. Feb 2019 A1
20190057314 Julian et al. Feb 2019 A1
20190065637 Bogdoll et al. Feb 2019 A1
20190072978 Levi Mar 2019 A1
20190079526 Vallespi et al. Mar 2019 A1
20190080602 Rice et al. Mar 2019 A1
20190095780 Zhong et al. Mar 2019 A1
20190095946 Azout et al. Mar 2019 A1
20190101914 Coleman et al. Apr 2019 A1
20190108417 Talagala et al. Apr 2019 A1
20190122111 Min et al. Apr 2019 A1
20190130255 Yim et al. May 2019 A1
20190145765 Luo et al. May 2019 A1
20190146497 Urtasun et al. May 2019 A1
20190147112 Gordon May 2019 A1
20190147250 Zhang et al. May 2019 A1
20190147254 Bai et al. May 2019 A1
20190147255 Homayounfar et al. May 2019 A1
20190147335 Wang et al. May 2019 A1
20190147372 Luo et al. May 2019 A1
20190158784 Ahn et al. May 2019 A1
20190180154 Orlov et al. Jun 2019 A1
20190185010 Ganguli et al. Jun 2019 A1
20190189251 Horiuchi et al. Jun 2019 A1
20190197357 Anderson et al. Jun 2019 A1
20190204842 Jafari et al. Jul 2019 A1
20190205402 Sernau et al. Jul 2019 A1
20190205667 Avidan et al. Jul 2019 A1
20190217791 Bradley et al. Jul 2019 A1
20190227562 Mohammadiha et al. Jul 2019 A1
20190228037 Nicol et al. Jul 2019 A1
20190230282 Sypitkowski et al. Jul 2019 A1
20190235499 Kazemi et al. Aug 2019 A1
20190236437 Shin et al. Aug 2019 A1
20190243371 Nister et al. Aug 2019 A1
20190244138 Bhowmick et al. Aug 2019 A1
20190250622 Nister et al. Aug 2019 A1
20190250626 Ghafarianzadeh et al. Aug 2019 A1
20190250640 O'Flaherty et al. Aug 2019 A1
20190258878 Koivisto et al. Aug 2019 A1
20190266418 Xu et al. Aug 2019 A1
20190266610 Ghatage et al. Aug 2019 A1
20190272446 Kangaspunta et al. Sep 2019 A1
20190276041 Choi et al. Sep 2019 A1
20190279004 Kwon et al. Sep 2019 A1
20190286652 Habbecke et al. Sep 2019 A1
20190286972 El Husseini et al. Sep 2019 A1
20190287028 St Amant et al. Sep 2019 A1
20190289281 Badrinarayanan et al. Sep 2019 A1
20190294177 Kwon et al. Sep 2019 A1
20190294975 Sachs Sep 2019 A1
20190311290 Huang et al. Oct 2019 A1
20190318099 Carvalho et al. Oct 2019 A1
20190325088 Dubey et al. Oct 2019 A1
20190325266 Klepper et al. Oct 2019 A1
20190325269 Bagherinezhad et al. Oct 2019 A1
20190325580 Lukac et al. Oct 2019 A1
20190325595 Stein et al. Oct 2019 A1
20190329790 Nandakumar et al. Oct 2019 A1
20190332875 Vallespi-Gonzalez et al. Oct 2019 A1
20190333232 Vallespi-Gonzalez et al. Oct 2019 A1
20190336063 Dascalu Nov 2019 A1
20190339989 Liang et al. Nov 2019 A1
20190340462 Pao et al. Nov 2019 A1
20190340492 Burger et al. Nov 2019 A1
20190340499 Burger et al. Nov 2019 A1
20190347501 Kim et al. Nov 2019 A1
20190349571 Herman et al. Nov 2019 A1
20190354782 Kee et al. Nov 2019 A1
20190354786 Lee et al. Nov 2019 A1
20190354808 Park et al. Nov 2019 A1
20190354817 Shlens et al. Nov 2019 A1
20190354850 Watson et al. Nov 2019 A1
20190370398 He et al. Dec 2019 A1
20190370575 Nandakumar et al. Dec 2019 A1
20190370935 Chang et al. Dec 2019 A1
20190373322 Rojas-Echenique et al. Dec 2019 A1
20190377345 Bachrach et al. Dec 2019 A1
20190377965 Totolos et al. Dec 2019 A1
20190378049 Widmann et al. Dec 2019 A1
20190378051 Widmann et al. Dec 2019 A1
20190382007 Casas et al. Dec 2019 A1
20190384303 Muller et al. Dec 2019 A1
20190384304 Towal et al. Dec 2019 A1
20190384309 Silva et al. Dec 2019 A1
20190384994 Frossard et al. Dec 2019 A1
20190385048 Cassidy et al. Dec 2019 A1
20190385360 Yang et al. Dec 2019 A1
20200004259 Gulino et al. Jan 2020 A1
20200004351 Marchant et al. Jan 2020 A1
20200012936 Lee et al. Jan 2020 A1
20200017117 Milton Jan 2020 A1
20200025931 Liang et al. Jan 2020 A1
20200026282 Choe et al. Jan 2020 A1
20200026283 Barnes et al. Jan 2020 A1
20200026992 Zhang et al. Jan 2020 A1
20200027210 Haemel et al. Jan 2020 A1
20200033858 Xiao Jan 2020 A1
20200033865 Mellinger et al. Jan 2020 A1
20200034665 Ghanta et al. Jan 2020 A1
20200034710 Sidhu et al. Jan 2020 A1
20200036948 Song Jan 2020 A1
20200039520 Misu et al. Feb 2020 A1
20200051550 Baker Feb 2020 A1
20200060757 Ben-Haim et al. Feb 2020 A1
20200065711 Clément et al. Feb 2020 A1
20200065879 Hu et al. Feb 2020 A1
20200069973 Lou et al. Mar 2020 A1
20200073385 Jobanputra et al. Mar 2020 A1
20200074230 Englard et al. Mar 2020 A1
20200086880 Poeppel et al. Mar 2020 A1
20200089243 Poeppel et al. Mar 2020 A1
20200089969 Lakshmi et al. Mar 2020 A1
20200090056 Singhal et al. Mar 2020 A1
20200097841 Petousis et al. Mar 2020 A1
20200098095 Borcs et al. Mar 2020 A1
20200103894 Cella et al. Apr 2020 A1
20200104705 Bhowmick et al. Apr 2020 A1
20200110416 Hong et al. Apr 2020 A1
20200117180 Cella et al. Apr 2020 A1
20200117889 Laput et al. Apr 2020 A1
20200117916 Liu Apr 2020 A1
20200117917 Yoo Apr 2020 A1
20200118035 Asawa et al. Apr 2020 A1
20200125844 She et al. Apr 2020 A1
20200125845 Hess et al. Apr 2020 A1
20200126129 Lkhamsuren et al. Apr 2020 A1
20200134427 Oh et al. Apr 2020 A1
20200134461 Chai et al. Apr 2020 A1
20200134466 Weintraub et al. Apr 2020 A1
20200134848 El-Khamy et al. Apr 2020 A1
20200143231 Fusi et al. May 2020 A1
20200143279 West et al. May 2020 A1
20200148201 King et al. May 2020 A1
20200149898 Felip et al. May 2020 A1
20200151201 Chandrasekhar et al. May 2020 A1
20200151619 Mopur et al. May 2020 A1
20200151692 Gao et al. May 2020 A1
20200158822 Owens et al. May 2020 A1
20200158869 Amirloo et al. May 2020 A1
20200159225 Zeng et al. May 2020 A1
20200160064 Wang et al. May 2020 A1
20200160104 Urtasun et al. May 2020 A1
20200160117 Urtasun et al. May 2020 A1
20200160178 Kar et al. May 2020 A1
20200160532 Urtasun et al. May 2020 A1
20200160558 Urtasun et al. May 2020 A1
20200160559 Urtasun et al. May 2020 A1
20200160598 Manivasagam et al. May 2020 A1
20200162489 Bar-Nahum et al. May 2020 A1
20200167438 Herring May 2020 A1
20200167554 Wang et al. May 2020 A1
20200174481 Van Heukelom et al. Jun 2020 A1
20200175326 Shen et al. Jun 2020 A1
20200175354 Volodarskiy et al. Jun 2020 A1
20200175371 Kursun Jun 2020 A1
20200175401 Shen Jun 2020 A1
20200183482 Sebot et al. Jun 2020 A1
20200184250 Oko Jun 2020 A1
20200184333 Oh Jun 2020 A1
20200192389 ReMine et al. Jun 2020 A1
20200193313 Ghanta et al. Jun 2020 A1
20200193328 Guestrin et al. Jun 2020 A1
20200202136 Shrestha et al. Jun 2020 A1
20200202196 Guo et al. Jun 2020 A1
20200209857 Djuric et al. Jul 2020 A1
20200209867 Valois et al. Jul 2020 A1
20200209874 Chen et al. Jul 2020 A1
20200210717 Hou et al. Jul 2020 A1
20200210769 Hou et al. Jul 2020 A1
20200210777 Valois et al. Jul 2020 A1
20200216064 du Toit et al. Jul 2020 A1
20200218722 Mai et al. Jul 2020 A1
20200218979 Kwon et al. Jul 2020 A1
20200223434 Campos et al. Jul 2020 A1
20200225758 Tang et al. Jul 2020 A1
20200226377 Campos et al. Jul 2020 A1
20200226430 Ahuja et al. Jul 2020 A1
20200238998 Dasalukunte et al. Jul 2020 A1
20200242381 Chao et al. Jul 2020 A1
20200242408 Kim et al. Jul 2020 A1
20200242511 Kale et al. Jul 2020 A1
20200245869 Sivan et al. Aug 2020 A1
20200249685 Elluswamy et al. Aug 2020 A1
20200250456 Wang et al. Aug 2020 A1
20200250515 Rifkin et al. Aug 2020 A1
20200250874 Assouline et al. Aug 2020 A1
20200257301 Weiser et al. Aug 2020 A1
20200257306 Nisenzon Aug 2020 A1
20200258057 Farahat et al. Aug 2020 A1
20200265247 Musk et al. Aug 2020 A1
20200272160 Djuric et al. Aug 2020 A1
20200272162 Hasselgren et al. Aug 2020 A1
20200272859 Iashyn et al. Aug 2020 A1
20200273231 Schied et al. Aug 2020 A1
20200279354 Klaiman Sep 2020 A1
20200279364 Sarkisian et al. Sep 2020 A1
20200279371 Wenzel et al. Sep 2020 A1
20200285464 Brebner Sep 2020 A1
20200286256 Houts et al. Sep 2020 A1
20200293786 Jia et al. Sep 2020 A1
20200293796 Sajjadi et al. Sep 2020 A1
20200293828 Wang et al. Sep 2020 A1
20200293905 Huang et al. Sep 2020 A1
20200294162 Shah Sep 2020 A1
20200294257 Yoo et al. Sep 2020 A1
20200294310 Lee et al. Sep 2020 A1
20200297237 Tamersoy et al. Sep 2020 A1
20200298891 Liang et al. Sep 2020 A1
20200301799 Manivasagam et al. Sep 2020 A1
20200302276 Yang et al. Sep 2020 A1
20200302291 Hong Sep 2020 A1
20200302627 Duggal et al. Sep 2020 A1
20200302662 Homayounfar et al. Sep 2020 A1
20200304441 Bradley et al. Sep 2020 A1
20200306640 Kolen et al. Oct 2020 A1
20200307562 Ghafarianzadeh et al. Oct 2020 A1
20200307563 Ghafarianzadeh et al. Oct 2020 A1
20200309536 Omari et al. Oct 2020 A1
20200309923 Bhaskaran et al. Oct 2020 A1
20200310442 Halder et al. Oct 2020 A1
20200311601 Robinson et al. Oct 2020 A1
20200312003 Borovikov et al. Oct 2020 A1
20200315708 Mosnier et al. Oct 2020 A1
20200320132 Neumann Oct 2020 A1
20200324073 Rajan et al. Oct 2020 A1
20200327192 Hackman et al. Oct 2020 A1
20200327443 Van et al. Oct 2020 A1
20200327449 Tiwari et al. Oct 2020 A1
20200327662 Liu et al. Oct 2020 A1
20200327667 Arbel et al. Oct 2020 A1
20200331476 Chen et al. Oct 2020 A1
20200334416 Vianu et al. Oct 2020 A1
20200334495 Al et al. Oct 2020 A1
20200334501 Lin et al. Oct 2020 A1
20200334551 Javidi et al. Oct 2020 A1
20200334574 Ishida Oct 2020 A1
20200337648 Saripalli et al. Oct 2020 A1
20200341466 Pham et al. Oct 2020 A1
20200342350 Madar et al. Oct 2020 A1
20200342548 Mazed et al. Oct 2020 A1
20200342652 Rowell et al. Oct 2020 A1
20200348909 Das Sarma et al. Nov 2020 A1
20200350063 Thornton et al. Nov 2020 A1
20200351438 Dewhurst et al. Nov 2020 A1
20200356107 Wells Nov 2020 A1
20200356790 Jaipuria et al. Nov 2020 A1
20200356864 Neumann Nov 2020 A1
20200356905 Luk et al. Nov 2020 A1
20200361083 Mousavian et al. Nov 2020 A1
20200361485 Zhu et al. Nov 2020 A1
20200364481 Kornienko et al. Nov 2020 A1
20200364508 Gurel et al. Nov 2020 A1
20200364540 Elsayed et al. Nov 2020 A1
20200364746 Longano et al. Nov 2020 A1
20200364953 Simoudis Nov 2020 A1
20200372362 Kim Nov 2020 A1
20200372402 Kursun et al. Nov 2020 A1
20200380362 Cao et al. Dec 2020 A1
20200380383 Kwong et al. Dec 2020 A1
20200393841 Frisbie et al. Dec 2020 A1
20200394421 Yu et al. Dec 2020 A1
20200394457 Brady Dec 2020 A1
20200394495 Moudgill et al. Dec 2020 A1
20200394813 Theverapperuma et al. Dec 2020 A1
20200396394 Zlokolica et al. Dec 2020 A1
20200398855 Thompson Dec 2020 A1
20200401850 Bazarsky et al. Dec 2020 A1
20200401886 Deng et al. Dec 2020 A1
20200402155 Kurian et al. Dec 2020 A1
20200402226 Peng Dec 2020 A1
20200410012 Moon et al. Dec 2020 A1
20200410224 Goel Dec 2020 A1
20200410254 Pham et al. Dec 2020 A1
20200410288 Capota et al. Dec 2020 A1
20200410751 Omari et al. Dec 2020 A1
20210004014 Sivakumar Jan 2021 A1
20210004580 Sundararaman et al. Jan 2021 A1
20210004611 Garimella et al. Jan 2021 A1
20210004663 Park et al. Jan 2021 A1
20210006835 Slattery et al. Jan 2021 A1
20210011908 Hayes et al. Jan 2021 A1
20210012116 Urtasun et al. Jan 2021 A1
20210012210 Sikka et al. Jan 2021 A1
20210012230 Hayes et al. Jan 2021 A1
20210012239 Arzani et al. Jan 2021 A1
20210015240 Elfakhri et al. Jan 2021 A1
20210019215 Neeter Jan 2021 A1
20210026360 Luo Jan 2021 A1
20210027112 Brewington et al. Jan 2021 A1
20210027117 McGavran et al. Jan 2021 A1
20210030276 Li et al. Feb 2021 A1
20210034921 Pinkovich et al. Feb 2021 A1
20210042575 Firner Feb 2021 A1
20210042928 Takeda et al. Feb 2021 A1
20210046954 Haynes Feb 2021 A1
20210049378 Gautam et al. Feb 2021 A1
20210049455 Kursun Feb 2021 A1
20210049456 Kursun Feb 2021 A1
20210049548 Grisz et al. Feb 2021 A1
20210049700 Nguyen et al. Feb 2021 A1
20210056114 Price et al. Feb 2021 A1
20210056306 Hu et al. Feb 2021 A1
20210056317 Golov Feb 2021 A1
20210056420 Konishi et al. Feb 2021 A1
20210056701 Vranceanu et al. Feb 2021 A1
Foreign Referenced Citations (261)
Number Date Country
2019261735 Jun 2020 AU
2019201716 Oct 2020 AU
110599537 Dec 2010 CN
102737236 Oct 2012 CN
103366339 Oct 2013 CN
104835114 Aug 2015 CN
103236037 May 2016 CN
103500322 Aug 2016 CN
106419893 Feb 2017 CN
106504253 Mar 2017 CN
107031600 Aug 2017 CN
107169421 Sep 2017 CN
107507134 Dec 2017 CN
107885214 Apr 2018 CN
108122234 Jun 2018 CN
107133943 Jul 2018 CN
107368926 Jul 2018 CN
105318888 Aug 2018 CN
108491889 Sep 2018 CN
108647591 Oct 2018 CN
108710865 Oct 2018 CN
105550701 Nov 2018 CN
108764185 Nov 2018 CN
108845574 Nov 2018 CN
108898177 Nov 2018 CN
109086867 Dec 2018 CN
107103113 Jan 2019 CN
109215067 Jan 2019 CN
109359731 Feb 2019 CN
109389207 Feb 2019 CN
109389552 Feb 2019 CN
106779060 Mar 2019 CN
109579856 Apr 2019 CN
109615073 Apr 2019 CN
106156754 May 2019 CN
106598226 May 2019 CN
106650922 May 2019 CN
109791626 May 2019 CN
109901595 Jun 2019 CN
109902732 Jun 2019 CN
109934163 Jun 2019 CN
109948428 Jun 2019 CN
109949257 Jun 2019 CN
109951710 Jun 2019 CN
109975308 Jul 2019 CN
109978132 Jul 2019 CN
109978161 Jul 2019 CN
110060202 Jul 2019 CN
110069071 Jul 2019 CN
110084086 Aug 2019 CN
110096937 Aug 2019 CN
110111340 Aug 2019 CN
110135485 Aug 2019 CN
110197270 Sep 2019 CN
110310264 Oct 2019 CN
110321965 Oct 2019 CN
110334801 Oct 2019 CN
110399875 Nov 2019 CN
110414362 Nov 2019 CN
110426051 Nov 2019 CN
110473173 Nov 2019 CN
110516665 Nov 2019 CN
110543837 Dec 2019 CN
110569899 Dec 2019 CN
110599864 Dec 2019 CN
110619282 Dec 2019 CN
110619283 Dec 2019 CN
110619330 Dec 2019 CN
110659628 Jan 2020 CN
110688992 Jan 2020 CN
107742311 Feb 2020 CN
110751280 Feb 2020 CN
110826566 Feb 2020 CN
107451659 Apr 2020 CN
108111873 Apr 2020 CN
110956185 Apr 2020 CN
110966991 Apr 2020 CN
111027549 Apr 2020 CN
111027575 Apr 2020 CN
111047225 Apr 2020 CN
111126453 May 2020 CN
111158355 May 2020 CN
107729998 Jun 2020 CN
108549934 Jun 2020 CN
111275129 Jun 2020 CN
111275618 Jun 2020 CN
111326023 Jun 2020 CN
111428943 Jul 2020 CN
111444821 Jul 2020 CN
111445420 Jul 2020 CN
111461052 Jul 2020 CN
111461053 Jul 2020 CN
111461110 Jul 2020 CN
110225341 Aug 2020 CN
111307162 Aug 2020 CN
111488770 Aug 2020 CN
111539514 Aug 2020 CN
111565318 Aug 2020 CN
111582216 Aug 2020 CN
111598095 Aug 2020 CN
108229526 Sep 2020 CN
111693972 Sep 2020 CN
106558058 Oct 2020 CN
107169560 Oct 2020 CN
107622258 Oct 2020 CN
111767801 Oct 2020 CN
111768002 Oct 2020 CN
111783545 Oct 2020 CN
111783971 Oct 2020 CN
111797657 Oct 2020 CN
111814623 Oct 2020 CN
111814902 Oct 2020 CN
111860499 Oct 2020 CN
111881856 Nov 2020 CN
111882579 Nov 2020 CN
111897639 Nov 2020 CN
111898507 Nov 2020 CN
111898523 Nov 2020 CN
111899227 Nov 2020 CN
112101175 Dec 2020 CN
112101562 Dec 2020 CN
112115953 Dec 2020 CN
111062973 Jan 2021 CN
111275080 Jan 2021 CN
112183739 Jan 2021 CN
112232497 Jan 2021 CN
112288658 Jan 2021 CN
112308095 Feb 2021 CN
112308799 Feb 2021 CN
112313663 Feb 2021 CN
112329552 Feb 2021 CN
112348783 Feb 2021 CN
111899245 Mar 2021 CN
202017102235 May 2017 DE
202017102238 May 2017 DE
102017116017 Jan 2019 DE
102018130821 Jun 2020 DE
102019008316 Aug 2020 DE
1437004 Jul 2004 EP
1215626 Sep 2008 EP
2179589 Apr 2010 EP
2465093 Jun 2012 EP
2228666 Sep 2012 EP
2567347 Mar 2013 EP
2420408 May 2013 EP
2723069 Apr 2014 EP
2741253 Jun 2014 EP
3115772 Jan 2017 EP
3185758 Jul 2017 EP
2618559 Aug 2017 EP
3198557 Dec 2017 EP
3285485 Feb 2018 EP
3295424 Mar 2018 EP
3320486 May 2018 EP
2863633 Feb 2019 EP
3113080 May 2019 EP
3494514 Jun 2019 EP
3525132 Aug 2019 EP
3531689 Aug 2019 EP
3535692 Sep 2019 EP
3537340 Sep 2019 EP
3543917 Sep 2019 EP
3598874 Jan 2020 EP
3608840 Feb 2020 EP
3616119 Mar 2020 EP
3657387 May 2020 EP
2396750 Jun 2020 EP
3664020 Jun 2020 EP
3673233 Jul 2020 EP
3690712 Aug 2020 EP
3690742 Aug 2020 EP
3718048 Oct 2020 EP
3722992 Oct 2020 EP
3729002 Oct 2020 EP
3690730 Nov 2020 EP
3732618 Nov 2020 EP
3739486 Nov 2020 EP
3501897 Dec 2020 EP
3751455 Dec 2020 EP
3766023 Jan 2021 EP
3783527 Feb 2021 EP
2402572 Aug 2005 GB
2548087 Sep 2017 GB
2577485 Apr 2020 GB
2517270 Jun 2020 GB
2578262 Aug 1998 JP
3941252 Jul 2007 JP
4282583 Jun 2009 JP
4300098 Jul 2009 JP
2015004922 Jan 2015 JP
5863536 Feb 2016 JP
6044134 Dec 2016 JP
6525707 Jun 2019 JP
2019101535 Jun 2019 JP
2020101927 Jul 2020 JP
2020173744 Oct 2020 JP
100326702 Feb 2002 KR
101082878 Nov 2011 KR
101738422 May 2017 KR
101969864 Apr 2019 KR
101996167 Jul 2019 KR
102022388 Aug 2019 KR
102043143 Nov 2019 KR
102095335 Mar 2020 KR
102097120 Apr 2020 KR
1020200085490 Jul 2020 KR
102189262 Dec 2020 KR
1020200142266 Dec 2020 KR
200630819 Sep 2006 TW
I294089 Mar 2008 TW
I306207 Feb 2009 TW
WO 02052835 Jul 2002 WO
WO 16032398 Mar 2016 WO
WO 16048108 Mar 2016 WO
WO 16207875 Dec 2016 WO
WO 17158622 Sep 2017 WO
WO 19005547 Jan 2019 WO
WO 19067695 Apr 2019 WO
WO 19089339 May 2019 WO
WO 19092456 May 2019 WO
WO 19099622 May 2019 WO
WO 19122952 Jun 2019 WO
WO 19125191 Jun 2019 WO
WO 19126755 Jun 2019 WO
WO 19144575 Aug 2019 WO
WO 19182782 Sep 2019 WO
WO 19191578 Oct 2019 WO
WO 19216938 Nov 2019 WO
WO 19220436 Nov 2019 WO
WO 20006154 Jan 2020 WO
WO 20012756 Jan 2020 WO
WO 20025696 Feb 2020 WO
WO 20034663 Feb 2020 WO
WO 20056157 Mar 2020 WO
WO 20076356 Apr 2020 WO
WO 20097221 May 2020 WO
WO 20101246 May 2020 WO
WO 20120050 Jun 2020 WO
WO 20121973 Jun 2020 WO
WO 20131140 Jun 2020 WO
WO 20139181 Jul 2020 WO
WO 20139355 Jul 2020 WO
WO 20139357 Jul 2020 WO
WO 20142193 Jul 2020 WO
WO 20146445 Jul 2020 WO
WO 20151329 Jul 2020 WO
WO 20157761 Aug 2020 WO
WO 20163455 Aug 2020 WO
WO 20167667 Aug 2020 WO
WO 20174262 Sep 2020 WO
WO 20177583 Sep 2020 WO
WO 20185233 Sep 2020 WO
WO 20185234 Sep 2020 WO
WO 20195658 Oct 2020 WO
WO 20198189 Oct 2020 WO
WO 20198779 Oct 2020 WO
WO 20205597 Oct 2020 WO
WO 20221200 Nov 2020 WO
WO 20240284 Dec 2020 WO
WO 20260020 Dec 2020 WO
WO 20264010 Dec 2020 WO
Non-Patent Literature Citations (1)
Entry
NetAdapt: Platform aware neural network adaptation for mobile applications, by Yang et al., arXiv:1804.03230v2 [cs.CV] Sep. 28, 2018 (Year: 2018).
Related Publications (1)
Number Date Country
20230289583 A1 Sep 2023 US
Provisional Applications (2)
Number Date Country
62791220 Jan 2019 US
62785363 Dec 2018 US
Continuations (1)
Number Date Country
Parent 16728884 Dec 2019 US
Child 18185142 US