Patent Description:
Cloud computing may provide an on-demand availability of computing resources, especially data storage and computing power, without direct active management by a user. Large cloud computing environments often have functions distributed over multiple locations from central servers. A cloud computing environment may be limited to a single organization (e.g., referred to as an enterprise cloud), may be available to several organizations (e.g., referred to as a public cloud), or may be a combination of both (e.g., referred to as a hybrid cloud).

Document <CIT> relates to a method for provisioning new service request that involves utilizing both current computational resources usage data and historical computational resources usage data to create prediction of computational resources.

Document <CIT> relates to a method for reduction of performance ticket in a computing system and involves monitoring a resource usage parameter that is associated with workload of virtual machine to obtain historic resource usage information.

According to some implementations, a method may include receiving historical cloud data associated with resources of a cloud computing environment, and receiving historical customer data associated with requested resource usage by customers of the cloud computing environment. The method may include determining a usage growth profile based on the historical cloud data and the historical customer data, and determining, based on the historical cloud data and the historical customer data, usage deviation data indicating deviations between actual resource usage and planned resource usage of the cloud computing environment. The method may include training a machine learning model, with the usage growth profile and the usage deviation data, to generate a trained machine learning model, and receiving a request for new resource usage by a customer associated with the cloud computing environment. The method may include processing the request for the new resource usage, with the trained machine learning model, to generate projected resource usage data, wherein the projected resource usage data identifies a projected resource usage of the cloud computing environment and by the customer, and performing one or more actions based on the projected resource usage data.

According to some implementations, a device may include one or more memories, and one or more processors to receive a request for new resource usage by a customer associated with a cloud computing environment, wherein the cloud computing environment includes resources. The one or more processors may process the request for the new resource usage, with a machine learning model, to generate projected resource usage data. The machine learning model may be trained based on a usage growth profile determined based on historical cloud data associated with the resources of the cloud computing environment and based on historical customer data associated with requested resource usage by customers of the cloud computing environment, and usage deviation data determined based on processing the historical cloud data and the historical customer data, with a model. The usage deviation data may indicate deviations between actual resource usage and planned resource usage of the cloud computing environment. The projected resource usage data may identify a projected resource usage of the cloud computing environment and by the customer. The one or more processors may perform one or more actions based on the projected resource usage data.

According to some implementations, a non-transitory computer-readable medium may store one or more instructions that, when executed by one or more processors of a device, may cause the one or more processors to receive historical cloud data associated with resources of a cloud computing environment, wherein the historical cloud data includes data identifying one or more of types of the resources of the cloud computing environment that are used by each of customers of the cloud computing environment, quantities of the resources that are used by each of the customers, times of day or days of a week when the resources are used by each of the customers, or monetary costs associated with the resources that are used by each of the customers. The one or more instructions may cause the one or more processors to receive historical customer data associated with requested resource usage by the customers, wherein the historical customer data includes data identifying one or more of quantities of the resources of the cloud computing environment requested by the each of customers, allocation and usage of the resources by each of the customers, or characteristics of each of the customers. The one or more instructions may cause the one or more processors to determine a usage growth profile based on the historical cloud data and the historical customer data, and process the historical cloud data and the historical customer data, with a model, to determine usage deviation data indicating deviations between actual resource usage and planned resource usage of the cloud computing environment. The one or more instructions may cause the one or more processors to train a machine learning model, with the usage growth profile and the usage deviation data, in order to generate a trained machine learning model, and receive a request for new resource usage by a customer associated with the cloud computing environment. The one or more instructions may cause the one or more processors to process the request for the new resource usage, with the trained machine learning model, to generate projected resource usage data, wherein the projected resource usage data identifies a projected resource usage of the cloud computing environment and by the customer, and perform one or more actions based on the projected resource usage data.

Some organizations utilize cloud-based computing resources for data processing, data storage, application hosting, and/or the like. Often, these computing resources are allocated to the organizations or for particular tasks on an as-needed or an as-requested basis. Monitoring computing resource usage in relation to historical usage and/or usage by similar organizations, for similar tasks, and/or the like is difficult due to having to analyze millions, billions, or more data points across thousands, millions, or more accounts. This results in poor management of computing resource usage and/or mis-allocation of computing resources, thereby wasting computing resources that could otherwise be allocated to other organizations and/or tasks, resulting in overuse of computing resources, inefficient allocation of computing resources, and/or the like. For example, a first organization may be allocated ten computing resources and may only utilize five of the ten computing resources. A second organization may be allocated five computing resources and may require five more computing resources. In such an example, the five computing resources wasted by the first organization could be utilized by the second organization. In addition, anomalous usage (e.g., over-usage, usage of an unexpected combination of computing resources, and/or the like) of computing resources can disrupt operations of an organization, can result in significant expense to the organization, and/or the like. In the example above, the second organization may be prevented from performing some operations since the second organization requires five more computing resources to perform such operations.

Some implementations described herein provide a cloud resource prediction platform that utilizes a machine learning model to predict a quantity of cloud resources to allocate to a customer (e.g., an organization). For example, the cloud resource prediction platform may receive historical cloud data associated with resources of a cloud computing environment, and may receive historical customer data associated with requested resource usage by customers of the cloud computing environment. The cloud resource prediction platform may determine a usage growth profile based on the historical cloud data and the historical customer data, and may determine, based on the historical cloud data and the historical customer data, usage deviation data indicating deviations between actual resource usage and planned resource usage of the cloud computing environment. The cloud resource prediction platform may train a machine learning model, with the usage growth profile and the usage deviation data, to generate a trained machine learning model, and may receive a request for new resource usage by a customer associated with the cloud computing environment. The cloud resource prediction platform may process the request for the new resource usage, with the trained machine learning model, to generate projected resource usage data, wherein the projected resource usage data identifies a projected resource usage of the cloud computing environment and by the customer, and may perform one or more actions based on the projected resource usage data.

