Machine capability model for self-configurable applications

By clustering computing platforms using an unsupervised clustering algorithm and generating feature setting templates, the problem of inconsistent application performance on different platforms is solved, and optimized configuration of applications at startup is achieved, improving user experience and performance consistency.

CN120917422APending Publication Date: 2025-11-07MICROSOFT TECHNOLOGY LICENSING LLC
View PDF 0 Cites 0 Cited by

Patent Information

Application Number
CN202480019937.5
Authority / Receiving Office
CN · China
Patent Type
Applications(China)
Current Assignee / Owner
Priority Date
2023-05-31
Filing Date
2024-04-07
Publication Date
2025-11-07

AI Technical Summary

Technical Problem

Modern computer software applications struggle to provide optimal performance configurations across different computing platforms, resulting in inconsistent user experiences. Existing technologies also struggle to quickly and accurately provide optimized feature settings for different hardware and software configurations at startup.

Method used

The computing platform is clustered into multiple groups using an unsupervised clustering algorithm. A clustering model is generated by evaluating platform attributes, and feature setting templates are assigned to each group based on the cluster ranking. The application instance automatically customizes the feature settings according to the platform attributes when it starts up.

Benefits of technology

It enables application performance to quickly and accurately provide the best user experience on different computing platforms, avoids performance degradation due to hardware differences, and improves configuration efficiency when starting the application.

✦ Generated by Eureka AI based on patent content.

Smart Images

  • Figure CN120917422A_ABST
    Figure CN120917422A_ABST
Patent Text Reader

Abstract

Disclosed in some examples are methods, systems, and machine-readable media for customizing application feature settings using ranking clustering from an unsupervised modeling algorithm that clusters similar computing platforms and feature setting templates that map these ranks to feature settings. In some examples, a model may be periodically constructed using a first set of computing platform attributes observed from a computing platform on which the application is executing. These clusters are then ranked using a second set of computing platform attributes observed from other computing platforms on which the application is executing, and performance data describing performance of the application on these platforms.
Need to check novelty before this filing date? Find Prior Art

Description

[0001] Cross Reference to Related Applications

[0002] This application claims priority to U.S. Provisional Application No. 63 / 460,803, filed April 20, 2023, which is incorporated by reference herein. TECHNICAL FIELD

[0003] Embodiments relate to automated application configuration based on the computing platform they are executing on. Some embodiments relate to clustering computing platforms with pre-specified clusters for implementing per-feature tailored assignment rankings using clustering algorithms. BACKGROUND

[0004] Modern computer software applications are complex, with many complex features. For example, a real-time communication application (RTC) provides various features such as audio calling, chat, video, screen sharing, background blur, background noise removal, and other capabilities at different quality settings, resolutions, frame rates, etc. BRIEF DESCRIPTION OF DRAWINGS

[0005] In the drawings, which are not necessarily drawn to scale, like numerals can describe similar components in different views. Like numerals having different letter suffixes can represent different instances of similar components. The drawings illustrate generally, by way of example, various embodiments discussed in the present document.

[0006] Figure 1 A system diagram of a platform information based feature modification system is illustrated in accordance with some examples of the present disclosure.

[0007] Figure 2 A flow diagram of a method of generating a feature capability clustering model is illustrated in accordance with some examples of the present disclosure.

[0008] Figure 3 A flow diagram of a method for modifying features provided to a user of an application based on a computing platform of a computing device of the user is illustrated.

[0009] Figure 4 A flow diagram of a method of modifying features of an application instance based on a computing platform of a computing device executing the application instance is illustrated in accordance with some examples of the present disclosure.

[0010] Figure 5 An example machine learning module is shown in accordance with some examples of the present disclosure.

[0011] Figure 6 is a block diagram illustrating an example of a machine upon which one or more embodiments can be implemented. DETAILED DESCRIPTION

[0012] The various computing platforms on which application instances can execute are highly variable. For example, modern personal computers have a wide variety of hardware and components from a wide variety of different vendors with a wide variety of different operating systems (e.g., Windows®, Mac®, Linux) and so on. In addition to the wide variety of hardware and software that can be utilized in a PC, the proliferation of Macs, tablets, phones, and so on from Apple® provides an almost limitless prospect of potential hardware and software combinations on which applications can execute.

[0013] To maintain optimal performance, applications need to adapt to these various platform configurations. For example, for RTC applications, features such as machine learning (ML) and deep learning models (e.g., echo cancellation, noise suppression, background blur / removal) are very heavy on some weaker hardware. In these examples, attempting to provide these features or attempting to provide these features at the same quality as provided on more capable platforms can in turn result in lower performance of the RTC application, resulting in a degraded end user experience. In some extreme cases, a misconfigured RTC application can impact both the user experience of the user whose application was misconfigured as well as other participants in a shared communication session.

[0014] A potential solution is to obtain a specific, hardcoded, and static set of configurations. That is, a list of hardware and / or software and specific feature settings for that hardware and / or software. Any such approach must account for an almost infinite number of device configurations. Given the frenetic pace of hardware development, and the long history of such hardware, it is untenable to simply maintain an up-to-date list of hardware. This problem also presents a problem for supervised machine learning approaches, as there is no explicit training supervision signal for all of these potential device configurations. Another solution is to monitor performance while the application is executing and adjust the application's settings based on that performance. For example, many streaming services start at a lower quality and step up to a higher quality based on network performance. The problem with these techniques is finding the appropriate starting point that maximizes performance for most users. For example, if the application starts with settings appropriate for a lower performance platform to accommodate lower performance platforms, then the experience of users utilizing higher performance platforms is degraded. In other examples, if the application starts with settings appropriate for a higher performance platform, then the experience for users with lower performance platforms can be degraded. This can be unacceptable. For example, in a video streaming service example, a short video can be almost completely watched when the algorithm adjusts the resolution to accommodate a higher performance platform - degrading the overall experience.

[0015] ​​Methods, systems, and machine-readable media for automatically customizing application feature settings to optimal settings at application instance launch for a computing platform are disclosed in some examples. The system uses unsupervised clustering algorithms to cluster similar computing platforms together to create a cluster model. The clusters in the model are then ranked (e.g., using previously captured performance data), and feature settings are determined based on the ranking. Multiple feature settings for a given rank are aggregated to create a feature settings template. When an application instance is executed, the platform on which it is executed is assigned to one of the clusters. A feature settings template is then identified based on the ranking of the assigned cluster. The feature settings are then applied to the features of the application instance based on the feature settings in the feature settings template. The feature settings can be fine-tuned such that the features provide optimal performance for all computing platforms within a given rank.

