GENERATING CANONICAL FORMS FOR TASK-ORIENTED DIALOGUE IN CONVERSATIONAL AI SYSTEMS AND APPLICATIONS

In various examples, techniques for training and using a task-oriented dialogue system are described. Systems and methods are disclosed for determining, using a prompt model(s) and based at least in part on text data, prompt data representing one or more prompts. Additionally, systems and method are disclosed for determining, using a language model(s) and based at least in part on the text data and the prompt data, a canonical form associated with the text data. In some examples, the prompt model(s) is trained to generate the prompt data that causes the language model(s) to output the canonical form. Systems and method are further disclosed for using the canonical form to determine at least an intent associated with the text data. A dialogue manager may then use the intent to perform one or more actions associated with the text data.

BACKGROUND

Task-oriented dialogue systems are used in many different applications, such as to schedule travel plans (e.g., booking arrangements for transportation and accommodations etc.), plan activities (e.g., making reservations, etc.), communicate with others (e.g., make phone calls, start video conferences, etc.), shop for items (e.g., purchase items from online marketplaces, etc.), and/or so forth. Some task-oriented dialogue systems operate by receiving text—such as text including one or more letters, words, numbers, and/or symbols—that is generated using an input device and/or generated as a transcript of spoken language. In some circumstances, the text may indicate a request to perform a task, such as to schedule a plane flight from an origination location to a destination location. The task-oriented dialogue systems then process the text using a large language model that is configured to output data (e.g., a canonical representation) that a dialogue manger is able to interpret. For instance, the dialogue manager may process the data in order to determine one or more actions for performing the requested task.

Because these task-oriented dialogue systems have such a wide range of applications and domains, creating conversational models may be challenging for developers. For instance, for existing task-oriented dialogue systems, such as DialogFlow and RASA, developers must define intents (e.g., actions) and slots (e.g., parameters) that the task-oriented dialogue systems will accept at each point in the conversational flow. However, distilling the conversational design into discrete intents and slots is often unintuitive for developers and may only express limited meaning to utterances. Moreover, these task-oriented dialogue systems may require either the creation of detailed rule-based grammar or a collection of an extensive dataset (e.g., thousands of user utterances) to train the models. As a result, it is often difficult for developers to easily or efficiently create high-quality, user-friendly task-oriented conversational interfaces.

Some solutions attempt to simplify the process for developers to train the task-oriented dialogue systems by requesting only a small amount of example utterances, such as five to ten utterances per intent. This small amount of example utterances is then used to fine-tune the models of the task-oriented dialogue systems for specific intents. However, while these proposed solutions make it easier for the developers, the proposed solutions generally do not produce high-quality models. For example, if these task-oriented dialogue systems receive text associated with a novel intent for which the models were not trained, the task-oriented dialogue systems may be unable to process the text in order to identify the novel intent. As another example, if these task-oriented dialogue systems receive text associated with a trained intent, but the text represents an utterance that the task-oriented dialogue systems did not receive during training for the intent, which can be quite likely since the task-oriented dialogue systems may be trained using only a handful of utterances—the task-oriented dialogue systems may again be unable to process the text in order to identify the intent.

SUMMARY

Embodiments of the present disclosure relate to techniques for training and deploying task-oriented dialogue systems. Systems and methods are disclosed that, in some embodiments, use a language model(s) to translate text into a canonical form, where the canonical form may include a constrained semantic representation of the natural language of the text. For instance, to translate the text, the systems and methods may include a prompt model(s) that initially processes the text in order to generate a prompt(s) (e.g., a learned virtual prompt(s), a virtual prompt token(s), etc.). The systems and methods then input both the text and the prompt(s) into a language model(s), such as a large language model(s), that is configured to process the text along with the prompt(s) in order to generate and output the canonical form associated with the text. In some embodiments, and as described herein, the systems and methods are trained to output generalized canonical forms for various intents. The systems and methods, in some embodiments, may then provide at least the canonical form and/or a parameter(s) for a slot(s) to a dialogue manager that is able to process the canonical form and/or the slot(s) and determine one or more actions for performing the requested task(s). As such, and in some embodiments, the prompt model(s) is trained to generate a prompt(s) that causes the language model(s) to output a specific canonical form that the dialogue manager is able to interpret to perform the task(s).

In contrast to conventional systems, such as those described above that require classifications with discrete intent labels, one or more embodiments of the present disclosure are able to translate text into a generalized canonical form that the dialogue manager is able to interpret. For instance, since the canonical form represents a sequence of text (e.g., a sequence of words), even if one or more terms in the canonical form were not presented during training, the current systems may still be able to interpret novel (e.g., previously unencountered) intents by generalizing in a manner consistent with the training of the model(s). For example, if the current systems were trained for a specific intent, such as scheduling plane reservations, the current systems may still be able to interpret text that requests a novel intent, such as scheduling a cruise reservation. This is because the current systems, in some embodiments, may still output a canonical form, such as “booking a cruise reservation,” which is similar to a canonical form for which the current systems were trained, such as “booking a plane reservation.”

Additionally, in contrast to conventional systems that train a large language model to generate canonical forms, the current systems train the prompt model(s) for an intent(s) and/or a task(s) without the need to also train the language model(s) that generates the canonical forms. In some examples, the prompt model(s) may be much smaller than the language model(s). For example, the prompt model(s) may include a first number of parameters, such as one million parameters (and/or any other number of parameters), while the language model(s) includes a second, larger number of parameters, such as one billion parameters (and/or any other number of parameters). As such, by training the prompt model(s) rather than the language model(s), less training data, compute resources, and time may be used (e.g., five to ten utterances per intent) for training while still providing high-quality results.

DETAILED DESCRIPTION

Systems and methods are disclosed related to techniques for training and using task-oriented dialogue systems. For instance, a system(s) may receive and/or generate text data representing one or more letters, words, numbers, symbols, and/or the like. In some examples, the text data may represent one or more words input by a user into the system(s) and/or another computing device. In some examples, the text data may represent one or more words associated with a transcript and/or diarization of a spoken utterance from the user. In either of the examples, the text data may represent a task being requested by the user, such as to book a plane flight from an origination location to a destination location. The system(s) may then process the text data in order to identify an intent associated with the requested task and information for a slot(s) of the intent. As described herein, an intent may include, but is not limited to, booking a reservation (e.g., booking a plane flight, booking a hotel, booking a dinner reservation, etc.), scheduling an event (e.g., scheduling a birthday party, scheduling a sporting match, etc.), starting a communication (making a phone call, starting a video conference, etc.), creating a list (e.g., creating a shopping list, creating a to-do list, etc.), acquiring an item and/or service, and/or any other intent. Additionally, the slot(s) may provide additional information (e.g., parameters) for performing the intent. For example, if the text data represents a user utterance such as “Schedule a flight from Spokane to Atlanta on July 25,” then the intent may include “booking a flight” and the slots may include an “origination location” of Spokane, a “destination location” of Atlanta, and a “date” of July 25.

