Dynamic task assignment
A system configured with local distributed computing framework that enables available compute, storage, and/or sensor resources to be leveraged across a local network. The framework can create a logical grouping of devices associated with specific functionality and select a single device best suited to perform the functionality for the group. For example, a logical grouping can include devices having desired physical proximity and the framework can select an individual device for each task/function. Thus, the framework can select the device best suited for a task dynamically as the environment and/or context changes, such as when devices connect/disconnect or available processing shifts over time. In addition, the framework enables local resources to be coordinated and/or extended across the local network, as a first device can delegate processing to a second device, receive sensor data from the second device, perform unique functionality enabled by the second device, and/or the like.
1 . A computer-implemented method, the method comprising:
retrieving device data that indicates a plurality of devices associated with a user profile, the device data including (i) a first device identifier and a first network address associated with a first device and (ii) a second device identifier and a second network address associated with a second device;
selecting a subset of the plurality of devices corresponding to a first location, the subset including the first device and the second device;
determining first capability data indicating a first capability of the first device to perform wakeword detection;
determining second capability data indicating a second capability of the first device to perform user identification;
determining third capability data indicating a third capability of the second device to perform the wakeword detection;
determining fourth capability data indicating a fourth capability of the second device to perform the user identification;
selecting, using the first capability data and the third capability data, the first device to perform the wakeword detection over the second device;
selecting, using the second capability data and the fourth capability data, the second device to perform the user identification over the first device;
storing first data that includes a first association between the first device and the wakeword detection and a second association between the second device and the user identification;
sending, to the first device, second data directing the first device to enable the wakeword detection and disable the user identification;
in response to receiving the second data, enabling, by the first device, the wakeword detection and disabling the user identification;
sending, to the second device, third data directing the second device to enable the user identification and disable the wakeword detection; and
in response to receiving the third data, enabling, by the second device, the user identification and disabling the wakeword detection.
2 . The computer-implemented method of claim 1 , further comprising:
determining a first indicator of performance indicating a first quality at which the first device performs the wakeword detection;
determining a second indicator of performance indicating a second quality at which the first device performs the user identification, the second quality corresponding to a first resolution of a first camera associated with the first device;
determining a third indicator of performance indicating a third quality at which the second device performs the wakeword detection;
determining a fourth indicator of performance indicating a fourth quality at which the second device performs the user identification, the fourth quality corresponding to a second resolution of a second camera associated with the second device, the second resolution being higher than the first resolution;
selecting the first device to perform the wakeword detection based on the first capability data, the third capability data, the first indicator, and the third indicator; and
selecting the second device to perform the user identification based on the second capability data, the fourth capability data, the second indicator, and the fourth indicator.
3 . The computer-implemented method of claim 1 , further comprising:
determining that the second device is no longer detected by the plurality of devices;
removing the second device from the subset of the plurality of devices;
determining, using the third capability data, that the first device is most capable of performing the user identification from the subset of the plurality of devices; and
sending, to the first device, fourth data directing the first device to enable the user identification.
4 . The computer-implemented method of claim 1 , further comprising:
determining, using the fourth capability data and fifth capability data indicating a fifth capability of a third device to perform the user identification, that the third device is more capable of performing the user identification than the second device;
determining context data associated with the subset, the context data indicating that the third device has available processing capability;
selecting the third device to perform the user identification using the context data, the second capability data, the fourth capability data, and the fifth capability data;
storing fourth data that includes the first association and a third association between the third device and the user identification;
sending, to the second device, fifth data directing the second device to disable the user identification; and
sending, to the third device, sixth data directing the third device to enable the user identification.
5 . A computer-implemented method, the method comprising:
retrieving device data that indicates a plurality of devices associated with a user profile, the device data including (i) a first device identifier and a first network address associated with a first device and (ii) a second device identifier and a second network address associated with a second device;
selecting a subset of the plurality of devices, the subset including the first device and the second device;
determining first capability data associated with the first device, the first capability data indicating that the first device is capable of performing a first task and a second task;
determining second capability data associated with the second device, the second capability data indicating that the second device is capable of performing the first task and the second task;
selecting the first device to perform the first task using the first capability data, the second capability data, and first context data, the first context data indicating a context associated with the subset of the plurality of devices;
selecting the second device to perform the second task using the first capability data, the second capability data, and the first context data;
storing first data that includes a first association between the first device and the first task and a second association between the second device and the second task;
sending, to the first device, second data directing the first device to enable the first task and disable the second task;
in response to receiving the second data, enabling, by the first device, the first task and disabling the second task;
sending, to the second device, third data directing the second device to enable the second task and disable the first task; and
in response to receiving the third data, enabling, by the second device, the second task and disabling the first task.
6 . The computer-implemented method of claim 5 , further comprising:
determining a first indicator of performance indicating a first quality at which the first device performs the first task;
determining a second indicator of performance indicating a second quality at which the first device performs the second task;
determining a third indicator of performance indicating a third quality at which the second device performs the first task;
determining a fourth indicator of performance indicating a fourth quality at which the second device performs the second task; and
determining the first context data using the first indicator, the second indicator, the third indicator, and the fourth indicator.
7 . The computer-implemented method of claim 5 , further comprising:
determining a first value indicating how frequently the first device is selected to perform the first task;
determining a second value indicating how frequently the first device is selected to perform the second task;
determining a third value indicating how frequently the second device is selected to perform the first task;
determining a fourth value indicating how frequently the second device is selected to perform the second task; and
determining the first context data using the first value, the second value, the third value, and the fourth value.
8 . The computer-implemented method of claim 5 , further comprising:
determining that the second device is no longer detected by the plurality of devices;
removing the second device from the subset of the plurality of devices;
determining, using the first capability data, that the first device is most capable of performing the second task from the subset of the plurality of devices; and
sending, to the first device, fourth data directing the first device to enable the second task.
9 . The computer-implemented method of claim 5 , further comprising:
determining that the second device is currently performing an action;
determining, using the first capability data, that the first device is capable of performing the second task; and
sending, to the first device, fourth data directing the first device to enable the second task.
10 . The computer-implemented method of claim 5 , further comprising:
receiving a request to perform an action associated with the second task;
determining that a device state associated with the second device indicates that the second device is currently unable to perform the action;
determining, using the first capability data, that the first device is capable of performing the second task; and
sending, to the first device, fourth data directing the first device to perform the action.
11 . The computer-implemented method of claim 5 , further comprising:
receiving, from the first device, a request to perform an action;
determining a first number of devices with available processing capability from the subset;
determining, from the first number of devices, a third device configured to perform the action; and
causing the third device to execute the request.
12 . The computer-implemented method of claim 5 , wherein the first context data indicates that a third device was associated with a first processing consumption during a first time range, the method further comprising:
determining second context data, the second context data indicating that the third device is associated with a second processing consumption during a second time range, the second processing consumption lower than the first processing consumption;
selecting the third device to perform the second task using the first capability data, the second capability data, and the second context data;
storing fourth data that includes the first association and a third association between the third device and the second task;
sending, to the second device, fifth data directing the second device to disable the second task; and
sending, to the third device, sixth data directing the third device to enable the second task.
13 . A system comprising:
at least one processor; and
memory including instructions operable to be executed by the at least one processor to cause the system to:
retrieve device data that indicates a plurality of devices associated with a user profile, the device data including (i) a first device identifier and a first network address associated with a first device and (ii) a second device identifier and a second network address associated with a second device
select a subset of the plurality of devices, the subset including the first device and the second device;
determine first capability data associated with the first device, the first capability data indicating that the first device is capable of performing a first task and a second task;
determine second capability data associated with the second device, the second capability data indicating that the second device is capable of performing the first task and the second task;
select the first device to perform the first task using the first capability data, the second capability data, and first context data, the first context data indicating a context associated with the subset of the plurality of devices;
select the second device to perform the second task using the first capability data, the second capability data, and the first context data;
store first data that includes a first association between the first device and the first task and a second association between the second device and the second task;
send, to the first device, second data directing the first device to enable the first task and disable the second task;
in response to receiving the second data, enable, by the first device, the first task and disable the second task;
send, to the second device, third data directing the second device to enable the second task and disable the first task; and
in response to receiving the third data, enable, by the second device, the second task and disable the first task.
14 . The system of claim 13 , wherein the memory further comprises instructions that, when executed by the at least one processor, further cause the system to:
determine a first indicator of performance indicating a first quality at which the first device performs the first task;
determine a second indicator of performance indicating a second quality at which the first device performs the second task;
determine a third indicator of performance indicating a third quality at which the second device performs the first task;
determine a fourth indicator of performance indicating a fourth quality at which the second device performs the second task; and
determine the first context data using the first indicator, the second indicator, the third indicator, and the fourth indicator.
15 . The system of claim 13 , wherein the memory further comprises instructions that, when executed by the at least one processor, further cause the system to:
determine a first value indicating how frequently the first device is selected to perform the first task;
determine a second value indicating how frequently the first device is selected to perform the second task;
determine a third value indicating how frequently the second device is selected to perform the first task;
determine a fourth value indicating how frequently the second device is selected to perform the second task; and
determine the first context data using the first value, the second value, the third value, and the fourth value.
16 . The system of claim 13 , wherein the memory further comprises instructions that, when executed by the at least one processor, further cause the system to:
determine that the second device is no longer detected by the plurality of devices;
remove the second device from the subset of the plurality of devices;
determine, using the first capability data, that the first device is most capable of performing the second task from the subset of the plurality of devices; and
send, to the first device, fourth data directing the first device to enable the second task.
17 . The system of claim 13 , wherein the memory further comprises instructions that, when executed by the at least one processor, further cause the system to:
determine that the second device is currently performing an action;
determine, using the first capability data, that the first device is capable of performing the second task; and
send, to the first device, fourth data directing the first device to enable the second task.
18 . The system of claim 13 , wherein the memory further comprises instructions that, when executed by the at least one processor, further cause the system to:
receive a request to perform an action associated with the second task;
determine that a device state associated with the second device indicates that the second device is currently unable to perform the action;
determine, using the first capability data, that the first device is capable of performing the second task; and
send, to the first device, fourth data directing the first device to perform the action.
19 . The system of claim 13 , wherein the memory further comprises instructions that, when executed by the at least one processor, further cause the system to:
receive, from the first device, a request to perform an action;
determine a first number of devices with available processing capability from the subset;
determine, from the first number of devices, a third device configured to perform the action; and
cause the third device to execute the request.
20 . The system of claim 13 , wherein the first context data indicates that a third device was associated with a first processing consumption during a first time range, and the memory further comprises instructions that, when executed by the at least one processor, further cause the system to:
determine second context data, the second context data indicating that the third device is associated with a second processing consumption during a second time range, the second processing consumption lower than the first processing consumption;
select the third device to perform the second task using the first capability data, the second capability data, and the second context data;
store fourth data that includes the first association and a third association between the third device and the second task;
send, to the second device, fifth data directing the second device to disable the second task; and
send, to the third device, sixth data directing the third device to enable the second task.