Multi-tenant solver execution service

By providing solver execution services, solver selection and integration problems when developing optimized applications are solved, and optimized workloads are implemented without the need for management infrastructure, reducing costs and time, and improving flexibility and efficiency.

CN119998793APending Publication Date: 2025-05-13AMAZON TECH INC
View PDF 0 Cites 0 Cited by

Patent Information

Application Number
CN202380070079.2
Authority / Receiving Office
CN · China
Patent Type
Applications(China)
Current Assignee / Owner
Priority Date
2022-09-29
Filing Date
2023-09-28
Publication Date
2025-05-13

AI Technical Summary

Technical Problem

When developing optimization applications, existing optimization solvers cause developers and data scientists to face huge obstacles such as choosing the right solver, setting up the solver execution environment, performing benchmarking, and balancing costs in integration work, and there are vendor lock-in problems, making it difficult to switch or experiment with different solvers.

Method used

Provide solver execution services, allowing users to run and scale optimization workloads without managing infrastructure, provide common interfaces to multiple optimization solvers, and provide computing resources for solvers, allowing optimizations to run without upfront licenses or infrastructure costs.

Benefits of technology

Enable developers to easily define and solve large-scale mathematical optimization problems, reduce project timelines, reduce development costs, and avoid vendor lock-in, improving user flexibility and efficiency.

✦ Generated by Eureka AI based on patent content.

Smart Images

  • Figure CN119998793A_ABST
    Figure CN119998793A_ABST
Patent Text Reader

Abstract

A multi-tenant solver execution service provides a management infrastructure for defining and solving large scale optimization problems. In an embodiment, the service performs solver jobs on computing resources hosted, such as virtual machines or containers. The computing resources may be automatically scaled up or scaled down based on client requirements and allocated to solver jobs in a server-less manner. A solver job may be initiated based on the configured trigger. In embodiments, the service allows a user to select from different types of solvers, mix different solvers in a solver job, and translate a model from one solver to another. In embodiments, the service provides a developer interface to, for example, run solver experiments, recommend solver types or solver settings, and suggest model templates. The solver execution service allows developers to easily work with different types of solvers through a unified interface without managing infrastructure for running an optimized solver.
Need to check novelty before this filing date? Find Prior Art

Description

Background Art

[0001] Mathematical optimization is a widely used prescriptive analytical technique for solving complex decision problems. Optimization problems can be used to simulate many types of real-world problems, such as minimizing manufacturing costs, routing vehicles, or scheduling airplanes. Optimization solvers are specialized software that efficiently determine improved solutions to optimization problems. However, developers and data scientists face significant obstacles when developing optimization applications, including spending time selecting the right solver, implementing a solver execution environment for the solver, benchmarking for specific use cases, and balancing costs with integration efforts. In addition to infrastructure requirements, some optimization solvers can cause vendor lock-in, making it difficult for users to switch to or experiment with other solvers or computational options. These obstacles can prevent users from evaluating different solver options, adding months to project timelines, or worse, causing some companies to abandon optimization projects entirely. BRIEF DESCRIPTION OF THE DRAWINGS

[0002] Figure 1 Solver execution services are shown that use different types of optimization solvers and compute resource management solver execution in accordance with some embodiments.

[0003] Figure 2 A multi-tenant infrastructure provider network is shown implementing components of a solver execution service in accordance with some embodiments.

[0004] Figure 3 An example request to create a solver job for a programming interface of a solver execution service is shown in accordance with some embodiments.

[0005] Figure 4 An example solver job status is shown that is output by a programming interface of a solver execution service in accordance with some embodiments.

[0006] Figure 5 Illustrated are different job triggers that may be associated with a solver job in a solver execution service according to some embodiments.

[0007] Figure 6 A user interface that allows a user to configure a solver job in a solver execution service according to some embodiments is shown.

[0008] Figure 7 A user interface that allows a user to manage solver jobs in a solver execution service is shown in accordance with some embodiments.

[0009] Figure 8 is a flow chart illustrating a process by which a solver execution service solves an optimization problem using configured optimization solvers and computing resources according to some embodiments.

[0010] Fig. 9 An experiment illustrating that a solver execution service can be used to compare different types of optimization solvers and computing resources in accordance with some embodiments.

[0011] Fig.10 A multi-stage solver job supported by a solver execution service using two different types of optimization solvers is shown in accordance with some embodiments.

[0012] Fig.11 is a flow chart illustrating a process by which a solver execution service performs an experiment to compare two different types of optimization solvers in accordance with some embodiments.

[0013] Fig.12 is a flow chart illustrating a process by which a solver execution service executes a multi-stage solver job using two different types of optimizing solvers in accordance with some embodiments.

[0014] Fig.13 A recommendation system implemented by a solver execution service according to some embodiments is shown to provide different types of recommendations to users during the model design and solver job configuration process.

[0015] Fig.14 The functionality of a solver execution service is shown according to some embodiments, which enables users to contribute data to the service's recommendation system.

[0016] Fig.15 A model design user interface that allows a user to design a model for a solver execution service of an optimization problem is shown in accordance with some embodiments.

[0017] Fig.16 is a flow chart illustrating a process by which a solver execution service interacts with a user through a user interface to create a model of an optimization problem and configure a solver execution according to some embodiments.

[0018] Fig.17 An example computer system is shown that may be used to implement portions of the solver execution services described herein, according to some embodiments.

[0019] Although embodiments are described herein for several embodiments and illustrative figures by way of example, those skilled in the art will recognize that embodiments are not limited to the described embodiments or drawings. It should be understood that the drawings and detailed descriptions thereof are not intended to limit the embodiments to the specific forms disclosed, but on the contrary, are intended to cover all modifications, equivalents and alternatives falling within the spirit and scope defined by the appended claims. The titles used herein are for organizational purposes only and are not intended to be used to limit the scope of this specification or claims. As used throughout this application, the word "may" is used in a permissible sense (i.e., meaning "possible"), rather than a mandatory sense (i.e., meaning "must"). Similarly, the word "include / including / includes" means including but not limited to.

[0020] It will also be understood that, although the terms first, second, etc. may be used to describe various elements in this article, these elements should not be limited by these terms. These terms are only used to distinguish one element from another element. For example, without departing from the scope of the present invention, the first contact may be referred to as the second contact, and similarly, the second contact may be referred to as the first contact. Both the first contact and the second contact are contacts, but they are not the same contact. DETAILED DESCRIPTION

[0021] The demand for optimization solvers has grown steadily in recent years. However, current optimization solvers present significant challenges to developers and data scientists when developing optimization applications. These challenges include spending time selecting the right solver, implementing a solver execution environment for the solver, benchmarking the solvers for specific use cases, and balancing costs in integration efforts. In addition to infrastructure requirements, current optimization solver providers typically offer a limited array of the provider's own proprietary solvers for use, and make it difficult for users to experiment with different solvers or computational options, or to switch to a different solver once development has begun.

[0022] To address these and other problems in the prior art, embodiments of a solver execution service are disclosed herein to enable developers and data scientists to easily define and solve large-scale mathematical optimization problems using different types of optimization solvers. In some embodiments, the solver execution service allows users to easily run and scale optimization workloads without infrastructure to manage, provides a common interface for using multiple optimization solvers, and provides computing resources for solvers so that optimization can be run without upfront licensing or infrastructure costs.

[0023] Embodiments of the solver execution service allow developers to use their preferred optimization engine or build optimization applications based on their specific industry. Developers can use the service to run optimization code through a unified application programming interface (API) provided by the solver execution service, and use multiple state-of-the-art solvers to solve optimization problems in a scalable and secure computing environment. If the user is not sure which solver may be most effective for its problem type, the solver execution service provides an experiment or benchmark interface that allows the user to test multiple solvers in parallel. The experiment can be configured to return the first available answer or the best answer generated by multiple solvers based on user requirements.

[0024] In some embodiments, the solver execution service will allow users to select a solver from multiple solver options from different solver providers and act as an intermediary between different providers. In some embodiments, the service may provide a translation tool to perform problem model translation (model translation) from one type of solver to another type of solver. Developers can use the service to define variables, constraints, and objective functions for multiple types of optimization problems, such as linear programming (LP), constraint programming, quadratic programming (QP), mixed integer linear (and nonlinear) programming (MILP and MINLP), and nonlinear optimization problems without having to worry about the choice of the solver that will ultimately be used. With a consistent programming interface and minimal upfront investment, developers can focus on their use cases rather than solver selection or infrastructure and license management.

[0025] In some embodiments, the solver execution service is implemented on a cloud-based infrastructure provider network, enabling users to select the type of computing resources used to run solver execution in a serverless manner. The infrastructure provider network is configured to handle the undifferentiated heavy lifting of fleet planning, instance selection, container deployment, and monitoring. In some embodiments, components of the solver execution service can be programmed to leverage other services of the infrastructure provider network, making the solver execution service a component service for building custom data analytics applications and pipelines hosted on the infrastructure provider network. For example, an embodiment of the solver execution service can be programmatically connected to a machine learning service to enable the launch of a solver job from the machine learning service or to trigger a machine learning job within the machine learning service.

[0026] In some embodiments, the solver execution service can implement multiple developer tools and developer interfaces to enhance the developer's experience of the service. For example, the solver execution service can provide automatic translation between problem models written for different solvers. In some embodiments, the service can recommend the solver type or computing resource type for a specific optimization problem. In some embodiments, the solver execution service can provide a template library for the problem model, and provide the recommended template as the starting point of the new model. In some embodiments, the solver execution service allows developers to contribute model templates and configuration data to the centralized repository so that such data can be used to make recommendations to other users of the service.

[0027] As will be appreciated by those skilled in the art, the embodiments of the solver execution service disclosed herein are implemented in a computer system to solve prior art problems in the state of the computing field and improve the functionality of current computer systems. These and other features and advantages of the disclosed system are further discussed in detail in conjunction with the accompanying drawings.

[0028] Figure 1 Solver execution services are shown that use different types of optimization solvers and computational resource management solver execution according to some embodiments.

[0029] As shown, the figure depicts a solver execution service 120 that can be accessed by a client application 102 or a service console 106. In some embodiments, the client 102 can be implemented as a remote application embedded in a service software development kit (SDK) 104, which is suitable for sending a solver execution request 110a to a service interface 122 of the solver execution service 120. In some embodiments, the service interface 122 can be implemented as an API. The solver execution service 120 can be implemented as a network service, and the request 110a can be specified with JavaScript object notation (JSON). In some embodiments, the service console 106 can be implemented as a graphical user interface (GUI). The service console 106 can be a network-based interface displayed on a web browser. The service console 106 is suitable for submitting a solver execution request 110b to the solver execution service 120 through the same service interface 122.

[0030] As shown, an embodiment of the solver execution service 120 can implement a solver job manager component or layer 130. The solver execution manager 130 can be responsible for providing solver job semantics to the client of the service, wherein the solver job represents the specific execution of the solver to a specific optimization problem. In some embodiments, the solver job manager 130 can hide certain details of the optimization operation (e.g., the computing resources used) from the client. However, in some embodiments, the client can control the type of computing resources (e.g., the number of CPU cores or the amount of memory of computing resources) used to run the solver job. In some embodiments, the solver execution service 120 is a multi-tenant service used by many clients at the same time, and the separate solver jobs are isolated from each other in separate execution environments. In some embodiments, the solver execution service 120 does not return a quick solution to the solver execution request 110. Instead, the service will schedule the solver job for execution, and provide asynchronous notification to the client when the solver job is completed.

[0031] In some embodiments, the solver manager 130 may implement a solver job configuration component 132 that is responsible for various aspects related to the configuration of solver jobs in the service. For example, the solver job configuration component 132 may initially create a job configuration data object based on the solver execution request 110 or a job configuration file. The job configuration data object may be stored as job configuration data 142 in a solver job management database 140 maintained by the service. In some embodiments, each job configuration is assigned a unique job identifier for use in launching instances of solver jobs in the future.

[0032] According to an embodiment, the job configuration data 142 may include information of different types about performing solver jobs, including the type of solver to be used, the solver parameters of the solver, the type of computing resources to be used, the resource parameters of the computing resources, and the data location of the input and output data of the optimization run (e.g., model 172 and solution 174). In some embodiments, the resources used by the solver job can be marked with specific tags to designate the resources as belonging to a specific solver job. These tags can be used for security enforcement, event dispatching, or other job management purposes. In some embodiments, the job configuration data 142 may include one or more job triggers of the solver job that specify an event, condition, or schedule for initiating the solver job.

[0033] In some embodiments, some of the items in the job configuration data 142 may not be explicitly specified by the solver execution request 110, but rather inferred by the solver job configuration component 132. For example, in some embodiments, the type of computing resources used by the solver job may be programmatically determined based on other information (e.g., the solver type of the solver job) of the solver execution request 110. As another example, the type of solver used may be inferred based on the format of the model file 172.

[0034] As shown, in some embodiments, the solver job manager 130 can implement a solver job execution control component 134. This component 134 is configured to control the execution of solver jobs in the service, for example, the start and termination of solver jobs. In some embodiments, the component 134 can allow the client 102 to explicitly start or stop a solver job. To start a solver job, the solver job execution control component 134 can send a resource request to the computing resource manager 150, which will be responsible for providing and de-provisioning resources for solver job execution.