[0016] Thus, the disclosed methods utilize information available at the time of execution of an application instance without having to rely on performance metrics in execution collected later. At the same time, the use of these clustering algorithms ensures a good level of performance of the application instance by providing the best user experience through the provision of optimal feature settings. Thus, the present system solves the technical problem of poor application instance performance due to different computing platforms by utilizing a previously created cluster model to quickly and accurately find similar computing platforms, a single numerical indicator of the performance of that cluster (e.g., a rank) to quickly assess, and applying feature settings customized for those ranks.

[0017] As used herein, a computing platform can include the hardware of the computing device on which an application instance is executing as well as the software platform providing services to the application (e.g., by interfacing with the hardware). Example hardware includes central processing units (CPUs), random access memory (RAM), storage devices, motherboards, network interfaces, displays, etc. Example software platforms include operating systems as well as other software applications that interface with software application instances. Example software applications include drivers (e.g., that expose the functionality of the hardware to software applications), frameworks (e.g.,.NET framework, JAVA framework), and for browser-based applications - the browser executing the application instance.

[0018] The one or more platform attributes can include hardware attributes and / or software attributes. Hardware attributes describe one or more hardware devices of the computing platform. Hardware attributes can include CPU identifier, number of CPU cores, size of RAM, type of RAM (double data rate (DDR) 3, DDR4, DDR5), speed of RAM, type of storage device on which the application is stored or used for storage, speed of storage device on which the application is stored or used for storage, network adapter type and speed, device type (e.g., tablet, desktop, laptop, phone), etc. Software attributes can include software environment information such as, for example, one or more software versions. Examples include operating system (O / S) information such as major and minor version, whether the application is executing within a virtual machine, driver version, framework version, etc.

[0019] In some examples, the system first trains the model. In this phase, a plurality of observed platform attributes of platforms on which the application is executed are used to train an unsupervised machine learning model to produce a model that clusters similar platforms into a plurality of groups or clusters. The number of groups can be found by using a silhouette score by evaluating the cohesiveness and spread of the respective groups. This allows the model to rely on static information of the devices that does not depend on the application performance metrics. For certain hardware features, such as CPU names, an encoder can be used to map those features to floating point numbers. The encoder can learn the mapping from categories to floating point numbers based on the frequency of occurrence. The encoder orders the CPU names by their relative frequency to compute the statistics of how many devices use that CPU. In turn, these statistics are used to generate the floating point number conversion. The model uses such floating point numbers during training. The mapping from text to floating point numbers can be stored in a dictionary inside the final model for future inference. When the model runs the inference for a particular CPU name, the model will look up the dictionary to match its corresponding floating point value, which was computed in the encoder when the encoder was trained.

[0020] In some examples, to validate the model, different data sets comprising a plurality of observed platform attributes of platforms executing the application can be used to cluster each of the platforms using the model. Performance metrics taken of those platforms during application execution, such as CPU / memory usage and frequency, subjective user performance ratings (e.g., user feedback on performance), and other metrics can be used to produce a ranking score for each cluster. That is, the clusters created during model training are assigned one or more "rankings" that identify the relative performance of the platforms assigned to a particular cluster as compared to other platforms assigned to different clusters. That is, a platform assigned to a rank of 10 can achieve better performance than a platform assigned to a rank of 1 (or vice versa).

[0021] Once the model is built and assigned, the model and rankings are used in the inference phase. Note that the model can be periodically rebuilt and / or recalibrated - however, this can require recalibrating the settings in the feature template to change the settings for each feature based on the updated rankings.

[0022] For the inference phase, when an instance of an application is executed on a computing platform, platform attributes, such as hardware and software environment information, are collected. The platform attributes are used to place the current platform in one of the clusters. The identified cluster is then mapped to its assigned ranking. The assigned ranking is used by the features of the application to customize the settings. This process can be done once at installation of the application instance, once at the first time the application instance is executed on the platform, each time at startup of the application instance, at installation or first startup, and then at each startup if changes in the hardware or software of the platform are detected during the startup process, periodically at startup of the application instance, etc.

[0023] The feature settings template can include one or more feature settings for a particular ranking. In some examples, a feature can require a minimum ranking to be enabled. Thus, if the ranking of the device is below the required minimum, the feature settings indicate that the feature will be disabled. In some examples, a particular application feature can be modified based on the ranking. For example, a feature involving video can modify the video resolution based on the hardware ranking. Example feature settings can include quality settings, frame rate settings, codec settings, whether the feature is enabled, etc. The higher the ranking of the device, the better the quality of the video can be.

[0024] As previously described, new hardware and software frequently appear in the market. From new CPUs, new tablets, new laptops, faster RAM, etc., and those that appear after the time of model training (or between training phases when the model is continuously updated) will be unknown to the model. To handle new unseen devices in the model without model retraining, the system can update the category mapping dictionaries with new categories. The changes in these dictionaries are “minor” version changes, as the model itself does not change. This allows for the inclusion of new category values, such as some new CPU names. Further, in some examples, the model can be retrained again, with more data or even with different features. In some examples, the application features can have to be changed as hardware can be regrouped based on such retraining.

[0025] As one example, a CPU identifier - e.g., “i9-13900k” can be converted to a floating point number - e.g., 7.0. A CPU - say “i9-13900ks” can be introduced after the model is created. In these examples, the model can be retrained, and the system can map i9-13900ks to a similar floating point number (i.e., 7.3) based on its similarity to i9-13900k and in some examples based on its similar core count and speed. In other examples, 13 can map to a floating point value similar to MAX, and thus Devices can be clustered with 13 devices. This conversion between floating point numbers and CPU identifiers can be stored in a dictionary. Before retraining the model, CPUs can be categorized as unseen devices.

[0026] Figure 1A system diagram 100 of a platform information based feature modification system is illustrated in accordance with some examples of the present disclosure. A configuration data store 105 stores a plurality of platform attributes collected from computing devices executing one or more application instances of one or more applications, such as application instance 140. For example, platform attributes such as hardware and software on which an application, such as application instance 140, has executed. A capability service 110 can utilize this platform information to create a machine learning model that classifies platforms into one or more clusters. For example, a cluster analysis component 115 can apply a machine learning model, such as a k-means model, to produce clusters 117 from platform attributes. As previously described, the cluster analysis component 115 can first encode platform attributes that are text or non-numerical using a transformation encoding algorithm to convert text to numbers, such as floating point numbers. In these examples, similar text can produce similar numbers, which reflects the observation that similar model numbers can provide similar performance. As described above, the cluster analysis component 115 produces a plurality of clusters 117.