In this way, the cloud resource prediction platform facilitates improved management of resources (e.g., processing resources, memory resources, networking resources, and/or the like) associated with a cloud computing environment. This reduces or eliminates over usage of the resources, thereby conserving the resources. In addition, this reduces or eliminates over allocation of resources, thereby reducing instances of idle or unused resources and improving a utilization efficiency of the resources. Further, improving management of resources through improved anomaly detection facilitates improved cost management with regard to the resources and improved planning with regard to future resource needs.

<FIG> are diagrams of one or more example implementations <NUM> described herein. As shown in <FIG>, a cloud computing environment may include resources (e.g., processing resources, memory resources, network resources, server devices, and/or the like) and may communicate with multiple client devices associated with customers. For example, the client devices may enable the customers to access the cloud computing environment to utilize the resources for performance of one or more tasks. The cloud computing environment may include the features described below in connection with <FIG>. The cloud computing environment may also be associated with a cloud resource prediction platform. For example, the cloud resource prediction platform may be separate from but in communication with the cloud computing environment, may be implemented within the cloud computing environment, and/or the like.

As further shown in <FIG>, and by reference number <NUM>, the cloud resource prediction platform may receive historical cloud data associated with the cloud computing environment. In some implementations, the cloud resource prediction platform may receive the historical cloud data from, for example, one or more of the client devices, one or more of the resources, and/or the like. The historical cloud data may include data identifying a usage of a set of resources associated with the customers (e.g., organizations). For example, the historical cloud data may include data identifying types of resources used by the customers, quantities of the resources used, times of day or days of the week when the resources are used, monetary costs associated with the resources used by the customers (e.g., billing data), characteristics of the customers for which the computing resources were allocated (e.g., quantities of individuals associated with the customers, industries of the customers, locations of the customers, operating hours of the customers, and/or the like), and/or the like. In some implementations, the historical cloud data may include data identifying a migration plan for a customer with regard to resources. For example, the historical cloud data may include data identifying when resources are to be transitioned from non-cloud-based resources (e.g., server devices managed by the customer) to cloud-based resources (e.g., of the cloud computing environment), which types of resources are to be transitioned, whether the resources are to undergo an upgrade or a downgrade after being transitioned, and/or the like.

As further shown in <FIG>, and by reference number <NUM>, the cloud resource prediction platform may receive historical customer data associated with requested resource usage by customers of the cloud computing environment. In some implementations, the cloud resource prediction platform may receive the historical customer data from, for example, one or more of the client devices, one or more of the resources, and/or the like. The historical customer data may include data identifying quantities of resources of the cloud computing environment requested by the customers (e.g., via the client devices), estimations for future allocation and/or usage of resources by the customers, and/or the like.

In some implementations, the cloud resource prediction platform may regularly receive the historical cloud data and/or the historical customer data from the cloud computing environment, may periodically receive the historical cloud data and/or the historical customer data from the cloud computing environment, and/or the like. The cloud resource prediction platform may store the historical cloud data and/or the historical customer data in a data structure (e.g., a database, a table, a list, and/or the like) associated with the cloud resource prediction platform. In some implementations, there may be hundreds, thousands, millions, and/or the like of resources that produce thousands, millions, billions, and/or the like of data points provided in the historical cloud data and/or the historical customer data. In this way, the cloud resource prediction platform may handle thousands, millions, billions, and/or the like of data points within a period of time (e.g., daily, weekly, monthly), and thus may provide "big data" capability.

As shown in <FIG>, and by reference number <NUM>, the cloud resource prediction platform may determine a usage growth profile (e.g., for the cloud computing environment) based on the historical cloud data and the historical customer data. For example, the cloud resource prediction platform may determine the usage growth profile after receiving the historical cloud data and the historical customer data, based on a request to determine the usage growth profile, and/or the like. A usage growth profile may include a set of groupings of the historical cloud data and the historical customer data (e.g., data groupings) based on a set of attributes included in the historical cloud data and the historical customer data. For example, the usage growth profile may organize the historical cloud data and the historical customer data by types of resources, by tasks for which resources are organized, by users of the resources, by monetary costs associated with resources, and/or the like. In another example, the usage growth profile may group the historical cloud data and the historical customer data based on a quantity of transient virtual machines utilized by the customers (e.g., virtual machines utilized for a short period of time and which are unplanned), a quantity of virtual machines continuously being utilized (e.g., continuously on), a quantity of unutilized virtual machines (e.g., continuously off), a quantity of times virtual machines change from one customer to another customer (e.g., usage type transitions), and/or the like.

In some implementations, the usage growth profile may group the historical cloud data and the historical customer data based on characteristics of resource usage over time, such as historical amounts, trends, patterns, and/or the like. As specific examples, the usage growth profile may group the historical cloud data and the historical customer data based on characteristics of times that resources are brought online or taken offline, amounts of resources used at different times of the day, whether and/or when resources were upgraded or downgraded (e.g., in terms of processing power and/or capacity), and/or the like.

As shown in <FIG>, and by reference number <NUM>, the cloud resource prediction platform may process the historical cloud data and the historical customer data, with a model, to determine usage deviation data indicating deviations between actual resource usage and planned resource usage of the cloud computing environment. In some implementations, the cloud resource prediction platform may determine the usage deviation data simultaneously with determination of the usage growth profile, prior to determination of the usage growth profile, after determination of the usage growth profile, and/or the like.

The model may include a non-parametric probability estimation model with Bayesian smoothing (e.g., a technique utilized to smooth categorical data). The non-parametric probability estimation model may be based solely on parametric families of probability distributions (e.g., parameters such as a mean and a variance), and may include a histogram model (e.g., a simple nonparametric estimate of a probability distribution), a kernel density estimation model, a non-parametric regression, and/or the like. In some implementations, the model may determine links between the historical customer data (e.g., quantities of resources of the cloud computing environment requested by the customers, allocation and/or usage of resources by the customers, and/or the like) and the historical cloud data (e.g., types of resources actually used by the customers, quantities of the resources actually used by the customers, and/or the like). The model then may determine deviations between corresponding (e.g., linked) historical customer data and historical cloud data. For example, the model may determine a deviation between a quantity of resources requested or estimated by a particular customer and the quantity of resources actually utilized by the particular customer.