To process the text data, the system(s) may include a prompt model(s) that is configured to process the text data in order to generate prompt data associated with the text data. The prompt data may represent one or more virtual prompts and/or one or more prompt tokens. For example, the prompt data may represent one or more vectors, where each vector represents a respective word(s) identified by the prompt model(s) when processing the text data. The system(s) may also include a language model(s), such as a large language model(s), that is configured to process the text data along with the prompt data in order to generate a canonical form associated with the text. As described herein, the canonical form may include a constrained semantic representation of the natural language of the text. For instance, and using the example above, the canonical form of the text may include a representation such as “booking a plane flight.” In some examples, the canonical form is further extended with conditional statements, nested semantics, and/or other complex representations. The system may then input this canonical form and/or a parameter(s) associated with a slot(s) (and, in some examples, additional data) into a dialogue manager that is able to process the canonical form and/or the parameter(s) and determine one or more actions for performing the requested task.

In some examples, the system is trained such that the weights of the parameters of the prompt model(s) are updated without updating the weights of the parameters of the language model(s). For instance, training data may include text data representing text (e.g., a sequence(s) of letters, words, numbers, and/or symbols) along with ground truth data representing a canonical form(s) associated with the text. To train the system, the system may process the text data using one or more of the processes described herein in order to output a canonical form(s) associated with the text. A training engine may then determine one or more errors based on a difference(s) between the canonical form(s) represented by the ground truth data and the canonical form(s) output by the system. Additionally, the system may update the weight(s) and/or bias(es) of the parameter(s) of the prompt model(s) based on the error(s). By training the system using such processes, the prompt model(s) may be configured to generate prompt data that causes the language model(s) to output a specific canonical form(s) that the dialogue manager is able to quickly and accurately interpret.

The systems and methods described herein may be used for a variety of purposes, by way of example and without limitation, in systems associated with machine control, machine locomotion, machine driving, synthetic data generation, model training, perception, augmented reality, virtual reality, mixed reality, robotics, security and surveillance, simulation and digital twinning, autonomous or semi-autonomous machine applications, real-time streaming, virtual reality, mixed reality, or augmented reality, deep learning, environment simulation, data center processing, conversational AI, light transport simulation (e.g., ray-tracing, path tracing, etc.), collaborative content creation for 3D assets, cloud computing and/or any other suitable applications.

Disclosed embodiments may be comprised in a variety of different systems such as automotive systems (e.g., an in-cabin, infotainment, and/or entertainment system of an autonomous or semi-autonomous machine), systems implemented using a robot, aerial systems, medial systems, boating systems, smart area monitoring systems, systems for performing deep learning operations, systems for performing simulation operations, systems implemented using an edge device, systems incorporating one or more virtual machines (VMs), systems for performing synthetic data generation operations, systems implemented at least partially in a data center, systems for performing conversational AI operations, systems for performing light transport simulation, systems for performing collaborative content creation for 3D assets, systems implemented at least partially using cloud computing resources, and/or other types of systems.

The process100may include the language system102receiving text data104. As described herein, in some examples, the text data104may represent one or more letters, words, symbols, and/or numbers input by a user into a device (e.g., a computing device900) and/or may represent one or more letters, words, symbols, and/or numbers from a transcript or diarization generated based on a spoken utterance by the user. For example, the user may provide audible input (e.g., the user utterance) into a device, such as a mobile phone, a table, a computer, a television, a voice assistant, a kiosk, and/or any other type of device (e.g., the computing device900). The audible input may then undergo one or more processing or pre-processing steps, such as through one or more natural language processing (NLP) systems (which may be included as part of the language system102or separate from the language system102) that evaluate the audible input in order to extract one or more features from the audible input. Furthermore, in some examples, an input processor may include a text processing system for preprocessing (e.g., tokenization, removal of punctuation, removal of stop words, stemming, lemmatization, text normalization, inverse text normalization, etc.), feature extraction, and/or the like. The device may then generate the transcript or diarization that represents the audible input, where the text data104represents the transcript or diarization.

The process100may include a prompt model(s)106that processes the text data104in order to generate prompt data108. As described herein, in some examples, the prompt data108may represent one or more virtual prompts and/or one or more prompt tokens. For a first example, the prompt data108may represent one or more vectors, where each vector represents a word(s) identified by the prompt model(s)106when processing the text data104. For a second example, the prompt data108may again represent one or more vectors, but where one or more of the vector(s) do not represent an actual word(s). As will be described in more detail below, the prompt model(s)106may be trained in order to output specific prompt data108based on the one or more words represented by the text data104. For example, the prompt model(s)106may be trained to output a specific vector(s) (or a vector within a threshold similarity to the specific vector(s)) each time the prompt model(s)106receives a specific or similar to a specific set of one or more words.

In some examples, the prompt model(s)106may be configured to generate an output data that may be used—with or without pre-processing—as input data110for a language model(s)112of the language system102. For example, the input data110may include both the original text data104input into the prompt model(s)106and the prompt data108. In other examples, the prompt model(s)106may be configured to output the prompt data108, where the language system102then generates the input data110by at least associating the text data104with the prompt data108. In some examples, and as also illustrated in the example ofFIG.1, both the text data104and the prompt data108are provided as part of the input data110for the language model(s)112. However, in other examples, the prompt data108may be provided to the language model(s)112without the text data104.

The process100may include the language model(s)112processing the input data110and, based on the processing, outputting a canonical form114associated with the text data104. In some examples, the language model(s)112may include a large language model(s), such as a frozen large language model(s). For instance, the language model(s)112may be trained on a large amount of data. In some examples, the language model(s)112may include any type of language model(s), such as a generative language model(s) (e.g., a Generative Pretrained Transformer (GPT), etc.), a representation language model(s) (e.g., Bidirectional Encoder Representations from Transformers (BERT), etc.), and/or the like. As described herein, the canonical form114may include a constrained semantic representation of the natural language of the text represented by the text data104. In some examples, and as discussed in more detail with regard to the training of the language system102, the language system102may be trained to output canonical forms114that include a generic structure.