[0027] A rank assignment component 120 can assign a rank to the plurality of clusters. The rank indicates an expected performance of devices assigned to a particular cluster relative to devices assigned to one of the other clusters. In some examples, a performance metric can be used to assign the rank. In some examples, the rank can be generated using platform attributes of platforms that were not used to create the initial clusters. In some examples, the rank can be manually assigned by an administrator. In other examples, the rank can be automatically assigned based on a performance metric— for example, grouping clusters based on their performance as evidenced by the performance metric.

[0028] The model and rank mapping can be sent to an inference component 134 of a computing device 130. The inference component 134 can be a separate application from the application instance 140, but in other examples can be part of the application instance 140. In examples where the inference component 134 is separate from the application instance 140, the rank produced by the inference component 134 will be used by a plurality of different applications. For example, a second application (different from the application of the application instance 140) can also use the assignment of ranks or clusters to determine feature customization settings.

[0029] The inference component 134 uses the model and rank mapping and platform attributes 132 of the computing device 130 to determine a cluster assignment 136 of the platform of the computing device 130 into one of the clusters 117. A rank mapping component 138 then uses the cluster assignment and determines a rank based on the rank mapping. This produces a rank that is passed to the application instance 140.

[0030] The feature template selection component 142 of the application instance 140 can utilize the rankings to select a feature template from a plurality of feature templates 144 based on the rankings. The feature templates 144 can be provided on the computing device 130 as part of the application instance 140, downloaded separately, etc. A particular feature template can be mapped to a particular ranking, and a plurality of feature settings can be specified based on the ranking. The feature settings application component 146 can use the selected feature template to set, change, or adjust one or more feature settings. For example, by changing one or more configuration files, updating one or more data structure attributes, etc. These configuration files or data structures can be examined by the features in the application instance 140 at start or execution to determine the appropriate settings.

[0031] Figure 2 A flowchart of a method 200 of generating a feature capability clustering model is illustrated in accordance with some examples of the present disclosure. At operation 210, the system determines or identifies a plurality of platform attributes. For example, an application can execute across a variety of different platforms, and this information can be collected and sent to an external service. As previously described, the platform attributes can include hardware information and / or software platform information such as operating system major and minor versions.

[0032] At operation 212, the system can pre-process the platform attributes. For example, by converting non-numeric information to floating point or other numeric. This can be done based on a formula or other encoding algorithm (e.g., one-hot encoding, etc.).

[0033] At operation 214, the system can cluster the platform attributes into a plurality of clusters. In some examples, the number of clusters can be determined using silhouette scores or other analysis. In some examples, the clusters can be partition-based clustering models such as K-means, K- nearest neighbors, shift clustering, etc.

[0034] At operation 216, the clusters can be mapped to the rankings. In some examples, this operation can be performed with another set of platform information different than the platform information used in operation 210 and application performance metrics such as CPU usage, RAM usage, etc. The ranking of the clusters can be done manually, or can be done using another machine learning algorithm or model such as a ranking model that utilizes application performance metrics to determine which clusters perform better than others.

[0035] Figure 3A flowchart illustrating a method 300 for modifying features provided to a user of an application based on the computing platform of the user's computing device is shown. At operation 310, the system can identify computing platform attributes of the device. The platform attributes can include one or more hardware attributes of one or more hardware devices on the computing device on which an application configured according to the present disclosure is executing. As previously described, hardware attributes can include CPU identifier, number of CPU cores, size of RAM, type of RAM (DDR3, DDR4, DDR5), speed of RAM, type of storage device on which the application is stored or used for storage, speed of storage device on which the application is stored or used for storage, etc. Platform attributes can include software environment such as, for example, operating system (O / S) information such as major and minor version, whether the application is executing within a virtual machine, etc.

[0036] At operation 312, the system can utilize the model to determine a cluster for the device using platform attributes such as hardware attributes and the model (e.g., the model created at operation 214). At operation 314, using the cluster, a rank of the cluster is found, and thus a rank of the device. At operation 316, based on the rank, one or more features are modified. Example modifications include disabling a feature, reducing the quality of a feature (e.g., reducing video resolution, audio quality, etc.), limiting the options available to the user within a feature, etc.

[0037] Figure 4 A flowchart illustrating a method 400 for modifying features of an application instance based on the computing platform of the computing device on which the application instance of the application is executing according to some examples of the present disclosure is shown. Method 400 can be applied by one or more application instances across one or more devices. An application instance can be a particular copy of the same application. For example, a first copy of an application executing on a first computing device can be a first instance, and a second copy of the application executing on a second computing device can be a second instance. Additionally, an instance can be a copy of an application tailored for a different computing device. For example, a first instance can be a mobile-based application for a mobile phone, a second instance is a tablet-based application, a third instance is a PC-based version, and a fourth instance is a version for a

[0038] ​Operations 412-418 are performed with respect to the first application instance on the first computing device having a first computing platform. At operation 412, the system identifies one or more attributes of the first computing platform of the first computing device. In some examples, the first computing platform includes a plurality of hardware devices of the first computing device, and the attributes include hardware device attributes. In some examples, the first computing platform includes a software platform, and the attributes include software attributes. In some examples, the one or more attributes do not include performance metrics of the first application instance executing on the first computing device or performance metrics of the device itself.

[0039] For example, the one or more attributes can include hardware information, such as processor information, such as: model (e.g., 32-bit, 64-bit, x86, Reduced Instruction Set Computer (RISC), Complex Instruction Set Computer (CISC), etc.), processor stepping, processor name (e.g., “i9-13900k”), processor family name (e.g., “Raptor Lake” ), maximum total design power (TDP), package type (e.g., Land Grid Array (LGA) 1700), processor family, processor model, stepping, extended family, extended model, revision, core count, base speed, turbo speed, supported instruction set, bus speed. Other hardware information includes RAM information, such as type (e.g., DDR3, DDR4, DDR5), channels (e.g., 4x 32-bit), RAM size (e.g., 8 GBytes, 16 GBytes, 32 Gbytes, etc.), RAM frequency, RAM timings (e.g., Column Address Strobe (CAS) latency, Row Address Strobe (RAS) to CAS latency, etc.). Other hardware information includes motherboard information, such as manufacturer, model, chipset, Basic Input / Output System (BIOS) information, Unified Extensible Firmware Interface (UEFI) information, etc. Still other hardware information can include graphics card information, such as graphics processing unit (GPU) name, manufacturer, GPU code name, revision, total design power (TDP), core clock, graphics memory size, graphics memory speed, graphics memory bus width, display resolution, display refresh rate, High Dynamic Range (HDR) support, etc. Other attributes of the computing platform can include operating system (OS) major version, such as Microsoft Windows 10, 11, Apple OS, iOS, Android version, etc. Minor versions of the OS can also be included, such as Windows 11 Pro, 22H2.