In some implementations, the cloud resource prediction platform may utilize the model to determine a degree to which historical usage of resources matched a quantity of resources allocated, a quantity of resources requested, a quantity of resources predicted to be needed by a customer or for a task, and/or the like. As a specific example, the cloud resource prediction platform may utilize the model to identify deviations from an initial prediction of an amount of resources needed by a customer.

As shown in <FIG>, and by reference number <NUM>, the cloud resource prediction platform may train a machine learning model, with the usage growth profile and the usage deviation data, to generate a trained machine learning model. In some implementations, the machine learning model may include a Monte Carlo simulation model. The Monte Carlo simulation model may include a model that relies on repeated random samplings of data to obtain numerical results. The underlying concept is to use randomness to solve problems that might be deterministic in principle. The Monte Carlo simulation model may be used to solve optimization problems, numerical integration problems, problems generating draws from a probability distribution, and/or the like.

The trained machine learning model may be utilized by the cloud resource prediction platform to determine projected resource usage data (e.g., related to resource usage by a new customer or new resource usage by an existing customer) based on a request for a new resource from a cloud computing environment (e.g., received from a client device associated with the new customer or the existing customer). In the case of processing new data related to the new customer or the existing customer, the cloud resource prediction platform may utilize the trained machine learning model to identify similar customers (e.g., based on having similar characteristics), and to make a prediction of resource usage by the customer based on data (e.g., historical resource usage) related to the similar customers.

In some implementations, the cloud resource prediction platform may separate the usage growth profile and the usage deviation data into a training set, a validation set, a test set, and/or the like. The training set may be utilized to train the machine learning model. The validation set may be utilized to validate results of the trained machine learning model. The test set may be utilized to test operation of the trained machine learning model.

In some implementations, the cloud resource prediction platform may train the machine learning model using, for example, an unsupervised training procedure and based on the usage growth profile and the usage deviation data. For example, the cloud resource prediction platform may perform dimensionality reduction to reduce the usage growth profile and the usage deviation data to a minimum feature set, thereby reducing resources (e.g., processing resources, memory resources, and/or the like) to train the machine learning model, and may apply a classification technique to the minimum feature set.

In some implementations, the cloud resource prediction platform may use a logistic regression classification technique to determine a categorical outcome (e.g., whether a threshold quantity of resources is predicted to be needed, whether a requested quantity of resources is sufficient for a task, and/or the like). Additionally, or alternatively, the cloud resource prediction platform may use a naive Bayesian classifier technique. In this case, the cloud resource prediction platform may perform binary recursive partitioning to split the usage growth profile and the usage deviation data into partitions and/or branches and use the partitions and/or branches to determine outcomes (e.g., whether a threshold quantity of resources is predicted to be needed, whether a requested quantity of resources is sufficient for a task, and/or the like). Based on using recursive partitioning, the cloud resource prediction platform may reduce utilization of computing resources relative to manual, linear sorting and analysis of data points, thereby enabling use of thousands, millions, or billions of data points to train the machine learning model, which may result in more accurate models than using fewer data points.

Additionally, or alternatively, the cloud resource prediction platform may use a support vector machine (SVM) classifier technique to generate a non-linear boundary between data points in the training set. In this case, the non-linear boundary is used to classify test data into a particular class.

Additionally, or alternatively, the cloud resource prediction platform may train the machine learning model using a supervised training procedure that includes receiving input to the machine learning model from a subject matter expert, which may reduce an amount of time, an amount of processing resources, and/or the like to train the machine learning model relative to an unsupervised training procedure. In some implementations, the cloud resource prediction platform may use one or more other model training techniques, such as a neural network technique, a latent semantic indexing technique, and/or the like. For example, the cloud resource prediction platform may perform an artificial neural network processing technique (e.g., using a two-layer feedforward neural network architecture, a three-layer feedforward neural network architecture, and/or the like) to perform pattern recognition with regard to patterns of the usage growth profile and the usage deviation data. In this case, using the artificial neural network processing technique may improve an accuracy of the trained machine learning model generated by the cloud resource prediction platform by being more robust to noisy, imprecise, or incomplete data, and by enabling the cloud resource prediction platform to detect patterns and/or trends undetectable to human analysts or systems using less complex techniques.

In some implementations, rather than training a model, the cloud resource prediction platform may receive a model from another device (e.g., a server device). For example, a server device may generate a model based on having trained the model in a manner similar to that described above and may provide the model to the cloud resource prediction platform (e.g., may pre-load the cloud resource prediction platform with the model, may receive a request from the cloud resource prediction platform for the model, and/or the like). The cloud resource prediction platform may perform a lookup to identify a model for a customer with particular characteristics, for a particular task for which resources are to be used, and/or the like. For example, the cloud resource prediction platform may perform a lookup of a model based on one or more characteristics of a customer and/or a task. In other words, the cloud resource prediction platform may utilize various models to make different predictions related to resource usage, thereby increasing an accuracy of making resource usage-related predictions.

As shown in <FIG>, and by reference number <NUM>, the cloud resource prediction platform may receive, from a client device associated with a new customer or an existing customer, a request for new resource usage associated with the cloud computing environment. The cloud computing environment may include resources (e.g., computing resources, processing resources, memory resources, network resources, and/or the like) and may be associated with the client device of the customer. In some implementations, the cloud resource prediction platform may receive the request for new resource usage from, for example, the client device, one or more of the resources, and/or the like. The request for new resource usage may include information identifying characteristics of the customer, tasks for which the resources are to be used, a quantity of resources that have been requested by the customer, and/or the like.