[0035] In some embodiments, the solver job execution control 134 can enable a user to orchestrate a workflow of multiple solver jobs based on job configuration data 142 or high-level workflow configuration data. The workflow can be configured as a plurality of pipelines that can be started serially or in parallel to execute the solver jobs that constitute the different stages of the workflow. For example, in some embodiments, a solver job can be configured to start using the output of a previous solver job. In another example, a specific stage in the workflow can be executed in parallel using multiple solver jobs. In some embodiments, the workflow can include jobs of other types that do not involve solvers, such as data preparation jobs, data translation jobs, or jobs executed by external services that are different from solver execution services. In some embodiments, the solver job execution control 134 can be implemented or called from an external workflow orchestration service so that the solver execution service 120 can be used to execute specific steps in a larger workflow process.

[0036] As shown, in some embodiments, the solver job manager 130 can implement a solver job monitoring component 136. This component 136 can be responsible for monitoring the status of the currently pending or running solver jobs in the service. In some embodiments, the job status data 144 about the solver job is written to the management database 140 by the computing resource (e.g., computing resource instance 160) that executes the solver job. Such job status information can be available to the client 102 through the service interface 122, or used as a trigger for certain automated actions performed in the service. For example, in some embodiments, the completion of the first solver job in the service can trigger the second solver job. As another example, the solver job that failed to complete can be automatically retried after waiting for a certain period of time. According to an embodiment, the job status data 144 can indicate information such as the identifier of the solver job, the timestamp when the job execution starts or stops, the execution time of the solver job, the current state of the solver job, the indicated progress of the solver job (e.g., completion percentage) and the location of the execution log generated by the solver job.

[0037] As shown, in some embodiments, the solver execution service 120 implements a computing resource manager 150 that controls how solver jobs are provided and use resources. In some embodiments, the computing resource manager 150 may provide an internal API accessible to the solver job manager 130, which allows the solver job manager to request resources for solver jobs. The API may allow the solver job manager to specify the type of resources provided for a particular job (e.g., a virtual machine or container instance with an appropriate solver software stack installed).

[0038] In some embodiments, the solver execution service 120 can execute solver jobs in a serverless manner. For example, the computing resource manager 150 can provide 158 resources for solver jobs as needed, and release 159 resources when the solver jobs are completed. In this way, only a small amount of resources is required to support a potentially large number of concurrent solver jobs, thereby improving the resource usage efficiency of the service.

[0039] In some embodiments, the computing resource manager 150 can maintain a computing resource pool 152 of computing resource instances. The pool may include computing resource instances (e.g., virtual machine instances or container instances) on which different types of solver software are installed (e.g., solver type A on computing resource instance 154a and solver type N on computing resource instance 154b). In some embodiments, the computing resource manager can implement different resource pools 152 for each type of computing resource or solver used by the service, and each pool can be dynamically scaled up or down based on the observed demand for the pool. In some embodiments, resource instances in a pool can be maintained in a dormant or standby state, in which they are not actively executed, and are activated when they are provided to a solver job.

[0040] In some embodiments, instead of resource pool 152, the computing resource manager can simply maintain virtual machine or container images of different types of solvers used by solver execution jobs. When computing resources are provided for a solver job, a virtual machine or container instance will be started using one of the images.

[0041] Embodiments of the solver execution service may support multiple types of computing resources, such as different types of virtual machine instances, container instances, and the like. Virtual machine instances may include instances managed by different types of hypervisors that implement different types of processors (e.g., graphics processing units (GPUs)) or memory and employ different types of operating systems. Container instances may be implemented using different types of container management software with different container characteristics. In some embodiments, the solver execution service may support quantum computing resources as a type of resource for executing solver jobs. In some embodiments, some of the computing resources supported by the service may be provided by another service other than the solver execution service itself.

[0042] In some embodiments, the computing resource manager 150 will select a specific computing resource instance 160 to perform the solver job. The computing resource instance 160 can be selected based on the resource requirements of the solver job, which can be specified by the client's solver execution request 110. In some embodiments, the solver execution service can select multiple computer resource instances 160 to perform the solver job in a distributed manner. For example, the configuration of the solver job can indicate that the solver job can be divided into separate parts that can be processed independently. In some embodiments, the solver job configuration can specify details about multiple computing resource instances for the solver job, including the characteristics of the distributed computing system that will be built from multiple computing resource instances.

[0043] Selected computing resource instance 160 will include a software stack, and the software stack includes the type of solver for solver execution. In certain embodiments, solver can be implemented in third-party software with its own programming interface. For some types of solvers, model is a file written with an illustrative problem modeling language (such as LP), and solver will simply use this file. For other solvers, model is written with programming language (such as C, Java or Python), and model code calls solver library to build the data structure of optimization problem, and uses the data structure to solve the optimization problem. In this case, model is an executable code with entry point, and can span multiple files. For this second type of solver, computing resource instance will include the programming language runtime for executing model code, and any other solver library required for supporting model code. In certain embodiments, the client can specify an external software library to be used for solver execution, and when computing resources are provided, computing resource manager 150 will dynamically install this type of library. In some embodiments, the type of computing resource may be selected based on a machine learning model trained to determine the appropriate type of resource to use based on solver type, problem model type, or execution parameters.

[0044] According to an embodiment, the provision of computing resource instances may involve multiple steps. In some embodiments, computing resource instances 160 may be configured with access privileges to access solver job storage 170, which may be located away from computing resource instances 160. As shown, solver job storage 170 may be used to store data associated with solver jobs, such as model 172, solution 174, and execution log 176 generated by execution. In some embodiments, solver execution service 120 is a multi-tenant service that allows many clients to run their corresponding solver jobs simultaneously. In such embodiments, solver execution service may implement certain security policies that isolate each solver job to its own execution environment on a separate resource instance. In some embodiments, no two solver jobs will share a common execution environment, and the corresponding execution environments of different solver jobs are not allowed to communicate directly with each other. In some embodiments, computing resource instances 160 may be marked with one or more resource tags as required by the solver job configuration. In some embodiments where the data in the solver job storage is encrypted, the computing resource instance 160 may be provided with a key for decrypting or encrypting the data.

[0045] Once the computing resource instance 160 is provided for the solver job, the computing resource manager 150 will start the optimization solver instance 166 on the computing resource instance, for example, by calling a command on the computing resource instance. The solver instance 166 will read 162 the model 172 from the solver job storage 170 to create an in-memory version of the optimization problem 164 on the computing resource instance 160. The solver execution will then run the optimization algorithm on the optimization problem 164 until the problem is solved or the solver job is stopped or times out. If an acceptable solution to the optimization problem is found, the solution is written 168 to a solution file or object 174 in the solver job storage 170. In addition, in some embodiments, the execution data of the optimization run can be recorded 169 to the execution log 176 of the solver job storage 170. The execution log 176 can be stored as a file or a persistent object, or in some embodiments, exposed as a data stream that can be subscribed to by other software components and processed accordingly. The execution log 176 may capture data such as execution performance data, intermediate or final data and results, solver type and resource parameters, computing resource type and computing resource parameters, etc. In some embodiments, as the solver execution is performed, the progress and / or status of the solver job will be monitored by the computing resource instance 160 or the computing resource manager 150, and such information is published to the solver job management database 140 as job status data 144.

[0046] In some embodiments, after the solver job completes execution, the computing resource instance is deprovisioned or released 159. Release may involve cleaning up the artifacts of the solver job on the computing resource instance and releasing the resource instance back to the resource pool 152 for use by a later solver job. In some embodiments, the access rights granted to the computing resource instance are revoked and any tags assigned to the computing resource instance are removed. In some embodiments, the computing resource instance 160 may simply terminate. In some embodiments, the solver execution service may implement a default timeout parameter so that each solver job will terminate within a limited time. This limited time may be a configurable parameter that may be modified by the client 102.

[0047] Figure 2 A multi-tenant infrastructure provider network implementing components of a solver execution service is shown in accordance with some embodiments.

[0048] In some embodiments, the depicted multi-tenant infrastructure provider network 200 may be a dedicated or closed system, or may be set up by an entity such as a company or public sector organization to provide one or more services (such as various types of cloud-based storage) accessible via the Internet and / or other networks to clients 270 in a client premises network. The provider network 200 may be implemented in a single location, or may include multiple data centers hosting various resource pools, such as a collection of physical and / or virtualized computer servers, storage devices, networking devices, etc. required to implement and distribute the infrastructure and services provided by the provider network 200. In some embodiments, the provider network 200 may implement various computing systems, resources, or services, such as an API gateway service 210, an infrastructure provider user interface 220, a data storage service 230, a database service 240, a serverless computing service 250, a workflow orchestration service 260, an event dispatching service 270, and a resource metering service 290.

[0049] In various embodiments, Figure 2 The components shown in can be implemented directly in computer hardware, as instructions executable directly or indirectly by computer hardware (e.g., a microprocessor or computer system), or using a combination of these techniques. Figure 2 The components of can be implemented by a system including multiple computing nodes (or simply referred to as nodes), each of which can be similar to Fig.17 Computer system embodiments shown and described below. In various embodiments, the functionality of a given system or service component may be implemented by a specific node, or may be distributed across several nodes. In some embodiments, a given node may implement the functionality of more than one service system component (e.g., more than one data storage component).

[0050] In some embodiments, the API gateway service 210 is a management service of the provider network 200 that allows developers to publish custom APIs for their hosted services. For example, the API gateway service 210 can support various types of RESTful or WebSocket APIs to enable real-time two-way communication between services and clients. The API gateway service 210 can implement various features, such as traffic management support, dynamic scaling, authorization and access control, throttling, monitoring, and API version management. In some embodiments, the API gateway service can be implemented using a serverless execution model, in which nodes that process API requests are provided on demand. As shown in the figure, the API gateway service 210 can be used to implement Figure 1 The service interface 122 is provided.

[0051] In some embodiments, the infrastructure provider user interface 220 can be a web-based graphical user interface provided by an infrastructure provider network that allows users to manage the operation of different services provided by the infrastructure provider. In some embodiments, the user interface 220 can be used to provide configuration or management of customized services. In some embodiments, the user interface 220 can provide user functions such as authentication and login, user account management, identity and access management, resource monitoring and metering control, etc. As shown, in some embodiments, the infrastructure provider user interface 220 can be used to provide a service console 106 for the solver execution service.

[0052] In some embodiments, the data storage service 230 can be a file system or object-based storage service that allocates specific storage locations to clients for long-term storage. In some embodiments, individual objects in the data storage service are identified by unique storage locations and object keys. Depending on user configuration, the data storage service 230 can automatically perform various data management tasks, such as backup and recovery, encryption / decryption, data change tracking, etc. As shown in the figure, in some embodiments, a solver job storage device 170 for solver jobs can be implemented in the data storage service 230. In a multi-tenant environment, the solver execution service treats each client's solver storage location as private data that cannot be accessed by other clients without authorization.

[0053] In some embodiments, the database service 240 can be a type of structured data storage and processing service, which in some embodiments performs general or special data storage and processing functions (e.g., analysis, big data query, time series data, graph data, document data, relational data, non-relational data, structured data, semi-structured data, unstructured data, or any other type of data processing operation) on data stored across multiple storage locations. For example, the data storage or database service 240 may include various types of data storage services (e.g., relational, NoSQL, document, or graph databases) for storing, querying, and updating data. Such services can be scalable and extensible enterprise-level database systems. In some embodiments, queries can be directed to databases in database services 240 distributed across multiple physical resources, and the database system can be scaled up or down as needed. In different embodiments, the database system can work effectively with database modes of various types and / or organizations. In some embodiments, clients / subscribers can submit queries or other requests (e.g., requests to add data) in a variety of ways, for example, interactively through an SQL interface to the database system or through an application programming interface (API). In other embodiments, external applications and programs may submit queries to the database system using Open Database Connectivity (ODBC) and / or Java Database Connectivity (JDBC) driver interfaces. As shown, the solver job management database 140 may be implemented in a database service 240 .

[0054] In some embodiments, the serverless computing service 250 can be implemented by the provider network 200 to provide computing instances (e.g., virtual machines, containers, and / or functions) according to various configurations of client operations. The serverless computing service 250 is configured to provide computing resources in a serverless manner, where resources are allocated on demand to execute incoming requests. According to an embodiment, the serverless computing service will handle resource management tasks such as capacity planning, configuration, fault recovery, and scaling, and relieve the client of the service from having to deal with such details.

[0055] A virtual computing instance may, for example, include one or more servers with a specified computing capacity (the specified computing capacity may be specified by indicating the type and number of CPUs, the size of main memory, etc.) and a specified software stack (e.g., a specific version of an operating system, which in turn may run on top of a hypervisor). For example, a specific virtual machine may be configured with a specified number or type of GPU processors. A container may provide a virtual operating system or other operating environment for executing or implementing an application. A function may be implemented as one or more operations performed in response to a request or in response to an event, and the one or more operations may be automatically scaled to provide an appropriate number of computing resources to perform the operation in accordance with the number of requests or events. In some embodiments, a solver execution service may use quantum computing resources to solve optimization problems, which may be provided by a separate quantum computing service in the infrastructure provider network 200. The quantum computing service may support various third-party quantum computing platforms hosted on the resources of the infrastructure provider network 200. Many different types of computing devices may be used alone or in combination to implement computing instances, containers, functions, and / or quantum computing resources of the provider network 200 in different embodiments, including general or special-purpose computer servers, storage devices, network devices, etc. As shown, the computing resource manager 150 used by the solver execution service may be implemented by a serverless computing service 250 .