For instance,FIG.2Aillustrates a first example of the language system102outputting canonical forms114with similar structure, in accordance with some embodiments of the present disclosure. As shown by the example ofFIG.2A, if first text data202(1) represents a first user utterance “check the amount of money in my bank account,” then a canonical form204(1) associated with the first text data202(1) may include “check balance in account.” Additionally, if second text data202(2) represents a second user utterance “check how much money is in my bank account,” then a canonical form204(2) associated with the second text data202(1) may also include “check balance in account.” As such, even though the words within the second text data202(2) differ slightly from the words within the first text data202(1), the canonical form204(1) for the first text data202(1) matches the canonical form204(2) for the second text data202(2). This may be because, in some examples, the language system102is trained to output the canonical forms204(1)-(2) using a similar structure.

Additionally,FIG.2Billustrates a second example of the language system102outputting canonical forms114with similar structure, in accordance with some embodiments of the present disclosure. As shown by the example ofFIG.2B, if first text data206(1) represents a first user utterance “buy tickets for a bus journey,” then a canonical form208(1) associated with the first text data206(1) may include “buy bus tickets.” Additionally, if second text data206(2) represents a second user utterance “buy plane ticket for a trip from Spokane to Atlanta on July 25,” then a canonical form208(2) associated with the second text data206(2) may include “buy plane tickets.” As such, even though the first text data206(1) is associated with the first utterance about buying a bus ticket (e.g., a first intent) and the second text data206(2) is associated with the second utterance for buying a plane ticket (e.g., a second, different intent), the canonical forms208(1)-(2) include a similar structure. More specifically, both canonical forms208(1)-(2) start with the word “buy,” end with the word “ticket,” and have a middle word representing the type of ticket (e.g., based on the intent). Similar structures may be used for other canonical forms114, such as canonical forms114that are associated with similar intents (e.g., booking and/or scheduling an event).

For example, a canonical form114associated with an intent for booking a cruise may include “buy cruise tickets,” a canonical form114associated with an intent for buying baseball tickets may include “buy baseball tickets,” a canonical form114associated with an intent for buying movie tickets may include “buy movie tickets,” a canonical form114associated with an intent for buying carnival tickets may include “buy carnival tickets,” and/or so forth. In some examples, by using canonical forms114with similar structure, the language system102is able to provide good results even for intents that the language system102was not specifically trained to process (e.g., intents that are new or novel to the language system102).

For example, and using the example ofFIG.2B, the language system102may be trained for a first intent “buy plane tickets,” but not a second intent “buy bus tickets.” As such, the language model(s)102may be trained to output the canonical form208(2) “buy plane tickets” when receiving the text data206(2) representing the utterance “buy plane tickets for a trip from Spokane to Atlanta on July 25” (and/or some other utterance associated with booking plane tickets). If the language model(s)102then receives the text data206(2) representing the utterance “buy tickets for a bus journey,” the language model(s)102may still be able to generate the canonical form208(1) “buy bus tickets” even though the language model(s)102was not trained for the second intent. This is because the structure of the canonical form208(1) is similar to the structure of the canonical form208(2), except for the ticket type in the middle of the representation. However, the language model(s)102may still be able to determine that ticket type by processing the text data206(1) and/or the prompt data108that the prompt model(s)106generates for the text data206(1).

As described herein, in some examples, the language system102(e.g., the language model(s)112) may be configured to extend the canonical form(s)114with a conditional statement(s), a nested semantic(s), and/or another more complex representation(s). For instance, and using the example ofFIG.2B, the language system102(e.g., the language model(s)112) may extend the canonical form208(2) to include one or more words, such as “for a trip,” “roundtrip,” “one way trip,” and/or so forth. In some examples, the language model(s)102learns the conditional statement(s), the nested semantic(s), and/or the other complex representation(s) during training.

In some examples, the language system102(e.g., the language model(s)112and/or another component of the language system102) may use the output from the language model(s)112to determine a final canonical form for the text data104. For instance,FIG.3illustrates using vectors to determine a canonical form associated with text, in accordance with some embodiments of the present disclosure. As shown, the language system102(e.g., the language model(s)112) may determine vectors302(1)-(N) (also referred to singularly as “vector302” or in plural as “vectors302”) for words304(1)-(N) (also referred to singularly as “word304” or in plural as “words304”). In some examples, the language model(s)112may initially determine and/or output the vectors302based on processing the input data110, where each vector302is associated with a word(s)304. In some examples, the language model(s)112may initially generate and/or output the word(s)304(e.g., an initial canonical form) based on processing the input data110. In such examples, the language system102(e.g., the language model(s)112) may use a mapping to determine the vectors302for the word(s)304.

In either example, the language system102(e.g., the language model(s)112) may then use the vectors302to determine a final canonical form. For example, the language system102(e.g., the language model(s)112) may use the vectors302to determine a final vector306associated with the word(s)304. In some examples, the language system102(e.g., the language model(s)112) may determine the final vector306by taking the average of the vectors302(e.g., adding the vectors302and then dividing by the number of vectors302) In some examples, the language system102(e.g., the language model(s)112) may determine the final vector306using one or more additional and/or alternative techniques, such as the mean of the vectors302, the mode of the vectors302, the median of the vectors302, the sum of the vectors302, and/or so forth. In any of the examples, the final vector306may correspond to a sentence vector that represents the meaning of the sentence associated with the word(s)304.

The language system102(e.g., the language model(s)112) may then use a canonical form set308to determine the final canonical form. As shown by the example ofFIG.3, the canonical form set308associates (e.g., maps) vectors310(1)-(O) (also referred to singularly as “vector310” or in plural as “vectors310”) with canonical forms312(1)-(O) (also referred to singularly as “canonical form312” or in plural as “canonical forms312”). To use the canonical form set308, the language system102(e.g., the language model(s)112) may compare the final vector306to the vectors310in order to identify a vector310that matches the final vector306and/or a vector310that is the closest match to the final vector306. For instance, and in the example ofFIG.3, the language system102(e.g., the language model(s)112) may determine that the vector310(3) is the closest match vector310to the final vector306. The language system102(e.g., the language model(s)112) may then use the vector310(3) to determine the final canonical form. For example, since the vector310(3) is associated with (e.g., mapped to) the canonical form312(3), then the language system102(e.g., the language model(s)112) may select the canonical form312(3).