As shown in <FIG>, and by reference number <NUM>, the cloud resource prediction platform may process the new resource usage requested in the request, with the trained machine learning model, to generate projected resource usage data, a new usage growth profile, and new usage deviation data for the new customer. In some implementations, the projected resource usage data may include data identifying a projected resource usage for the customer, a range of projected resource usage for the customer (e.g., a low or tenth percentile resource usage, a medium or a fiftieth percentile resource usage, and a high or a ninetieth percentile resource usage), and/or the like. The new usage growth profile may include a set of groupings of data associated with the new customer (e.g., data groupings) based on a set of attributes included in the data associated with the new customer. For example, the new usage growth profile may group the data associated with the new customer based on a predicted quantity of transient virtual machines utilized by the new customer, a predicted quantity of virtual machines to be continuously utilized by the new customer, a virtual machine transition probability for the new customer, and/or the like. The new usage deviation data may include data identifying a deviation between a quantity of resources requested or estimated by the new customer and a predicted quantity of resources to be utilized by the new customer.

The trained machine learning model may perform various simulations of resource usage based on the new resource usage requested in the request. For example, the trained machine learning model may perform a Monte Carlo simulation for different possible resource usages based on having been trained with the usage growth profile and the usage deviation data. As specific examples, the trained machine learning model may perform simulations related to when resources are likely to be brought online and/or taken offline, a quantity of tasks for which the resources are to be used, a quantity of resources to be used, combinations of resources to be used, and/or the like. The cloud resource prediction platform may perform thousands, millions, or more simulations and may generate a prediction based on a probability distribution of the results of the simulations, an average result of the simulations, a weighted result of the simulations, and/or the like.

As shown in <FIG>, and by reference number <NUM>, the cloud resource prediction platform may perform one or more actions based on the projected resource usage data. In some implementations, the one or more actions may include the cloud resource prediction platform providing the projected resource usage data for display. In this way, the cloud resource prediction platform may alert individuals responsible for managing resource usage, and the individuals may allocate resources for the customer and conserve resources in the future. In some implementations, the cloud resource prediction platform may provide, for display, information identifying the new usage growth profile and/or the new usage deviation data.

In some implementations, the one or more actions may include the cloud resource prediction platform providing, to a resource, instructions that cause the resource to reboot, power off, or power on based on the projected resource usage data. In this way, the cloud resource prediction platform may better control usage of the resource and prevent underutilization or overutilization of the resource. For example, the resource may be rebooted so that the resource may be utilized by the new customer.

In some implementations, the one or more actions may include the cloud resource prediction platform generating a recommendation to modify allocation of a resource for the new customer based on the projected resource usage data. For example, the cloud resource prediction platform may generate a recommendation based on an amount by which a predicted usage deviates from a requested usage, and may provide information for display, in a message to a client device, and/or the like, that identifies the recommendation. In this way, the cloud resource prediction platform may provide the recommendation to individuals responsible for managing resource usage, and the individuals may address the recommendation and conserve resources in the future.

In some implementations, the one or more actions may include the cloud resource prediction platform causing a resource to be reallocated from a customer to the new customer based on the projected resource usage data. For example, the cloud resource prediction platform may re-allocate a resource, being underutilized by a customer, to the new customer that will utilize the resource. In this way, resources are more efficiently allocated and experience less idle time.

In some implementations, the one or more actions may include the cloud resource prediction platform retraining the machine learning model based on the projected resource usage data. In this way, the machine learning model may better predict new resource usage associated with the cloud computing environment.

In some implementations, the one or more actions may include the cloud resource prediction platform ordering one or more new resources based on the projected resource usage data. For example, the cloud resource prediction platform may order a new server device for the cloud computing environment to service the resource usage predicted for the new customer.

In some implementations, the cloud resource prediction platform may determine a reallocation of the resources of the cloud computing environment based on the projected resource usage data, and may cause the reallocation of the resources to be implemented by the cloud computing environment (e.g., configure the resources to be able to communicate with correct client devices).

In some implementations, the cloud resource prediction platform may identify a type of resource, and may determine a quantity of usage time of a resource and a quantity of tasks performed by a resource. The cloud resource prediction platform may determine a reallocation for the resources based on the type of the resource, the quantity of usage time of the resource, and the quantity of tasks performed by the resource, and may cause the reallocation to be implemented by the cloud computing environment.

In some implementations, the cloud resource prediction platform may monitor resource usage over time for the new customer and may output corresponding results of monitoring the resource usage of the customer.

In some implementations, the cloud resource prediction platform may schedule resources for usage by the new customer based on a prediction (e.g., by sending a message to a server device that controls allocation of the resources, by identifying available times for the resources using an electronic schedule, by configuring the server device, and/or the like).

In this way, several different stages of the process for predicting a quantity of cloud resources to allocate to a customer may be automated via a machine learning model, which may improve speed and efficiency of the process and conserve computing resources (e.g., processing resources, memory resources, and/or the like). Furthermore, implementations described herein use a rigorous, computerized process to perform tasks or roles that were not previously performed. For example, currently there does not exist a technique that utilizes a machine learning model to predict a quantity of cloud resources to allocate to a customer. Further, the process for utilizing a machine learning model to predict a quantity of cloud resources to allocate to a customer conserves resources (e.g., processing resources, memory resources, network resources, and/or the like) that would otherwise be wasted in poor management of resource usage, mis-allocation of resources, overuse of resources, and/or the like.

As indicated above, <FIG> are provided merely as examples.

<FIG> is a diagram of an example environment <NUM> in which systems and/or methods described herein may be implemented. As shown in <FIG>, environment <NUM> may include a client device <NUM>, a cloud resource prediction platform <NUM>, a network <NUM>, a server device <NUM>, and a cloud computing environment <NUM>. Devices of environment <NUM> may interconnect via wired connections, wireless connections, or a combination of wired and wireless connections.

Client device <NUM> includes one or more devices capable of receiving, generating, storing, processing, and/or providing information, such as information described herein. For example, client device <NUM> may include a mobile phone (e.g., a smart phone, a radiotelephone, and/or the like), a laptop computer, a tablet computer, a desktop computer, a handheld computer, a gaming device, a wearable communication device (e.g., a smart watch, a pair of smart glasses, a heart rate monitor, a fitness tracker, smart clothing, smart jewelry, a head mounted display, and/or the like), or a similar type of device. In some implementations, client device <NUM> may receive information from and/or transmit information to cloud resource prediction platform <NUM> and/or server device <NUM>.