[0056] In some embodiments, the solver execution service 120 can allocate solver jobs to computing resources in a manner that isolates secure jobs from each other. The manner of isolating solver jobs can be defined by security policies, which can be configured by the administrator of the service. In some embodiments, the solver execution service limits each solver job to its own execution environment, where no two solver jobs can run on the same virtual machine or container instance and / or communicate directly with each other. In some embodiments, solver jobs may be prohibited from sharing certain infrastructure or data with other solver jobs. For example, a solver job may be limited to its own virtual network interface or data storage location. In some embodiments, a specific virtual private cloud (VPC) endpoint can be assigned to each solver job so that the data sent or received by the solver job is limited to the provider network without being transmitted over the public Internet. In some embodiments, the computing resource instances used by the solver execution service are placed in one or more VPCs, which are not addressable or visible from outside the service.

[0057] In some embodiments, the provider network 200 may implement a workflow orchestration service 260. The workflow orchestration service may allow a user to define a workflow using the capabilities of other services in the provider network 200. In some embodiments, the solver job manager 130 may be implemented using a workflow orchestration service, or integrated with a workflow orchestration service, so that the solver jobs in the solver execution service may be configured as steps within a workflow or execution pipeline. The workflow orchestration service may define various aspects of how to initiate and execute workflow steps. For example, a specific workflow step may be configured to execute immediately after a previous workflow step, or to execute in parallel with another workflow step. The workflow orchestration service may also implement some forms of flow control. For example, if an execution condition is met, the workflow may execute a first workflow step, and if the execution condition is not met, a second workflow step may be executed. The workflow implemented using the workflow orchestration service may span multiple types of services, including other data analysis services or machine learning services implemented in the provider network.

[0058] In some embodiments, the provider network 200 can implement an event dispatch service 270, which allows the generation and propagation of events or notifications between different services of the provider network. In some embodiments, the event dispatch service 270 can provide an interface that allows a service to subscribe to a class of events generated by another service. Once subscribed, the former service will be notified whenever a new event is generated by the latter service. The propagation of events can be controlled based on the resource tags of the resources in the service. For example, in some embodiments, only resources marked with a specific solver job tag are allowed to view events generated by other resources marked with the same tag. As shown in the figure, in some embodiments, the event dispatch service 270 can be used to connect the components of the solver execution service so that the event-driven behavior in the solver execution service can be realized. For example, in some embodiments, once a model change event occurs in the solver job storage device 170, a new solver job can be initiated by the solver job manager 130. As another example, the termination of the virtual machine instance 160a associated with the solver job can automatically cause the state of the job to be updated in the solver job management database 140.

[0059] In some embodiments, the resource metering service 290 is a monitoring service in the provider network that tracks client usage of various services. Client usage can be tracked according to various usage metrics specified by the service operation, such as the number of resource instances started during a certain time period, the number of solver jobs executed during a certain time period, the amount of time used to solve an optimization problem, etc. In some embodiments, usage data for a particular client can be used to assess usage fees for the client. In some embodiments, if the usage of a service exceeds a certain quota or limit (e.g., a maximum number of solver execution requests for a specified time period), the service can throttle or reject additional client solver execution requests.

[0060] As shown in the figure, in some embodiments, provider network 200 can hold one or more solver licenses 295 of the optimization solver used in solver execution service.For some types of commercial solvers, the client of solver execution service may evaluate license fee based on its use of such services.In certain embodiments, solver execution service can allow client to execute solver according to its own license.In the described case, solver execution service can allow to execute license by other execution mechanisms.For example, in some embodiments, solver execution service can allow client to specify specific license file or voucher verified by solver software before execution.