[0040] In some examples, the one or more attributes are not metrics of the application instance (or another application) executing on the computing platform, nor are they based directly on metrics. For example, the one or more attributes can not include processor utilization, RAM utilization, GPU utilization, network utilization, jitter, quality, etc. that are collected to measure application instance performance. Note that in some examples, these performance metrics, although not used to assign a particular computing platform to a cluster, can still be used to rank various clusters during the model building phase. In some examples, these performance metrics can be used to modify feature settings during application instance execution. In some examples, these performance metrics can not be used to assign a computing platform to a cluster. The one or more attributes can be determined before or immediately after the application begins execution, before the features are configured, and before metrics can be reliably computed. For example, at initial application initialization, at application installation, at the first execution of the application, etc. For a network-based communication application, this can be before any network-based communication session. By utilizing these attributes instead of metrics, the application instance can be configured for proper performance levels without collecting metrics that can impact the performance of the application instance. Solutions that use metrics can start with inefficient settings that can demand too much of the computing platform it is running on, which can result in poor performance.

[0041] At operation 414, the system maps the first computing device to a first category of a plurality of computing platform categories based on one or more attributes of the first computing platform and a predefined cluster model. A computing platform can include hardware of a computing device on which an application instance is executing and software platforms that provide services to the application. Example software platforms include operating systems and other software applications that interface with the software application instance. Example software applications that interface with the software application include drivers, frameworks (e.g.,.NET framework, JAVA framework), and for browser-based applications - the browser that executes the application instance.

[0042] At operation 416, the system identifies a first feature setting template based on a mapping between the first category and the first feature setting template corresponding to the first category. In some examples, a feature setting template can be a list of a plurality of features and associated settings for those features. Each category and / or ranking can be an associated feature setting template that customizes an instance of the application based on settings embedded therein.

[0043] At operation 418, the system modifies features of the first application instance based on the first feature setting template, wherein modifying the features of the first application instance includes applying first changes to the features. For example, the first changes are specified for features in the feature setting template.

[0044] Operations 422-428 can be performed with respect to a second application instance running on a second computing device having a second computing platform. At operation 422, the system can identify one or more attributes of the second computing platform of the second computing device. In some examples, the second computing platform includes a plurality of hardware devices of the second computing device, and the attributes include hardware device attributes. In some examples, the second computing platform includes a software platform, and the attributes include software attributes. In some examples, the one or more attributes do not include performance metrics of software application instances executing on the second computing device or performance metrics of the devices themselves.

[0045] At operation 424, the system can map the second computing device to a second category of the plurality of computing platform categories based on the second one or more attributes and a predefined clustering model, the second category including computing platforms judged to be less capable than computing platforms of the first category. For example, the rank assigned to the second category can be a lower rank than the first category - where higher ranked categories have more powerful computing platforms that are able to handle increased computational workloads for some features.

[0046] At operation 426, the system can identify a second feature setting template based on a mapping between the second category and the second feature setting template corresponding to the second category. At operation 428, the system can modify a feature of the second application instance based on the second feature setting template, where modifying the feature of the second application instance includes applying a second change to the feature, where the second category of the plurality of computing platform categories is a lower category than the first category, and where the second change modifies the feature to require fewer operational resources than the first change.

[0047] As noted, the feature setting templates include mappings between various categories and various features and customizations (e.g., settings) to customize settings of an application for a particular computing platform. These mappings can be specific to each feature, and each developer that owns a particular feature of an application can set these mappings based on in-use metrics of the feature within the application.

[0048] Figure 5 An example machine learning component 500 is shown in accordance with some examples of the present disclosure. The machine learning component 500 can be implemented in whole or in part by one or more computing devices. In some examples, the training component 510 can be implemented by a different device than the prediction component 520. In these examples, the model 580 can be created on a first machine and then sent to a second machine. In some examples, one or more portions of the machine learning component 500 can be implemented by one or more components from Figure 2 the system 100.

[0049] In some examples, the machine learning component 500 utilizes a training component 510 and a prediction component 520. The training component 510 inputs training feature data 530 into a selector component 550. The training feature data 530 can include one or more sets of training data. The training feature data 530 can be labeled with desired outputs. In other examples, the training data can not be labeled and the model can be trained using unsupervised methods and / or feedback data, such as through a reinforcement learning method. The feedback data can be a measure of error between a desired result of an algorithm and an actual result.

[0050] The selector component 550 transforms and / or selects training vectors 560 from the training feature data 530. For example, the selector component 550 can filter, select, transform, process, or otherwise transform the training data. For example, the selector component 550 can apply one or more feature selection algorithms to find features in the training data. The selected data can populate the training vectors 560 and include a set of training data determined to be predictive of an outcome. The information selected for inclusion in the training vectors 560 can be all of the training feature data 530, or in some examples, a subset of all of the training feature data 530. The selector component 550 can also transform or otherwise process the training feature data 530, such as normalization, encoding, etc. The training vectors 560 (and any applicable labels) can be utilized by a machine learning algorithm 570 to produce a model 580. In some examples, other data structures besides vectors can be used. The machine learning algorithm 570 can learn one or more layers of the model. Example layers can include convolutional layers, dropout layers, pooling / upsampling layers, SoftMax layers, etc. An example model can be a neural network, where each layer includes a plurality of neurons that take a plurality of inputs, weight the inputs, input the weighted inputs into an activation function to produce an output, which can then be sent to another layer. Example activation functions can include rectified linear units (ReLu), etc. The layers of the model can be fully or partially connected.

[0051] In the prediction component 520, the feature data 590 is input to a selector component 595. The selector component 595 can operate identically or differently than the selector component 550. In some examples, the selector components 550 and 595 are the same component or different instances of the same component. The selector component 595 produces a vector 597 that is input into the model 580 to produce an output 599. For example, the weights and / or network structure learned by the training component 510 can be performed on the vector 597, such as by applying the vector 597 to a first layer of the model 580 to produce an input to a second layer of the model 580, and so on until an output encoding is produced. As previously described, other data structures can be used in addition to vectors (e.g., matrices).

[0052] The training component 510 can operate in an offline manner to train the model 580. However, the prediction component 520 can be designed to operate in an online manner. It should be noted that the model 580 can be periodically updated via additional training and / or user feedback. For example, additional training feature data 530 can be collected when a user provides feedback regarding the performance of the prediction.