Cloud resource prediction platform <NUM> includes one or more devices that utilize a machine learning model to predict a quantity of cloud resources to allocate to a customer. In some implementations, cloud resource prediction platform <NUM> may be designed to be modular such that certain software components may be swapped in or out depending on a particular need. As such, cloud resource prediction platform <NUM> may be easily and/or quickly reconfigured for different uses. In some implementations, cloud resource prediction platform <NUM> may receive information from and/or transmit information to one or more client devices <NUM> and/or server devices <NUM>.

In some implementations, as shown, cloud resource prediction platform <NUM> may be hosted in a cloud computing environment <NUM>. Notably, while implementations described herein describe cloud resource prediction platform <NUM> as being hosted in cloud computing environment <NUM>, in some implementations, cloud resource prediction platform <NUM> may not be cloud-based (i.e., may be implemented outside of a cloud computing environment) or may be partially cloud-based.

Cloud computing environment <NUM> includes an environment that hosts cloud resource prediction platform <NUM>. Cloud computing environment <NUM> may provide computation, software, data access, storage, etc., services that do not require end-user knowledge of a physical location and configuration of system(s) and/or device(s) that hosts cloud resource prediction platform <NUM>. As shown, cloud computing environment <NUM> may include a group of computing resources <NUM> (referred to collectively as "computing resources <NUM>" and individually as "computing resource <NUM>").

Computing resource <NUM> includes one or more personal computers, workstation computers, mainframe devices, or other types of computation and/or communication devices. In some implementations, computing resource <NUM> may host cloud resource prediction platform <NUM>. The cloud resources may include compute instances executing in computing resource <NUM>, storage devices provided in computing resource <NUM>, data transfer devices provided by computing resource <NUM>, etc. In some implementations, computing resource <NUM> may communicate with other computing resources <NUM> via wired connections, wireless connections, or a combination of wired and wireless connections.

As further shown in <FIG>, computing resource <NUM> includes a group of cloud resources, such as one or more applications ("APPs") <NUM>-<NUM>, one or more virtual machines ("VMs") <NUM>-<NUM>, virtualized storage ("VSs") <NUM>-<NUM>, one or more hypervisors ("HYPs") <NUM>-<NUM>, and/or the like.

Application <NUM>-<NUM> includes one or more software applications that may be provided to or accessed by client device <NUM> and/or server device <NUM>. Application <NUM>-<NUM> may eliminate a need to install and execute the software applications on client device <NUM>. For example, application <NUM>-<NUM> may include software associated with cloud resource prediction platform <NUM> and/or any other software capable of being provided via cloud computing environment <NUM>. In some implementations, one application <NUM>-<NUM> may send/receive information to/from one or more other applications <NUM>-<NUM>, via virtual machine <NUM>-<NUM>.

Virtual machine <NUM>-<NUM> includes a software implementation of a machine (e.g., a computer) that executes programs like a physical machine. Virtual machine <NUM>-<NUM> may be either a system virtual machine or a process virtual machine, depending upon use and degree of correspondence to any real machine by virtual machine <NUM>-<NUM>. A system virtual machine may provide a complete system platform that supports execution of a complete operating system ("OS"). A process virtual machine may execute a single program and may support a single process. In some implementations, virtual machine <NUM>-<NUM> may execute on behalf of a user (e.g., a user of client device <NUM> and/or server device <NUM> or an operator of cloud resource prediction platform <NUM>), and may manage infrastructure of cloud computing environment <NUM>, such as data management, synchronization, or long-duration data transfers.

Virtualized storage <NUM>-<NUM> includes one or more storage systems and/or one or more devices that use virtualization techniques within the storage systems or devices of computing resource <NUM>. In some implementations, within the context of a storage system, types of virtualizations may include block virtualization and file virtualization. Block virtualization may refer to abstraction (or separation) of logical storage from physical storage so that the storage system may be accessed without regard to physical storage or heterogeneous structure. The separation may permit administrators of the storage system flexibility in how the administrators manage storage for end users. File virtualization may eliminate dependencies between data accessed at a file level and a location where files are physically stored. This may enable optimization of storage use, server consolidation, and/or performance of non-disruptive file migrations.

Hypervisor <NUM>-<NUM> may provide hardware virtualization techniques that allow multiple operating systems (e.g., "guest operating systems") to execute concurrently on a host computer, such as computing resource <NUM>. Hypervisor <NUM>-<NUM> may present a virtual operating platform to the guest operating systems and may manage the execution of the guest operating systems. Multiple instances of a variety of operating systems may share virtualized hardware resources.

Network <NUM> includes one or more wired and/or wireless networks. For example, network <NUM> may include a cellular network (e.g., a fifth generation (<NUM>) network, a long-term evolution (LTE) network, a third generation (<NUM>) network, a code division multiple access (CDMA) network, etc.), a public land mobile network (PLMN), a local area network (LAN), a wide area network (WAN), a metropolitan area network (MAN), a telephone network (e.g., the Public Switched Telephone Network (PSTN)), a private network, an ad hoc network, an intranet, the Internet, a fiber optic-based network, and/or the like, and/or a combination of these or other types of networks.

Server device <NUM> includes one or more devices capable of receiving, generating, storing, processing, and/or providing information, such as information described herein. For example, server device <NUM> may include a laptop computer, a tablet computer, a desktop computer, a group of server devices, or a similar type of device, associated with an entity as described above. In some implementations, server device <NUM> may receive information from and/or transmit information to client device <NUM> and/or cloud resource prediction platform <NUM>.

Cloud computing environment <NUM> includes an environment that hosts cloud resources, and may include the features of cloud computing environment <NUM>, described above.

<FIG> is a diagram of example components of a device <NUM>. Device <NUM> may correspond to client device <NUM>, cloud resource prediction platform <NUM>, computing resource <NUM>, and/or server device <NUM>. In some implementations, client device <NUM>, cloud resource prediction platform <NUM>, computing resource <NUM>, and/or server device <NUM> may include one or more devices <NUM> and/or one or more components of device <NUM>. As shown in <FIG>, device <NUM> may include a bus <NUM>, a processor <NUM>, a memory <NUM>, a storage component <NUM>, an input component <NUM>, an output component <NUM>, and a communication interface <NUM>.