[0061] In general, client 270 may encompass any type of client that may be configured to submit network-based requests to provider network 200 via network 260. For example, client 270 may include a suitable version of a web browser, or may include a plug-in module or other type of code module that may be executed as an extension of or within an execution environment provided by a web browser. Alternatively, client 270 may encompass applications such as database applications (or their user interfaces), media applications, office applications, or any other application that may utilize resources in provider network 200 to implement various features, systems, or applications. (For example, to store and / or access data to implement various applications. In some embodiments, such applications may include sufficient protocol support (e.g., for a suitable version of the Hypertext Transfer Protocol (HTTP)) for generating and processing network-based service requests without having to implement full browser support for all types of network-based data. That is, client 270 may be an application that interacts directly with provider network 200. In some embodiments, client 270 may be Figure 1 The client 102 or implementation Figure 1 The service console 106.

[0062] The client 270 can transmit a network-based service request (e.g., a solver execution request 110) to the provider network 200 through the network 260, and receive a response from the provider network. In various embodiments, the network 260 can include any suitable combination of networking hardware and protocols necessary for establishing network-based communication between the client 270 and the provider network 200. For example, the network 260 can generally cover various telecommunications networks and service providers that implement the Internet together. The network 260 can also include a private network, such as a local area network (LAN) or a wide area network (WAN) and a public or private wireless network. For example, a given client 270 and the provider network 200 can be provisioned in an enterprise with its own internal network, respectively. In such embodiments, the network 260 can include hardware (e.g., modems, routers, switches, load balancers, proxy servers, etc.) and software (e.g., protocol stacks, accounting software, firewall / security software, etc.) necessary for establishing a networking link between a given client 270 and the Internet and between the Internet and the provider network 200. It should be noted that in some embodiments, the client 270 can communicate with the provider network 200 using a private network instead of the public Internet.

[0063] Figure 3 1 shows an example request to create a solver job for a programming interface of a solver execution service according to some embodiments. The depicted create solver job request 300 is supported by the service interface 122 of the solver execution service. Figure 1 The type of solver execution request 110 .

[0064] As shown, in some embodiments, create solver job request 300 can be specified in JSON format. In some embodiments, request 300 can simply create configuration data for a new solver job in job management database 140. In some embodiments, request 300 can cause a new solver job to be executed. Because solver execution can run for a long time, the solution of the solver job will not be returned in response to request 300. On the contrary, the response to request 300 can indicate the job identifier of the solver job created or initiated. The client can use this job identifier to monitor the progress during the execution of the job. When the solver job is completed, a notification can be provided asynchronously to the client that initiated the job, thereby indicating the job identifier and optional solution.

[0065] As shown, in this example, request 300 indicates a client token 310 associated with the solver job to be created, and the client token is unique for each request to ensure idempotence. In some embodiments, if the client token 310 is not specified, a randomly generated token is used for the request. The job name 312 can be an optional name of the job, and the name does not have to be unique. Solver specification 320 is a container for specifying various solver parameters. For example, this section can specify the solver type for the solver job, the solver runtime of the model code of the execution solver, the start command for starting the solver job, and the various execution parameters of the solver. According to the type of the solver, the start command can be an operating system command or a solver-specific command identified by the solver. The start command can indicate a model file, which can be an executable script, or an entry point for starting to execute some other types of solver jobs. In some embodiments, the solver specification section 320 can also specify parameters such as an external solver library to be deployed for the solver job and a license file or a certificate for verifying the solver license for running the solver job.

[0066] As shown, resource parameters 322 is a container that specifies parameters and / or requirements for computing resources used to perform solver jobs. In this example, this section specifies the number of vCPUs to be allocated to the job and the amount of memory to be allocated to the job. In some embodiments, resource parameters section 322 can also specify a resource identifier corresponding to a specific combination of resource specifications (e.g., the operating system used on the virtual machine). In some embodiments, resource parameters can specify a custom virtual machine or container image provided by the client for the solver job.

[0067] As shown, input configuration 324 is a container for the location of the inputs to the specified solver job and other details about the inputs. For example, input storage indicates the storage location of the storage service containing the model. Input key indicates the object key of the model. In some embodiments, if the object is a versioned object, the input configuration information can indicate the version identifier and the object key. In some embodiments, the input configuration can indicate the model format of the model. If the model contains model code, the input configuration can also indicate the programming language runtime that can be used to execute the model code.

[0068] As shown in the figure, output configuration 326 is a container for the position where the output of the specified solver operation will be written and other details about the output. In certain embodiments, the output of the solver operation will default to the same position as the input of the solver operation. In certain embodiments, the output configuration can indicate the output format of the solution. The output configuration can also indicate various encryption options for writing the output, including the specific encryption key for encrypting the solution generated by the solver operation.

[0069] As shown, the request 300 may also specify other types of parameters associated with the solver job, such as any tags 328 used to mark resources associated with the job, and any additional execution parameters associated with the solver job 329. The execution parameters 329 may include parameters managed by the solver execution job service itself, as opposed to local execution parameters of the solver.

[0070] In some embodiments, in addition to the request 300 to create or execute a solver job, the API of the solver execution service can support many different types of API requests. For example, the API can support a request to cancel or stop a previously submitted or run solver. The API can also support a request to list currently running or submitted jobs and return a list of job identifiers. The API can also support a describe job request that returns the configuration details of a specific solver job (e.g., the job parameters specified in the request 300). In some embodiments, the API can allow a client to add additional tags to a solver job and remove tags from a solver job after the job is created. In some embodiments, the API can allow a client to add and remove job triggers to a solver job. A job trigger can be used to specify conditions or schedules for starting a solver job.

[0071] Figure 4 400 may be returned by the solver execution service as a response to a request submitted to the service (e.g., a request to obtain the status of a particular solver job), or as an event broadcast by the service (e.g., via Figure 2 In some embodiments, the job status output 400 may indicate some of the job configuration parameters of the solver job, including the combination of Figure 3 Those parameters discussed.

[0072] As shown, in this example, the job status output indicates the job identifier 410 assigned to the solver job and the job name assigned by the user. In addition, the job status output 400 indicates multiple time-related items, including the time when the solver job is first created, the time when the job starts to execute, the time when the job stops executing (if available) and the total execution time of the job. The job status output 400 also indicates the current state of the solver job, and the current state can change with the progress of the job. In some embodiments, the job status flag can have a set of values, such as: submitted, running, successful, failed, timeout, etc. The job status output in this example also indicates the completion percentage value of the solver job progress indicator. In some embodiments, this value can be determined based on the estimated completion time of the solver job, and the estimated completion time can be generated by the solver itself in some cases. In some embodiments, the information contained in the solver job state 400 can be displayed on the management interface of the solver execution service to indicate the progress and current state of all solver jobs submitted by a specific client.

[0073] Finally, as shown in the figure, state output 400 can indicate the position of execution log 420, and described execution log is used for recording different types of execution data during solver execution.For example, execution log can include solver and resource parameters as used, the time associated with the independent stage of solver operation and the value of intermediate and final result and any performance data or error etc. that are associated with solver execution.In certain embodiments, execution log is generated with supplier neutral format, but can include some local outputs from specific solver.In certain embodiments, the information in execution log can be used for other solver operation recommendation operation configuration parameters by the recommendation system in solver execution service.

[0074] Figure 5 illustrates different job triggers that may be associated with a solver job in a solver execution service according to some embodiments.

[0075] In some embodiments, the solver execution service allows clients to associate triggers with solver jobs, which are used to control when solver jobs are programmatically started or repeated. As shown, triggers 520, 522, 524, 526, and 528 can be defined through the solver interface 122, which can provide an API for trigger creation requests 510. These requests 510 can be processed by the solver job configuration component 132 in the solver job manager 130 to save the job triggers to the solver job management database 140. In some embodiments, the service interface 122 can provide an API that supports requests to create, delete, modify, describe, and list triggers that meet specific search criteria. In some embodiments, these types of triggers can be implemented outside the solver execution service, for example, as a Figure 2 The control elements of the workflow defined in the workflow orchestration service 260.

[0076] In some embodiments, job triggers are used to specify the conditions for starting a solver job. For example, job trigger T1 520 specifies a specific schedule for starting solver job A 530. This can be specified in the trigger creation request 510 using a cron expression (e.g., "cron(0 20**?*)") or a rate expression (e.g., "rate(5 minutes)"). As shown, trigger T2 522 causes solver job B 532 to start when a specific event occurs, here when model M at storage location S is updated. Such events can be generated by the storage service and are sent to the server through Figure 2 The event dispatching service 270 is broadcast.

[0077] As another example, Solver Job C 543 is associated with three job triggers T3 524, T4 526, and T5 528. Trigger T3 specifies another type of launch condition for launching Job C, which will be launched if Solver Job B completes successfully (e.g., produces a solution without errors). Therefore, trigger T3 effectively links Solver Job B and Solver Job C to execute back-to-back. Trigger T4 specifies a condition for stopping Job C when an external condition occurs (e.g., when an upstream dataset external to the solver execution service changes). Trigger T5 specifies that if Solver Job C stops due to an external event, then Solver Job C is retried after 60 seconds. As can be appreciated by those skilled in the art, many different types of triggers can be defined for solver jobs to implement various job execution or stopping conditions or schedules.

[0078] As shown, in some embodiments, the solver job manager 130 can implement a job trigger monitor 540 that continuously monitors the system for the occurrence of a trigger event specified by a trigger, and responsively initiates the execution of a related solver job. In some embodiments, if the job trigger specifies a regular and predictable schedule (e.g., trigger T1), the solver execution service can pre-provision the computing resources required for the related solver job so that the job can be started with very little waiting time.

[0079] Figure 6 6 shows a user interface that allows a user to configure a solver job in a solver execution service according to some embodiments. The depicted solver job configuration interface 610 may be used by Figure 1 The service console 106 is implemented.

[0080] As shown, GUI 610 allows a user to specify various configuration settings for a new solver job, or to modify the configuration settings of an existing solver job. Some of the configuration settings editable through GUI 610 may be Figure 3 GUI 610 may be used to create a solver job request 300. For example, GUI 610 allows a user to specify a name for the solver job. Section 620 allows a user to specify the type of optimization solver to be used for the solver job and, if necessary, the language runtime for the model code to be used to run the solver, a launch command to indicate the entry point for the solver job, and any external libraries required by the solver. The solver library may be a runtime library that can be dynamically loaded with an optimization solver to provide various additional functionality, such as machine learning or deep learning algorithms, routing optimization, zero shot constraint satisfaction, prediction of job schedules, group clustering for ad serving, and asynchronous Bayesian optimization, among others.

[0081] In some embodiments, GUI 610 provides user selection controls 622 and 624 that allow a user to select from a variety of solver types or language runtimes supported by the service.

[0082] As shown, the section 630 on the GUI 610 allows the user to specify the type of computing resources and the different resource parameters of the computing resources for running the solver job. In this example, the selection control 632 is used to select the type of virtual machine for the solver job, including the number of vCPUs and machine memory. In addition, the GUI 610 in this example provides another selection control 634 to select the vCPU type of the virtual machine. In some embodiments, the GUI 610 can allow the user to select from many types of computing resources, including virtual machines, containers, serverless functions and quantum computing resources, as different options for the execution environment. In some embodiments, the GUI 610 can allow the user to specify multiple instances of computing resources to build a distributed execution environment (e.g., a cluster of connected virtual machine instances) for the solver job. In some embodiments, the GUI 610 can allow the user to select a custom virtual machine or container image to perform the solver job. In some embodiments, the GUI 610 can allow the user to specify that the computing resources for the solver job should be kept alive so that the user session runs other solver jobs in the same session. This feature is useful for interactive developer sessions (for example, notebook sessions) when a user might run multiple short solver jobs for experimental purposes, and allows the solver execution service to reuse the same compute resources for these short solver jobs.

[0083] As shown, section 640 allows the user to specify data aspects of the solver job, such as the location and name of the model file, the location and name of the solution file, and the format of the input and output data files. In some embodiments, the user can specify that a specific encryption key should be used to encrypt a specific data file.

[0084] As shown, section 650 allows the user to modify additional job execution parameters associated with the solver job. These job execution parameters can be configuration parameters exposed by the solver execution service, rather than local configuration parameters of the optimization solver. As shown here, examples of such additional parameters can include job timeout parameters and one or more job triggers.

[0085] As shown, GUI 610 provides a number of buttons to initiate actions based on the job configuration data. Verify button 660 may be used to verify the job configuration. In some embodiments, verification of the job configuration may cause the service to attempt to provision resources for the solver job and start the solver job. Errors received during the start process will cause the verification to fail. Save button 662 will cause the current job configuration to be saved by the service to, for example, Figure 1 The solver job management database 140. Finally, the execute button 664 will actually cause the configured solver job to be launched (or the configured solver job to be added to the launch queue).

[0086] Figure 7 FIG. 7 shows a user interface that allows a user to manage solver jobs in a solver execution service according to some embodiments. The depicted solver job management interface 710 may be used by Figure 1 The service console 106 is implemented.

[0087] As shown, GUI 710 includes a table listing multiple solver jobs that have been submitted to the solver execution service. In some embodiments, the list may indicate solver jobs that have been submitted but not yet executed, jobs that are currently being executed, and jobs that have recently completed execution. Some of the data shown in the list may be obtained through Figure 4 The job status data received by the solver job status data structure 400 of the FIG. As shown, in this example, the job list also allows the user to perform various actions on the solver job, such as checking the current execution log of the solver job, or canceling or stopping a submitted or running solver job. As discussed, in some embodiments, the execution log can be received as a continuous data stream so that additions to the log can be viewed in real time through the management interface.

[0088] The bottom portion of GUI 710 is a job status view 720 that displays additional execution data for the selected job in the list (here, the last job in the list). As shown, section 730 indicates certain configuration information about how the job is executed, including the solver used and various solver and resource parameters. Section 740 displays certain performance data associated with the solver execution, including any execution errors, CPU and memory usage, and whether an optimal solution was found. As discussed, in some embodiments, execution parameter information and execution performance data can be saved anonymously and used to inform the solver or resource recommendations generated by the solver execution service for other solver jobs.

[0089] As shown, GUI 710 also provides a plurality of buttons to navigate to other interfaces of the solver execution service, including button 750 to view the solution generated by the solver execution, button 752 to edit the model of the solver job, and button 754 to edit the solver job configuration of the solver job (e.g., by Figure 6 GUI 610).

[0090] Figure 8 is a flow chart illustrating a process by which a solver execution service solves an optimization problem using a configured optimization solver and computing resources according to some embodiments. The depicted process may be performed by Figure 1 An embodiment of the solver execution service 120 is executed.

[0091] As shown, the process begins at operation 810, where a model specifying an optimization problem to be solved by an optimization solver is stored. In some embodiments, the model can be stored as a file or object in a data storage service (e.g., data storage service 280). The data storage service can be implemented on a multi-tenant infrastructure provider network that provides and hosts computing resources on behalf of many clients. The optimization solver can be one of the multiple types of optimization solvers supported by a solver execution service that can run an instance of the solver on computing resources managed by the infrastructure provider network.

[0092] At operation 820, configuration data for executing the optimization solver is received. The configuration data may be specified as a solver execution request 110, which may be received via an API (e.g., service interface 122) or GUI (e.g., service console 106) of a solver execution service or infrastructure provider service. Figure 3 As discussed above, the request 300 of the process may create a solver job in the solver execution service. The request may specify various parameters of the solver job, such as the type of solver to be used and solver parameters of the solver, the computing resources used to execute the solver and various parameters of the resources, and the locations of the inputs and outputs of the solver job. In some embodiments, some of the solver job parameters may be automatically determined based on preconfigured rules or one or more machine learning models.

[0093] At operation 830, computing resources (e.g., computing resource instances 160) are provided to perform solver execution according to configuration data. Computing resources can be virtual machine instances or container instances configured with the requested solver type, and can be selected based on configuration data to implement the execution environment of the optimization solver. In some embodiments, computing resources are selected so that the execution environment is isolated from other execution environments for other solver jobs running simultaneously. For example, execution environments can be prohibited from directly communicating with each other or sharing infrastructure resources with each other. In some embodiments, computing resources are provided in a serverless manner so that the computing resources are only provided during the solver execution time period and are released after execution is completed. In some embodiments, a service can maintain one or more available computing resource instance pools for reuse by new solver jobs. Resource pools can be dynamically scaled based on the current demand for pools.

[0094] At operation 840, an instance of an optimization solver (e.g., optimization solver instance 166) is executed in an execution environment on a computing resource. The solver instance will read the model from a storage location and execute an optimization algorithm to determine a solution to the optimization problem specified by the model. In some embodiments, execution data about the solver execution is recorded in an execution log. In some embodiments, as the solver execution progresses, state changes about the solver job are reported to the solver execution service.

[0095] At operation 850, the solution (e.g., solution 174) is written to a storage location. In some embodiments, the solution may be written to a storage location different from the model. In some embodiments, when the solution is written, a notification may be generated indicating that the solution is now available (e.g., as an event through event dispatch service 270). In some embodiments, the notification may be pushed to the client that initiated the solver execution request. In some embodiments, the notification may cause an update to the management interface of the solver execution service (e.g., solver job management interface 710) to indicate that the solver job is complete.

[0096] At operation 860, cancel the computing resources provided for performing the optimization solver instance. In certain embodiments, canceling the provision of computing resources can simply mean terminating the resource instance. In certain embodiments, the computing resource instance can be cleaned up and returned to the resource pool for use by other solver operations. The cleaning process may involve removing any artificial traces left by the solver execution, closing the network connection, revoking the resource access rights and de-marking the resources executed for the solver. As shown in the figure, then the request can be executed for another solver or the process can be repeated based on the job execution trigger.

[0097] Fig. 9 An experiment illustrating how a solver execution service can be used to compare different types of optimization solvers and computing resources according to some embodiments.

[0098] As discussed, current optimization solver platforms can create significant issues associated with vendor lock-in, so once a company begins using one type of solver, it is difficult for the company to switch to another type of solver. The problem is due in part to the large upfront costs of using these solver platforms, as well as incompatibilities between the modeling formats of different solver platforms. In order to mitigate vendor lock-in, an embodiment of the solver execution service 120 implements a translation capability that translates model representations between different types of solver platforms. Additionally, an embodiment of the solver execution service provides a solver experiment interface that allows developers to conduct evaluation experiments to compare the functionality and performance of different solvers, thereby determining the solver that best suits a particular problem.

[0099] As shown in the figure, Fig. 9 The top of depicts a first type of solver experiment 910 that compares three different solver jobs: solver job A 920, solver job B 922, and solver job C 924. In some embodiments, the solver experiment 910 can be configured as a special type of solver job that executes multiple component solver jobs (e.g., solver jobs A, B, and C) in parallel. Solver experiment jobs can be defined through an API (e.g., service interface 122) or GUI (e.g., service console 106) of a solver execution service. In some embodiments, the solver execution service can allow a user to run experiments only on a subset of the problem space (e.g., by constraining the problem model) so that the experiment does not take a long time to explore the entire problem space. In some embodiments, a solver experiment job may involve multiple experiments running on different parts of the problem space.

[0100] As shown in this example, the solver experiment job uses three different solver job configurations to solve the same model M using the same type of computing resources R. Solver job A 920 uses solver type S1 and a set of solver parameters P1. Solver job B 922 uses a different solver type S2 and a set of solver parameters P2. Solver job C 924 also uses solver type S2 and a set of different solver parameters P3. The job performance data of the three solver jobs are captured and compared by the job performance comparison component 930. In some embodiments, the job comparison component 930 can simply present the performance data of the jobs side by side to the user (e.g., through the solver console). In some embodiments, the job comparison component 930 can programmatically select 940 the best performing solver and solver parameters based on the performance data and recommend the best solver to the user.

[0101] According to an embodiment, the mode of selecting 940 can be specified by configuration data (e.g., configuration data of the solver experimental operation). The performance data evaluated by the operation performance comparison 930 can include different types of performance metrics, including the time spent to find a solution or the quality of the solution. In some cases, the solver configuration that obtains the best solution the fastest will be considered the best configuration. In other cases, the solver configuration that produces the best solution (e.g., based on the objective function score) within a specified time period will be considered the best configuration. Other performance metrics can be considered to evaluate the quality of the solution, including the original and dual infeasibility bounds and residuals, and the gap percentage. In some cases, when comparing the solution execution performance, certain optimization status codes and error codes generated by the solver and the resource usage level of the solver configuration may also be considered as factors.

[0102] In some embodiments, the solver execution service allows users to compare not only the performance of different types of solvers, but also the performance of different types of computing resources and resource parameters used for experimental runs. Fig. 9 The bottom portion of the diagram depicts another solver experiment 940 of running two solver jobs A 950 and B 952 in parallel to compare two types of computing resources R1 and R2 running the same solver type S. As with the experiment 910, the job performance comparison component 930 compares the performance data of the two solver jobs to select the best performing computing resource option and resource configuration.

[0103] In some embodiments, to run a solver experiment, a solver execution service can recognize that two different types of solvers use different model representations and automatically translate the model representation of an available model of one solver into the model representation of another solver. For example, a first solver may use a proprietary problem modeling language to define a problem in a particular syntax, and a second solver may use a different problem modeling language in another syntax. As another example, a solver may build a model in code using a general-purpose programming language such as Python, which calls the solver's API provided in the programming language. The solver execution service may provide a collection of model translators to translate between different model representations.

[0104] In some cases, the output of a solver job may also be in a proprietary format specific to the solver, and the solver execution service will automatically translate the output into a common format. The solver execution service will save any translated input and output data in the storage location specified by the solver job so that clients can access the translated data.

[0105] Fig.10 A multi-stage solver job supported by a solver execution service using two different types of optimization solvers is shown in accordance with some embodiments.

[0106] Optimization problems of certain types can be solved in different optimization stages. For example, in some cases, it is possible to decompose the optimization problem into the first stage (for example, determining a set of feasible solutions that satisfy the problem constraints) that reduces the problem to a simplified solution space, and the second stage (for example, finding the solution with the highest objective function value) that finds the best solution in the reduced solution space. As another example, the early stages of the optimization process can be used to reduce the number of decision variables, merge and eliminate constraints, or restate the problem as different problem types. In order to implement these types of multi-stage optimization processes, the embodiment of the solver execution service allows developers to define the multi-stage solver job that solves the optimization problem in multiple stages. Because the solver execution service can support multiple solver types, each stage in the multi-stage solver job can use different solvers and run on different computing resource instances.

[0107] Fig.10 An example multi-stage solver job 1010 is depicted. In some embodiments, a multi-stage solver job 1010 can be defined as a composite solver job over multiple component jobs of separate stages or steps of an optimization process. A multi-stage solver job can be defined using an API (e.g., service interface 122) or GUI (e.g., service console 106) of a solver execution service. In some embodiments, a multi-stage solver job can be defined as a workflow through a service such as a workflow orchestration service 260. As discussed, such services can be used to build workflows with steps that span multiple types of services, including machine learning services and other data processing or analysis services. In some embodiments, the component jobs that implement a multi-stage solver job can be programmatically linked using triggers in a solver execution service.

[0108] As shown in this example, the multi-stage solver job 1010 begins with a first model preparation stage 1020. As shown, this stage 1020 populates the model file M1 1024 with values ​​from a model file 1022 (e.g., a spreadsheet file of model parameters). This step may be performed for certain types of solvers that allow the model to reference values ​​from external files. In some embodiments, the solver execution service treats the external parameter file 1022 as part of the model so that any changes in the parameter file will trigger solver execution.

[0109] As shown, stage 1030 is the first optimization stage, in which 1032 a solver job S1 is executed using solver type A. Solver job S1 may be executed on a computing resource instance specially configured for the job. Solver job S1 outputs a first stage solution 1042 .

[0110] As shown, stage 1040 is a second model preparation stage that converts or translates the first stage solution 1042 into a second model M2 1044 and a third model M3 1046. For example, the first stage solution 1042 can be split into two sub-problems (e.g., different sets of decision variables) that will be solved separately by different solver jobs. In some embodiments, such steps can be performed by a dedicated translator designed specifically for this particular step. In some embodiments, this translation or conversion step may be unnecessary because the first solver job S1 can produce output that can be used directly by subsequent solver stages.

[0111] As shown, once the model M2 is prepared, the second optimization phase 1050 is performed. As shown, in this example, the second optimization phase 1050 is performed with two solver jobs in parallel: the second solver job S2 1052 and the third solver job S3 1054. As shown, the solver job S2 uses another computing resource instance configured for the job to execute an instance of solver type B on the model M2. The solver job S3 is executed on a distributed execution environment 1056 comprising multiple computing resource instances. All computing resources used by the solver job S3 can be provided on demand when the solver job S3 is started, and released after the solver job S3 is completed. In some embodiments, the computing resources in the distributed execution environment can be connected to create a computing cluster that can communicate with each other and share intermediate results as the execution progresses. As discussed, the characteristics of the distributed computing environment 1056 can be specified by the configuration data associated with the solver job S3, or in some cases determined programmatically by the solver execution service itself. As a result of solver jobs S2 and S3, an overall solution 1058 of the multi-stage solver job 1010 is generated and written to a data storage device. In some embodiments, an overall solution can be generated by a final solver job to combine the findings of solver jobs S2 and S3.

[0112] As will be appreciated by those skilled in the art, using this approach, developers can mix and match multiple types of optimization solvers to implement an optimization process customized for a specific problem, allowing developers fine control over each step of the optimization process. In some embodiments, the solver execution service will track the execution status of each individual stage of the multi-stage solver job and allow the user to stop the multi-stage solver job (including any component jobs running in parallel) with the click of a button.

[0113] Fig.11 is a flow chart illustrating a process by which a solver execution service performs an experiment to compare two different types of optimization solvers, according to some embodiments. The depicted process may be performed by Figure 1 An embodiment of the solver execution service 120 is executed.

[0114] At operation 1110, the service maintains a computer source (e.g., computing resources 154a and 154b) configured with supported different types of optimization solvers. As discussed, computing resources can be provided in a serverless manner to perform solver jobs specified by client solver execution requests. In some embodiments, the computing resources can be virtual machines or container instances.

[0115] At operation 1120, a client request is received (e.g., via an API or GUI of a solver execution service), wherein the request specifies an experiment to compare two or more different types of optimization solvers for the same optimization problem. In some embodiments, the client request may specify configuration data for a solver experiment job, such as in conjunction with Fig. 9 As discussed. A solver experiment job can specify different solver execution configurations to be compared, including different solver types, different solver parameters, different computing resource types, and different computing resource parameters. In some embodiments, all solver execution configurations can be executed in parallel as independent solver jobs.

[0116] At operation 1130, a first type of optimization solver is executed on one type of computing resource to determine a first solution to the optimization problem. This execution may be performed in conjunction with Figure 8 The same is done in a similar manner as discussed above.

[0117] At operation 1140, the service translates the optimization problem model from a first model format associated with a first type of optimization solver to a second model format associated with a second type of optimization model. As discussed, different solver platforms may use different model representations or formats. If a particular solver included in the experiment cannot read a model in an available format, the service may automatically translate the available model into a model format supported by the particular solver. The translated model may be saved by the solver execution service so that it may be further used by the developer.

[0118] Once the model of the second type of optimization solver is generated, at operation 1150, the second type of optimization solver is executed on the same type of computing resources as the first type of optimization solver, and a second solution to the optimization problem is determined. This execution may be performed in conjunction with Figure 8 The same is done in a similar manner as discussed above.

[0119] Finally, at operation 1160, performance data of the two solvers is compared and output (e.g., via an API or GUI of a solver execution service). The performance data can be captured during two executions of the two solvers, and can include performance metrics such as the amount of time used to determine the first solution and the second solution, the objective function values ​​of the first solution and the second solution, or the corresponding resource usage levels associated with the determination of the first solution and the second solution. In some embodiments, a recommendation system can use the comparison to automatically recommend the best performing solver based on the experimental results.

[0120] Fig.12 is a flow chart illustrating a process by which a solver execution service executes a multi-stage solver job using two different types of optimization solvers according to some embodiments. The depicted process may be performed by Figure 1 An embodiment of the solver execution service 120 or an embodiment integrated with the solver execution service Figure 2 The workflow orchestration service 260 is used to execute.

[0121] At operation 1210, the solver execution service receives configuration data (e.g., via an API or GUI of the service). The configuration data can be included as part of a client solver execution request to specify a multi-stage solver job that uses different types of optimization solvers to solve an optimization problem (e.g., Fig.10 In some embodiments, the individual stages of a multi-stage solver job may be associated with component solver jobs that use a specific type of solver and a specific type of computing resource.

[0122] At operation 1220, an optimization solver of a first type is executed on a first computing resource according to the configuration data to generate a first solution to a first part of the optimization problem. Depending on how the multi-stage job is configured, the optimization problem can be divided into different parts to be solved in different stages. As an example, the first part of the problem may be to find a local optimal solution in a first region of the solution space. As another example, the first part of the problem may be to simplify or reduce the solution space for the next stage of the optimization process (e.g., to determine only a subset of decision variables or a smaller range of decision variables). Depending on the configuration, the component jobs in the multi-stage can be executed in parallel or serially.

[0123] At operation 1230, a first solution generated by a first type of optimization solver is translated into an input model associated with a second type of optimization of a second stage of a multi-stage solver job. In some embodiments, this translation may be performed by a dedicated translator implemented by a solver execution service, such as in conjunction with Fig.10 as discussed in Phase 1040.

[0124] At operation 1240, a second type of optimization solver is executed in a second computing resource to generate a second solution to a second part of the optimization problem. The second part of the problem can be solved based on the output of the first stage (e.g., determining an optimal solution in the reduced solution space represented by the input model produced by operation 1230). For example, the first stage solution can determine a subset of decision variables in the optimization problem, and the second solver job can determine another subset of decision variables. However, in some cases, the second solution may not be dependent on the first solution. For example, the second solution may represent a local optimal solution in a different region of the solution space.

[0125] In some embodiments, the second solver execution can be performed in a distributed computing environment using many computing resource instances. The computing resource instances can be executed in parallel to process different parts of the second solver execution. For example, each instance or node can optimize a different set of decision variables or process a different range of constraint values. In some embodiments, this second solver stage of the multi-solve job can be performed by another service different from the solver execution service, such as a separate machine learning service or data analysis service.

[0126] At operation 1250, an overall solution to the optimization problem is output. The output may be persistently stored to a storage location specified by the configuration data (e.g., solver job storage 170). In some cases, the overall solution may be only the second solution. In some cases, the overall solution may be determined based on the first solution and the second solution (e.g., based on the objective function values ​​of the first solution and the second solution).

[0127] Fig.13 A recommendation system implemented by a solver execution service is shown to provide different types of recommendations to a user during the model design and solver job configuration process, in accordance with some embodiments.

[0128] Optimization application development can have a steep learning curve. New developers may not have enough knowledge about different solver platforms to choose the solver or computational resources that are best suited for the optimization problem. After choosing a solver, it still takes some time for a novice developer to acquire the expertise to comfortably create optimization models from scratch. Furthermore, different solver platforms can employ very different programming and configuration interfaces, making it difficult for even experienced developers to move to a new solver platform.

[0129] To address these and other issues, embodiments of the solver execution service implement multiple recommendation systems to facilitate onboarding of new users and bridge the gap between the problem domain and the programming and configuration interfaces of the optimization solvers. The recommendation system can be configured to recommend options to developers at different stages of the model development or execution configuration process. In some embodiments, the recommendation system is powered by a machine learning model that is trained to recommend model templates, solvers, and computing resources based on characteristics of the optimization problem, model, and / or other execution configuration parameters. These recommendations enable developers to quickly start creating new models in unfamiliar solver environments and select appropriate execution parameters for solver execution.

[0130] As shown in the figure, Fig.13 Depicted are user interfaces (model design UI 1320 and job configuration UI 610) that can be used to implement the recommendation interface. In some embodiments, these interfaces can be implemented as a GUI (e.g., as part of the service console 106) to provide recommendations to developers 1310 during the development or execution configuration process. In some embodiments, the GUI can be a notebook interface implemented on a developer endpoint loaded with a set of desired solver libraries.

[0131] As shown, in some embodiments, the model design UI 1320 may initially ask the developer 1310 for the optimization situation, for example, asking the developer a series of questions about the problem. In response, the developer will provide some initial information about the problem. The initial information may include information such as the type of problem, the domain of the problem, the parameters of the model, the types of variables involved, etc. of the optimization problem. In some embodiments, a model template may be selected from a previously created complete model file. The model template recommendation system 1330 will analyze the initial information 1312, and select one or more model templates 1334 from the template library 1332, and present the template 1334 to the developer as a recommendation. In some embodiments, the model template 1334 may be domain-specific and contain model elements, such as the objective function and constraints seen in previous models created for similar optimization problems. The template model may be generated in part by the model template recommendation system 1330, or simply by an anonymous version of the actual model stored as a template in the template library 1332.

[0132] In some embodiments, the model design UI 1320 will allow the user to select 1336 one of the recommended model templates and generate a starting model 1340 from the template (e.g., a complete model file). The generation may involve a translation from the question model format of the template to the new question model format specified by the developer. In some embodiments, the initial information about the question 1312 and the template selection 1336 will create the model 1340 with little or no coding by the developer 1310. Once the model 1340 is created, the user can adjust or fill in the model parameters.

[0133] In some embodiments, after the developer edits the model 1340 through the model design UI 1320, the developer can switch to the job configuration UI 610, where the developer selects various execution parameters for solving the problem. During the execution configuration process, the solver recommendation system 1350 can make one or more recommendations 1352 about the type of solver and solver parameters of the solver for solving the model through the job configuration UI 1352. In some embodiments, these recommendations 1352 can be made based on model metadata 1342 about the model 1340, which can include data about the number, type, or characteristics of objective functions used by the model, the number or type of decision variables of the model, the number of types of constraints used in the model, or performance data obtained from one or more previous solver experiments (e.g., solver experiments 910 and 940).

[0134] In some embodiments, during the execution configuration process, the computing resource recommendation system 1360 can generate one or more recommendations 1362 about computing resource types for solving models and parameters for computing resources. In some embodiments, computing resources can be recommended based on model metadata 1342, solver types and solver parameters, and other configuration settings in solver job configuration 1370. Developers 1310 can then accept or ignore the recommendations made by these recommendation systems and save their configuration selections 1364 as part of the solver job configuration. Advantageously, the recommendation system of the disclosed solver execution service can greatly simplify and accelerate the model design and solver execution configuration process.

[0135] Fig.14 According to some embodiments, the solver performs the functionality of the service that enables users to contribute data to the service's recommendation system. In some embodiments, the service UI 1410 depicted in the figure can be implemented as Figure 1 Part of the service console 106.

[0136] In some embodiments, Fig.13The recommendations made by the recommendation system of the solver can be based on the contributions of other users of the solver execution service. As shown in the figure, in some embodiments, the developer 1310 can make a request 1412 to contribute the completed model 1340 to the template library 1332. The model template generator 1420 will generate a model template from the model 1340 (for example, remove certain proprietary elements from the model) and store the model template in the template library 1332 for use by the template recommendation system 1330. In some embodiments, certain information about the contributed model, such as domain information and model metadata, is extracted and stored with the model template so that the stored template can be searched based on the search information.

[0137] In some embodiments, machine learning models (e.g., solver recommendation model 1450 and computing resource recommendation model 1460) may be used to implement Fig.13 1350 and computing resource recommendation system 1360. These models can be trained using one or more global training data sets 1440 containing job configuration data contributed by users of the solver execution service. As shown, the developer 1310 can make a request 1414 to contribute its final solver job configuration to the recommendation system. In response, the training data generator 1430 will generate 1432 training data for the machine learning model based on the model 1340 and the solver job configuration 1370. The training data can contain various input features about the model 1340 (e.g., model metadata) and the job configuration 1370. The training data can be used to train the machine learning model to predict the solver type, solver parameters, computing resource type, and computer resource parameters based on the input feature data. The machine learning model can be periodically retrained based on the newly contributed training data to maintain or improve its recommendation quality. In some embodiments, the machine learning model can be trained using only training data from a specific client or client group, so that the recommendations generated by the recommendation system are specific only to the client or client group.

[0138] In some embodiments, other techniques such as statistical methods or configured recommendation rules can be used instead of machine learning models to implement the recommendation system. These other recommendation techniques can still be gradually adjusted based on observed developer behavior collected from individual developers. For example, a developer's choice to use a specific type of solver for a type of problem may update the solver usage statistics for that type of problem, making it more likely that the solver will be recommended for that type of problem. As another example, the recommendation rules can be automatically adjusted or regulated based on developer behavior statistics.

[0139] Fig.15FIG. 15 shows a model design user interface that allows a user to design a model for an optimization problem solver execution service according to some embodiments. The model design GUI 1510 depicted in the figure is Fig.13 An embodiment of a model design UI 1320.

[0140] GUI 1510 can be used to design a model used by an optimization solver. In some embodiments, as shown here, a model can be defined in a problem modeling language to specify elements such as an objective function 1520 of the model, variables 1530 used by the model, and constraints 1540 of the model. As discussed, in some embodiments, some of these elements can be part of a recommended model template for generating a model.

[0141] In some embodiments, the model design GUI 1510 can implement variables in the model as draggable elements, so that the draggable elements can be added to other elements of the model (e.g., objective function 1520 and constraints) through drag and drop operations 1532. In some embodiments, some elements (e.g., operators) of the objective function 1520 and constraint rules 1540 can be automatically completed or inferred based on variables or grammar rules. In this way, model developers can edit models in a user-friendly manner, thereby minimizing unnecessary manual coding by developers.

[0142] As shown in the figure, in this example, model design GUI 1510 provides buttons to perform developer actions on the model. Button 1542 will generate a graphical view according to the elements of the model to allow users to view and edit optimization problems in the form of a diagram. In some embodiments, the diagram will link various model elements such as variables, constraints and targets into different types of graphical nodes. Related elements can be grouped into sub-graphs. In some embodiments, the graph view allows different nodes and / or sub-graphs to be connected by hypergraph edges to define the association and / or operator type between nodes and / or sub-graphs. Button 1544 will verify the current model, for example, using a solver to parse the model to check any grammatical errors. Finally, button 1546 saves the model to the storage location of the solver job.

[0143] Fig.16 is a flow chart illustrating a process by which a solver execution service interacts with a user through a user interface to create a model of an optimization problem and configure solver execution according to some embodiments. The process may be performed by Figure 1 The solver execution service 120 is executed in an embodiment, and the GUI described in the figure can be Figure 1 An embodiment of the service console 106.

[0144] At operation 1610, a GUI is generated to create a model of the optimization problem, and a configuration solver is executed to solve the optimization problem. In some embodiments, the GUI can be implemented as a series or graphical steps (e.g., a web page) to guide the developer through a multi-step configuration process. As shown, the remaining operations of the process are performed by the GUI.

[0145] At operation 1620, the GUI receives user input providing initial information about the optimization problem. The initial information may be received in response to a questionnaire generated by the solver execution service. The initial information may indicate the problem domain of the optimization problem, as well as other information such as a general description of the problem, the type of objective function or optimization algorithm, the types of decision variables and constraints, and the like.

[0146] At operation 1630, the GUI outputs a recommended model template from a template library (e.g., template library 1332). The template is selected by a component such as the model template recommendation system 1330 based on the initial information and can be displayed with a general description of the model. In some embodiments, if the user selects or approves the recommended template, a starting version of the model of the optimization problem is generated using the template. In some embodiments, the model generation process may involve translating the model into a model format that is different from the format in which the model template is stored.

[0147] At operation 1640, the GUI outputs a solver recommendation indicating one of a plurality of types of optimization solvers supported by the solver execution service for use in the solver execution, and optionally solver parameters of the solver for use in the solver execution. The optimization solver is selected based on model metadata about the model, such as the type of objective function of the model, the number or type of decision variables of the model, or the number or type of constraints of the model. In some embodiments, the model metadata may include performance results of the solver obtained from experiments performed by the solver execution service. In some embodiments, the solver recommendation may be generated by a machine learning model that is trained using training data contributed by many users of the service. The selection may be made by, for example, Fig.13 The solver recommendation system 1350 and other components are used for execution.

[0148] At operation 1650, the GUI receives additional user input accepting the recommended solver (and any recommended solver parameters) and updates the configuration data for the solver execution to use the recommended solver and the recommended solver parameters. Figure 1 As discussed, the configuration data may be job configuration data 142 stored in the solver job management database 140 .

[0149] At operation 1660, the GUI outputs a computing resource recommendation indicating one type of computing resource among a plurality of types of computing resources supported by the solver execution service for use in solver execution, and optionally resource parameters of the computing resource. In some embodiments, the type of computing resource may include a virtual machine instance, a container instance, or a quantum computing resource. The resource parameters may specify characteristics of the resource, such as the type and number of CPUs used (e.g., the type of GPU), the amount of memory implemented on the resource, the operating system or software libraries installed in the resource, and the like. The computing resource is selected based on model metadata about the model, the type of optimization solver, and / or other configuration settings in the configuration data. In some embodiments, the computing resource recommendation may be generated by a machine learning model that is trained using training data contributed by many users of the service. The selection may be made by, for example, Fig.13 The components of the computing resource recommendation system 1360 are used to perform.

[0150] At operation 1670, the GUI receives additional user input accepting the recommended computing resources (and any recommended resource parameters), and updates the configuration data for the solver execution to use the recommended computing resources and recommended resource parameters.

[0151] At operation 1680, the GUI receives user input to solve the optimization problem and, in response, initiates solver execution according to the configuration data. The user input for solving the optimization problem can be provided by control elements of the GUI, such as Figure 6 An execution button 664 is generated.

[0152] Fig.17 An example computer system is shown that may be used to implement portions of the solver execution services described herein, according to some embodiments.

[0153] In various embodiments, computer system 2000 may be any of various types of devices, including, but not limited to, a personal computer system, a desktop computer, a laptop computer, a notebook or netbook computer, a mainframe computer system, a handheld computer, a workstation, a network computer, a camera, a set-top box, a mobile device, a consumer device, a video game console, a handheld video game device, an application server, a storage device, a peripheral device such as a switch, a modem, a router, or generally any type of computing device, computing node, computing node, computing system, or electronic device.

[0154] In the illustrated embodiment, the computer system 2000 includes one or more processors 2010 coupled to a system memory 2020 via an input / output (I / O) interface 2030. The computer system 2000 further includes a network interface 2040 coupled to the I / O interface 2030, and one or more input / output devices 2050, such as a cursor control device 2060, a keyboard 2070, and a display 2080. The display 2080 may include a standard computer monitor and / or other display systems, technologies, or devices. In at least some embodiments, the input / output device 2050 may also include a touch-enabled or multi-touch device, such as a tablet or input board, through which a user enters input via a stylus-type device and / or one or more fingers. In some embodiments, it is contemplated that the embodiments may be implemented using a single instance of the computer system 2000, while in other embodiments, multiple such systems or multiple nodes constituting the computer system 2000 may host different portions or instances of the embodiments. For example, in one embodiment, some elements may be implemented by one or more nodes of the computer system 2000 that are different from those nodes that implement other elements.

[0155] In various embodiments, computer system 2000 may be a single processor system including one processor 2010, or a multiprocessor system including a plurality of processors 2010 (e.g., two, four, eight, or another suitable number). Processor 2010 may be any suitable processor capable of executing instructions. For example, in various embodiments, processor 2010 may be a general-purpose or embedded processor implementing any of a variety of instruction set architectures (ISAs), such as x86, PowerPC, SPARC, or MIPS ISAs, or any other suitable ISAs. In a multiprocessor system, each processor in processor 2010 may typically, but not necessarily, implement the same ISA.

[0156] In some embodiments, at least one processor 2010 may be a graphics processing unit. A graphics processing unit or GPU may be considered as a dedicated graphics rendering device for a personal computer, workstation, game console or other computing or electronic device. Modern GPUs may be very efficient in manipulating and displaying computer graphics, and their highly parallel structure may make them more effective than typical CPUs for a series of complex graphics algorithms. For example, a graphics processor may implement the graphics primitive operations in a manner that makes it much faster to directly draw to the screen than a host central processing unit (CPU) to perform multiple graphics primitive operations. In various embodiments, graphics rendering may be implemented at least in part by program instructions that are configured to be executed on one of such GPUs or executed in parallel on two or more of such GPUs. GPUs may implement one or more application programming interfaces (APIs) that allow programmers to call the functions of GPUs. Suitable GPUs may be commercially available from suppliers such as NVIDIA Corporation, ATI Technologies (AMD), etc.

[0157] The system memory 2020 can store program instructions and / or data accessible to the processor 2010. In various embodiments, the system memory 2020 can be implemented using any suitable memory technology such as static random access memory (SRAM), synchronous dynamic RAM (SDRAM), non-volatile / flash type memory, or any other type of memory. In the illustrated embodiment, program instructions and data implementing the desired functions as described above are shown as stored in the system memory 2020 as program instructions 2025 and data storage device 2035, respectively. In other embodiments, program instructions and / or data can be received, sent, or stored on different types of computer accessible media or similar media separate from the system memory 2020 or the computer system 2000. In general, non-transitory computer readable storage media can include storage media or memory media, such as magnetic media or optical media, for example, a disk or CD / DVD-ROM coupled to the computer system 2000 via the I / O interface 2030. Program instructions and data stored in computer-readable media can be transmitted via transmission media or signals (such as electrical signals, electromagnetic signals or digital signals), which can be transmitted via communication media such as networks and / or wireless links, such as can be implemented through network interface 2040.

[0158] In some embodiments, the I / O interface 2030 can coordinate I / O traffic between the processor 2010, the system memory 2020, and any peripheral device in the device including the network interface 2040 or other peripheral interfaces such as the input / output device 2050. In some embodiments, the I / O interface 2030 can perform any necessary protocol, timing, or other data transformations to convert data signals from one component (e.g., the system memory 2020) into a format suitable for use by another component (e.g., the processor 2010). In some embodiments, for example, the I / O interface 2030 can include support for devices attached through various types of peripheral buses such as a variant of the peripheral component interconnect (PCI) bus standard or the universal serial bus (USB) standard. In some embodiments, for example, the functionality of the I / O interface 2030 can be split into two or more separate components, such as a north bridge and a south bridge. In addition, in some embodiments, some or all of the functionality of the I / O interface 2030, such as the interface to the system memory 2020, can be directly incorporated into the processor 2010.

[0159] The network interface 2040 may allow data to be exchanged between the computer system 2000 and other devices attached to the network (such as other computer systems) or between nodes of the computer system 2000. In various embodiments, the network interface 2040 may support: communications over a wired or wireless general data network (such as any suitable type of Ethernet); communications over a telecommunications / telephone network (such as an analog voice network or a digital fiber optic communications network); communications over a storage area network (such as a fiber optic acoustic channel SAN); or communications over any other suitable type of network and / or protocol.

[0160] In some embodiments, input / output device 2050 may include one or more display terminals, keyboards, keypads, touch pads, scanning devices, voice or optical recognition devices, or any other device suitable for entering or retrieving data through one or more computer systems 2000. Multiple input / output devices 2050 may be present in computer system 2000 or may be distributed across different nodes of computer system 2000. In some embodiments, similar input / output devices may be separate from computer system 2000 and may interact with one or more nodes of computer system 2000 via wired or wireless connections (e.g., via network interface 2040).

[0161] As shown, the memory 2020 may include program instructions 2025 that may implement various methods and techniques as described herein, and a data storage 2035 containing various data accessible by the program instructions 2025. In one embodiment, the program instructions 2025 may include software elements of the embodiments as described herein and as shown in the accompanying drawings. For example, the program instructions 2025 may be used to implement the functions of the solver execution service 120. The data storage device 2035 may include data that may be used in embodiments. For example, the data storage device 2035 may be used to store the solver job configuration data 142. In other embodiments, other or different software elements and data may be included.

[0162] Those skilled in the art will appreciate that computer system 2000 is only illustrative and is not intended to limit the scope of the technology as described herein. Specifically, computer systems and devices may include any combination of hardware or software that can perform the indicated function, including computers, personal computer systems, desktop computers, laptop computers, notebooks or netbook computers, large computer systems, handheld computers, workstations, network computers, cameras, set-top boxes, mobile devices, network devices, Internet appliances, PDAs, wireless phones, pagers, consumer devices, video game consoles, handheld video game devices, application servers, storage devices, such as switches, modems, routers and other peripheral devices or generally any type of computing or electronic devices. Computer system 2000 may also be connected to other devices not shown, or may alternatively be operated as an independent system. In addition, in some embodiments, the functions provided by the components shown may be combined in fewer components or distributed in other components. Similarly, in some embodiments, the functions of some components in the components shown may not be provided and / or other additional functions may be used.

[0163] Those skilled in the art will also understand that, although various items are shown as being stored in memory or on a storage device when in use, for the purpose of memory management and data integrity, these items or parts thereof may be transmitted between memory and other storage devices. Alternatively, in other embodiments, some or all of the software components may be executed in a memory on another device and communicate with the computer system shown through inter-computer communication. Some or all of the system components or data structures may also be stored (e.g., as instructions or structured data) on a computer-accessible medium or portable article to be read by an appropriate driver, and various examples of the appropriate driver are described above. In some embodiments, instructions stored on a non-transitory computer-accessible medium separated from the computer system 2000 may be transmitted to the computer system 2000 via a transmission medium or signal (e.g., an electrical signal, an electromagnetic signal, or a digital signal conveyed by a communication medium such as a network and / or a wireless link). Various embodiments may further include receiving, sending, or storing instructions and / or data implemented according to the foregoing description on a computer-accessible medium. Therefore, the present invention may be practiced with other computer system configurations.

[0164] It should be noted that any distributed system embodiment described herein or any of its components can be implemented as one or more network services. For example, the leader node in the data warehouse system can present data storage services and / or database services to the client as network-based services. In some embodiments, network-based services can be implemented by software and / or hardware systems designed to support interoperable machine-to-machine interactions carried out through a network. Network-based services can have interfaces described in machine-processable formats such as network service description languages ​​(WSDL). Other systems can interact with network services in a manner specified by the description of the interface of network-based services. For example, network-based services can limit the various operations that other systems can call, and can limit the specific application programming interfaces (APIs) that other systems can follow when requesting various operations.

[0165] In various embodiments, a network-based service may be requested or invoked using a message that includes parameters and / or data associated with a network-based service request. Such messages may be formatted according to a specific markup language such as Extensible Markup Language (XML), and / or may be encapsulated using a protocol such as Simple Object Access Protocol (SOAP). To execute a network service request, a network-based service client may assemble a message including the request using an Internet-based application layer transport protocol such as Hypertext Transfer Protocol (HTTP), and deliver the message to an addressable endpoint (e.g., a Uniform Resource Locator (URL)) corresponding to the network service.

[0166] In some embodiments, a web service may be implemented using a representational state transfer ("RESTful") technique rather than a message-based technique. For example, a web service implemented according to RESTful techniques may be invoked via parameters included in an HTTP method (such as PUT, GET, or DELETE) rather than being encapsulated in a SOAP message.

[0167] The various methods shown in the drawings and described herein represent example embodiments of the methods. The methods may be implemented in software, hardware, or a combination thereof. The order of the methods may be changed, and various elements may be added, reordered, combined, omitted, modified, etc.

[0168] It will be apparent to those skilled in the art having the benefit of this disclosure that various modifications and changes may occur. The invention is intended to cover all such modifications and changes, and, therefore, the above description is to be regarded as illustrative rather than restrictive.

[0169] Embodiments of the present disclosure may be described in light of the following terms:

[0170] Clause 1. A system comprising:

[0171] One or more computing devices implementing an infrastructure provider network that provides a plurality of infrastructure services, the one or more computing devices comprising:

[0172] A storage service that stores a model of a specified optimization problem; and

[0173] A solver execution service, the solver execution service being configured to:

[0174] receiving configuration data for executing an optimization solver on the model to determine a solution to the optimization problem, wherein the configuration data is usable by the solver execution service to:

[0175] providing computing resources to perform at least a portion of the execution, wherein the computing resources are configured according to the configuration data to implement an execution environment of the optimization solver;

[0176] An instance of the optimization solver is executed in the execution environment to process the model and determine the solution to the optimization problem; and the solution is written to the storage service and a notification is generated that the solution is available.

[0177] Clause 2. The system of clause 1, wherein:

[0178] The computing resources are provided by serverless computing services provided by the infrastructure provider network;

[0179] The computing resource is a virtual machine instance, a container instance, or a quantum computing resource configured to execute the optimization solver;

[0180] The computing resource belongs to a pool of available computing resources managed by the serverless computing service; and

[0181] The serverless computing service releases the computing resources back to the pool after the execution.

[0182] Clause 3. A system according to clause 1 or 2, wherein the configuration data specifies one or more of the following:

[0183] a plurality of processors or processor cores for said executing virtual machines;

[0184] The processor type of the virtual machine;

[0185] the amount of memory of the virtual machine;

[0186] a first storage location of the model in the storage service; and

[0187] A second storage location in the storage service for writing the solution.

[0188] Clause 4. A system according to any one of clauses 1 to 3, wherein:

[0189] The solver execution service is a multi-tenant service that performs multiple solver executions in parallel for multiple clients; and

[0190] Individual ones of the solver executions are performed in isolated execution environments.

[0191] Clause 5. A system according to any one of clauses 1 to 4, wherein the solver execution service provides a distributed execution environment for the execution comprising multiple computing resource instances, and the optimization solver is executed on separate computing resource instances in the computing resource instances to solve different parts of the optimization problem.

[0192] Clause 6. A method comprising:

[0193] The solver execution service implemented by one or more computing devices performs:

[0194] receiving configuration data for executing an optimization solver to determine a solution to an optimization problem, wherein the optimization problem is stored as a model at a first storage location,

[0195] providing computing resources to perform at least a portion of the execution, wherein the computing resources are configured according to the configuration data to implement an execution environment of the optimization solver;

[0196] executing an instance of the optimization solver in the execution environment to process the model and determine the solution to the optimization problem; and

[0197] The solution is written to a second storage location.

[0198] Clause 7. The method according to clause 6, wherein:

[0199] The solver execution service is implemented by a network of infrastructure providers;

[0200] The computing resources are provided by serverless computing services implemented by the infrastructure provider network; and

[0201] The computing resource is a virtual machine instance or a container instance configured with software for executing the optimization solver.

[0202] Clause 8. The method of clause 6 or 7, further comprising the solver performing a service:

[0203] The computing resource is selected based at least in part on one or more characteristics of the model.

[0204] Clause 9. A method according to any one of clauses 6 to 8, wherein:

[0205] The first storage location is a client storage location assigned to a client performing a service on the solver;

[0206] The second storage location is the same client storage location;

[0207] The model is stored as a first object in the client storage location; and

[0208] The solution is stored as a second object in the client storage location.

[0209] Clause 10. A method according to any one of clauses 6 to 9, wherein:

[0210] The solver execution service implements an application programming interface (API) configured to receive client requests;

[0211] The configuration data is received via the API in a first request;

[0212] The providing of the computing resources, the executing of the optimization solver, and the writing of the solution are performed as part of a first solver job initiated based on the first request; and

[0213] The solver execution service returns a response indicating a job identifier of the first solver job according to the API.

[0214] Clause 11. The method of clause 10, further comprising the solver executing a service:

[0215] receiving, via the API, a second request specifying a trigger for executing a second solver job; and

[0216] In response to detecting that the trigger is satisfied, execution of the second solver job is initiated.

[0217] Clause 12. The method of clause 11, further comprising the solver executing a service:

[0218] A plurality of triggers for a plurality of solver jobs are stored, the plurality of triggers comprising (a) a first trigger that specifies a schedule for initiating an associated solver job, and (b) a second trigger that specifies initiating another solver job when a model associated with the other solver job changes.

[0219] Clause 13. The method of clause 10, further comprising the solver executing a service:

[0220] monitoring execution of a plurality of solver jobs and tracking status information about the solver jobs in a job management database; and

[0221] In response to a second request received through the API, status information about one or more of the solver jobs in the job management database is returned.

[0222] Clause 14. The method of clause 10, further comprising the solver executing a service:

[0223] In response to a second request received through the API, a second solver job in the solver execution service is stopped before the second solver job is completed.

[0224] Clause 15. The method of clause 10, further comprising the solver executing a service:

[0225] determining in the configuration data a resource tag for the first solver job; and

[0226] The computing resource is tagged with the resource tag, wherein the resource tag is used to associate the first solver job with an event generated by the first solver job.

[0227] Clause 16. The method of clause 10, further comprising the solver executing a service:

[0228] recording analytical data regarding a plurality of solver jobs, the analytical data comprising solver parameters, resource parameters, and performance data associated with individual ones of the solver jobs; and

[0229] The analysis data is used to generate recommended configuration data for another solver job.

[0230] Clause 17. The method of clause 10, further comprising the solver executing a service:

[0231] tracking usage data indicating usage of said solver execution service by a client account;

[0232] Based at least in part on the usage data, determining that the client account has exceeded a usage limit, and in response:

[0233] The next solver job associated with the client account is throttled.

[0234] Clause 18. The method according to clause 10, wherein:

[0235] The server execution service executes the optimization solver under the license; and

[0236] The method further includes assessing a licensing fee to a client account based at least in part on the license.

[0237] Clause 19. One or more non-transitory computer-readable storage media storing program instructions that, when executed on or across one or more processors, implement a solver execution service and cause the solver execution service to:

[0238] receiving configuration data for executing an optimization solver to determine a solution to an optimization problem, wherein the optimization problem is stored as a model at a first storage location, and in response:

[0239] providing computing resources to perform at least a portion of the execution, wherein the computing resources are configured according to the configuration data to implement an execution environment of the optimization solver;

[0240] executing an instance of the optimization solver in the execution environment to process the model and determine the solution to the optimization problem; and

[0241] The solution is written to a second storage location.

[0242] Clause 20. The one or more non-transitory computer-readable storage media of Clause 19, wherein the program instructions, when executed on or across the one or more processors, cause the solver to perform a service:

[0243] In response to a first request received through an application programming interface (API) of the solver execution service, initiating a first solver job, wherein the first solver job provides the computing resources and executes the optimization solver; and

[0244] In response to the first request and according to the API, a response is returned indicating a job identifier of the first solver job.

[0245] Clause 21. A system comprising:

[0246] One or more computing devices, the one or more computing devices implementing a solver execution service, the one or more computing devices being configured to:

[0247] Providing access to multiple computing resources configured with different types of optimization solvers;

[0248] In response to one or more client requests:

[0249] executing a first optimization solver of a first type on a first computing resource configured with the first type of optimization solver to determine a first solution to the optimization problem;

[0250] executing a second optimization solver of a second type on a second computing resource configured with an optimization solver of a second type to determine a second solution to the optimization problem; and

[0251] An output is generated that indicates a comparison of performance data of the first optimization solver and the second optimization solver in solving the optimization problem.

[0252] Clause 22. The system of clause 21, wherein:

[0253] The solver execution service implements a graphical user interface (GUI);

[0254] generating the one or more client requests based on user input received through the GUI;

[0255] The GUI includes one or more user control elements to select one or more types of optimization solvers to solve the optimization problem; and

[0256] The GUI is configured to display an indication of the output.

[0257] Clause 23. The system of clause 22, wherein the performance data comprises:

[0258] an amount of time used to determine said first solution and said second solution,

[0259] the objective function values ​​of the first solution and the second solution, or

[0260] A level of resource usage associated with the determination of the first solution and the second solution.

[0261] Clause 24. A system according to any one of clauses 21 to 23, wherein:

[0262] The optimization problem is stored as a first model in a first format specific to the first type of optimization solver; and

[0263] The solver execution service is configured to translate the first model into a second model in a second format specific to the second type of optimization solver.

[0264] Clause 25. The system of clause 24, wherein:

[0265] The first model is specified in a problem modeling language readable by an optimization solver of the first type; and

[0266] The second model is specified in a programming language for invoking a solver API of the second type of optimization solver.

[0267] Clause 26. The system of any one of clauses 21 to 25, wherein the solver execution service is configured to:

[0268] translating at least one of the first solution and the second solution into a common solution format; and

[0269] The first solution and the second solution are stored in the general solution format.

[0270] Clause 27. A method comprising:

[0271] The solver execution service implemented by one or more computing devices performs:

[0272] Providing access to multiple computing resources configured with different types of optimization solvers;

[0273] In response to one or more client requests to solve the optimization problem, executing:

[0274] executing a first optimization solver of a first type on a first computing resource configured with an optimization solver of a first type to generate a first solution to a first portion of the optimization problem;

[0275] executing a second optimization solver of a second type on a second computing resource configured with an optimization solver of a second type to generate a second solution to a second part of the optimization problem; and

[0276] Based at least in part on the first solution and the second solution, an output is generated that indicates an overall solution to the optimization problem.

[0277] Clause 28. The method of clause 27, wherein the first optimization solver and the second optimization solver are executed at least partially in parallel.

[0278] Clause 29. A method according to clause 27 or 28, wherein:

[0279] The one or more client requests specify configuration data for obtaining the overall solution in a plurality of execution phases, including a first phase for obtaining the first solution followed by a second phase for obtaining the second solution; and

[0280] The first solution is translated into an input model for the second optimization solver.

[0281] Clause 30. The method of clause 29, wherein the configuration data specifies:

[0282] A plurality of solver jobs may be executed by the solver execution service to obtain the overall solution, and for individual solver jobs in the solver jobs:

[0283] a solver type of the optimization solver used for the solver job; and

[0284] One or more solver parameters specific to the solver type in question.

[0285] Clause 31. A method according to any one of clauses 27 to 30, wherein the configuration data specifies:

[0286] For a specific one of the solver jobs, one or more parameters of a virtual machine or container instance used to execute the specific solver job include a specific programming language runtime configured on the virtual machine or container.

[0287] Clause 32. The method of clause 29, wherein the configuration data specifies:

[0288] A model preparation phase of the service execution may be performed by the solver execution to populate a first model of the first optimization solver with values ​​from a model file.

[0289] Clause 33. The method of clause 29, wherein the configuration data specifies a workflow executable by a workflow orchestration service, and the workflow orchestration service uses the solver execution service to execute a first solver job and a second solver job.

[0290] Clause 34. The method of clause 33, wherein the workflow causes the workflow orchestration service to perform at least one step via a machine learning service that is different from the solver execution service.

[0291] Clause 35. The method of clause 29, wherein the configuration data is received via a graphical user interface (GUI) of the solver execution service.

[0292] Clause 36. One or more non-transitory computer-readable storage media storing program instructions that, when executed on or across one or more processors, implement a solver execution service and cause the solver execution service to:

[0293] Providing access to multiple computing resources configured with different types of optimization solvers;

[0294] In response to one or more client requests to solve the optimization problem:

[0295] executing a first optimization solver of a first type on a first computing resource configured with an optimization solver of a first type to generate a first solution to a first portion of the optimization problem;

[0296] executing a second optimization solver of a second type on a second computing resource configured with an optimization solver of a second type to generate a second solution to a second part of the optimization problem; and

[0297] and

[0298] Based at least in part on the first solution and the second solution, an output is generated that indicates an overall solution to the optimization problem.

[0299] Clause 37. One or more non-transitory computer-readable storage media of Clause 36, wherein the program instructions, when executed on or across the one or more processors, cause the solver to perform a service:

[0300] determining, based on the one or more client requests, configuration data for obtaining the overall solution in a plurality of execution phases, including a first phase for obtaining the first solution followed by a second phase for obtaining the second solution; and

[0301] The first solution generated by the first optimization solver is translated into an input model for the second optimization solver.

[0302] Clause 38. One or more non-transitory computer-readable storage media of Clause 37, wherein the program instructions, when executed on or across the one or more processors, cause the solver to perform a service:

[0303] Determining, based on the configuration data, a plurality of solver jobs that can be executed by the solver execution service to obtain the overall solution, and for a separate solver job in the solver jobs:

[0304] a solver type of the optimization solver used for the solver job; and

[0305] One or more solver parameters specific to the solver type in question.

[0306] Clause 39. The one or more non-transitory computer-readable storage media of Clause 38, wherein the program instructions, when executed on or across the one or more processors, cause the solver to perform a service:

[0307] Determining, based on the configuration data and for a particular one of the solver jobs, one or more parameters of a virtual machine or container instance for executing the particular solver job, including a particular programming language runtime configured on the virtual machine or container; and

[0308] A virtual machine or container is provided to execute the particular solver job according to the one or more parameters.

[0309] Clause 40. One or more non-transitory computer-readable storage media as described in Clause 39, wherein the program instructions, when executed on or across the one or more processors, cause the solver execution service to execute the first solver job and the second solver job as part of a workflow configured in a workflow orchestration service.

[0310] Clause 41. A system comprising:

[0311] One or more computing devices, the one or more computing devices implementing a solver execution service, the one or more computing devices being configured to:

[0312] Generate a service console that enables a user to configure a solver execution to solve an optimization problem, the service console being configured to:

[0313] causing the solver execution service to create and modify a model of the optimization problem in response to a first user input received through the service console;

[0314] outputting, by the service console, a solver recommendation indicating a type of optimizing solver for the solver execution, wherein the type of optimizing solver is one type of optimizing solver among a plurality of types of optimizing solvers supported by the solver execution service and is selected based at least in part on model metadata about the model;

[0315] In response to a second user input received through the service console indicating acceptance of an optimizing solver type, updating configuration data for the solver execution to use the optimizing solver;

[0316] outputting, by the service console, a computing resource recommendation indicating a computing resource type for executing the optimization solver during the solver execution, wherein the computing resource type is one type of computing resource among a plurality of types of computing resources supported by the solver execution service and is selected based at least in part on the model metadata and the optimization solver type;

[0317] In response to third user input received through the service console indicating acceptance of the computing resource type, updating the configuration data to use the computing resource; and

[0318] In response to fourth user input received via the service console, causing the solver execution service to initiate the solver execution according to the configuration data.

[0319] Clause 42. The system of clause 41, wherein the solver recommendation comprises one or more recommended solver parameters for executing the optimization solver.

[0320] Clause 43. The system of clause 41 or 42, wherein the solver recommendation is determined based at least in part on an analysis of:

[0321] the number or type of objective functions of the model;

[0322] the number or type of decision variables in the model; or

[0323] The number or types of constraints for the model.

[0324] 44. A system according to any of clauses 41 to 43, wherein:

[0325] The solver execution service is configured to, in response to user input received through the service console, perform experiments to obtain performance data for multiple types of optimization solvers; and

[0326] The model metadata used to select the optimization solver includes the performance data obtained from the experiment.

[0327] Clause 45. A system according to any one of clauses 41 to 44, wherein the solver recommendation comprises one or more recommended solver parameters and is generated by a machine learning model, one or more statistical methods, or one or more configured rules.

[0328] Clause 46. A system according to any one of clauses 41 to 45, wherein:

[0329] The solver execution service is a multi-tenant service used by multiple clients;

[0330] The solver recommendations are generated by a machine learning model trained using features of different optimization models developed by different clients; and

[0331] The solver execution service is configured to contribute feature data of a specific optimization model developed by a specific client to a training dataset used to train the machine learning model.

[0332] Clause 47. A method comprising:

[0333] The solver execution service implemented by one or more computing devices performs:

[0334] causing the solver execution service to create and modify a model of an optimization problem to be solved in a solver execution managed by the solver execution service in response to first user input received through a service console of the solver execution service;

[0335] outputting, by the service console, a solver recommendation indicating a type of optimization solver for the solver execution, wherein the type of optimization solver is one type of optimization solver among a plurality of types of optimization solvers supported by the solver execution service, and

[0336] selecting based at least in part on model metadata about the model;

[0337] In response to a second user input received through the service console indicating acceptance of an optimizing solver type, updating configuration data for the solver execution to use the optimizing solver;

[0338] outputting, by the service console, a computing resource recommendation indicating a computing resource type to be used to execute the optimization solver during the solver execution, wherein the computing resource type is one type of computing resource among a plurality of types of computing resources supported by the solver execution service and is selected based at least in part on the model metadata and the optimization solver type; and

[0339] In response to third user input received through the service console indicating acceptance of the computing resource type, the configuration data is updated to use the computing resource.

[0340] Clause 48. The method according to clause 47, wherein:

[0341] The computing resource type is a virtual machine; and

[0342] The computing resource recommendation indicates recommended parameters of the virtual machine, including (a) the number of processors or processor cores of the virtual machine, and (b) the amount of memory of the virtual machine.

[0343] Clause 49. A method according to clause 47 or 48, wherein:

[0344] The solver execution service is configured to, in response to user input received through the service console, conduct experiments using the optimization solver and at least a subset of the optimization problems specified by the model to obtain performance data for multiple types of computing resources; and

[0345] The computing resource is selected based at least in part on the performance data.

[0346] Clause 50. A method according to any one of clauses 47 to 49, wherein the computing resource recommendation is generated by a machine learning model, one or more statistical methods, or one or more configuration rules.

[0347] Clause 51. The method of any one of clauses 47 to 50, further comprising the solver executing a service:

[0348] receiving, through the service console, initial information about the optimization problem, wherein the initial information includes a problem type of the optimization problem;

[0349] outputting, by the service console, one or more recommended model templates from a model template library, wherein the one or more recommended model templates are in the same domain and are selected based at least in part on the initial information; and

[0350] In response to user input received by the service console indicating a selection of a recommended model template from the one or more recommended model templates, a model is generated from the recommended model template.

[0351] Clause 52. The method according to clause 51, wherein:

[0352] The recommended model template is stored in a first problem modeling language; and

[0353] The model is generated in a second problem modeling language specified through the service console.

[0354] Clause 53. The method of clause 51, further comprising the solver executing a service:

[0355] receiving, by the service console, a user input indicating that the model is to be contributed to the model template library as a model template in a specific domain, and in response:

[0356] generating the model template from the model; and

[0357] The model templates are stored in the model template library, wherein the model templates are stored together with template metadata indicating a specific domain of the model templates.

[0358] Clause 54. A method according to any one of clauses 47 to 53, wherein:

[0359] The service console displays the model as a plurality of graphical elements, the plurality of graphical elements including an objective function element indicating an objective function of the model and variable elements indicating variables of the model; and

[0360] The user input for modifying the model includes a user input of dragging one or more of the variable elements onto the objective function element.

[0361] Clause 55. The method of any one of clauses 47 to 54, further comprising the solver performing a service:

[0362] Further configuration data for the solver execution is received via the service console, wherein the further configuration data specifies a model building step performed by the solver, wherein the model building step reads model parameters from a model parameter file to build the model.

[0363] Clause 56. The method of clause 55, wherein the additional configuration data specifies initiating the solver execution when the model parameter file changes.

[0364] Clause 57. One or more non-transitory computer-readable storage media storing program instructions that, when executed on or across one or more processors, implement a solver execution service and cause the solver execution service to:

[0365] causing the solver execution service to create and modify a model of an optimization problem to be solved in a solver execution managed by the solver execution service in response to first user input received through a service console of the solver execution service;

[0366] outputting, by the service console, a solver recommendation indicating a type of optimizing solver for the solver execution, wherein the type of optimizing solver is one type of optimizing solver among a plurality of types of optimizing solvers supported by the solver execution service and is selected based at least in part on model metadata about the model;

[0367] In response to a second user input received through the service console indicating acceptance of an optimizing solver type, updating configuration data for the solver execution to use the optimizing solver;

[0368] outputting, by the service console, a computing resource recommendation indicating a computing resource type to be used to execute the optimization solver during the solver execution, wherein the computing resource type is one type of computing resource among a plurality of types of computing resources supported by the solver execution service and is selected based at least in part on the model metadata and the optimization solver type; and

[0369] In response to third user input received through the service console indicating acceptance of the computing resource type, the configuration data is updated to use the computing resource.

[0370] Clause 58. One or more non-transitory computer-readable storage media as described in Clause 57, wherein the program instructions, when executed on or across the one or more processors, cause the solver execution service to determine the solver recommendations using a machine learning model, one or more statistical methods, or one or more configured rules.

[0371] Clause 59. One or more non-transitory computer-readable storage media as described in Clause 58, wherein the program instructions, when executed on or across the one or more processors, cause the solver execution service to determine the computing resource recommendations using a machine learning model, one or more statistical methods, or one or more configured rules.

[0372] Clause 60. One or more non-transitory computer-readable storage media according to any one of clauses 57 to 59, wherein the program instructions, when executed on or across the one or more processors, cause the solver to perform a service:

[0373] Outputting, by the service console, one or more recommended model templates from a model template library, wherein determining whether the one or more recommended model templates are relevant to the optimization problem is based at least in part on an analysis of initial information about the optimization problem; and

[0374] In response to user input received by the service console indicating a selection of a recommended model template from the one or more recommended model templates, a model is generated from the recommended model template.

Claims

1. A method comprising: The solver execution service implemented by one or more computing devices performs: receiving configuration data for executing an optimization solver to determine a solution to an optimization problem, wherein the optimization problem is stored as a model at a first storage location, providing computing resources to perform at least a portion of the execution, wherein the computing resources are configured according to the configuration data to implement an execution environment of the optimization solver; executing an instance of the optimization solver in the execution environment to process the model and determine the solution to the optimization problem; as well as The solution is written to a second storage location.

2. The method according to claim 1, wherein: The solver execution service is implemented by a network of infrastructure providers; The computing resources are provided by serverless computing services implemented by the infrastructure provider network; and The computing resource is a virtual machine instance or a container instance configured with software for executing the optimization solver.

3. The method according to claim 1 or 2, further comprising the solver executing a service: The computing resource is selected based at least in part on one or more characteristics of the model.

4. The method according to any one of claims 1 to 3, wherein: The first storage location is a client storage location assigned to a client performing a service on the solver; The second storage location is the same client storage location; The model is stored as a first object in the client storage location; and The solution is stored as a second object in the client storage location.

5. The method according to any one of claims 1 to 4, wherein: The solver execution service implements an application programming interface (API) configured to receive client requests; The configuration data is received via the API in a first request; The providing of the computing resources, the executing of the optimization solver, and the writing of the solution are performed as part of a first solver job initiated based on the first request; and The solver execution service returns a response indicating a job identifier of the first solver job according to the API.

6. The method of claim 5, further comprising the solver executing a service: receiving, via the API, a second request specifying a trigger for executing a second solver job; and In response to detecting that the trigger is satisfied, execution of the second solver job is initiated.

7. The method of claim 6, further comprising the solver executing a service: A plurality of triggers for a plurality of solver jobs are stored, the plurality of triggers comprising (a) a first trigger that specifies a schedule for initiating an associated solver job, and (b) a second trigger that specifies initiating another solver job when a model associated with the other solver job changes.

8. The method of claim 5, further comprising the solver executing a service: monitoring execution of a plurality of solver jobs and tracking status information about the solver jobs in a job management database; and In response to a second request received through the API, status information about one or more of the solver jobs in the job management database is returned.

9. The method of claim 5, further comprising the solver executing a service: In response to a second request received through the API, a second solver job in the solver execution service is stopped before the second solver job is completed.

10. The method of claim 5, further comprising the solver executing a service: determining in the configuration data a resource tag for the first solver job; and The computing resource is tagged with the resource tag, wherein the resource tag is used to associate the first solver job with an event generated by the first solver job.

11. The method of claim 5, further comprising the solver executing a service: recording analytical data regarding a plurality of solver jobs, the analytical data comprising solver parameters, resource parameters, and performance data associated with individual ones of the solver jobs; and The analysis data is used to generate recommended configuration data for another solver job.

12. The method of claim 5, further comprising the solver executing a service: tracking usage data indicating usage of said solver execution service by a client account; determining, based at least in part on the usage data, that the client account has exceeded a usage limit, and in response: The next solver job associated with the client account is throttled.

13. A method according to any one of claims 1 to 12, wherein the configuration data specifies one or more of the following: a plurality of processors or processor cores for said executing virtual machines; The processor type of the virtual machine; the amount of memory of the virtual machine; a first storage location of the model in the storage service; and A second storage location in the storage service for writing the solution.

14. The method according to any one of claims 1 to 13, wherein: The computing resources are provided by serverless computing services provided by a network of multi-tenant infrastructure providers; The computing resource is a virtual machine instance, a container instance, or a quantum computing resource configured to execute the optimization solver; The computing resource belongs to a pool of available computing resources managed by the serverless computing service; and The serverless computing service releases the computing resources back to the pool after the execution.

15. A system comprising: One or more computing devices implementing a solver execution service configured to perform the method according to any one of claims 1 to 14.