[0053] The machine learning algorithm 570 can be selected from many different potential supervised or unsupervised machine learning algorithms. Examples of learning algorithms include: artificial neural networks, generative pre-trained transformer (GPT), convolutional neural networks, Bayesian networks, instance-based learning, support vector machines, decision trees (e.g., Iterative Dichotomiser 3, C4.5, classification and regression trees (CART), chi-squared automatic interaction detector (CHAID), and so on), random forests, linear classifiers, quadratic classifiers, k-nearest neighbors, k-means, linear regression, logistic regression, region-based CNNs, fully CNNs (for semantic segmentation), Mask R-CNN algorithm for instance segmentation, latent Dirichlet allocation (LDA), and hidden Markov models. Examples of unsupervised learning algorithms include expectation maximization algorithms, vector quantization, and information bottleneck methods.

[0054] As described above, the machine learning model can be used to build a clustering model to cluster the computing platforms into a plurality of clusters. In some examples, the training component 510 can be an unsupervised component because the training feature data 530 is unlabeled. In some examples, the training feature data 530 includes attributes of a plurality of computing platforms executing a software application prior to deploying the methods disclosed in the present application. The number of clusters can be determined using one or more metrics, such as silhouette scores. In some examples, in-use application metrics (such as processor utilization, RAM utilization, GPU utilization, network utilization, jitter, quality, etc.) collected while the application instance is executing can also be included in the training component 510. In these examples, the feature data 590 is attributes of the computing platforms on which the application instance was installed or started (e.g., for the first time). The output 599 can be a cluster identifier of the cluster. The cluster can be converted (e.g., by mapping) to a rank. The rank can then be used to select a feature setting template that applies one or more features settings to one or more features of the application instance.

[0055] Figure 6 FIGURE 11 illustrates a block diagram of an example machine 600 upon which any one or more of the techniques (e.g., methodologies) discussed in this document can perform. In alternative embodiments, the machine 600 can operate as a standalone device or can be connected (e.g., networked) to other machines. In a networked deployment, the machine 600 can operate in the capacity of a server machine, a client machine, or both in server-client network environments. In an example, the machine 600 can act as a peer machine in peer-to-peer (P2P) (or other distributed) network environment. The machine 600 can be a personal computer (PC), a tablet PC, a set-top box (STB), a personal digital assistant (PDA), a mobile telephone, a smart phone, a web appliance, a network router, switch or bridge, or any machine capable of executing instructions (sequential or otherwise) that specify actions to be taken by that machine. Further, while only a single machine is illustrated, the term "machine" shall also be taken to include any collection of machines that individually or jointly execute a set (or multiple sets) of instructions to perform any one or more of the methodologies discussed herein, such as cloud computing, software as a service (SaaS), other computer cluster configurations. The machine 600 can be or include (in whole or in part) the configuration data store 105, the capability service 110, the computing device 130; the methods 200, 300, 400; and Figure 5 one or both of the machine learning components.

[0056] As described herein, examples can include or can operate on one or more logic units, components, or mechanisms (hereinafter “components”). A component is a tangible entity (e.g., hardware) that can perform specified operations and can be configured or arranged in a certain manner. In examples, circuits can be arranged (e.g., internally or with respect to external entities such as other circuits) in a specified manner as a component. In examples, tangible entities can be hardware, which are implemented in

[0057] Thus, the term “component” is understood to encompass a tangible entity, be that an entity that is physically constructed, specifically configured (e.g., hardwired), or temporarily (e.g., transitorily) configured (e.g., programmed) to operate in a specified manner or to perform part or all of any operation described herein. Considering examples in which components are temporarily configured, each of the components need not be instantiated at any one moment in time. For example, where the components comprise a general-purpose hardware processor configured using software, the general-purpose hardware processor can be configured as respective different components at different times. Software can accordingly configure a hardware processor, for example, to constitute a particular module at one instance of time and to constitute a different component at a different instance of time.

[0058] The machine (e.g., computer system) 600 can include one or more hardware processors, such as processor 602. Processor 602 can be a central processing unit (CPU), a graphics processing unit (GPU), a hardware processor core, or any combination thereof. The machine 600 can include a main memory 604 and a static memory 606, some or all of which can communicate with one another via an interlink (e.g., bus) 608. Examples of the main memory 604 can include a synchronous dynamic random access memory (SDRAM), such as a double data rate memory, such as DDR4 or DDR5. The interlink 608 can be one or more different types of interlink, such that one or more components can be connected using a first type of interlink and one or more components can be connected using a second type of interlink. Example interlinks can include a memory bus, a peripheral component interconnect (PCI), a peripheral component interconnect express (PCIe) bus, a universal serial bus (USB), etc.