Bus <NUM> includes a component that permits communication among the components of device <NUM>. Processor <NUM> is implemented in hardware, firmware, or a combination of hardware and software. Processor <NUM> is a central processing unit (CPU), a graphics processing unit (GPU), an accelerated processing unit (APU), a microprocessor, a microcontroller, a digital signal processor (DSP), a field-programmable gate array (FPGA), an application-specific integrated circuit (ASIC), or another type of processing component. In some implementations, processor <NUM> includes one or more processors capable of being programmed to perform a function. Memory <NUM> includes a random-access memory (RAM), a read only memory (ROM), and/or another type of dynamic or static storage device (e.g., a flash memory, a magnetic memory, and/or an optical memory) that stores information and/or instructions for use by processor <NUM>.

For example, storage component <NUM> may include a hard disk (e.g., a magnetic disk, an optical disk, a magneto-optic disk, and/or a solid-state disk), a compact disc (CD), a digital versatile disc (DVD), a floppy disk, a cartridge, a magnetic tape, and/or another type of non-transitory computer-readable medium, along with a corresponding drive.

Communication interface <NUM> includes a transceiver-like component (e.g., a transceiver and/or a separate receiver and transmitter) that enables device <NUM> to communicate with other devices, such as via a wired connection, a wireless connection, or a combination of wired and wireless connections. Communication interface <NUM> may permit device <NUM> to receive information from another device and/or provide information to another device. For example, communication interface <NUM> may include an Ethernet interface, an optical interface, a coaxial interface, an infrared interface, a radio frequency (RF) interface, a universal serial bus (USB) interface, a Wi-Fi interface, a cellular network interface, and/or the like.

Device <NUM> may perform one or more processes described herein. Device <NUM> may perform these processes based on processor <NUM> executing software instructions stored by a non-transitory computer-readable medium, such as memory <NUM> and/or storage component <NUM>. A computer-readable medium is defined herein as a non-transitory memory device. A memory device includes memory space within a single physical storage device or memory space spread across multiple physical storage devices.

<FIG> is a flow chart of an example process <NUM> for utilizing a machine learning model to predict a quantity of cloud resources to allocate to a customer. In some implementations, one or more process blocks of <FIG> may be performed by a cloud resource prediction platform (e.g., cloud resource prediction platform <NUM>). In some implementations, one or more process blocks of <FIG> may be performed by another device or a group of devices separate from or including the cloud resource prediction platform, such as a client device (e.g., client device <NUM>) and/or a server device (e.g., server device <NUM>).

As shown in <FIG>, process <NUM> may include receiving historical cloud data associated with resources of a cloud computing environment (block <NUM>). For example, the cloud resource prediction platform (e.g., using computing resource <NUM>, processor <NUM>, communication interface <NUM>, and/or the like) may receive historical cloud data associated with resources of a cloud computing environment, as described above.

As further shown in <FIG>, process <NUM> may include receiving historical customer data associated with requested resource usage by customers of the cloud computing environment (block <NUM>). For example, the cloud resource prediction platform (e.g., using computing resource <NUM>, processor <NUM>, input component <NUM>, communication interface <NUM>, and/or the like) may receive historical customer data associated with requested resource usage by customers of the cloud computing environment, as described above.

As further shown in <FIG>, process <NUM> may include determining a usage growth profile based on the historical cloud data and the historical customer data (block <NUM>). For example, the cloud resource prediction platform (e.g., using computing resource <NUM>, processor <NUM>, memory <NUM>, and/or the like) may determine a usage growth profile based on the historical cloud data and the historical customer data, as described above.

As further shown in <FIG>, process <NUM> may include determining, based on the historical cloud data and the historical customer data, usage deviation data indicating deviations between actual resource usage and planned resource usage of the cloud computing environment (block <NUM>). For example, the cloud resource prediction platform (e.g., using computing resource <NUM>, processor <NUM>, storage component <NUM>, and/or the like) may determine, based on the historical cloud data and the historical customer data, usage deviation data indicating deviations between actual resource usage and planned resource usage of the cloud computing environment, as described above.

As further shown in <FIG>, process <NUM> may include training a machine learning model, with the usage growth profile and the usage deviation data, to generate a trained machine learning model (block <NUM>). For example, the cloud resource prediction platform (e.g., using computing resource <NUM>, processor <NUM>, memory <NUM>, and/or the like) may train a machine learning model, with the usage growth profile and the usage deviation data, to generate a trained machine learning model, as described above.

As further shown in <FIG>, process <NUM> may include receiving a request for new resource usage by a customer associated with the cloud computing environment (block <NUM>). For example, the cloud resource prediction platform (e.g., using computing resource <NUM>, processor <NUM>, communication interface <NUM>, and/or the like) may receive a request for new resource usage by a customer associated with the cloud computing environment, as described above.

As further shown in <FIG>, process <NUM> may include processing the request for the new resource usage, with the trained machine learning model, to generate projected resource usage data, wherein the projected resource usage data identifies a projected resource usage of the cloud computing environment and by the customer (block <NUM>). For example, the cloud resource prediction platform (e.g., using computing resource <NUM>, processor <NUM>, memory <NUM>, and/or the like) may process the request for the new resource usage, with the trained machine learning model, to generate projected resource usage data, as described above. In some implementations, the projected resource usage data may identify a projected resource usage of the cloud computing environment and by the customer.

As further shown in <FIG>, process <NUM> may include performing one or more actions based on the projected resource usage data (block <NUM>). For example, the cloud resource prediction platform (e.g., using computing resource <NUM>, processor <NUM>, memory <NUM>, storage component <NUM>, communication interface <NUM>, and/or the like) may perform one or more actions based on the projected resource usage data, as described above.

In a first implementation, the usage growth profile may include data groupings of the historical cloud data and the historical customer data based on a set of attributes included in the historical cloud data and the historical customer data.