In some examples, by using such a process to identify the final canonical form312(3), the language system102(e.g., the language model(s)112) is able to output the words304and/or the vectors302in any order and the language system102(e.g., the language model(s)112) is still able to determine the final canonical form312(3) using the final vector306. Additionally, in some examples, by using such a process, the language system102is able to provide a canonical form(s) for an intent(s) that the language system102has not been trained to identify.

For instance, and using the example ofFIG.2B, if the language system102was trained to identify an intent associated with the buying plane tickets, but the language system102receives the text data206(1) associated with the request to buy a bus ticket, then the language system102may still be able to generate the canonical form208(1). This is because the language system102(e.g., the language model(s)112) may still output words and/or vectors for the text data206(1) that are similar to the words and/or vectors that the language system102(e.g., the language model(s)112) would output for the text data206(2). As such, and using the process ofFIG.3, the language system102(e.g., the language model(s)112) may determine a canonical form for the text data206(1) that is similar to the canonical form208(2) for the text data206(2) (e.g., include at least “buy” and “tickets”). The language system102(e.g., the language model(s)112) may also be configured to extend the canonical form with conditional statements and/or nested semantics in order to generate the canonical form208(1) for the text data206(1).

For example, the language system102(e.g., the language model(s)112) may determine that the text data206(1) represents the word “bus.” As such, the language system102(e.g., the language model(s)112) may generate the canonical form208(1) by replacing the word “plane” within the canonical form208(2) that the language system102(e.g., the language model(s)112) selected with the word “bus.” This way, the language system102(e.g., the language model(s)112) is able to use the similar structures for the canonical forms114in order to generate canonical forms for intents that the language system102(e.g., the language model(s)112) has not been trained to identify.

While the example ofFIG.3illustrates a single vector302for each word304, in other examples, each word304may be associated with one or more vectors302. For example, a single word304may be associated with two or more vectors302that together represent the word304. Additionally, in some examples, a vector302output by the language model(s)112may not be associated with an actual word304—e.g., but instead may be associated with two or more words, or parts of words, such as phonemes or letters.

Additionally, while the example ofFIG.3describes the language model(s)112as determining the final vector306associated with the words304, in other examples, another model(s) may be configured to determine the final vector306. For example, the words304may be input to the other model(s) that is trained to process the words304and output the final vector306associated with the words306.

Referring back toFIG.1, a canonical model(s)116may process input data118, which includes the canonical form114and/or the text data104, and output data120for processing by a dialogue manager122. While the example ofFIG.1illustrates the canonical model(s)116as being separate from the language model(s)112, in other examples, the canonical model(s)116may be part of the language model(s)112.

To generate the output data120, the canonical model(1)116may initially process the canonical form114to determine an intent of the text data104. The canonical model(s)116and/or the language model(s)112may also determine one or more parameters for one or more slots associated with the intent. In some examples, the canonical model(s)116and/or the language model(s)112may determine the parameter(s) based on further analyzing the canonical form114, the text data104, and/or the prompt data108. In some examples, the canonical model(s)116may determine the parameter(s) based on receiving the parameter(s) from the language model(s)112(e.g., such as when the language model(s)112determine the parameter(s) using the text data104and/or the prompt data108). As described in more detail here, the language model(s)112and/or the canonical model(s)116may determine the parameter(s) for the slot(s) using similar processes that the language model(s)112uses to determine the canonical form(s)114.

For instance,FIG.4illustrates the canonical model(s)116using the canonical form208(2) (and additional data) to determine an intent and slots associated with the intent, in accordance with some embodiments of the present disclosure. As shown, the canonical model(s)116may receive, as input, the canonical form208(2) “buy plane tickets” that is associated with the text data206(2) “buy plane tickets for a trip from Spokane to Atlanta on July 25.” The canonical model(s)116may then process the canonical form208(2) and output data402(which may include, and/or represent, the output data120″) that includes an intent404associated with the text data206(2). In the example ofFIG.4, the intent404includes “BuyPlaneTickets.” However, in other examples, the intent404may include one or more words, such as another canonical representation.

In some examples, the canonical model(s)116may also determine slots406(1)-(3) (also referred to singularly as “slot406” or in plural as “slots406”) associated with the intent404. As shown, the first slot406(1) associated with the intent404includes “Spokane,” which may include the origination location of the trip. The second slot406(2) associated with the intent404includes “Atlanta,” which may include the destination location of the trip. Finally, the third slot406(3) associated with the intent404includes “July 25,” which may include the date of the trip. While the example ofFIG.4illustrates the intent404being associated with three slots406, in other examples, the intent404may be associated with any number of slots406. For example, the intent404may be associated with more than the three slots406, such as a fourth slot associated with a time for the trip. In such an example, since the text data206(2) did not indicate the time, the canonical model(s)116may cause the fourth slot to remain empty (e.g., not provide information for the fourth slot).

In the example ofFIG.4, the canonical model(s)116may determine the slots406using additional data408. In some examples, the additional data408may include the text data406(2) and/or the prompt data108associated with the text data406(2). For example, the canonical model(s)116may process the text data206(2) and/or the prompt data108in order to determine the information for each of the slots406. Additionally, or alternatively, in some examples, the additional data408may include data received from another component, such as the language model(s)112. For example, the language model(s)112may process the text data206(2) and/or the prompt data108in order to determine the information for each of the slots406. The language model(s)112may then send, to the canonical model(s)116, the additional data408that represents the information for the slots406. Using the additional data408, the canonical model(s)116may input the information into the correct slots406.