[0059] The machine 600 can also include a display unit 610, an alphanumeric input device 612 (e.g., a keyboard), and a User Interface (UI) navigation device 614 (e.g., a mouse). In an example, the display unit 610, input device 612 and UI navigation device 614 can be a touch screen display. The machine 600 can additionally include a storage device (e.g., drive unit) 616, a signal generation device 618 (e.g., a speaker), a network interface device 620, and one or more sensors 621, such as a global positioning system (GPS) sensor, compass, accelerometer, or other sensor. The machine 600 can include an output controller 628, such as a serial (e.g., universal serial bus (USB), parallel, or other wired or wireless (e.g., infrared (IR), near field communication (NFC), etc.) connection to communicate or control one or more peripheral devices (e.g., a printer, card reader, etc.).

[0060] The storage device 616 can include a machine readable medium 622 on which is stored one or more sets of data structures or instructions 624 (e.g., software) embodying or utilized by any one or more of the techniques or functions described herein. The instructions 624 can also reside completely, or at least partially, within the main memory 604, static memory 606, or hardware processor 602 during execution thereof by the machine 600, The one or any combination of the hardware processor 602, the main memory 604, the static memory 606, or the storage device 616 can constitute machine readable media.

[0061] While the machine readable medium 622 is illustrated as a single medium, the term "machine readable medium" can include a single medium or multiple media (e.g., a centralized or distributed database, and / or associated caches and servers) configured to store the one or more instructions 624.

[0062] The term“machine-readable medium” can include any medium that is capable of storing, encoding, or carrying instructions for execution by the machine 600 and that cause the machine 600 to perform any one or more of the techniques of the present disclosure, or that is capable of storing, encoding or carrying data structures used by or associated with such instructions. Non-limiting machine-readable medium examples can include solid-state memories, and optical and magnetic media. Specific examples of machine-readable media can include: non-volatile memory, such as semiconductor memory devices (e.g., Electrically Programmable Read-Only Memory (EPROM), Electrically Erasable Programmable Read-Only Memory (EEPROM)) and flash memory devices; magnetic disks such as internal hard disks and removable disks; magneto-optical disks; Random Access Memory (RAM); Solid State Drives (SSDs); and CD-ROM and DVD-ROM disks. In some examples, machine-readable media can include non-transitory machine-readable media. In some examples, machine-readable media can include machine- readable media that is not a transitory propagating signal.

[0063] The instructions 624 can further be transmitted or received over a communications network 626 using a transmission medium via the network interface device 620. The machine 600 can communicate with a wired or wireless network using a variety of transmission protocols, including Frame Relay, Internet Protocol (IP), Transmission Control Protocol (TCP), User Datagram Protocol (UDP), Hypertext Transfer Protocol (HTTP), etc. Example communication networks can include a local area network (LAN), a wide area network (WAN), a packet data network (e.g., the Internet), mobile telephone networks (e.g., cellular networks), Plain Old Telephone (POTS) networks, and wireless data networks, such as Institute of Electrical and Electronics Engineers (IEEE) 802.11 family of standards known as Wi-Fi®, IEEE 802.15.4 family of standards, a 5G New Radio (NR) family of standards, a Long Term Evolution (LTE) family of standards, a Universal Mobile Telecommunications System (UMTS) family of standards, peer-to-peer (P2P) networks, among others. In an example, the network interface device 620 can include one or more physical jacks (e.g., Ethernet, coaxial, or phone jacks) or one or more antennas to connect to the communications network 626. In an example, the network interface device 620 can include a plurality of antennas to wirelessly communicate using at least one of Single-Input Multiple-Output (SIMO), Multiple-Input Multiple-Output (MIMO), or Multiple-Input Single-Output (MISO) techniques. In some examples, the network interface device 620 can wirelessly communicate using Multiple User MIMO techniques.

[0064] Other Notes and Examples

[0065] Example 1 is a method for modifying a feature of an application instance based on a computing platform of a computing device executing the application instance, the method comprising: for a first application instance on a first computing device having a first computing platform: identifying one or more attributes of the first computing platform of the first computing device, the first computing platform comprising a plurality of hardware devices of the first computing device, the one or more attributes excluding a performance metric of the first application instance executing on the first computing device; mapping the first computing device to a first category of a plurality of computing platform categories based on the one or more attributes of the first computing platform and a predefined clustering model; identifying a first feature settings template based on a mapping between the first category and the first feature settings template corresponding to the first category; and modifying a feature of the first application instance based on the first feature settings template, wherein modifying the feature of the first application instance comprises applying a first change to the feature; for a second application instance on a second computing device having a second computing platform: identifying a second one or more attributes of the second computing platform of the second computing device, the second computing platform comprising a plurality of hardware devices of the second computing device, the one or more attributes excluding a performance metric of the second application instance executing on the second computing device; mapping the second computing device to a second category of the plurality of computing platform categories based on the second one or more attributes and the predefined clustering model, the second category comprising computing platforms judged to be less capable than computing platforms of the first category; identifying a second feature settings template based on a mapping between the second category and the second feature settings template corresponding to the second category; and modifying the feature of the second application instance based on the second feature settings template, wherein modifying the feature of the second application instance comprises applying a second change to the feature, wherein the second category of the plurality of computing platform categories is a lower category than the first category, and wherein the second change modifies the feature to require less operational resources than the first change.

[0066] In Example 2, the subject matter of Example 1 includes, wherein modifying the feature of the second application instance comprises disabling the feature.

[0067] In Example 3, the subject matter of Examples 1-2 includes, wherein modifying the feature of the second application instance comprises changing a quality level of the feature.

[0068] In Example 4, the subject matter of Examples 1-3 includes identifying one or more attributes of a plurality of computing platforms from a plurality of computing devices, clustering the plurality of computing platforms to create the predefined cluster model, and assigning a rank to each of the clusters based on a plurality of performance metrics collected from previous application instance executions.

[0069] In Example 5, the subject matter of Example 4 includes using a silhouette score to determine a number of clusters.

[0070] In Example 6, the subject matter of Examples 1-5 includes observing a performance metric during execution of the second application instance on the second computing device, determining that the performance metric satisfies a pre-specified threshold, and in response to determining that the performance metric satisfies the pre-specified threshold, modifying the feature of the second application instance by applying the first change to the feature.

[0071] In Example 7, the subject matter of Example 6 includes wherein applying the first change includes enabling the feature.

[0072] In Example 8, the subject matter of Examples 1-7 includes wherein a particular hardware device of the plurality of hardware devices of the first computing device is not included in the model, and wherein the method further includes utilizing a similarity of a name of the particular hardware device of the plurality of hardware devices and one or more performance characteristic aspects of the particular hardware device of the plurality of hardware devices to a second hardware device included in the model, and grouping the particular hardware device of the plurality of hardware devices with the second hardware device based on the similarity.

[0073] In Example 9, the subject matter of Examples 1-8 includes modifying a second feature of the first application instance based on the first feature setting template, and modifying the second feature of the second application instance based on the second feature setting template.

[0074] In Example 10, the subject matter of Examples 1-9 includes wherein the computing platform further includes an operating system version.

[0075] Example 11 is a system for modifying a feature of an application instance based on a computing platform of a computing device executing the application instance, the system comprising: a first computing device having a first computing platform executing a first application instance, the first computing device comprising: a first hardware processor; a first memory device storing instructions that, when executed by the first hardware processor, cause the first computing device to perform operations comprising: identifying one or more attributes of the first computing platform of the first computing device, the first computing platform comprising a plurality of hardware devices of the first computing device, the one or more attributes not comprising a performance metric of the first application instance executing on the first computing device; mapping the first computing device to a first category of a plurality of computing platform categories based on the one or more attributes of the first computing platform and a predefined clustering model; identifying a first feature settings template based on a mapping between the first category and the first feature settings template corresponding to the first category; and modifying a feature of the first application instance based on the first feature settings template, wherein modifying the feature of the first application instance comprises applying a first change to the feature; a second computing device having a second computing platform executing a second application instance, the second computing device comprising: a second hardware processor; a second memory device storing instructions that, when executed by the second hardware processor, cause the second computing device to perform operations comprising: identifying second one or more attributes of the second computing platform of the second computing device, the second computing platform comprising a plurality of hardware devices of the second computing device, the one or more attributes not comprising a performance metric of the second application instance executing on the second computing device; mapping the second computing device to a second category of the plurality of computing platform categories based on the second one or more attributes and the predefined clustering model, the second category comprising computing platforms judged to be less capable than computing platforms of the first category; identifying a second feature settings template based on a mapping between the second category and the second feature settings template corresponding to the second category; and modifying the feature of the second application instance based on the second feature settings template, wherein modifying the feature of the second application instance comprises applying a second change to the feature, wherein the second category of the plurality of computing platform categories is a lower category than the first category, and wherein the second change modifies the feature to require less operational resources than the first change.

[0076] In Example 12, the subject matter of Example 11 includes: wherein the operation of modifying the feature of the second application instance comprises disabling the feature.

[0077] In Example 13, the subject matter of Examples 11-12 includes, wherein modifying the feature of the second application instance comprises changing a quality level of the feature.

[0078] In Example 14, the subject matter of Examples 11-13 includes, wherein the operations further comprise: identifying one or more attributes of a plurality of computing platforms from a plurality of computing devices; clustering the plurality of computing platforms to create the predefined cluster model; and assigning a rank to each cluster in the clusters based on a plurality of performance metrics collected from previous application instance executions.

[0079] In Example 15, the subject matter of Example 14 includes, wherein the operations further comprise using a silhouette score to determine a number of clusters.

[0080] In Example 16, the subject matter of Examples 11-15 includes, wherein the operations further comprise: observing a performance metric during execution of the second application instance on the second computing device; determining that the performance metric satisfies a pre-specified threshold; and in response to determining that the performance metric satisfies the pre-specified threshold, modifying the feature of the second application instance by applying the first change to the feature.

[0081] In Example 17, the subject matter of Example 16 includes, wherein applying the first change comprises enabling the feature.

[0082] In Example 18, the subject matter of Examples 11-17 includes, wherein a particular hardware device of the plurality of hardware devices of the first computing device is not included in the model, and wherein the operations further comprise: utilizing a similarity of a name of the particular hardware device of the plurality of hardware devices and one or more performance characteristic aspects of the particular hardware device of the plurality of hardware devices to a second hardware device included in the model, and grouping the particular hardware device of the plurality of hardware devices with the second hardware device based on the similarity.

[0083] In Example 19, the subject matter of Examples 11-18 includes, wherein the operations further comprise: modifying a second feature of the first application instance based on the first feature setting template; and modifying the second feature of the second application instance based on the second feature setting template.

[0084] In Example 20, the subject matter of Examples 11-19 includes, wherein the computing platform further comprises an operating system version.

[0085] Example 21 is a system for modifying a feature of an application instance based on a computing platform of a computing device executing the application instance, the system comprising, for a first application instance on a first computing device having a first computing platform: means for identifying one or more attributes of the first computing platform of the first computing device, the first computing platform comprising a plurality of hardware devices of the first computing device, the one or more attributes excluding a performance metric of the first application instance executing on the first computing device; means for mapping the first computing device to a first category of a plurality of computing platform categories based on the one or more attributes of the first computing platform and a predefined clustering model; means for identifying a first feature settings template based on a mapping between the first category and the first feature settings template corresponding to the first category; and means for modifying a feature of the first application instance based on the first feature settings template, wherein modifying the feature of the first application instance comprises applying a first change to the feature; for a second application instance on a second computing device having a second computing platform: means for identifying a second one or more attributes of the second computing platform of the second computing device, the second computing platform comprising a plurality of hardware devices of the second computing device, the one or more attributes excluding a performance metric of the second application instance executing on the second computing device; means for mapping the second computing device to a second category of the plurality of computing platform categories based on the second one or more attributes and the predefined clustering model, the second category comprising computing platforms judged to be less capable than computing platforms of the first category; means for identifying a second feature settings template based on a mapping between the second category and the second feature settings template corresponding to second category; and means for modifying the feature of the second application instance based on the second feature settings template, wherein modifying the feature of the second application instance comprises applying a second change to the feature, wherein the second category of the plurality of computing platform categories is a lower category than the first category, and wherein the second change modifies the feature to require less operational resources than the first change.

[0086] In Example 22, the subject matter of Example 21 includes, wherein the means for modifying the feature of the second application instance comprises means for disabling the feature.

[0087] In Example 23, the subject matter of Examples 21-22 includes, wherein the means for modifying the feature of the second application instance comprises means for changing a quality level of the feature.

[0088] In Example 24, the subject matter of Examples 21-23 includes means for identifying one or more attributes of a plurality of computing platforms from a plurality of computing devices; means for clustering the plurality of computing platforms to create the predefined cluster model; and means for assigning a rank to each of the clusters based on a plurality of performance metrics collected from a previous application instance execution.

[0089] In Example 25, the subject matter of Example 24 includes means for using a silhouette score to determine a number of clusters.

[0090] In Example 26, the subject matter of Examples 21-25 includes means for observing a performance metric during execution of the second application instance on the second computing device; means for determining that the performance metric satisfies a pre-specified threshold; and means for modifying the feature of the second application instance by applying the first change to the feature in response to determining that the performance metric satisfies the pre-specified threshold.

[0091] In Example 27, the subject matter of Example 26 includes wherein the means for applying the first change comprises means for enabling the feature.

[0092] In Example 28, the subject matter of Examples 21-27 includes wherein a particular hardware device of the plurality of hardware devices of the first computing device is not included in the model, and wherein the system further includes means for grouping the particular hardware device of the plurality of hardware devices with a second hardware device included in the model based on a similarity of a name of the particular hardware device of the plurality of hardware devices and one or more performance characteristic aspects of the particular hardware device of the plurality of hardware devices to the second hardware device and based on the similarity.

[0093] In Example 29, the subject matter of Examples 21-28 includes means for modifying a second feature of the first application instance based on a first feature setting template and modifying the second feature of the second application instance based on a second feature setting template.

[0094] In Example 30, the subject matter of Examples 21-29 includes wherein the computing platform further comprises an operating system version.

[0095] Example 31 is at least one machine readable medium comprising instructions that, when executed by processing circuitry, cause the processing circuitry to perform operations of an implementation as described in any of Examples 1-30.

[0096] Example 32 is an apparatus comprising means for implementing the unit of any of Examples 1-30.

[0097] Example 33 is a system implementing any of Examples 1-30.

[0098] Example 34 is a method implementing any of Examples 1-30.

Claims

1. A method for modifying a feature of an application instance based on a computing platform of a computing device executing the application instance, the method comprising: for a first application instance on a first computing device having a first computing platform: identifying one or more attributes of the first computing platform of the first computing device, the first computing platform comprising a plurality of hardware devices of the first computing device, the one or more attributes not comprising a performance metric of the first application instance executing on the first computing device; [Fig. 4, 412] mapping the first computing device to a first category of a plurality of computing platform categories based on the one or more attributes of the first computing platform and a predefined clustering model; [Fig. 4, 414] identifying a first feature settings template based on a mapping between the first category and the first feature settings template corresponding to the first category; and [Fig. 4, 416] modifying a feature of the first application instance based on the first feature settings template, wherein modifying the feature of the first application instance comprises applying a first change to the feature; [Fig. 4, 418] for a second application instance on a second computing device having a second computing platform: identifying a second one or more attributes of the second computing platform of the second computing device, the second computing platform comprising a plurality of hardware devices of the second computing device, the one or more attributes not comprising a performance metric of the second application instance executing on the second computing device; [Fig. 4, 422] mapping the second computing device to a second category of the plurality of computing platform categories based on the second one or more attributes and the predefined clustering model, the second category comprising a computing platform judged to be less capable than computing platforms of the first category; [Fig. 4, 424] identifying a second feature settings template based on a mapping between the second category and the second feature settings template corresponding to the second category; and [Fig. 4, 426] modifying the feature of the second application instance based on the second feature settings template, wherein modifying the feature of the second application instance comprises applying a second change to the feature, wherein the second category of the plurality of computing platform categories is a lower category than the first category, and wherein the second change modifies the feature to require fewer operational resources than the first change. [Fig. 4, 428] 2. The method of claim 1, wherein, modifying the feature of the second application instance comprises disabling the feature.

3. The method of claim 1, wherein, modifying the feature of the second application instance comprises changing a quality level of the feature.

4. The method of claim 1, further comprising: identifying one or more attributes of a plurality of computing platforms from a plurality of computing devices; clustering the plurality of computing platforms to create the predefined clustering model; and assigning a rank to each cluster in the clustering based on a plurality of performance metrics collected from prior application instance executions.

5. The method of claim 4, further comprising using a silhouette score to determine a number of clusters.

6. The method of claim 1, further comprising: observing a performance metric during execution of the second application instance on the second computing device; determining that the performance metric satisfies a pre-specified threshold; and in response to determining that the performance metric satisfies the pre-specified threshold, modifying the feature of the second application instance by applying the first change to the feature. Applying the first change comprises enabling the feature.

7. The method of claim 6, wherein, The particular hardware device of the plurality of hardware devices of the first computing device is not included in the model, and wherein the method further comprises:

8. The method of claim 1, wherein, grouping the particular hardware device of the plurality of hardware devices with a second hardware device included in the model based on a similarity of a name of the particular hardware device of the plurality of hardware devices and one or more performance characteristic aspects of the particular hardware device of the plurality of hardware devices to the second hardware device, and based on the similarity.

9. The method of claim 1, further comprising: modifying a second feature of the first application instance based on the first feature setting template, and modifying a second feature of the second application instance based on the second feature setting template. The computing platform further comprises an operating system version.

10. The method of claim 1, wherein, 11. A system for modifying a feature of an application instance based on a computing platform of a computing device executing the application instance, the system comprising: a first computing device having a first computing platform executing a first application instance, comprising: a first hardware processor; a first storage device storing instructions that, when executed by the first hardware processor, cause the first computing device to perform operations comprising: identifying one or more attributes of the first computing platform of the first computing device, the first computing platform comprising a plurality of hardware devices of the first computing device, the one or more attributes not comprising a performance metric of the first application instance executing on the first computing device;[FIG. 4, 412] mapping the first computing device to a first category of a plurality of computing platform categories based on the one or more attributes of the first computing platform and a pre-defined clustering model;[FIG. 4, 414] identifying a first feature setting template based on a mapping between the first category and the first feature setting template corresponding to the first category; and[FIG. 4, 416] modifying a feature of the first application instance based on the first feature setting template, wherein modifying the feature of the first application instance comprises applying a first change to the feature;[FIG. 4, 418] a second computing device having a second computing platform executing a second application instance, comprising: a second hardware processor; a second storage device storing instructions that, when executed by the second hardware processor, cause the second computing device to perform operations comprising: ​ identifying a second one or more attributes of the second computing platform of the second computing device, the second computing platform comprising a plurality of hardware devices of the second computing device, the one or more attributes not comprising a performance metric of the second application instance executing on the second computing device; [FIG. 4, 422] mapping the second computing device to a second category of the plurality of computing platform categories based on the second one or more attributes and the predefined clustering model, the second category comprising computing platforms judged to be less capable than computing platforms of the first category; [FIG. 4, 424] identifying a second feature settings template based on a mapping between the second category and the second feature settings template corresponding to the second category; and[FIG. 4, 426] modifying the feature of the second application instance based on the second feature settings template, wherein modifying the feature of the second application instance comprises applying a second change to the feature, wherein the second category of the plurality of computing platform categories is a lower category than the first category, and wherein the second change modifies the feature to require fewer operational resources than the first change[FIG. 4, 428].

12. The system of claim 11, wherein, The operation of modifying the feature of the second application instance comprises disabling the feature.

13. The system of claim 11, wherein, The operation of modifying the feature of the second application instance comprises changing a quality level of the feature.

14. The system of claim 11, wherein, The operations further comprise: identifying one or more attributes of a plurality of computing platforms from a plurality of computing devices; clustering the plurality of computing platforms to create the predefined clustering model; and assigning a rank to each cluster in the clustering based on a plurality of performance metrics collected from prior application instance executions.

15. The system of claim 14, wherein, The operations further comprise using a silhouette score to determine a number of clusters.

16. The system of claim 11, wherein, The operations further comprise: observing a performance metric during execution of the second application instance on the second computing device; determining that the performance metric satisfies a pre-specified threshold; and in response to determining that the performance metric satisfies the pre-specified threshold, modifying the feature of the second application instance by applying the first change to the feature.

17. The system of claim 16, wherein, The operation of applying the first change comprises enabling the feature.

18. The system of claim 11, wherein, A particular hardware device of the plurality of hardware devices of the first computing device is not included in the model, and wherein the operations further comprise: grouping the particular hardware device of the plurality of hardware devices with a second hardware device included in the model with a similarity in a name of the particular hardware device of the plurality of hardware devices and one or more performance characteristic aspects of the particular hardware device of the plurality of hardware devices to the second hardware device, and grouping the particular hardware device of the plurality of hardware devices with the second hardware device based on the similarity.

19. The system of claim 11, wherein, The operations further comprise: modifying a second feature of the first application instance based on the first feature settings template, and modifying a second feature of the second application instance based on the second feature settings template.

20. The system of claim 11, wherein, The computing platform further comprises an operating system version.