In a second implementation, alone or in combination with the first implementation, the set of attributes may include one or more of an attribute identifying types of the resources of the cloud computing environment, an attribute identifying tasks for which the resources are organized, an attribute identifying users of the resources, or an attribute identifying monetary costs associated with the resources.

In a third implementation, alone or in combination with one or more of the first and second implementations, the historical cloud data may include data identifying one or more of types of the resources of the cloud computing environment that are used by each of the customers, quantities of the resources that are used by each of the customers, times of day or days of a week when the resources are used by each of the customers, or monetary costs associated with the resources that are used by each the customers.

In a fourth implementation, alone or in combination with one or more of the first through third implementations, the historical customer data may include data identifying one or more of quantities of the resources of the cloud computing environment requested by each of the customers, allocation and usage of the resources by each of the customers, or characteristics of each of the customers.

In a fifth implementation, alone or in combination with one or more of the first through fourth implementations, when performing the one or more actions, the cloud resource prediction platform may provide the projected resource usage data for display; may provide, to a resource, instructions that cause the at least one of the resources to reboot, power off, or power on based on the projected resource usage data; may generate a recommendation to modify an allocation of the at least one of the resources based on the projected resource usage data; and/or the like.

In a sixth implementation, alone or in combination with one or more of the first through fifth implementations, when performing the one or more actions, the cloud resource prediction platform may cause a resource to be reallocated from one of the customers to the customer based on the projected resource usage data, may retrain the machine learning model based on the projected resource usage data, may order a new resource based on the projected resource usage data, and/or the like.

As shown in <FIG>, process <NUM> may include receiving a request for new resource usage by a customer associated with a cloud computing environment wherein the cloud computing environment includes resources (block <NUM>). For example, the cloud resource prediction platform (e.g., using computing resource <NUM>, processor <NUM>, communication interface <NUM>, and/or the like) may receive a request for new resource usage by a customer associated with a cloud computing environment and wherein the cloud computing environment includes resources, as described above. In some implementations, the cloud computing environment includes resources.

As further shown in <FIG>, process <NUM> may include processing the request for the new resource usage, with a machine learning model, to generate projected resource usage data, wherein the machine learning model is trained based on a usage growth profile determined based on historical cloud data associated with the resources of the cloud computing environment and based on historical customer data associated with requested resource usage by customers of the cloud computing environment, and usage deviation data determined based on processing the historical cloud data and the historical customer data with a model, wherein the usage deviation data indicates deviations between actual resource usage and planned resource usage of the cloud computing environment, and wherein the projected resource usage data identifies a projected resource usage of the cloud computing environment and by the customer (block <NUM>). For example, the cloud resource prediction platform (e.g., using computing resource <NUM>, processor <NUM>, memory <NUM>, storage component <NUM>, communication interface <NUM>, and/or the like) may process the request for the new resource usage, with a machine learning model, to generate projected resource usage data, as described above. In some implementations, the machine learning model may be trained based on a usage growth profile determined based on historical cloud data associated with the resources of the cloud computing environment and based on historical customer data associated with requested resource usage by customers of the cloud computing environment, and usage deviation data determined based on processing the historical cloud data and the historical customer data with a model. In some implementations, the usage deviation data may indicate deviations between actual resource usage and planned resource usage of the cloud computing environment. In some implementations, the projected resource usage data may identify a projected resource usage of the cloud computing environment and by the customer.

In a first implementation, the model may include a non-parametric probability estimation model with Bayesian smoothing, and the machine learning model may include a Monte Carlo simulation model.

In a second implementation, alone or in combination with the first implementation, the one or more processors, when processing the request for the new resource usage, the cloud resource prediction platform may perform multiple Monte Carlo simulations, based on the request for the new resource usage, to generate multiple results, and may determine the projected resource usage data based on the multiple results.

In a third implementation, alone or in combination with one or more of the first and second implementations, when performing the one or more actions, the cloud resource prediction platform may determine a reallocation of the resources of the cloud computing environment based on the projected resource usage data, and may cause the reallocation of the resources to be implemented by the cloud computing environment.

In a fourth implementation, alone or in combination with one or more of the first through third implementations, the resources of the cloud computing environment may include one or more of processor resources utilized by each of the customers, memory resources utilized by each of the customers, or network resources utilized by each of the customers.

In a fifth implementation, alone or in combination with one or more of the first through fourth implementations, when performing the one or more actions, the cloud resource prediction platform may monitor usage of the resources over time by the customer, and may provide corresponding results of monitoring the usage of the resources by the customer.

In a sixth implementation, alone or in combination with one or more of the first through fifth implementations, when performing the one or more actions, the cloud resource prediction platform may schedule one or more of the resources for usage by the customer based on the projected resource usage data.

As shown in <FIG>, process <NUM> may include receiving historical cloud data associated with resources of a cloud computing environment, wherein the historical cloud data includes data identifying one or more of types of the resources of the cloud computing environment that are used by each of customers of the cloud computing environment, quantities of the resources that are used by each of the customers, times of day or days of a week when the resources are used by each of the customers, or monetary costs associated with the resources that are used by each of the customers (block <NUM>). For example, the cloud resource prediction platform (e.g., using computing resource <NUM>, processor <NUM>, communication interface <NUM>, and/or the like) may receive historical cloud data associated with resources of a cloud computing environment, as described above. In some implementations, the historical cloud data may include data identifying one or more of types of the resources of the cloud computing environment that are used by each of customers of the cloud computing environment, quantities of the resources that are used by each of the customers, times of day or days of a week when the resources are used by each of the customers, or monetary costs associated with the resources that are used by each of the customers.

As further shown in <FIG>, process <NUM> may include receiving historical customer data associated with requested resource usage by the customers, wherein the historical customer data includes data identifying one or more of quantities of the resources of the cloud computing environment requested by the each of customers, allocation and usage of the resources by each of the customers, or characteristics of each of the customers (block <NUM>). For example, the cloud resource prediction platform (e.g., using computing resource <NUM>, processor <NUM>, communication interface <NUM>, and/or the like) may receive historical customer data associated with requested resource usage by the customers, as described above. In some implementations, the historical customer data may include data identifying one or more of quantities of the resources of the cloud computing environment requested by the each of customers, allocation and usage of the resources by each of the customers, or characteristics of each of the customers.