In some examples, the additional data408may indicate the slots406that the canonical model(s)116and/or the language model(s)112are to determine for the intent404. The slots406may include, but are not limited to, one or more required slots406, one or more optional slots406, and/or one or more different types of slots. As described herein, a required slot406may include a slot406for which information is required to perform an action associated with the intent404(which is described in more detail with respect to a dialogue manager120. Additionally, an optional slot406may include a slot406for which information is optional to perform the action associated with the intent404. For instance, and using the example above, the slots406may include required slots406since the dialogue manager120is unable to perform the action associated with buying a plane ticket without the origination location, the destination location, and the date. However, an optional slot406associated with the intent404may include a time of day for the trip. This is because the dialogue manager120will still be able to perform the action without the information about the time of day.

In some examples, the language model112and/or the canonical model(s)116may be trained to use natural language for slots, similar to the canonical form(s)114. For example, the language model(s)112and/or the canonical model(s)116may be trained to use the prompt data108and the text data104to determine the slots406associated with the intent404. In such examples, using the natural language may also improve the accuracy of the language system102and/or the canonical model(s)116, such as when the language system102receives text data104associated with a novel intent and/or when the language system102receives text data104associated with a trained intent, but which represents a novel slot(s) for which the language system102was not trained.

For a first example, if the language system102was trained to identify a first intent, such as “buying plane tickets,” the language system102may still receive text data104associated with a second, untrained intent, such as “buying train tickets.” Performing the processes described herein, the language system102may be able to generate an intent (e.g., which may include a canonical form, such as a canonical form114) associated with the text data104, such as “buying a train ticket.” Additionally, the language system102may use one or more of the slot(s) associated with the first intent for the second intent. For instance, if the first intent is associated with the slots “origination location,” “destination location,” and “date,” the language system102may use similar slots for the second intent. This is because the slots are associated with natural language and may be used by many intents, such as intents that are associated with booking an activity (e.g., booking a plane ticket, booking a cab, booking a train ticket, booking a cruise, etc.).

For a second example, the language system102may have been trained to identify first slots for a first intent and second slots for a second intent. For instance, if the first intent is again associated with “booking plane tickets,” then the first slots may include “origination location,” “destination location,” and “date.” Additionally, if the second intent is associated with “booking train tickets,” then the second slots may include “origination location,” “destination location,” “date,” and “time.” As such, if the language system102receives text data104representing text that includes “buy plane tickets from Spokane to Atlanta on July 25 at 8:00,” the language system102may determine the information for the slots associated with the first intent as well as the additional slot associated with the second intent. For instance, the language system102may determine information that includes “Spokane” for the origination location, “Atlanta” for the destination location,” “July 25” for the date, and “8:00” for the time.

In some examples, the language system102is able to learn this new slot for the first intent since the slots for the intents use natural language. For instance, the language system102may be able to process the text data104(and/or other data, such as the prompt data108) to easily identify the “date” represented by the text data104(and/or the other data). In other words, the language system102may continue to learn new, relevant slots for an intent using or more slots for another intent(s) (e.g., another similar intent(s)).

Referring back toFIG.1, the process100may include the dialogue manager122processing the output data120in order to perform an action(s) associated with the text data104. For instance, the dialogue manager122may use the intent and/or the slot(s) as represented by the output data120to determine the action(s) to perform. In some examples, the action(s) may include a response for a system to take based on the intent and/or the slot(s). For instance, and using the example ofFIG.4, the action may include booking a plane ticket from Spokane to Atlanta on July 25. In some examples, the action(s) may include generating a response to provide to a user. For instance, and again using the example ofFIG.4, if the dialogue manager122determines that the time is needed to perform the intent404, then the dialogue manager122may generate a response that includes “What time would you like when booking your trip” for the user.

As described herein, the prompt model(s)106may be trained to generate prompt data108that causes the language model(s)112to output a specific canonical form(s)114. For instance,FIG.5is a data flow diagram illustrating a process500for training the prompt model(s)106, in accordance with some embodiments of the present disclosure. In the example ofFIG.5, the canonical model(s)112may be included as part of the language model(s)112.

As shown, the prompt model(s)106may be trained using text data502(e.g., training text data). The text data502used for training may represent text, such as various phrases, sentences, transcripts, and/or other groupings of one or more words, letter, symbols, and/or numbers. The prompt model(s)106may also be trained using ground truth data504that corresponds to the text data502. As shown, the ground truth data504may include a canonical form(s)506and/or a slot(s)508for each group of one or more words represented by the text data502. In some examples, the ground truth data504may be synthetically produced (e.g., generated from computer models), real produced (e.g., designed and produced from real-world data), machine-automated, human generated, and/or a combination thereof.

For instance,FIG.6illustrates examples of the text data502and the ground truth data504for training the prompt model(s)106, in accordance with some embodiments of the present disclosure. In the example ofFIG.6, a developer and/or other type of user may be training the prompt model(s)106based on a specific intent, such as “CheckBalance.” As such, text data602(1)-(6) (which may represent, and/or include, the text data502) (which may also be referred to “text data602”) represents transcripts of various user utterances associated with that intent. For example, the first text data602(1) includes “check the amount of money in my bank account,” the second text data602(2) includes “check how much money is in my bank account,” the third text data602(3) includes “check my account balance,” the fourth text data602(4) includes “do I have money in my account,” the fifth text data602(5) includes “please check my account balance,” and the sixth text data602(6) includes “can you check my account balance.”

Each instance of the text data602is also associated with a respective canonical form604(1)-(6) (which may represent, and/or include, the canonical form(s)506) (which may also be referred to singularly as “canonical form604” or in plural as “canonical forms604”). As shown by the example ofFIG.6, each of the canonical forms604includes “check balance in account.” In some examples, the canonical form604may include “check balance in account” since the dialogue manager122is able to accurately identify the intent “CheckBalance” using such a canonical form604. As such, the developer and/or other user may be training the prompt model(s)106to generate specific prompt data508that the language model(s)112then uses to output the canonical form604“check balance in account.”

For instance, and referring back toFIG.5, the prompt model(s)106may perform one or more of the processes described herein to process the text data502and output prompt data510. The language model(s)112may then perform one or more of the processes described herein to process input data512, which includes the text data502and the prompt data510, and output data514that represents a canonical form(s)516and/or a slot(s)518associated with the text data502. A training engine520may use one or more loss functions that measure loss (e.g., error) in the canonical form(s)516and/or the slot(s)518as compared to the ground truth data504. In some examples, different outputs514may have different loss functions. For example, the canonical form(s)516may have a first loss function and the slot(s)518may have a second loss function. In some examples, the loss functions may be combined to form a total loss, and the total loss may be used to train (e.g., update the parameters of) the prompt model(s)106. In any example, backward pass computations may be performed to recursively compute gradients of the loss function(s) with respect to training parameters. In some examples, weight and biases of the prompt model(s)106may be used to compute these gradients.

While the examples ofFIGS.5and6describe training the prompt model(s)106using six instances of text data602, in other examples, the prompt model(s)106may be trained using any number of instances of text data602(e.g., one instance, five instances, ten instances, twenty instances, etc.). Additionally, while the examples ofFIGS.5and6describe training the prompt model(s)106in order for the language system102to output the same canonical form604, in other examples, the prompt model(s)106may be trained such that the language system102outputs one or more other canonical forms604that the dialogue manager116is also able to process to identify the same intent. For example, the prompt model(s)106may be trained such that some text data602causes the language system102to output another canonical form, which may include “check amount in account.” In such an example, dialogue manager116may also process to this other canonical form and identify the intent “CheckBalance.”

Furthermore, while the examples ofFIGS.5and6describe training the prompt model(s)106for a single intent, in other examples, similar processes may be used to train the prompt model(s)106for one or more other intents. For example, the prompt model(s)106may also be trained to cause the language model(s)112to output a canonical form(s) associated with a second intent, a canonical form(s) associated with a third intent, a canonical form(s) associated with a fourth intent, and/or so forth.

Now referring toFIGS.7and8, each block of methods700and800, described herein, comprises a computing process that may be performed using any combination of hardware, firmware, and/or software. For instance, various functions may be carried out by a processor executing instructions stored in memory. The methods700and800may also be embodied as computer-usable instructions stored on computer storage media. The methods700and800may be provided by a standalone application, a service or hosted service (standalone or in combination with another hosted service), or a plug-in to another product, to name a few. In addition, methods700and800are described, by way of example, with respect to the system ofFIGS.1and5, respectively. However, the methods700and800may additionally or alternatively be executed by any one system, or any combination of systems, including, but not limited to, those described herein.

FIG.7is a flow diagram showing the method700for using the language system102, in accordance with some embodiment of the present disclosure. The method700, at block B702, may include determining, using a prompt model(s) and based at least in part on text data representing text, prompt data representing a prompt. For instance, the prompt model(s)106of the language system102may process the text data104in order to output the prompt data108. As described herein, the text data104may represent input text, a transcript of a user utterance, and/or any other type of text. Additionally, in some examples, the prompt data108may represent one or more virtual prompts and/or one or more prompt tokens. For example, the prompt data108may represent one or more vectors, where each vector represents a word(s) (or portion thereof) identified by the prompt model(s)106when processing the text data104.

The method700, at block B704, may include inputting the text data and the prompt data into a language model(s). For instance, the text data104and the prompt data108may be input into the language model(s)112. In some examples, the prompt model(s)106outputs both the text data104and the prompt data108to the language model(s)112of the language system102. In some examples, the prompt model(s)106outputs the prompt data108to the language model(s)112while the language system102also inputs the text data104into the language model(s)112. As described herein, the language model(s)112may include a large language model(s).

The method700, at block B706, may include determining, using the language model(s) and based at least in part on the text data and the prompt data, a canonical form associated with the text. For instance, the language model(s)112may process the text data104and the prompt data108in order to generate an outputin the canonical form114. As described herein, the canonical form114may include a constrained semantic representation of the natural language of the text represented by the text data104. In some examples, to determine the canonical form114, a vector(s) is determined for one or more words determined by the language model(s)112. A final vector is then determined based on the vector(s), where the final vector corresponds to a sentence vector that represents the meaning of the sentence associated with the word(s). The final vector is then used to determine the canonical form114, such as by finding the closest match to another vector associated with the canonical form114.

The method700, at block B708, may include determining an intent associated with the canonical form. For instance, the canonical model(s)116may process the canonical form114and determine the intent associated with the text data104. In some examples, the canonical model(s)116and/or the language model(s)112may further determine information (e.g., one or more parameters) for one or more slots associated with the intent. The language system102may then input the intent and the slot(s) into the dialogue manager122that process the intent and the slot(s). Based on the processing, the dialogue manager122may determine one or more actions to perform.

FIG.8is a flow diagram showing the method800for training the language system102, in accordance with some embodiment of the present disclosure. The method800, at block B802, may include determining, using a prompt model(s) and based at least in part on training text data representing text, prompt data representing one or more prompts. For instance, the prompt model(s)106of the language system102may process the text data502in order to output the prompt data510. As described herein, the text data502may represent text, such as various letters, words, symbols, numbers, phrases, sentences, transcripts, and/or other groupings. In some examples, the text data502may include one or more groupings of words associated with a single intent. In some examples, the text data502may include one or more groupings of words associated with more than one intent.

The method800, at block B804, may include inputting the text data and the prompt data into a language model(s). For instance, the text data104and the prompt data108may be input into the language model(s)112of the language system102. In some examples, the prompt model(s)106outputs both the text data104and the prompt data108to the language model(s)112. In some examples, the prompt model(s)106outputs the prompt data108to the language model(s)112while the language system102also inputs the text data104into the language model(s)112. As described herein, the language model(s)112may include a large language model(s).

The method800, at block B806, may include determining, using the language model(s) and based at least in part on the text data and the prompt data, one or more canonical forms associated with the text. For instance, the language model(s)112may process the text data502and the prompt data510in order to generate the canonical form(s)516. As described herein, a canonical form516may include a constrained semantic representation of the natural language of the text represented by the text data502. For example, the canonical form516may be similar to the canonical form114generated by the language model(s)112.

However, in some examples, to determine a canonical form, a vector(s) is determined for each word determined by the language model(s)112. A final vector is then determined based on the vector(s), wherein the final vector corresponds to a sentence vector that represents the meaning of the sentence associated with the word(s). The final vector is then used to determine the canonical form516, such as by finding the closest match to another vector associated with the canonical form516.

The method800, at block B808, may include updating one or more parameters associated with the prompt model(s) based at least in part on the one or more canonical forms and ground truth data. For instance, the training engine516may determine one or more errors based on the canonical form(s)512and the ground truth data504. The training engine516may then update the parameter(s) of the prompt model(s)106based on the error(s). By updating the parameter(s), the prompt model(s)106may output prompt data508that causes the language model(s)112to more accurately determine the correct canonical form(s)512for an intent(s).

Example Computing Device

FIG.9is a block diagram of an example computing device(s)900suitable for use in implementing some embodiments of the present disclosure. Computing device900may include an interconnect system902that directly or indirectly couples the following devices: memory904, one or more central processing units (CPUs)906, one or more graphics processing units (GPUs)908, a communication interface910, input/output (I/O) ports912, input/output components914, a power supply916, one or more presentation components918(e.g., display(s)), and one or more logic units920. In at least one embodiment, the computing device(s)900may comprise one or more virtual machines (VMs), and/or any of the components thereof may comprise virtual components (e.g., virtual hardware components). For non-limiting examples, one or more of the GPUs908may comprise one or more vGPUs, one or more of the CPUs906may comprise one or more vCPUs, and/or one or more of the logic units920may comprise one or more virtual logic units. As such, a computing device(s)900may include discrete components (e.g., a full GPU dedicated to the computing device900), virtual components (e.g., a portion of a GPU dedicated to the computing device900), or a combination thereof.

Although the various blocks ofFIG.9are shown as connected via the interconnect system902with lines, this is not intended to be limiting and is for clarity only. For example, in some embodiments, a presentation component918, such as a display device, may be considered an I/O component914(e.g., if the display is a touch screen). As another example, the CPUs906and/or GPUs908may include memory (e.g., the memory904may be representative of a storage device in addition to the memory of the GPUs908, the CPUs906, and/or other components). In other words, the computing device ofFIG.9is merely illustrative. Distinction is not made between such categories as “workstation,” “server,” “laptop,” “desktop,” “tablet,” “client device,” “mobile device,” “hand-held device,” “game console,” “electronic control unit (ECU),” “virtual reality system,” and/or other device or system types, as all are contemplated within the scope of the computing device ofFIG.9.

The interconnect system902may represent one or more links or busses, such as an address bus, a data bus, a control bus, or a combination thereof. The interconnect system902may include one or more bus or link types, such as an industry standard architecture (ISA) bus, an extended industry standard architecture (EISA) bus, a video electronics standards association (VESA) bus, a peripheral component interconnect (PCI) bus, a peripheral component interconnect express (PCIe) bus, and/or another type of bus or link. In some embodiments, there are direct connections between components. As an example, the CPU906may be directly connected to the memory904. Further, the CPU906may be directly connected to the GPU908. Where there is direct, or point-to-point connection between components, the interconnect system902may include a PCIe link to carry out the connection. In these examples, a PCI bus need not be included in the computing device900.

The CPU(s)906may be configured to execute at least some of the computer-readable instructions to control one or more components of the computing device900to perform one or more of the methods and/or processes described herein. The CPU(s)906may each include one or more cores (e.g., one, two, four, eight, twenty-eight, seventy-two, etc.) that are capable of handling a multitude of software threads simultaneously. The CPU(s)906may include any type of processor, and may include different types of processors depending on the type of computing device900implemented (e.g., processors with fewer cores for mobile devices and processors with more cores for servers). For example, depending on the type of computing device900, the processor may be an Advanced RISC Machines (ARM) processor implemented using Reduced Instruction Set Computing (RISC) or an x86 processor implemented using Complex Instruction Set Computing (CISC). The computing device900may include one or more CPUs906in addition to one or more microprocessors or supplementary co-processors, such as math co-processors.

In addition to or alternatively from the CPU(s)906, the GPU(s)908may be configured to execute at least some of the computer-readable instructions to control one or more components of the computing device900to perform one or more of the methods and/or processes described herein. One or more of the GPU(s)908may be an integrated GPU (e.g., with one or more of the CPU(s)906and/or one or more of the GPU(s)908may be a discrete GPU. In embodiments, one or more of the GPU(s)908may be a coprocessor of one or more of the CPU(s)906. The GPU(s)908may be used by the computing device900to render graphics (e.g., 3D graphics) or perform general purpose computations. For example, the GPU(s)908may be used for General-Purpose computing on GPUs (GPGPU). The GPU(s)908may include hundreds or thousands of cores that are capable of handling hundreds or thousands of software threads simultaneously. The GPU(s)908may generate pixel data for output images in response to rendering commands (e.g., rendering commands from the CPU(s)906received via a host interface). The GPU(s)908may include graphics memory, such as display memory, for storing pixel data or any other suitable data, such as GPGPU data. The display memory may be included as part of the memory904. The GPU(s)908may include two or more GPUs operating in parallel (e.g., via a link). The link may directly connect the GPUs (e.g., using NVLINK) or may connect the GPUs through a switch (e.g., using NVSwitch). When combined together, each GPU908may generate pixel data or GPGPU data for different portions of an output or for different outputs (e.g., a first GPU for a first image and a second GPU for a second image). Each GPU may include its own memory, or may share memory with other GPUs.

In addition to or alternatively from the CPU(s)906and/or the GPU(s)908, the logic unit(s)920may be configured to execute at least some of the computer-readable instructions to control one or more components of the computing device900to perform one or more of the methods and/or processes described herein. In embodiments, the CPU(s)906, the GPU(s)908, and/or the logic unit(s)920may discretely or jointly perform any combination of the methods, processes and/or portions thereof. One or more of the logic units920may be part of and/or integrated in one or more of the CPU(s)906and/or the GPU(s)908and/or one or more of the logic units920may be discrete components or otherwise external to the CPU(s)906and/or the GPU(s)908. In embodiments, one or more of the logic units920may be a coprocessor of one or more of the CPU(s)906and/or one or more of the GPU(s)908.

The communication interface910may include one or more receivers, transmitters, and/or transceivers that enable the computing device900to communicate with other computing devices via an electronic communication network, included wired and/or wireless communications. The communication interface910may include components and functionality to enable communication over any of a number of different networks, such as wireless networks (e.g., Wi-Fi, Z-Wave, Bluetooth, Bluetooth LE, ZigBee, etc.), wired networks (e.g., communicating over Ethernet or InfiniBand), low-power wide-area networks (e.g., LoRaWAN, SigFox, etc.), and/or the Internet. In one or more embodiments, logic unit(s)920and/or communication interface910may include one or more data processing units (DPUs) to transmit data received over a network and/or through interconnect system902directly to (e.g., a memory of) one or more GPU(s)908.

The I/O ports912may enable the computing device900to be logically coupled to other devices including the I/O components914, the presentation component(s)918, and/or other components, some of which may be built in to (e.g., integrated in) the computing device900. Illustrative I/O components914include a microphone, mouse, keyboard, joystick, game pad, game controller, satellite dish, scanner, printer, wireless device, etc. The I/O components914may provide a natural user interface (NUI) that processes air gestures, voice, or other physiological inputs generated by a user. In some instances, inputs may be transmitted to an appropriate network element for further processing. An NUI may implement any combination of speech recognition, stylus recognition, facial recognition, biometric recognition, gesture recognition both on screen and adjacent to the screen, air gestures, head and eye tracking, and touch recognition (as described in more detail below) associated with a display of the computing device900. The computing device900may be include depth cameras, such as stereoscopic camera systems, infrared camera systems, RGB camera systems, touchscreen technology, and combinations of these, for gesture detection and recognition. Additionally, the computing device900may include accelerometers or gyroscopes (e.g., as part of an inertia measurement unit (IMU)) that enable detection of motion. In some examples, the output of the accelerometers or gyroscopes may be used by the computing device900to render immersive augmented reality or virtual reality.

The power supply916may include a hard-wired power supply, a battery power supply, or a combination thereof. The power supply916may provide power to the computing device900to enable the components of the computing device900to operate.

The presentation component(s)918may include a display (e.g., a monitor, a touch screen, a television screen, a heads-up-display (HUD), other display types, or a combination thereof), speakers, and/or other presentation components. The presentation component(s)918may receive data from other components (e.g., the GPU(s)908, the CPU(s)906, DPUs, etc.), and output the data (e.g., as an image, video, sound, etc.).

Example Data Center

FIG.10illustrates an example data center1000that may be used in at least one embodiments of the present disclosure. The data center1000may include a data center infrastructure layer1010, a framework layer1020, a software layer1030, and/or an application layer1040.

As shown inFIG.10, the data center infrastructure layer1010may include a resource orchestrator1012, grouped computing resources1014, and node computing resources (“node C.R.s”)1016(1)-1016(N), where “N” represents any whole, positive integer. In at least one embodiment, node C.R.s1016(1)-1016(N) may include, but are not limited to, any number of central processing units (CPUs) or other processors (including DPUs, accelerators, field programmable gate arrays (FPGAs), graphics processors or graphics processing units (GPUs), etc.), memory devices (e.g., dynamic read-only memory), storage devices (e.g., solid state or disk drives), network input/output (NW I/O) devices, network switches, virtual machines (VMs), power modules, and/or cooling modules, etc. In some embodiments, one or more node C.R.s from among node C.R.s1016(1)-1016(N) may correspond to a server having one or more of the above-mentioned computing resources. In addition, in some embodiments, the node C.R.s1016(1)-10161(N) may include one or more virtual components, such as vGPUs, vCPUs, and/or the like, and/or one or more of the node C.R.s1016(1)-1016(N) may correspond to a virtual machine (VM).

In at least one embodiment, grouped computing resources1014may include separate groupings of node C.R.s1016housed within one or more racks (not shown), or many racks housed in data centers at various geographical locations (also not shown). Separate groupings of node C.R.s1016within grouped computing resources1014may include grouped compute, network, memory or storage resources that may be configured or allocated to support one or more workloads. In at least one embodiment, several node C.R.s1016including CPUs, GPUs, DPUs, and/or other processors may be grouped within one or more racks to provide compute resources to support one or more workloads. The one or more racks may also include any number of power modules, cooling modules, and/or network switches, in any combination.

The resource orchestrator1012may configure or otherwise control one or more node C.R.s1016(1)-1016(N) and/or grouped computing resources1014. In at least one embodiment, resource orchestrator1012may include a software design infrastructure (SDI) management entity for the data center1000. The resource orchestrator1012may include hardware, software, or some combination thereof.

In at least one embodiment, as shown inFIG.10, framework layer1020may include a job scheduler1028, a configuration manager1034, a resource manager1036, and/or a distributed file system1038. The framework layer1020may include a framework to support software1032of software layer1030and/or one or more application(s)1042of application layer1040. The software1032or application(s)1042may respectively include web-based service software or applications, such as those provided by Amazon Web Services, Google Cloud and Microsoft Azure. The framework layer1020may be, but is not limited to, a type of free and open-source software web application framework such as Apache Spark™ (hereinafter “Spark”) that may utilize distributed file system1038for large-scale data processing (e.g., “big data”). In at least one embodiment, job scheduler1028may include a Spark driver to facilitate scheduling of workloads supported by various layers of data center1000. The configuration manager1034may be capable of configuring different layers such as software layer1030and framework layer1020including Spark and distributed file system1038for supporting large-scale data processing. The resource manager1036may be capable of managing clustered or grouped computing resources mapped to or allocated for support of distributed file system1038and job scheduler1028. In at least one embodiment, clustered or grouped computing resources may include grouped computing resource1014at data center infrastructure layer1010. The resource manager1036may coordinate with resource orchestrator1012to manage these mapped or allocated computing resources.

In at least one embodiment, software1032included in software layer1030may include software used by at least portions of node C.R.s1016(1)-1016(N), grouped computing resources1014, and/or distributed file system1038of framework layer1020. One or more types of software may include, but are not limited to, Internet web page search software, e-mail virus scan software, database software, and streaming video content software.

In at least one embodiment, application(s)1042included in application layer1040may include one or more types of applications used by at least portions of node C.R.s1016(1)-1016(N), grouped computing resources1014, and/or distributed file system1038of framework layer1020. One or more types of applications may include, but are not limited to, any number of a genomics application, a cognitive compute, and a machine learning application, including training or inferencing software, machine learning framework software (e.g., PyTorch, TensorFlow, Caffe, etc.), and/or other machine learning applications used in conjunction with one or more embodiments.

In at least one embodiment, any of configuration manager1034, resource manager1036, and resource orchestrator1012may implement any number and type of self-modifying actions based on any amount and type of data acquired in any technically feasible fashion. Self-modifying actions may relieve a data center operator of data center1000from making possibly bad configuration decisions and possibly avoiding underutilized and/or poor performing portions of a data center.

The data center1000may include tools, services, software or other resources to train one or more machine learning models or predict or infer information using one or more machine learning models according to one or more embodiments described herein. For example, a machine learning model(s) may be trained by calculating weight parameters according to a neural network architecture using software and/or computing resources described above with respect to the data center1000. In at least one embodiment, trained or deployed machine learning models corresponding to one or more neural networks may be used to infer or predict information using resources described above with respect to the data center1000by using weight parameters calculated through one or more training techniques, such as but not limited to those described herein.

Example Network Environments

Network environments suitable for use in implementing embodiments of the disclosure may include one or more client devices, servers, network attached storage (NAS), other backend devices, and/or other device types. The client devices, servers, and/or other device types (e.g., each device) may be implemented on one or more instances of the computing device(s)900ofFIG.9—e.g., each device may include similar components, features, and/or functionality of the computing device(s)900. In addition, where backend devices (e.g., servers, NAS, etc.) are implemented, the backend devices may be included as part of a data center1000, an example of which is described in more detail herein with respect toFIG.10.