The present disclosure involves artificial intelligence systems and methods.
Systems such as a home network may contain dedicated resources to manage services in the home in connection with/at the request of heterogeneous consumer electronics (CE) devices in the home. For example, such services can include artificial intelligence (AI) resources, systems and methods used to control CE devices, e.g., by learning and adapting to any of a plurality of variables such as the environment in which devices are located, user(s) of the device, etc. An aspect of such services can be a system or device referred to herein as an “AI hub”, a boosted AI CPE (“consumer premises equipment” such as STB, gateway, edge computing resources, etc.). This can be a central node within the system to provide, for example, a) virtualization environment to host AI micro services and b) ensure interoperability with connected CE devices or Edge computing, access to services and resources (compute, storage, video processing, AI/ML accelerator). In addition, an AI hub can offload computational AI tasks to other CE devices registered in the Home Data Center.
In general, at least one example of an embodiment described herein involves a method comprising: receiving an indication of a resource availability; selecting a neural network from a plurality of neural networks based on the indication; and processing data utilizing the selected neural network in accordance with the resource availability.
In general, at least one example of an embodiment described herein involves a method comprising: selecting a neural network from a plurality of neural networks based on a resource availability; and processing data utilizing the selected neural network based on the resource availability, wherein all of the plurality of neural networks are trained to the same task and each of the plurality of neural networks has a different resource requirement.
In general, at least one example of an embodiment described herein involves a method comprising: training a plurality of neural networks to process a sequence of data associated with a task; determining a first constraint; selecting a first neural network from the plurality of neural networks to process a first portion of the sequence of data based on a first relationship between the first constraint and a first characteristic of the first neural network; determining that the first constraint changes to a second constraint different from the first constraint; and selecting a second neural network from the plurality of neural networks to process a second portion of the sequence of data following the first portion based on a second relationship between the second constraint and a second characteristic of the second neural network.
In general, at least one example of an embodiment described herein involves a method comprising: processing a first portion of a sequence of data associated with a task using a first neural network selected from a plurality of neural networks based on a first relationship between a first data processing constraint and a first characteristic of the first neural network, wherein the plurality of neural networks are all trained to the task; and processing a second portion of the sequence of data following the first portion using a second neural network selected from the plurality of neural networks based on the first data processing constraint changing to a second data processing constraint having a second relationship to a second characteristic of the second neural network.
In general, at least one example of an embodiment described herein involves a method comprising: training a plurality of neural networks to process a sequence of data associated with a task, wherein each of the plurality of neural networks has a computational resource requirement; determining a first computational resource availability; selecting a first neural network from the plurality of neural networks to process a first portion of the sequence of data based on the first computational resource availability being adequate for a first computational resource requirement of the first neural network; determining that the first computational resource availability changes to a second computational resource availability different from the first computational resource availability; and selecting a second neural network from the plurality of neural networks to process a second portion of the sequence of data following the first portion based on the second computational resource availability being adequate for a second computational resource requirement of the second neural network.
In general, at least one example of an embodiment described herein involves a method comprising: training a plurality of neural networks to process a sequence of data associated with a task, wherein each of the plurality of neural networks has a computational resource requirement; determining a first computational resource availability; processing a first portion of the sequence of data using a first one of the plurality of neural networks based on the first computational resource availability being adequate for a first computational resource requirement of the first one of the plurality of neural networks; determining that the first computational resource availability has changed to a second computational resource availability; ceasing processing of the sequence of data using the first one of the plurality of neural networks based on the change to the second computational resource availability; and processing a second portion of the sequence of data following the first portion using a second one of the plurality of neural networks based on the second computational resource availability being adequate for a second computational resource requirement of the second one of the plurality of neural networks.
In general, at least one example of an embodiment described herein involves a method comprising: training a plurality of neural networks to process a sequence of data associated with a task, wherein each of the plurality of neural networks has a resource requirement; determining a resource availability; processing a first portion of the data sequence using a first neural network selected from the plurality of neural networks based on the resource requirement of the first neural network being compatible with the resource availability; detecting a change in the resource availability; and processing a second portion of the sequence of data using a second neural network selected from the plurality of neural networks based on the resource requirement of the second neural network being compatible with the changed resource availability.
In general, at least one example of an embodiment described herein involves a method comprising: determining a data processing constraint; processing a first portion of a data sequence associated with a task using a first neural network selected from a plurality of neural networks based on a characteristic of the first neural network being compatible with the data processing constraint, wherein all of the plurality of neural networks are trained to the task and each of the plurality of neural networks has a respective different characteristic; detecting a change in the data processing constraint; and processing a second portion of the sequence of data using a second neural network selected from the plurality of neural networks based on the characteristic of the second neural network being compatible with the changed data processing constraint.
In general, at least one example of an embodiment described herein involves a method comprising: determining a data processing constraint; selecting a first neural network from a plurality of neural networks to process a first portion of a data sequence associated with a task based on a characteristic of the first neural network being compatible with the data processing constraint, wherein all of the plurality of neural networks are trained to the task and each of the plurality of neural networks has a respective different characteristic; detecting a change in the data processing constraint; and selecting a second neural network from the plurality of neural networks to process a second portion of the sequence of data based on the characteristic of the second neural network being compatible with the changed data processing constraint.
In general, at least one example of an embodiment described herein involves apparatus comprising: one or more processors configured to receive an indication of a resource availability; select a neural network from a plurality of neural networks based on the indication; and process data utilizing the selected neural network in accordance with the resource availability.
In general, at least one example of an embodiment described herein involves apparatus comprising: one or more processors configured to select a neural network from a plurality of neural networks based on a resource availability; and process data utilizing the selected neural network based on the resource availability; wherein all of the plurality of neural networks are trained to the same task and each of the plurality of neural networks has a different resource requirement.
In general, at least one example of an embodiment described herein involves apparatus comprising: one or more processors configured to train a plurality of neural networks to process a sequence of data associated with a task, wherein each of the plurality of neural networks has a respective characteristic; determine a first constraint; select a first neural network from the plurality of neural networks to process a first portion of the sequence of data based on a first relationship between the first constraint and a first characteristic of the first neural network; determine that the first constraint changes to a second constraint different from the first constraint; and select a second neural network from the plurality of neural networks to process a second portion of the sequence of data following the first portion based on a second relationship between the second constraint and a second characteristic of the second neural network.
In general, at least one example of an embodiment described herein involves apparatus comprising: one or more processors configured to process a first portion of a sequence of data associated with a task using a first neural network selected from a plurality of neural networks based on a first relationship between a first data processing constraint and a first characteristic of the first neural network, wherein the plurality of neural networks are all trained to the task; and process a second portion of the sequence of data following the first portion using a second neural network selected from the plurality of neural networks based on the first data processing constraint changing to a second data processing constraint having a second relationship to a second characteristic of the second neural network.
In general, at least one example of an embodiment described herein involves apparatus comprising: one or more processors configured to train a plurality of neural networks to process a sequence of data associated with a task, wherein each of the plurality of neural networks has a computational resource requirement; determine a first computational resource availability; select a first neural network from the plurality of neural networks to process a first portion of the sequence of data based on the first computational resource availability being adequate for a first computational resource requirement of the first neural network; determine that the first computational resource availability changes to a second computational resource availability different from the first computational resource availability; and select a second neural network from the plurality of neural networks to process a second portion of the sequence of data following the first portion based on second computational resource availability being adequate for a second computational resource requirement of the second neural network.
In general, at least one example of an embodiment described herein involves apparatus comprising: one or more processors configured to train a plurality of neural networks to process a sequence of data associated with a task, wherein each of the plurality of neural networks has a computational resource requirement; determine a first computational resource availability; process a first portion of the sequence of data using a first one of the plurality of neural networks based on the first computational resource availability being adequate for a first computational resource requirement of the first one of the plurality of neural networks; determine that the first computational resource availability has changed to a second computational resource availability; cease processing of the sequence of data using the first one of the plurality of neural networks based on the change to the second computational resource availability; and process a second portion of the sequence of data following the first portion using a second one of the plurality of neural networks based on the second computational resource availability being adequate for a second computational resource requirement of the second one of the plurality of neural networks.
In general, at least one example of an embodiment described herein involves apparatus comprising: one or more processors configured to train a plurality of neural networks to process a sequence of data associated with a task, wherein each of the plurality of neural networks has a resource requirement; determine a resource availability; process a first portion of the data sequence using a first neural network selected from the plurality of neural networks based on the resource requirement of the first neural network being compatible with the resource availability; detect a change in the resource availability; and process a second portion of the sequence of data using a second neural network selected from the plurality of neural networks based on the resource requirement of the second neural network being compatible with the changed resource availability.
In general, at least one example of an embodiment described herein involves apparatus comprising: one or more processors configured to determine a data processing constraint; process a first portion of a data sequence associated with a task using a first neural network selected from a plurality of neural networks based on a characteristic of the first neural network being compatible with the data processing constraint, wherein all of the plurality of neural networks are trained to the task and each of the plurality of neural networks has a respective different characteristic; detect a change in the data processing constraint; and process a second portion of the sequence of data using a second neural network selected from the plurality of neural networks based on the characteristic of the second neural network being compatible with the changed data processing constraint.
In general, at least one example of an embodiment described herein involves apparatus comprising: one or more processors configured to determine a data processing constraint; select a first neural network from a plurality of neural networks to process a first portion of a data sequence associated with a task based on a characteristic of the first neural network being compatible with the data processing constraint, wherein all of the plurality of neural networks are trained to the task and each of the plurality of neural networks has a respective different characteristic; detect a change in the data processing constraint; and select a second neural network from the plurality of neural networks to process a second portion of the sequence of data based on the characteristic of the second neural network being compatible with the changed data processing constraint.
In general, at least one example of an embodiment as described herein provides a computer readable storage medium having stored thereon instructions for encoding or decoding video data in accordance with one or more aspects and/or embodiments described herein; and/or a non-transitory computer readable medium storing executable program instructions to cause a computer executing the instructions to perform a method according to any embodiment in accordance with the present disclosure; and/or an electronic device including apparatus as described herein and one or more additional features such as a display or antenna, etc.
The above presents a simplified summary of the subject matter in order to provide a basic understanding of some aspects of the present disclosure. This summary is not an extensive overview of the subject matter. It is not intended to identify key/critical elements of the embodiments or to delineate the scope of the subject matter. Its sole purpose is to present some concepts of the subject matter in a simplified form as a prelude to the more detailed description provided below.
The present disclosure may be better understood by considering the detailed description below in conjunction with the accompanying figures, in which:
It should be understood that the drawings are for purposes of illustrating examples of various aspects, features and embodiments in accordance with the present disclosure and are not necessarily the only possible configurations. Throughout the various figures, like reference designators refer to the same or similar features.
One aspect of AI hub functionality involves allocating computational resources to various AI services. At some point, the demand may exceed the available resources and a control system, or processor, or software, generally referred to herein as an “orchestrator”, will operate to limit resources available to some or all services. An orchestrator/scheduler can provide for controlling where and when learning models are executed. For example, an orchestrator/scheduler may provide at least one or more of the following functionalities:
allocate computational resources to deep models
decide on which hardware the model is run
monitor resource availability
monitor the execution of a process (including a ML model)
selects the model to be run, including adapting it to resource constrains.
An aspect of the present disclosure involves providing systems and methods that avoid severe disruption or shutdown by enabling adaptation to resource constraints. In general, at least one example of an embodiment described herein involves a flexible AI system that can receive an instruction or instructions from an orchestrator or a scheduler running the AI hub and adapt its configuration or architecture or model in accordance with the instruction.
The use of an orchestrator and flexible AI systems to maintain a reasonable quality of service may also be implemented on a single device running multiple AI processes. For example, a device such as a smartphone can contain dedicated hardware to accelerate AI processes and enabling such devices to run or provide the functionality of an orchestrator. Other possible devices include smart cars, computers, home assistants or other devices capable of communication via a network such as a home network, e.g., Internet of things, or IoT devices.
In addition, edge computing may involve AI processes and associated resource constraints, e.g., where cloud services are run on edge computing nodes close to the user. As an example, when processes are moved to a new edge node, resources or resource constraints might be different.
A deep neural network (DNN) is a complex function. A DNN is composed of several neural layers (typically in series) and each neural layer is composed of several perceptrons. A perceptron is a function involving a linear combination of the inputs and a non-linear function, for example a sigmoid function. Trained by a machine learning algorithm on huge data sets, these models have recently proven extremely useful for a wide range of applications and have led to significant improvements to the state-of-the-art in artificial intelligence, computer vision, audio processing and several other domains.
Recursive neural networks (RNN) denote a class of deep learning architectures specifically designed to process sequences such as sound, videos, text or sensor data. RNN are widely used for such data. Frequently used RNN architectures include long short-term memory (LSTM) networks and gated recurrent units (GRU). Typically, RNN maintain a “state”, a vector of variables, over time. This state is supposed to accumulate relevant information and is updated recursively. At a high-level, this is like hidden Markov models. Each input of the sequence is typically a) processed by some deep layers and b) then combined with the previous state through some other deep layers to compute the new state. Hence, the RNN can be seen as a function taking a sequence of inputs x=(x1, . . . , xT) and recursively computing a set of states s=(s1, . . . , sT). Each state st is computed from st−1 and xt by a cell S of the RNN.
Fully processing the input can be resource intensive. In a constrained environment, this may be undesirable. An approach to reduce the computational load of RNNs involves a “skip-RNN” architecture. This architecture is designed to allow the model to skip some inputs by introducing a state update gate. This part of the model is trained along with the other parameters of the model to maximize accuracy while limiting computational cost. The resulting architecture can be described as follows:
u
t=ƒbinarize(ũt)
s
t
=u
t
S(st−1,xt)+(1−ut)st−1
Δũt=σ(Wst+b)
ũ
t+1
=u
t
Δũ
t+(1−ut)(ũt+min(Δũt,1−ũt)).
In these equations, ƒbinarize denotes a binarization function (in other words, the output is 0 if the input is smaller than 0.5 and 1 otherwise), a a non-linear function and W and b the trainable parameters of the linear part of the state update gate (a perceptron). ƒbinarize can also be a stochastic sampling from a Bernoulli distribution whose parameter is the input ũt.
This model is trained on a dataset containing a set of input sequences and label(s) associated to each sequence. The model is trained to minimize a loss computed on this labeled data. The loss is the sum of two terms: one term related to the accuracy of the task (for example cross-entropy for classification or Euclidian loss for regression), and a second term that penalizes computational operations: Lbudget=λΣtut, where λ is a weight controlling the strength of the penalty and ut, as defined above, is 0 if there is no update to the state and 1 if there is.
There are other approaches similar to skipRNN that propose an alternative mechanism to reduce computation dynamically based on inputs, for example by also skipping some or only updating part of the state vector. These mechanisms include one or more characteristics such as a decision function as illustrated by the example of the equations above. One particular example of a decision function is a binarization function, e.g., ƒbinarize as described above. Examples of other approaches or mechanisms such as skip-RNN include Jump-LSTM, Skim-RNN, VCRNN, and G-LSTM.
Skip-RNN and other related approaches aim to reduce computation while maintaining accuracy. While they allow the system to run using fewer computational resources, the system is fixed and cannot adapt to changing computational constraints. Furthermore, these approaches do not provide for communication with an orchestrator/scheduler.
In general, at least one example of an embodiment described herein involves an artificial intelligence system or method, e.g., a system or method based on a Recurrent Neural Network (RNN) architecture, that can be controlled, e.g., by an orchestrator, to adapt its computation to available computational resources. However, prior approaches to neural networks, e.g., RNN architectures, do not provide for adapting to changing computational resources. Therefore, systems such as RNNs running on shared hardware might be shut down if other processes require the use of the resources. This includes both multiple networks running on the same hardware (for example, a smartphone or a car) or on different devices (such as a home system with heterogeneous devices).
In general, at least one example of an embodiment described herein involves an AI system and method that can adapt its configuration or architecture based on a constraint such as computational resource availability and/or data processing accuracy requirements.
In general, at least one example of an embodiment described herein involves adapting a neural network, e.g., a RNN, to changing computational constraints during operation, such as in the middle of the analysis of a sequence, by replacing one neural network, e.g., RNN, by another.
In general, at least one example of an embodiment described herein involves adapting computational resources of a neural network, e.g., RNN, at inference time by dynamically exchanging one network with another.
In general, at least one example of an embodiment described herein involves providing for training such families of neural networks, or a plurality of neural networks, e.g., a plurality of RNNs, to achieve the required trade-off of computational cost (e.g., computational resource requirement) and accuracy.
In general, at least one example of an embodiment described herein provides for an orchestrator/scheduler to control the deployment of a plurality of neural networks, e.g., selecting or switching between various ones of a plurality of neural networks, and manipulate the computational cost of the model during execution or processing of data such as a sequence of data.
The following describes various examples of embodiments of methods and apparatus that enable or allow systems, e.g., one or more processors, to adapt the computational cost of a neural network such as a RNN dynamically or on the fly, training such embodiments, and enabling or allowing an orchestrator/scheduler to leverage the described flexibility or capacity to adapt.
In general, at least one example of an embodiment involves a family of at least two neural networks such as RNN with different computational cost and accuracy and trained for the same task, wherein operation involves dynamically exchanging one neural network, e.g., RNN or Recurrent Neural Network, for another in the family. This type of trade-off between cost and accuracy can be achieved using any existing form of neural network, for example skipRNN.
In at least one example of an embodiment, a sequence is analyzed by such a family of models as follows:
The described example is illustrated in
In general, the type of neural network in a family or plurality of neural networks can be, e.g., a RNN, such as any type of RNN, including but not limited to GRU, LSTM or end-to-end memory networks.
At point 2 above, inputs such as an input data sequence can also be provided to the model in batches rather than one by one. As with any neural network or RNN, the inputs can be raw data or the output of another neural network or another transformation of data. For example, if the sequence is a video (a sequence of images), an input xi can for example be an image (a 3D tensor) or a vector computed by applying a convolutional neural network (CNN) to the image or a wavelet transform of this image. If the sequence is an audio recording, an input xi can be a single value of the waveform or the coefficients or a Fourier transform applied on a sub-window on the audio recording.
At least several implementations of point 4 above are possible. If the new process or model N runs on the same processing hardware as for the model C, then one possible implementation is to stop (halt or cease) the execution, replace the weights of the RNN by the weights of the model N and then resume execution. It is also possible to retrieve the internal state of the model and to start a new RNN process with the model N, to initialize it with the previously recovered internal state and to use it to process the end of the sequence. If the model N runs on another or different hardware than the model C, then the internal state can be extracted from C, communicated using any appropriate transmission protocol (WiFi, ethernet, etc.) to the other processing hardware and used to initialize an instance of the model N. This initialized model will then be used to analyze subsequent incoming data of the sequence.
In general, at least one other example of an embodiment can involve a variant in which hierarchical RNNs are working on top of each other. In that case, there can be one family or plurality of neural networks defined for each level of the hierarchy, or a family containing hierarchical models, or a combination of both.
In general, at least one other example of an embodiment can involve one or more features or aspects described herein wherein a neural network such as a RNN generates a single output (for example, one of a set of classes or labels) or a RNN that generates intermediate outputs (for example, RNNs that output activity labels from sensor data or phonemes from a speech recording).
Each of the plurality of neural networks in a family can have a particular different characteristic such as computational cost and/or accuracy as described above. One of the plurality of neural networks in a family can be selected, e.g., by an orchestrator/scheduler, for processing a portion of a data sequence based on a constraint such as a computational resource availability and/or accuracy requirement. For example, a relationship between a current constraint, e.g., accuracy and/or computational resource availability for processing a first portion of a data sequence, and the characteristic of each of the plurality of neural networks can be evaluated such as by an orchestrator/scheduler. A first neural network can be selected for processing the first portion of the data sequence based on the first neural network's characteristic exhibiting the desired or required relationship to the constraint. Then, if the constraint changes to a second constraint, e.g., with regard to processing a second portion of the data sequence following the first portion, a second neural network can be selected from the plurality of neural networks for processing the second portion based on a second relationship between a second characteristic of the second neural network and the second constraint.
As a specific example, an orchestrator/scheduler can determine whether a characteristic of a first neural network such as computational resource requirements and/or accuracy is appropriate (e.g., sufficient or adequate) with regard to a first constraint such as a first computational resource availability and/or an accuracy requirement for processing a first portion of a data sequence. If so, then the first neural network can be selected from the plurality of neural networks for processing the first portion of the data sequence. Then, if the constraint changes, e.g., from the first computational resource availability and/or accuracy requirement, to a second constraint, e.g., a different computational resource requirement and/or accuracy requirement for processing a second portion of the data sequence, the orchestrator/scheduler can select a second neural network from the plurality of neural networks for processing the second portion of the data sequence based on the second neural network having a desired or required relationship to the second constraint.
For ease of explanation, the examples described below focus on training methods based on an example of the skipRNN architecture and algorithm. However, the described embodiments can also apply to embodiments involving other forms of neural networks.
A first example of an embodiment of training, herein referred to as embodiment or example A, involves training one model by aligning states to a target. This embodiment provides for training two models whose internal states are similar. Two different RNN models that have a different accuracy/computational cost trade-off are trained while forcing these models to compute similar internal states for the same input sequence.
In more detail, the models are trained as follows:
A computational graph that illustrates this implementation of embodiment A is displayed in
As an illustration of the embodiment of
One variant of the embodiment of
In another variant, the values of the hyperparameters λ2 can be slowly changed from λ1 (or another initial value) to gradually induce a different accuracy/trade-off for M1 and M2. Changes in λ2 can also be driven by the evolution of the trade-off for M2. For example, λ2 could be modified until M2 achieves a given computational budget, or a given accuracy.
In another variant, models can be trained iteratively. That is, M1 is trained, M2 is trained as described above, then M1 is retrained so that its states are similar to M2, then M2 is trained again, etc.
The described embodiment can easily be extended to more than two models by iteratively building a sequence of models. For models beyond the second, several variants of the additional term in the loss are possible. For example, the values of the internal states of MX can be compared only to those of model M(X-1); or to those of all models M1 to M(X-1), for example by using the sum or the average of the differences between states; or any combination of models previously computed.
In another variant where models are retrained, the models used to provide reference values of the internal state can vary every time a model MX is retrained. For example, when all models have been trained once, a variant of the method could iteratively retrain a model by first choosing two random models MX and MY and then retraining MX by using MY to provide reference values for the internal states of the model.
Further variants can be constructed by constructing the models so that they share some part of the architecture and parameters of the deep learning model. For example, the initialization of the RNNs could be identical; the output layers (that compute an output of the model from the internal states) could be identical; part of the cell S could be identical in both models. Identical parts can either be trained for M1 and then their value kept constant or they can be retrained with M2 (and during any further retraining).
A second example of an embodiment, herein referred to as embodiment or example B, involves training the whole family at the same time. This second embodiment can be viewed as a variant of the first example of an embodiment described above. The states of the model are still forced to take similar values. However, both models M1 and M2 are trained at the same time. Therefore, the loss of the training algorithm may contain the following terms
One example of this second embodiment is illustrated by the computational graph shown in
At least several variants of the second embodiment can be constructed. For example, when training more than two models, additional variants can be constructed by training all models together or training subsets of these models. The size of the subset can also vary during training.
A third example of an embodiment of training, herein referred to as embodiment C, involves interleaving training. This embodiment directly constructs a family of models that can be switched, without explicitly enforcing state similarity. This is instead done implicitly, by directly switching models during training. This example of an embodiment can be implemented, for example, by:
Many variants of the third embodiment can be constructed by varying the sequences c that control the model used at every step during training. For example, these sequences can be constant and precomputed once before training; they can be randomized for every sequence once; they can be randomized for every sequence every time one is selected for inclusion in a training mini-batch (a typically small subset of a typically large data set, that can fit in memory—cache or RAM—and used to improve the model, typically by computing the gradient used in one-step of a gradient-descent or other optimization algorithm) etc.
Other implementations of this embodiment can be constructed by creating the combination of models differently. For example, such a combination could be hardcoded, for example by performing model switches at regular interval, at fixed time-steps or randomly. Such a combination can also be directly created by constructing a sequence of cells of M1 and M2.
The various embodiments described can also be easily extended to more than two models, for example, by using the same extension mechanisms than for training methods A and B, for example training models incrementally or all together.
Furthermore, several other variants of these methods can be constructed, similarly to what was possible for training methods A and B, including how to set the loss hyperparameters (fixed and different or slowly becoming increasingly different), how to initialize the models, how to train them (once, iteratively, training only one . . . ) or by sharing some parameters between the models or not.
As an example of inference, the first embodiment of a training method as described above was applied with a skipRNN model, with different values for the parameter λ. Training was initialized with a model trained with a value λ2. Then, this model was fixed and a copy of this model of this model was trained so that the number of updates of the trained model is larger than this number for the fixed model.
In both the example of
Examples of embodiments useful to control the cost of a model are described next. The examples of embodiments described above can be deployed on a single device to adapt to local load. Various embodiments can also involve deploying a running model to other devices (for example from mobile user equipment to a computer in the building, to the edge or to the cloud) and to switch to a model more suited to the other equipment. The move can also take place in the opposite direction. Various examples of embodiments described below enable an orchestrator/scheduler to monitor and/or allocate resources to processes on the equipment(s) to interact with a family of exchangeable RNNs to dynamically adapt its computational cost (or other metric).
The family may be packaged as a simple model and run/distribute using any existing or future method, for example using a deep learning framework like tensorflow/pytorch, or by coding the model from scratch or by implementing it in an ASIC. In this case, the controller/orchestrator can select the model being run by appending a variable to the input vector and that variable can be used as input to a conditional operator (for example tf.cond) to select the model to be executed at every time step.
The models of the family may also be packaged independently. In that case, a metadata may be attached to the packaged model to state that it is part of a family of flexible RNNs that can be switched. This can for example be implemented by setting a boolean flag or by stating the family identifier. In that case the orchestrator/scheduler could for example select the running model by exiting the current model; recovering the state and launching a new model initialized with the recovered state. It could also trigger a modification of the parameters of the running model. These modifications could be computed on the device or be made available through mechanisms like these discussed above for the model. The new model may be launched in another device different from the original one. In that case, the state must be transmitted.
In addition, the family can expose information about the trade-offs it allows to an orchestrator/scheduler. That is, the family can provide an indication, i.e., the orchestrator/scheduler can receive an indication, regarding such tradeoffs, thereby enabling an orchestrator to monitor and control selecting or switching between models in a family. This information can be exposed through metadata or through other methods. For example, the metadata for the family may contain a table associating to each model name a computational cost (for example expressed in FLOPS) and an accuracy. Metadata can also provide information about the expected delay when switching a model from the family for another. This information could be provided as a delay (for example in ms or number of CPU clock ticks) or through a mathematical formula that depends on hardware characteristics (e.g. size of some/all processor caches, reading speed of storage, transmission speed and bandwidth of busses, etc.) This information can be provided in general or for specific categories of hardware. Metadata can also include information to compute the accuracy that results from the combination of several models. Possible implementations include a mathematical formula, a description (for example “weighted average”) or a penalty to be incurred at every switch (for example “−0.5% accuracy per switch”). In addition to or instead of using such metadata, the orchestrator/scheduler can also monitor the execution of the RNNs to obtain or improve an estimate of the behavior of the model in terms of accuracy, computational cost and switch behavior.
The metadata can be attached to the model or family by various methods. For example, they can be attached to the model by including it in the model files, by making them available online and including the url to access them in the model file. If the models are available in an online marketplace or store or any other mechanism to make models available remotely, metadata can be made available on this place through a standardized interface.
This document describes various examples of embodiments, features, models, approaches, etc. Many such examples are described with specificity and, at least to show the individual characteristics, are often described in a manner that may appear limiting. However, this is for purposes of clarity in description, and does not limit the application or scope. Indeed, the various examples of embodiments, features, etc., described herein can be combined and interchanged in various ways to provide further examples of embodiments.
In general, the examples of embodiments described and contemplated in this document can be implemented in many different forms. For example,
Various methods are described herein, and each of the methods comprises one or more steps or actions for achieving the described method. Unless a specific order of steps or actions is required for proper operation of the method, the order and/or use of specific steps and/or actions may be modified or combined.
Various embodiments, e.g., methods, and other aspects described in this document can be used to modify a system such as the example shown in
Various numeric values are used in the present document, for example. The specific values are for example purposes and the aspects described are not limited to these specific values.
The system 1000 includes at least one processor 1010 configured to execute instructions loaded therein for implementing, for example, the various aspects described in this document. Processor 1010 can include embedded memory, input output interface, and various other circuitries as known in the art. The system 1000 includes at least one memory 1020 (e.g., a volatile memory device, and/or anon-volatile memory device). System 1000 includes a storage device 1040, which can include non-volatile memory and/or volatile memory, including, but not limited to, EEPROM, ROM, PROM, RAM, DRAM, SRAM, flash, magnetic disk drive, and/or optical disk drive. The storage device 1040 can include an internal storage device, an attached storage device, and/or a network accessible storage device, as non-limiting examples.
System 1000 can include an encoder/decoder module 1030 configured, for example, to process image data to provide an encoded video or decoded video, and the encoder/decoder module 1030 can include its own processor and memory. The encoder/decoder module 1030 represents module(s) that can be included in a device to perform the encoding and/or decoding functions. As is known, a device can include one or both of the encoding and decoding modules. Additionally, encoder/decoder module 1030 can be implemented as a separate element of system 1000 or can be incorporated within processor 1010 as a combination of hardware and software as known to those skilled in the art.
Program code to be loaded onto processor 1010 or encoder/decoder 1030 to perform the various aspects described in this document can be stored in storage device 1040 and subsequently loaded onto memory 1020 for execution by processor 1010. In accordance with various embodiments, one or more of processor 1010, memory 1020, storage device 1040, and encoder/decoder module 1030 can store one or more of various items during the performance of the processes described in this document. Such stored items can include, but are not limited to, the input video, the decoded video or portions of the decoded video, the bitstream or signal, matrices, variables, and intermediate or final results from the processing of equations, formulas, operations, and operational logic.
In several embodiments, memory inside of the processor 1010 and/or the encoder/decoder module 1030 is used to store instructions and to provide working memory for processing that is needed during operations such as those described herein. In other embodiments, however, a memory external to the processing device (for example, the processing device can be either the processor 1010 or the encoder/decoder module 1030) is used for one or more of these functions. The external memory can be the memory 1020 and/or the storage device 1040, for example, a dynamic volatile memory and/or a non-volatile flash memory. In several embodiments, an external non-volatile flash memory is used to store the operating system of a television. In at least one embodiment, a fast external dynamic volatile memory such as a RAM is used as working memory for video coding and decoding operations, such as for MPEG-2, HEVC, or VVC (Versatile Video Coding).
The input to the elements of system 1000 can be provided through various input devices as indicated in block 1130. Such input devices include, but are not limited to, (i) an RF portion that receives an RF signal transmitted, for example, over the air by a broadcaster, (ii) a Composite input terminal, (iii) a USB input terminal, and/or (iv) an HDMI input terminal.
In various embodiments, the input devices of block 1130 have associated respective input processing elements as known in the art. For example, the RF portion can be associated with elements for (i) selecting a desired frequency (also referred to as selecting a signal, or band-limiting a signal to a band of frequencies), (ii) downconverting the selected signal, (iii) band-limiting again to a narrower band of frequencies to select (for example) a signal frequency band which can be referred to as a channel in certain embodiments, (iv) demodulating the downconverted and band-limited signal, (v) performing error correction, and (vi) demultiplexing to select the desired stream of data packets. The RF portion of various embodiments includes one or more elements to perform these functions, for example, frequency selectors, signal selectors, band-limiters, channel selectors, filters, downconverters, demodulators, error correctors, and demultiplexers. The RF portion can include a tuner that performs various of these functions, including, for example, downconverting the received signal to a lower frequency (for example, an intermediate frequency or a near-baseband frequency) or to baseband. In one set-top box embodiment, the RF portion and its associated input processing element receives an RF signal transmitted over a wired (for example, cable) medium, and performs frequency selection by filtering, downconverting, and filtering again to a desired frequency band. Various embodiments rearrange the order of the above-described (and other) elements, remove some of these elements, and/or add other elements performing similar or different functions. Adding elements can include inserting elements in between existing elements, for example, inserting amplifiers and an analog-to-digital converter. In various embodiments, the RF portion includes an antenna.
Additionally, the USB and/or HDMI terminals can include respective interface processors for connecting system 1000 to other electronic devices across USB and/or HDMI connections. It is to be understood that various aspects of input processing, for example, Reed-Solomon error correction, can be implemented, for example, within a separate input processing IC or within processor 1010. Similarly, aspects of USB or HDMI interface processing can be implemented within separate interface ICs or within processor 1010. The demodulated, error corrected, and demultiplexed stream is provided to various processing elements, including, for example, processor 1010, and encoder/decoder 1030 operating in combination with the memory and storage elements to process the datastream for presentation on an output device.
Various elements of system 1000 can be provided within an integrated housing, Within the integrated housing, the various elements can be interconnected and transmit data therebetween using suitable connection arrangement 1140, for example, an internal bus as known in the art, including the I2C bus, wiring, and printed circuit boards.
The system 1000 includes communication interface 1050 that enables communication with other devices via communication channel 1060. The communication interface 1050 can include, but is not limited to, a transceiver configured to transmit and to receive data over communication channel 1060. The communication interface 1050 can include, but is not limited to, a modem or network card and the communication channel 1060 can be implemented, for example, within a wired and/or a wireless medium.
Data is streamed to the system 1000, in various embodiments, using a Wi-Fi network such as IEEE 802.11. The Wi-Fi signal of these embodiments is received over the communications channel 1060 and the communications interface 1050 which are adapted for Wi-Fi communications. The communications channel 1060 of these embodiments is typically connected to an access point or router that provides access to outside networks including the Internet for allowing streaming applications and other over-the-top communications. Other embodiments provide streamed data to the system 1000 using a set-top box that delivers the data over the HDMI connection of the input block 1130. Still other embodiments provide streamed data to the system 1000 using the RF connection of the input block 1130.
The system 1000 can provide an output signal to various output devices, including a display 1100, speakers 1110, and other peripheral devices 1120. The other peripheral devices 1120 include, in various examples of embodiments, one or more of a stand-alone DVR, a disk player, a stereo system, a lighting system, and other devices that provide a function based on the output of the system 1000. In various embodiments, control signals are communicated between the system 1000 and the display 1100, speakers 1110, or other peripheral devices 1120 using signaling such as AV.Link, CEC, or other communications protocols that enable device-to-device control with or without user intervention. The output devices can be communicatively coupled to system 1000 via dedicated connections through respective interfaces 1070, 1080, and 1090. Alternatively, the output devices can be connected to system 1000 using the communications channel 1060 via the communications interface 1050. The display 1100 and speakers 1110 can be integrated in a single unit with the other components of system 1000 in an electronic device, for example, a television. In various embodiments, the display interface 1070 includes a display driver, for example, a timing controller (T Con) chip.
The display 1100 and speaker 1110 can alternatively be separate from one or more of the other components, for example, if the RF portion of input 1130 is part of a separate set-top box. In various embodiments in which the display 1100 and speakers 1110 are external components, the output signal can be provided via dedicated output connections, including, for example, HDMI ports, USB ports, or COMP outputs.
The embodiments can be carried out by computer software implemented by the processor 1010 or by hardware, or by a combination of hardware and software. As a non-limiting example, the embodiments can be implemented by one or more integrated circuits. The memory 1020 can be of any type appropriate to the technical environment and can be implemented using any appropriate data storage technology, such as optical memory devices, magnetic memory devices, semiconductor-based memory devices, fixed memory, and removable memory, as non-limiting examples. The processor 1010 can be of any type appropriate to the technical environment, and can encompass one or more of microprocessors, general purpose computers, special purpose computers, and processors based on a multi-core architecture, as non-limiting examples.
Various generalized as well as particularized embodiments are also supported and contemplated throughout this disclosure. Examples of embodiments in accordance with the present disclosure include but are not limited to the following.
In general, at least one example of an embodiment described herein involves a method comprising: receiving an indication of a resource availability; selecting a neural network from a plurality of neural networks based on the indication; and processing data utilizing the selected neural network in accordance with the resource availability.
In general, at least one example of an embodiment described herein involves a method comprising: selecting a neural network from a plurality of neural networks based on a resource availability; and processing data utilizing the selected neural network based on the resource availability, wherein all of the plurality of neural networks are trained to the same task and each of the plurality of neural networks has a different resource requirement.
In general, at least one example of an embodiment described herein involves a method comprising: training a plurality of neural networks to process a sequence of data associated with a task; determining a first constraint; selecting a first neural network from the plurality of neural networks to process a first portion of the sequence of data based on a first relationship between the first constraint and a first characteristic of the first neural network; determining that the first constraint changes to a second constraint different from the first constraint; and selecting a second neural network from the plurality of neural networks to process a second portion of the sequence of data following the first portion based on a second relationship between the second constraint and a second characteristic of the second neural network.
In general, at least one example of an embodiment described herein involves a method comprising: processing a first portion of a sequence of data associated with a task using a first neural network selected from a plurality of neural networks based on a first relationship between a first data processing constraint and a first characteristic of the first neural network, wherein the plurality of neural networks are all trained to the task; and processing a second portion of the sequence of data following the first portion using a second neural network selected from the plurality of neural networks based on the first data processing constraint changing to a second data processing constraint having a second relationship to a second characteristic of the second neural network.
In general, at least one example of an embodiment described herein involves a method comprising: training a plurality of neural networks to process a sequence of data associated with a task, wherein each of the plurality of neural networks has a computational resource requirement; determining a first computational resource availability; selecting a first neural network from the plurality of neural networks to process a first portion of the sequence of data based on the first computational resource availability being adequate for a first computational resource requirement of the first neural network; determining that the first computational resource availability changes to a second computational resource availability different from the first computational resource availability; and selecting a second neural network from the plurality of neural networks to process a second portion of the sequence of data following the first portion based on the second computational resource availability being adequate for a second computational resource requirement of the second neural network.
In general, at least one example of an embodiment described herein involves a method comprising: training a plurality of neural networks to process a sequence of data associated with a task, wherein each of the plurality of neural networks has a computational resource requirement; determining a first computational resource availability; processing a first portion of the sequence of data using a first one of the plurality of neural networks based on the first computational resource availability being adequate for a first computational resource requirement of the first one of the plurality of neural networks; determining that the first computational resource availability has changed to a second computational resource availability; ceasing processing of the sequence of data using the first one of the plurality of neural networks based on the change to the second computational resource availability; and processing a second portion of the sequence of data following the first portion using a second one of the plurality of neural networks based on the second computational resource availability being adequate for a second computational resource requirement of the second one of the plurality of neural networks.
In general, at least one example of an embodiment described herein involves a method comprising: training a plurality of neural networks to process a sequence of data associated with a task, wherein each of the plurality of neural networks has a resource requirement; determining a resource availability; processing a first portion of the data sequence using a first neural network selected from the plurality of neural networks based on the resource requirement of the first neural network being compatible with the resource availability; detecting a change in the resource availability; and processing a second portion of the sequence of data using a second neural network selected from the plurality of neural networks based on the resource requirement of the second neural network being compatible with the changed resource availability.
In general, at least one example of an embodiment described herein involves a method comprising: determining a data processing constraint; processing a first portion of a data sequence associated with a task using a first neural network selected from a plurality of neural networks based on a characteristic of the first neural network being compatible with the data processing constraint, wherein all of the plurality of neural networks are trained to the task and each of the plurality of neural networks has a respective different characteristic; detecting a change in the data processing constraint; and processing a second portion of the sequence of data using a second neural network selected from the plurality of neural networks based on the characteristic of the second neural network being compatible with the changed data processing constraint.
In general, at least one example of an embodiment described herein involves a method comprising: determining a data processing constraint; selecting a first neural network from a plurality of neural networks to process a first portion of a data sequence associated with a task based on a characteristic of the first neural network being compatible with the data processing constraint, wherein all of the plurality of neural networks are trained to the task and each of the plurality of neural networks has a respective different characteristic; detecting a change in the data processing constraint; and selecting a second neural network from the plurality of neural networks to process a second portion of the sequence of data based on the characteristic of the second neural network being compatible with the changed data processing constraint.
In general, at least one example of an embodiment described herein involves apparatus comprising: one or more processors configured to receive an indication of a resource availability; select a neural network from a plurality of neural networks based on the indication; and process data utilizing the selected neural network in accordance with the resource availability.
In general, at least one example of an embodiment described herein involves apparatus comprising: one or more processors configured to select a neural network from a plurality of neural networks based on a resource availability; and process data utilizing the selected neural network based on the resource availability; wherein all of the plurality of neural networks are trained to the same task and each of the plurality of neural networks has a different resource requirement.
In general, at least one example of an embodiment described herein involves apparatus comprising: one or more processors configured to train a plurality of neural networks to process a sequence of data associated with a task, wherein each of the plurality of neural networks has a respective characteristic; determine a first constraint; select a first neural network from the plurality of neural networks to process a first portion of the sequence of data based on a first relationship between the first constraint and a first characteristic of the first neural network; determine that the first constraint changes to a second constraint different from the first constraint; and select a second neural network from the plurality of neural networks to process a second portion of the sequence of data following the first portion based on a second relationship between the second constraint and a second characteristic of the second neural network.
In general, at least one example of an embodiment described herein involves apparatus comprising: one or more processors configured to process a first portion of a sequence of data associated with a task using a first neural network selected from a plurality of neural networks based on a first relationship between a first data processing constraint and a first characteristic of the first neural network, wherein the plurality of neural networks are all trained to the task; and process a second portion of the sequence of data following the first portion using a second neural network selected from the plurality of neural networks based on the first data processing constraint changing to a second data processing constraint having a second relationship to a second characteristic of the second neural network.
In general, at least one example of an embodiment described herein involves apparatus comprising: one or more processors configured to train a plurality of neural networks to process a sequence of data associated with a task, wherein each of the plurality of neural networks has a computational resource requirement; determine a first computational resource availability; select a first neural network from the plurality of neural networks to process a first portion of the sequence of data based on the first computational resource availability being adequate for a first computational resource requirement of the first neural network; determine that the first computational resource availability changes to a second computational resource availability different from the first computational resource availability; and select a second neural network from the plurality of neural networks to process a second portion of the sequence of data following the first portion based on second computational resource availability being adequate for a second computational resource requirement of the second neural network.
In general, at least one example of an embodiment described herein involves apparatus comprising: one or more processors configured to train a plurality of neural networks to process a sequence of data associated with a task, wherein each of the plurality of neural networks has a computational resource requirement; determine a first computational resource availability; process a first portion of the sequence of data using a first one of the plurality of neural networks based on the first computational resource availability being adequate for a first computational resource requirement of the first one of the plurality of neural networks; determine that the first computational resource availability has changed to a second computational resource availability; cease processing of the sequence of data using the first one of the plurality of neural networks based on the change to the second computational resource availability; and process a second portion of the sequence of data following the first portion using a second one of the plurality of neural networks based on the second computational resource availability being adequate for a second computational resource requirement of the second one of the plurality of neural networks.
In general, at least one example of an embodiment described herein involves apparatus comprising: one or more processors configured to train a plurality of neural networks to process a sequence of data associated with a task, wherein each of the plurality of neural networks has a resource requirement; determine a resource availability; process a first portion of the data sequence using a first neural network selected from the plurality of neural networks based on the resource requirement of the first neural network being compatible with the resource availability; detect a change in the resource availability; and process a second portion of the sequence of data using a second neural network selected from the plurality of neural networks based on the resource requirement of the second neural network being compatible with the changed resource availability.
In general, at least one example of an embodiment described herein involves apparatus comprising: one or more processors configured to determine a data processing constraint; process a first portion of a data sequence associated with a task using a first neural network selected from a plurality of neural networks based on a characteristic of the first neural network being compatible with the data processing constraint, wherein all of the plurality of neural networks are trained to the task and each of the plurality of neural networks has a respective different characteristic; detect a change in the data processing constraint; and process a second portion of the sequence of data using a second neural network selected from the plurality of neural networks based on the characteristic of the second neural network being compatible with the changed data processing constraint.
In general, at least one example of an embodiment described herein involves apparatus comprising: one or more processors configured to determine a data processing constraint; select a first neural network from a plurality of neural networks to process a first portion of a data sequence associated with a task based on a characteristic of the first neural network being compatible with the data processing constraint, wherein all of the plurality of neural networks are trained to the task and each of the plurality of neural networks has a respective different characteristic; detect a change in the data processing constraint; and select a second neural network from the plurality of neural networks to process a second portion of the sequence of data based on the characteristic of the second neural network being compatible with the changed data processing constraint.
In general, at least one example of an embodiment can involve a computer program product including instructions, which, when executed by a computer, cause the computer to carry out any one or more of the methods described herein.
In general, at least one example of an embodiment can involve a non-transitory computer readable medium storing executable program instructions to cause a computer executing the instructions to perform any one or more of the methods described herein.
In general, at least one example of an embodiment can involve a device comprising an apparatus according to any embodiment of apparatus as described herein, and at least one of (i) an antenna configured to receive a signal, the signal including data representative of information such as instructions from an orchestrator, (ii) a band limiter configured to limit the received signal to a band of frequencies that includes the data representative of the information, and (iii) a display configured to display an image such as a displayed representation of the data representative of the instructions.
In general, at least one example of an embodiment can involve a device as described herein, wherein the device comprises one of a television, a television signal receiver, a set-top box, a gateway device, a mobile device, a cell phone, a tablet, or other electronic device.
Regarding the various embodiments described herein and the figures illustrating various embodiments, when a figure is presented as a flow diagram, it should be understood that it also provides a block diagram of a corresponding apparatus. Similarly, when a figure is presented as a block diagram, it should be understood that it also provides a flow diagram of a corresponding method/process.
The implementations and aspects described herein can be implemented in, for example, a method or a process, an apparatus, a software program, a data stream, or a signal. Even if only discussed in the context of a single form of implementation (for example, discussed only as a method), the implementation of features discussed can also be implemented in other forms (for example, an apparatus or program). An apparatus can be implemented in, for example, appropriate hardware, software, and firmware. The methods can be implemented in, for example, a processor, which refers to processing devices in general, including, for example, one or more of a computer, a microprocessor, an integrated circuit, or a programmable logic device. Processors also include communication devices, such as, for example, computers, cell phones, portable/personal digital assistants (“PDAs”), and other devices that facilitate communication of information between end-users.
Reference to “one embodiment” or “an embodiment” or “one implementation” or “an implementation”, as well as other variations thereof, means that a particular feature, structure, characteristic, and so forth described in connection with the embodiment is included in at least one embodiment. Thus, the appearances of the phrase “in one embodiment” or “in an embodiment” or “in one implementation” or “in an implementation”, as well any other variations, appearing in various places throughout this document are not necessarily all referring to the same embodiment.
Additionally, this document may refer to “obtaining” various pieces of information. Obtaining the information can include one or more of, for example, determining the information, estimating the information, calculating the information, predicting the information, or retrieving the information from memory.
Further, this document may refer to “accessing” various pieces of information. Accessing the information can include one or more of, for example, receiving the information, retrieving the information (for example, from memory), storing the information, moving the information, copying the information, calculating the information, determining the information, predicting the information, or estimating the information.
Additionally, this document may refer to “receiving” various pieces of information. Receiving is, as with “accessing”, intended to be a broad term. Receiving the information can include one or more of, for example, accessing the information, or retrieving the information (for example, from memory). Further, “receiving” is typically involved, in one way or another, during operations such as, for example, storing the information, processing the information, transmitting the information, moving the information, copying the information, erasing the information, calculating the information, determining the information, predicting the information, or estimating the information.
It is to be appreciated that the use of any of the following “/”, “and/or”, and “at least one of”, for example, in the cases of “A/B”, “A and/or B” and “at least one of A and B”, is intended to encompass the selection of the first listed option (A) only, or the selection of the second listed option (B) only, or the selection of both options (A and B). As a further example, in the cases of “A, B, and/or C” and “at least one of A, B, and C”, such phrasing is intended to encompass the selection of the first listed option (A) only, or the selection of the second listed option (B) only, or the selection of the third listed option (C) only, or the selection of the first and the second listed options (A and B) only, or the selection of the first and third listed options (A and C) only, or the selection of the second and third listed options (B and C) only, or the selection of all three options (A and B and C). This may be extended, as is clear to one of ordinary skill in this and related arts, for as many items as are listed.
Also, as used herein, the word “signal” refers to, among other things, indicating something to a corresponding decoder. For example, in certain embodiments the encoder signals a particular one of a plurality of parameters for refinement. In this way, in an embodiment the same parameter is used at both the encoder side and the decoder side. Thus, for example, an encoder can transmit (explicit signaling) a particular parameter to the decoder so that the decoder can use the same particular parameter. Conversely, if the decoder already has the particular parameter as well as others, then signaling can be used without transmitting (implicit signaling) to simply allow the decoder to know and select the particular parameter. By avoiding transmission of any actual functions, a bit savings is realized in various embodiments. It is to be appreciated that signaling can be accomplished in a variety of ways. For example, one or more syntax elements, flags, and so forth are used to signal information to a corresponding decoder in various embodiments. While the preceding relates to the verb form of the word “signal”, the word “signal” can also be used herein as a noun.
As will be evident to one of ordinary skill in the art, implementations can produce a variety of signals formatted to carry information that can be, for example, stored or transmitted. The information can include, for example, instructions for performing a method, or data produced by one of the described implementations. For example, a signal can be formatted to carry the bitstream or signal of a described embodiment. Such a signal can be formatted, for example, as an electromagnetic wave (for example, using a radio frequency portion of spectrum) or as a baseband signal. The formatting can include, for example, encoding a data stream and modulating a carrier with the encoded data stream. The information that the signal carries can be, for example, analog or digital information. The signal can be transmitted over a variety of different wired or wireless links, as is known. The signal can be stored on a processor-readable medium.
Various embodiments have been described. Embodiments may include any of the following features or entities, alone or in any combination, across various different claim categories and types:
Various other generalized, as well as particularized embodiments are also supported and contemplated throughout this disclosure.
Number | Date | Country | Kind |
---|---|---|---|
20305275.8 | Mar 2020 | EP | regional |
Filing Document | Filing Date | Country | Kind |
---|---|---|---|
PCT/EP2021/056300 | 3/12/2021 | WO |