As further shown in <FIG>, process <NUM> may include processing the historical cloud data and the historical customer data, with a model, to determine usage deviation data indicating deviations between actual resource usage and planned resource usage of the cloud computing environment (block <NUM>). For example, the cloud resource prediction platform (e.g., using computing resource <NUM>, processor <NUM>, storage component <NUM>, and/or the like) may process the historical cloud data and the historical customer data, with a model, to determine usage deviation data indicating deviations between actual resource usage and planned resource usage of the cloud computing environment, as described above.

As further shown in <FIG>, process <NUM> may include training a machine learning model, with the usage growth profile and the usage deviation data, in order to generate a trained machine learning model (block <NUM>). For example, the cloud resource prediction platform (e.g., using computing resource <NUM>, processor <NUM>, memory <NUM>, and/or the like) may train a machine learning model, with the usage growth profile and the usage deviation data, in order to generate a trained machine learning model, as described above.

As further shown in <FIG>, process <NUM> may include receiving a request for new resource usage by a customer associated with the cloud computing environment (block <NUM>). For example, the cloud resource prediction platform (e.g., using computing resource <NUM>, processor <NUM>, input component <NUM>, communication interface <NUM>, and/or the like) may receive a request for new resource usage by a customer associated with the cloud computing environment, as described above.

As further shown in <FIG>, process <NUM> may include processing the request for the new resource usage, with the trained machine learning model, to generate projected resource usage data, wherein the projected resource usage data identifies a projected resource usage of the cloud computing environment and by the customer (block <NUM>). For example, the cloud resource prediction platform (e.g., using computing resource <NUM>, processor <NUM>, memory <NUM>, storage component <NUM>, and/or the like) may process the request for the new resource usage, with the trained machine learning model, to generate projected resource usage data, as described above. In some implementations, the projected resource usage data may identify a projected resource usage of the cloud computing environment and by the customer.

As further shown in <FIG>, process <NUM> may include performing one or more actions based on the projected resource usage data (block <NUM>). For example, the cloud resource prediction platform (e.g., using computing resource <NUM>, processor <NUM>, memory <NUM>, storage component <NUM>, output component <NUM>, communication interface <NUM>, and/or the like) may perform one or more actions based on the projected resource usage data, as described above.

In a first implementation, the usage growth profile may include data groupings of the historical cloud data and the historical customer data based on a set of attributes included in the historical cloud data and the historical customer data. In some implementations, the set of attributes may include one or more of an attribute identifying types of the resources of the cloud computing environment, an attribute identifying tasks for which the resources are organized, an attribute identifying users of the resources, or an attribute identifying monetary costs associated with the resources.

In a second implementation, alone or in combination with the first implementation, when performing the one or more actions, the cloud resource prediction platform may provide the projected resource usage data for display; may provide, to a resource, instructions that cause the at least one of the resources to reboot, power off, or power on based on the projected resource usage data; may generate a recommendation to modify an allocation of the at least one of the resources based on the projected resource usage data; and/or the like.

In a third implementation, alone or in combination with one or more of the first and second implementations, when performing the one or more actions, the cloud resource prediction platform may cause a resource to be reallocated from one of the customers to the customer based on the projected resource usage data, may retrain the machine learning model based on the projected resource usage data, may order a new resource based on the projected resource usage data, and/or the like.

In a fourth implementation, alone or in combination with one or more of the first through third implementations, when processing the request for the new resource usage, the cloud resource prediction platform may perform multiple Monte Carlo simulations, based on the request for the new resource usage, to generate multiple results, and may determine the projected resource usage data based on the multiple results.

In a fifth implementation, alone or in combination with one or more of the first through fourth implementations, when performing the one or more actions, the cloud resource prediction platform may determine a reallocation of the resources of the cloud computing environment based on the projected resource usage data, and may cause the reallocation of the resources to be implemented by the cloud computing environment.

Claim 1:
A method, comprising:receiving, by a device (<NUM>), historical cloud data associated with resources of a cloud computing environment (<NUM>),the historical cloud data including quantities of resources of the cloud computing environment (<NUM>) actually used by the customers, and the resources of the cloud computing environment (<NUM>) comprising a plurality of virtual machines (<NUM>-<NUM>);receiving, by the device (<NUM>), historical customer data associated with requested resource usage by customers of the cloud computing environment (<NUM>),the historical customer data including quantities of resources of the cloud computing environment (<NUM>) requested by the customers;determining, by the device (<NUM>), a usage growth profile based on the historical cloud data and the historical customer data,wherein the usage growth profile groups the historical cloud data and the historical customer data based on a quantity of transient virtual machines utilized by the customers, a quantity of virtual machines continuously being utilized, a quantity of continuously unutilized virtual machines, and/or a quantity of times virtual machines change from one customer to another customer;determining, by the device (<NUM>) and based on the historical cloud data and the historical customer data, usage deviation data indicating deviations between actual resource usage and requested resource usage of the cloud computing environment (<NUM>);training, by the device (<NUM>), a machine learning model, with the usage growth profile and the usage deviation data, to generate a trained machine learning model which determines projected resource usage data based on a request for a new resource from the cloud computing environment (<NUM>);receiving, by the device (<NUM>), a request for new resource usage by a customer associated with the cloud computing environment (<NUM>);processing, by the device (<NUM>), the request for the new resource usage, with the trained machine learning model, to generate projected resource usage data,wherein the projected resource usage data includes data identifying a projected resource usage of the cloud computing environment (<NUM>) and by the customer; and performing, by the device (<NUM>), one or more actions based on the projected resource usage data, wherein the performing one or more actions includes providing, to a resource, instructions that cause the at least one of the resources to reboot, power off, or power on based on the projected resource usage data.