AUTOMATED DEPLOYMENT OF A MACHINE LEARNING MODEL

The automated tool optimizes machine learning model deployment by analyzing resource and code module usage, selecting and simulating execution environments, ensuring efficient and cost-effective deployment of machine learning models.

DE112023003983T5Pending Publication Date: 2025-07-31INTERNATIONAL BUSINESS MACHINE CORPORATION
View PDF 0 Cites 0 Cited by

Patent Information

Application Number
DE112023003983
Authority / Receiving Office
DE · DE
Patent Type
Applications
Current Assignee / Owner
Priority Date
2022-09-19
Filing Date
2023-06-07
Publication Date
2025-07-31

AI Technical Summary

Technical Problem

Current automated tools for providing machine learning models fail to recognize required software libraries and resources needed for proper execution, leading to inefficient resource allocation and increased costs, especially in environments where models are deployed without matching the training environment's requirements.

Method used

An automated tool that analyzes the resource and code module usage of a trained model, selects an appropriate execution environment, installs necessary modules, and simulates execution to ensure compatibility and efficiency, thereby optimizing resource usage and reducing costs.

Benefits of technology

Ensures that machine learning models are deployed in environments that meet their specific requirements, improving functionality and reducing errors by simulating execution before deployment, thus enhancing model performance and resource efficiency.

✦ Generated by Eureka AI based on patent content.

Smart Images

  • Figure 00000000_0000_ABST
    Figure 00000000_0000_ABST
Patent Text Reader

Abstract

Using exported machine learning model data and a specification of the model training environment, a specification of resource usage and a specification of code module usage of the model are detected. A specification of code module installation is determined from a specification of code module requirements and a specification of the target execution environment. The code modules specified by the code module installation specification are installed in the target execution environment. Using data from the updated target execution environment, the updated target execution environment is validated for model execution. The model execution in the updated target execution environment is simulated. The model is deployed to the updated target execution environment in response to the simulation being successful.
Need to check novelty before this filing date? Find Prior Art

Description

BACKGROUND

[0001] The present invention generally relates to a method, a system, and a computer program product for providing software. More specifically, the present invention relates to a method, a system, and a computer program product for automated provision of a machine learning model.

[0002] A machine learning model is a model that learns to make predictions from input data. Typically, a machine learning model initially learns by applying one or more learning techniques to training data. Once the model meets one or more acceptance criteria (e.g., if the accuracy of the model's output is above a threshold percentage), the model is considered sufficiently trained to be used for its intended purpose with live (non-training) data. However, training of the model can continue even after the model has been put into production. A machine learning model that operates on a stream of incoming data is also called a machine learning pipeline, or simply a pipeline.

[0003] A machine learning model is typically trained and evaluated in a model training environment. Human developers experienced in model development and training typically oversee the training and evaluation of the model. Once the model is performing as expected, it is deployed. Deploying a machine learning model is the process of bringing a trained machine learning model into a production environment where the model will be used for its intended purpose with live (non-training) data. Deploying a machine learning model typically requires data from the model itself, data from the training environment in which the model was trained, and data from a production environment in which the model will be deployed. SUMMARY

[0004] The illustrative embodiments provide a method, a system, and a computer program product. One embodiment includes a method that detects, using exported data of a machine learning model and an indication of the model training environment, an indication of the model's resource usage and an indication of the model's code module usage, where the indication of the resource usage indicates a set of resources used in training the model in a model training environment specified by the indication of the model training environment, and the indication of the code module usage indicates a set of code modules used in training the model in the model training environment.One embodiment determines an indication of code module installation from an indication of code module requirements and an indication of a target execution environment, wherein the indication of code module requirements specifies a set of code modules required to execute the model, wherein the indication of code module installation specifies a set of code modules to be installed in a target execution environment, wherein the target execution environment comprises an environment for executing the model, wherein the target execution environment is specified by the indication of the target execution environment. One embodiment causes the code modules specified by the indication of code module installation to be installed in the target execution environment, wherein the installation results in an updated target execution environment.One embodiment verifies the updated target execution environment using data from the updated target execution environment for executing the model. One embodiment simulates the execution of the model in the updated target execution environment. One embodiment deploys the model in the updated target execution environment in response to the simulation being successful.

[0005] One embodiment includes a computer-usable program product. The computer-usable program product includes one or more computer-readable storage devices and program instructions stored on at least one of the one or more storage devices.

[0006] One embodiment includes a computer system. The computer system includes one or more processors, one or more computer-readable memories, and one or more computer-readable storage devices, and program instructions stored on at least one of the one or more storage devices for execution by at least one of the one or more processors via at least one of the one or more memories. BRIEF DESCRIPTION OF THE DRAWINGS

[0007] Certain novel features believed to be characteristic of the invention are set forth in the appended claims. However, the invention itself, as well as a preferred mode of application and further objects and advantages thereof, will best be understood by reference to the following detailed description of the illustrative embodiments when read in conjunction with the accompanying drawings, in which: Fig. 1 depicts an exemplary diagram of a computing environment in which illustrative embodiments may be implemented; Fig. 2 depicts a block diagram of an example configuration for automated deployment of a machine learning model according to an illustrative embodiment; Fig. 3 depicts an example of automated deployment of a machine learning model according to an illustrative embodiment; Fig. 4 depicts exemplary results of automated deployment of a machine learning model according to an illustrative embodiment; Fig. 5 depicts exemplary results of automated deployment of a machine learning model according to an illustrative embodiment; Fig. 6A depicts a flowchart of an example process for automated deployment of a machine learning model, according to an illustrative embodiment; Fig. 6B depicts a continued flow diagram of an example process for automated deployment of a machine learning model according to an illustrative embodiment. DETAILED DESCRIPTION

[0008] In the illustrative embodiments, it is recognized that while tools are currently available for automatically configuring and training machine learning models, no tools are currently available for automatically deploying a machine learning model. Furthermore, deployment is more complex than simply copying an application file from one location to another and starting execution in the new location. Currently available automated model development tools typically create a customized model by linking existing components. Often, the tools explore different model architectures before selecting the best-performing model. As a result, models have different architectures and use components or code modules from a diverse set of existing software libraries or software packages.For example, some common libraries in the Python computer language are sklearn, xgboost, tsfresh, and lifeline. (Python is a registered trademark of the Python Software Foundation in the United States and other countries.) The required software libraries must be installed in the environment in which the model is to be run; otherwise, the model will not function properly. However, automated tools typically do not detect required software libraries, and it can be difficult for a human end user deploying the model who is unfamiliar with the details of each deployed model to identify dependencies between components. In addition, other resources, such as processors and memory, must also be sufficient for the model and its software libraries to function at the specified speed and accuracy.For example, a model trained to monitor wind turbine operations and adapt to changing environmental conditions but reacts too slowly to an approaching storm could result in the turbine being damaged by the storm. Some mission-critical applications require certification that a model meets certain speed or responsiveness requirements in a specific execution environment. Therefore, different models are likely to have different, non-standard deployment environment requirements that are difficult for humans to evaluate. Furthermore, determining why a model operating in an environment improperly configured for the model could not be properly deployed or operated can be difficult and time-consuming, especially for an end user unfamiliar with the model's details.

[0009] In the illustrative embodiments, it is recognized that one solution is to duplicate a model's training environment in a production environment, since the training environment is known to have sufficient resources and the correct software libraries are already present. Since training models is typically more resource-intensive than simply using the trained model, a training environment often includes resources and software libraries that are not required in a deployment environment. For example, a model might be trained using 64 processors and 16 gigabytes of memory, but after training, require only four processors and four gigabytes of memory. Allocating unused resources and installing unused libraries is inefficient.Allocating unused resources and installing unused libraries also adds unnecessary costs in environments where these services are billed individually.

[0010] In the illustrative embodiments, it is also recognized that model users have a variety of platforms on which models can be deployed, each with different characteristics. One platform allows users to customize the model execution environment, while another offers more than forty standard environment configurations that are further customizable. Additionally, for speed, data security, or other reasons, some users prefer that the model and the data processed by the model operate in the same environment, on the same physical system, or in the same data center. However, because different models have different deployment environment requirements, it is difficult for a human end user unfamiliar with the details of the model to optimize a selected deployment environment for a particular model.In the illustrative embodiments, it is also recognized that while existing deployment tools typically test model accuracy, the tools do not test model speed or response time, nor do they perform verification and testing of the model for execution in a selected deployment environment.

[0011] Thus, in the illustrative embodiments, it is recognized that there is an unmet need for an automated tool that determines the requirements of a model when running it in production (rather than during training), selects an appropriate deployment environment, verifies and tests the model for execution as specified in the deployment environment, and deploys the model, all in an automated, standardized manner.

[0012] In the illustrative embodiments, it is recognized that currently available tools or solutions do not address this need or provide adequate solutions to this need. The illustrative embodiments used to describe the invention generally address and solve the problems described above and other problems related to the automated deployment of a machine learning model.

[0013] An embodiment may be implemented as a software application. The application implementing an embodiment may be configured as a modification of an existing machine learning model management or execution system, as a standalone application operating in conjunction with an existing machine learning model management or execution system, as a standalone application, or as a combination thereof.

[0014] In particular, in some illustrative embodiments, a method is provided that detects resource usage and an indication of code module usage of an exported model, determines an indication of code module installation, causes the code modules indicated by the indication of code module installation to be installed in the target execution environment, checks the updated target execution environment for execution of the trained model, simulates execution of the model in the updated target execution environment, and deploys the model in the updated target execution environment in response to the simulation being successful.

[0015] An embodiment receives exported data of a trained machine learning model to be deployed, as well as an environment indication for an environment in which the model was trained. The trained machine learning model data includes all model data needed to run the model in a different execution environment. Several currently available tools for automated model training (e.g., AutoAl, a currently available tool that automates steps in building predictive machine learning models) include a model export function that creates the exported data. An embodiment also receives an environment indication for an environment in which the model was trained.An embodiment specification specifies characteristics of the model training environment, such as the number of processors, the amount of memory, and the software modules installed in the environment.

[0016] One embodiment uses exported data of a trained machine learning model to be deployed and an environment indication for an environment in which the model was trained to identify a resource usage indication. A resource usage indication indicates a set of resources of the model training environment. Some non-limiting examples of model training environment resources include the number and speed of processors, the amount of memory, and the number, architecture, and speed of any graphics processors used to supplement processors in specialized computations. For example, a resource usage indication might indicate that the model training environment had 64 processors and 16 gigabytes of memory.

[0017] One embodiment uses exported data of a trained machine learning model to be deployed, as well as an environment indication for an environment in which the model was trained, to detect an indication of code module usage of the model. The code usage indication specifies a set of code modules or libraries present in the model training environment, as well as a version number of each code module, if available. For example, a code usage indication could specify that the training environment included version 1.0 of the Python library scikit-learn.

[0018] Since not every code module present in the model training environment is required to run the model, in one embodiment, the exported data is analyzed to prune the code module usage statement, removing one or more code modules that are not actually required. The pruning results in a code module requirements statement that specifies a set of code modules required to run the model in an execution environment. To prune the code module usage statement, one embodiment creates control flow data of the model and uses the control flow data to track the usage of specific code modules while the model was executed in the training environment. Only those code modules that are actually used during model execution remain in the code module requirements statement.To create control flow data of an exported model implemented in the Python language, one embodiment uses a currently available Python tool (e.g., ast) to create an abstract syntax tree, a record of the Python interpreter's interpretation of a Python program's source code that includes the program's control flow data. Techniques for creating control flow data of an exported model in other computer languages ​​are also currently available.

[0019] An embodiment uses the model training environment indication to select a target execution environment. A target execution environment is an environment in which the model is deployed for execution with live (non-training) data. The target execution environment is specified by a target execution environment indication. The target execution environment does not need to have the same resources, code modules, or versions of code modules as the training execution environment. In embodiments, the target execution environment has a fewer number of processors, less memory, or a different graphics processor architecture than the training execution environment. In embodiments, the target execution environment lacks a code module present in the training execution environment or has an older version of a code module than the training execution environment.In one embodiment, a user provides the specification of the target execution environment. For example, a wind turbine monitoring model may need to be executed in the same environment as the environment collecting the wind turbine data the model processes, and reconfiguring the data collection environment would require adding or replacing certain physical components. In another embodiment, a user provides a setting or constraint (e.g., specifying the provider of the target execution environment or that the target execution environment be located in a particular country or data center), and the embodiment selects a target execution environment that conforms to the setting or constraint. Another embodiment selects a target execution environment without user input.To select a target execution environment, an embodiment analyzes data from one or more available execution environments and ranks the environments based on the time required to install an additional component, the additional memory required if an existing package cannot be removed, the frequency with which a library version changes, and / or the cost of making the required resources available in the execution environment. The embodiment then selects the highest-ranked available environment.

[0020] One embodiment determines an indication of code modules to be installed from the indication of the target execution environment and the indication of code module requirements. The indication of code modules to be installed in the target execution environment. In particular, in one embodiment, data of the code modules currently installed in the target execution environment (indicated by the indication of the target execution environment or obtained separately from the target environment specified by the indication of the target execution environment) is compared with data of the code modules that need to be installed in the target execution environment (indicated by the indication of code modules requirements). The embodiment adds any code modules that are not yet installed or that are installed but with earlier versions to the indication of code modules to be installed.

[0021] One embodiment causes one or more code modules specified by the code module installation statement to be installed in the target execution environment. Installing updates the target execution environment. One embodiment performs the code module installation only after determining that installing a code module will not cause the target execution environment to exceed a resource limit specified by the target execution environment statement. For example, installing a large code module in an environment already close to running out of memory could cause the environment to actually run out of memory, which is undesirable.If an embodiment determines that installing a code module causes the target execution environment to exceed a resource limit, or if an error occurs during installation, an embodiment informs a user, selects a different target execution environment, and repeats determining the code module installation indication and installation in that environment, or takes other remedial action.

[0022] An embodiment also adjusts the resource usage specification, the code module installation specification, or both to specify fewer resources or code modules, or different versions of code modules, than originally specified. Typically, a deployed model requires fewer resources and code modules than a model being trained, and adjusting the target environment requirements to more closely match the actual requirements of a deployed model enables more efficient use of computing resources and saves money.

[0023] One embodiment uses the resource usage indication and data of the updated target execution environment to validate resources of the updated target execution environment for executing the trained model. One embodiment also uses the code module installation indication and data of the updated target execution environment to validate code modules of the updated target execution environment for executing the trained model. The validation checks whether the target execution environment has sufficient resources and whether the code modules are installed and at the correct versions to execute the trained model. Validating before deploying the model avoids some points of failure during model deployment and thus also the need to fix such errors, particularly in non-standard execution environments.

[0024] One embodiment simulates the execution of the model in the updated target execution environment. Simulating verifies that the model executes correctly in a simulated version of the target execution environment. Simulating before deploying the model avoids some sources of error during model deployment and thus also the need to fix such errors, particularly in non-standard execution environments. To perform the simulation, one embodiment uses a currently available technique.

[0025] If the simulation fails due to an error or does not meet a specified performance specification, an embodiment readjusts the resource usage specification, the code module installation specification, or both to specify additional resources or code modules or different versions of code modules, and repeats the verification and simulation using the newly adjusted specification(s).

[0026] If the simulation is successful, an embodiment deploys the model to the updated target execution environment. After deployment, the model runs in the updated target execution environment and can process live data. To perform the deployment, an embodiment uses a currently available technique.

[0027] One embodiment maintains a record of deployments that includes exported data of a trained machine learning model to be deployed, an environment indication for an environment in which the model was trained, the target execution environment, adjustments made to the target execution environment, and results of validations, simulations, and deployments. The record is usable for adapting one or more of the methods described herein.

[0028] The type of automated deployment of a machine learning model described herein is not available in the currently available methods in the technological field dealing with the management of machine learning models.A method of an embodiment described herein, when implemented for execution on a device or computing system, substantially improves the functionality of that device or computing system when detecting resource usage and an indication of usage of a code module of an exported model, determining an indication of code module installation, causing the code modules indicated by the indication of code module installation to be installed in the target execution environment, verifying the updated target execution environment for execution of the trained model, simulating execution of the model in the updated target execution environment, and deploying the model in the updated target execution environment in response to the simulation being successful.

[0029] The illustrative embodiments are described with respect to particular types of execution environments, resources, code modules, computer languages, statements, models, checks, adaptations, sensors, measurements, devices, data processing systems, environments, components, and applications merely as examples. Any specific manifestations of these and other similar artifacts are not intended to limit the invention. Any suitable manifestations of these and other similar artifacts may be selected within the scope of the illustrative embodiments.

[0030] Furthermore, the illustrative embodiments may be implemented with respect to any type of data, data source, or access to a data source via a data network. Any type of data storage device may provide the data within the scope of the invention to an embodiment of the invention either locally to a data processing system or via a data network. Where an embodiment is described using a mobile device, any type of data storage device suitable for use with the mobile device may provide the data to such an embodiment within the scope of the illustrative embodiments either locally to the mobile device or via a data network.

[0031] The illustrative embodiments are described using specific codes, specific designs, architectures, protocols, arrangements, diagrams, and tools merely as examples and do not limit the illustrative embodiments. Furthermore, for clarity of description, the illustrative embodiments are in some cases described using particular software, tools, and computing environments merely as examples. The illustrative embodiments may be used in conjunction with other comparable or similarly purposed structures, systems, applications, or architectures. For example, other comparable mobile devices, structures, systems, applications, or architectures may be used in conjunction with such an embodiment of the invention within the scope of the invention.An illustrative embodiment may be implemented in hardware, software, or a combination thereof.

[0032] The examples in this disclosure are used for clarity of description only and are not limited to the illustrative embodiments. Additional data, operations, actions, tasks, activities, and processing operations are conceivable from this disclosure and are contemplated within the scope of the illustrative embodiments.

[0033] Any advantages listed herein are merely examples and are not intended to be limited to the illustrative embodiments. Additional or different advantages may be realized by specific illustrative embodiments. Furthermore, a particular illustrative embodiment may include some, all, or none of the above-listed advantages.

[0034] It should be understood at the outset that, although this disclosure includes a detailed description of cloud computing, the implementation of the teachings herein is not limited to a cloud computing environment. Rather, embodiments of the present invention may be practiced in conjunction with any type of computing environment now known or later invented.

[0035] Cloud computing is a service delivery model for enabling seamless, on-demand network access to a shared pool of configurable computing resources (e.g., networks, network bandwidth, servers, processing, memory, storage, applications, virtual machines, and services) that can be rapidly provisioned and released with minimal management effort or interaction with a service provider. This cloud model can have at least five characteristics, at least three service models, and at least four implementation models.

[0036] The properties are as follows:

[0037] On-demand self-service: A cloud user can unilaterally and automatically provision data processing functions such as server time and network storage as needed, without requiring human interaction with the service provider.

[0038] Broad Network Access: Functions are available over a network and accessed through standard mechanisms that support use by heterogeneous thin or thick client platforms (e.g., mobile phones, laptops, and PDAs).

[0039] Resource pooling: The provider's computing resources are pooled to serve multiple users using a multi-tenant model, with various physical and virtual resources dynamically allocated and reassigned as needed. There is a perceived location independence, as the user generally has no control or knowledge over the exact location of the provided resources, but may be able to specify a location at a higher level of abstraction (e.g., country, state, or data center).

[0040] Rapid Elasticity: Features can be deployed quickly and elastically for rapid horizontal scaling out, in some cases automatically, and released quickly for rapid scale-in. To the user, the features available for deployment often appear unlimited, and they can be purchased in any quantity at any time.

[0041] Measured Service: Cloud systems automatically control and optimize resource usage by leveraging a metering function at a certain level of abstraction appropriate for the type of service (e.g., storage, processing, bandwidth, and active user accounts). Resource usage can be monitored, controlled, reported, and billed, creating transparency for both the provider and the user of the service.

[0042] The service models are as follows:

[0043] Software as a Service (SaaS): The functionality provided to the user is to use the provider's applications running on a cloud infrastructure. The applications are accessible from various client devices via a thin client interface such as a web browser (e.g., web-based email). The user does not manage or control the underlying cloud infrastructure, including the network, servers, operating systems, storage, or even individual application functions, with the possible exception of limited user-specific application configuration settings.

[0044] Platform as a Service (PaaS): The functionality provided to the user is to deploy applications created or obtained by the user, using programming languages ​​and tools supported by the provider, into the cloud infrastructure. The user does not manage or control the underlying cloud infrastructure, including networks, servers, operating systems, or storage, but has control over the deployed applications and possibly over configurations of the application hosting environment.

[0045] Infrastructure as a Service (IaaS): The functionality provided to the user consists of providing processing, storage, networking, and other basic computing resources, allowing the user to deploy and run any software, including operating systems and applications. The user does not manage or control the underlying cloud infrastructure, but has control over operating systems, storage, deployed applications, and possibly limited control over selected network components (e.g., host firewalls).

[0046] The deployment models are as follows:

[0047] Private Cloud: The cloud infrastructure is operated solely for an organization. It can be managed by the organization or a third party and can be located on its own premises or on a third-party site.

[0048] Community Cloud: The cloud infrastructure is shared by multiple organizations and supports a specific user community with common concerns (e.g., mission, security requirements, policies, and compliance considerations). It can be managed by the organizations or a third party and can be located on their own premises or on someone else's premises.

[0049] Public Cloud: The cloud infrastructure is made available to the general public or a large industry group and is owned by an organization that sells cloud services.

[0050] Hybrid Cloud: Cloud infrastructure is a composition of two or more clouds (private, community, or public) that remain separate entities but are interconnected by a standardized or proprietary technology that enables data and application portability (e.g., cloud targeting for load balancing between clouds).

[0051] A cloud computing environment is service-oriented, focusing on state independence, low coupling, modularity, and semantic interoperability. At the heart of cloud computing lies an infrastructure consisting of a network of interconnected nodes.

[0052] Various aspects of the present disclosure are described by flowcharts, flowcharts, block diagrams of computer systems, and / or block diagrams of machine logic included in embodiments of computer program products (CPPs). With respect to any flowchart, the operations may be performed in a different order than shown in a particular flowchart, depending on the technology involved. For example, depending again on the technology involved, two operations shown in consecutive blocks of a flowchart may be performed in reverse order, as a single integrated step, concurrently, or in an at least partially temporally overlapping manner.

[0053] A computer program product embodiment is a term used in the present disclosure to describe any set of one or more storage media (also called "media") included together in a set of one or more storage units that together contain machine-readable code corresponding to instructions and / or data for performing computer operations specified in a particular CPP claim. A "storage unit" is any physical device capable of storing instructions for use by a computer processor. Without limitation, the computer-readable storage medium may be an electronic storage medium, a magnetic storage medium, an optical storage medium, an electromagnetic storage medium, a semiconductor storage medium, a mechanical storage medium, or any suitable combination thereof.Some common types of storage devices that comprise these media include: a floppy disk, a hard disk, random access memory (RAM), read-only memory (ROM), erasable programmable read-only memory (EPROM or flash memory), static random access memory (SRAM), compact disk read-only memory (CD-ROM), a digital versatile disc (DVD), a memory stick, a floppy disk, a mechanically encoded device (such as punched cards or pits / ridges formed on a larger surface of a storage disk), or any suitable combination thereof.A computer-readable storage medium, as that term is used in the present disclosure, is not intended to be construed as storing transient signals per se, such as radio waves or other freely propagating electromagnetic waves, electromagnetic waves propagating through a waveguide, light pulses carried through a fiber optic cable, electrical signals transmitted through a wire, and / or other transmission media. As will be appreciated by those skilled in the art, data is commonly moved at certain times during the normal operation of a storage device, such as during access, defragmentation, or garbage collection, but this does not mean that the storage device is volatile, since the data is not volatile while stored.

[0054] With reference to the figures and in particular to Fig. 1, this figure is an exemplary diagram of a computing environment in which illustrative embodiments may be implemented. Fig. 1 is merely an example and is not intended to impose or imply any limitation on the environments in which various embodiments may be implemented. In a particular implementation, many variations may be made to the illustrated environments based on the following description. Fig. 1 depicts a block diagram of a network of computing systems in which illustrative embodiments may be implemented. Computing environment 100 includes an example of an environment for executing at least a portion of the computer code associated with performing the inventive methods, such as an application 200. Application 200 implements an embodiment of automated deployment of a machine learning model described herein. In addition to block 200, computing environment 100 includes, for example, a computer 101, a wide area network (WAN) 102, an end user device (EUD) 103, a remote server 104, a public cloud 105, and a private cloud 106.In this embodiment, the computer 101 comprises a set 110 of processors (including processing circuitry 120 and cache 121), a communications network 111, a volatile memory 112, a persistent memory 113 (including an operating system 122 and the block 200 as indicated above), a set 114 of peripherals (including a user interface (UI), a set 123 of devices, a memory 124, and a set 125 of IoT (Internet of Things) sensors), and a network module 115. The remote server 104 comprises a remote database 130. The public cloud 105 comprises a gateway 140, a cloud orchestration module 141, a set 142 of physical host machines, a set 143 of virtual machines, and a set 144 of containers.The application 200 executes on the computer 101, the end-user device 103, the remote server 104, or a computer in the public cloud 105 or the private cloud 106, unless explicitly stated otherwise. The application 200 may deploy a model on the computer 101, the end-user device 103, the remote server 104, a computer in the public cloud 105 or the private cloud 106, or another environment.

[0055] Computer 101 may take the form of a desktop computer, a laptop computer, a tablet computer, a smartphone, a smartwatch or other wearable computer, a mainframe computer, a quantum computer, or any other form of computer or mobile device now known or developed in the future that is capable of executing a program, accessing a network, or querying a database, such as remote database 130. As is well known in the field of computer technology, the performance of a process executing on a computer may be distributed across multiple computers and / or between multiple locations, depending on the technology. On the other hand, in this illustration of computing environment 100, the detailed discussion focuses on a single computer, specifically computer 101, to keep the illustration as simple as possible.The computer 101 may be located in a cloud even if it is in . Fig. 1 is not shown in a cloud. On the other hand, computer 101 does not have to be in a cloud unless explicitly stated.

[0056] Processor set 110 includes one or more computer processors of any type now known or developed in the future. Processor set 110 may include one or more processors and may be implemented using one or more heterogeneous processor systems. A processor in a processor set 110 may be a single-core or multi-core processor or a graphics processor. Processing circuitry 120 may be distributed across multiple packaged components, such as multiple matched integrated circuit chips. Processing circuitry 120 may implement multiple processor threads and / or multiple processor cores.Cache 121 is memory located within the processor chip package(s) and is typically used for data or code that should be available for rapid access by the threads or cores executing on the set 110 of processors. Cache memories are typically organized into multiple levels, depending on their relative proximity to the processing circuitry. Alternatively, some or all of the cache for the set of processors may be located off-chip. In some computing environments, the set 110 of processors may be configured to work with qubits and perform quantum computing.

[0057] The operating system 122 runs on the computer 101. The operating system 122 coordinates and provides control of various components within the computer 101. Instructions for the operating system 122 are located on storage devices, such as persistent memory 113, and can be loaded into at least one of one or more memories, such as volatile memory 112, for execution by the set 110 of processors.

[0058] Computer-readable program instructions are typically loaded into computer 101 to cause a series of operational steps to be performed by the set 110 of processors of computer 101, thereby executing a computer-executable method such that the instructions so executed instantiate the methods specified in flowcharts and / or textual descriptions of computer-executable methods included herein (collectively, "the inventive methods"). These computer-readable program instructions are stored on various types of computer-readable storage media, such as cache 121 and the other storage media discussed below.The program instructions and associated data are retrieved by the set 110 of processors to control and direct the performance of the inventive methods. In the computing environment 100, at least some of the instructions for performing the inventive methods of the application 200 may be stored in persistent storage 113 and loaded into at least one of one or more memories, such as volatile memory 112, for execution by the set 110 of processors. The processes of the illustrative embodiments may be performed by the set 110 of processors using computer-executed instructions, which may be located in a memory such as volatile memory 112, persistent memory 113, or in one or more peripheral devices in the set 114 of peripheral devices.Furthermore, in one case, the application 200 may be downloaded over the WAN 102 from the remote server 104, where similar code is stored on a storage device. In another case, the application 200 may be downloaded over the WAN 102 to the remote server 104, where the downloaded code is stored on a storage device.

[0059] The data transmission network 111 is the signal transmission path that allows the various components of the computer 101 to exchange data with each other. Typically, this network consists of switches and electrically conductive paths, such as the switches and electrically conductive paths that make up buses, bridges, physical input / output ports, and the like. Other types of signal transmission paths may also be used, such as fiber optic and / or wireless data transmission paths.

[0060] Volatile memory 112 is any type of volatile memory now known or developed in the future. Examples include dynamic types of random access memory (RAM) or static types of RAM. Typically, volatile memory is characterized by random access, but this is not required unless explicitly stated. In computer 101, volatile memory 112 is located in a single package and within computer 101, but alternatively or additionally, the volatile memory may be distributed across multiple packaged devices and / or located external to computer 101.

[0061] Persistent memory 113 is any form of non-volatile computer memory now known or developed in the future. The non-volatility of this memory means that the stored data is retained regardless of whether power is applied to the computer 101 and / or the persistent memory 113 directly. Persistent memory 113 may be read-only memory (ROM), but typically at least a portion of the persistent memory allows data to be written, erased, and rewritten. Some known forms of persistent memory include magnetic disks and semiconductor memory devices. Operating system 122 may take various forms, such as various well-known proprietary operating systems or open-source Portable Operating System Interface-type operating systems that employ a kernel.The code contained in the application 200 typically comprises at least a portion of the computer code involved in carrying out the methods of the invention.

[0062] The set 114 of peripherals comprises the set of peripherals of the computer 101. Data transmission connections between the peripherals and the other components of the computer 101 can be implemented in various ways, such as Bluetooth connections, NFC (Near Field Communication) connections, wired connections (such as USB (Universal Serial Bus) cables), pluggable connections (such as SD (Secure Digital) cards), connections established by local data transmission networks, and even connections established by wide area networks such as the Internet.In various embodiments, the set 123 of user interface (UI) units may include components such as a display screen, a speaker, a microphone, wearable units (such as glasses and smartwatches), a keyboard, a mouse, a printer, a touchpad, game controllers, and haptic units. The memory 124 is external storage such as an external hard drive, or pluggable storage such as an SD card. The memory 124 may be persistent and / or volatile. In some embodiments, the memory 124 may take the form of a quantum computing memory unit for storing data in the form of qubits.In embodiments where computer 101 requires a large amount of storage space (for example, when computer 101 locally stores and manages a large database), this storage space may be provided by peripheral storage devices designed to store very large amounts of data, such as a storage area network (SAN) shared by multiple, geographically distributed computers. The IoT (Internet of Things) sensor set 125 consists of sensors that can be used in IoT applications. For example, one sensor may be a thermometer and another a motion detector.

[0063] The network module 115 is the collection of computer software, hardware, and firmware that enables the computer 101 to communicate with other computers over the WAN 102. The network module 115 may include hardware such as modems or Wi-Fi signal transceivers, software for packetizing and / or unpacking data for transmission over a communications network, and / or web browser software for exchanging data over the Internet. In some embodiments, the network control functions and network forwarding functions of the network module 115 are performed on the same physical hardware unit.In other embodiments (e.g., embodiments using software-defined networks (SDN)), the control functions and forwarding functions of network module 115 are performed on physically separate units, such that the control functions manage multiple different network hardware units. Computer-readable program instructions for performing the inventive methods can typically be downloaded to computer 101 from an external computer or external storage device via a network adapter card or network interface included in network module 115.

[0064] Wide area network (WAN) 102 is any WAN (e.g., the Internet) capable of transmitting computer data over non-local distances using any technology for transmitting computer data now known or developed in the future. In some embodiments, the WAN may be replaced and / or supplemented by local area networks (LANs) designed to exchange data between devices located within a local area, such as a Wi-Fi network. The WAN and / or LANs typically include computer hardware such as copper transmission cables, optical transmission fibers, wireless transmission, routers, firewalls, switching devices, gateway computers, and edge servers.

[0065] End-user device (EUD) 103 is any computer system used and controlled by an end user (for example, a customer of a company operating computer 101) and may take any of the forms described above in connection with computer 101. EUD 103 typically receives helpful and useful data from the operations of computer 101. For example, in a hypothetical case where computer 101 is configured to provide a recommendation to an end user, that recommendation would typically be transmitted from network module 115 of computer 101 to EUD 103 over WAN 102. In this way, EUD 103 can display or otherwise present the recommendation to an end user.In some embodiments, the EUD 103 may be a client device, such as a thin client, a heavy client, a mainframe computer, a desktop computer, and so on.

[0066] The remote server 104 is any computer system that provides at least some data and / or functionality to the computer 101. The remote server 104 may be controlled and used by the same entity that operates the computer 101. The remote server 104 represents the machine(s) that collect and store helpful and useful data for use by other computers, such as the computer 101. For example, in a hypothetical case where the computer 101 is designed and programmed to provide a recommendation based on historical data, this historical data may be provided to the computer 101 from the remote database 130 of the remote server 104.

[0067] The public cloud 105 is any computer system available for use by multiple entities and providing the on-demand availability of computer system resources and / or other computing capabilities, particularly data storage (cloud storage) and computing power, without direct, active management by the user. Cloud computing typically utilizes shared resource use to achieve consistency and economies of scale. The direct and active management of the computing resources of the public cloud 105 is performed by the computer hardware and / or software of the cloud orchestration module 141.The computing resources provided by the public cloud 105 are typically implemented by virtual computing environments running on various computers that constitute the computers of the set 142 of physical host machines, which represents the totality of physical computers in and / or available to the public cloud 105. The virtual computing environments (VCEs) typically take the form of virtual machines from the set 143 of virtual machines and / or containers from the set 144 of containers. It should be noted that these VCEs can be stored as images and transferred among and between the various physical machine hosts, either as an image or after the VCE has been instantiated.The cloud orchestration module 141 manages the transfer and storage of images, deploys new instantiations of VCEs, and manages active instantiations of VCE deployments. The gateway 140 is a collection of computer software, hardware, and firmware that enables the public cloud 105 to exchange data over the WAN 102.

[0068] Some further explanation of virtualized computing environments (VCEs) is now provided. VCEs can be stored as "images." A new active instance of the VCE can be instantiated from the image. Two common types of VCEs are virtual machines and containers. A container is a VCE that uses operating system-level virtualization. This refers to a feature of the operating system where the kernel allows the existence of multiple isolated user-space instances, called containers. These isolated user-space instances typically behave like real computers from the perspective of programs running on them.A computer program running on a regular operating system can utilize all of that computer's resources, such as attached devices, files and folders, network shares, CPU power, and quantifiable hardware capabilities. However, programs running in a container can only utilize the contents of the container and the devices assigned to the container, a feature known as containerization.

[0069] Private cloud 106 is similar to public cloud 105, except that the computing resources are available only to a single enterprise. While private cloud 106 is depicted as communicating with WAN 102, in other embodiments, a private cloud may be completely disconnected from the Internet and accessible only through a local / private network. A hybrid cloud is a composite of multiple clouds of different types (e.g., private, community, or public clouds), often implemented by different vendors. Each of the multiple clouds remains a separate and distinct entity, but the larger hybrid cloud architecture is interconnected by standardized or proprietary technology that enables orchestration, management, and / or data / application portability between the multiple individual clouds.In this embodiment, the public cloud 105 and the private cloud 106 are both part of a larger hybrid cloud.

[0070] With reference to Fig. 2, this figure depicts a block diagram of an exemplary configuration for automated deployment of a machine learning model according to an illustrative embodiment. The application 200 is the same as the application 200 in Fig. 1.

[0071] The application 200 receives exported data of a trained machine learning model to be deployed, as well as an environment specification for an environment in which the model was trained. The trained machine learning model data includes all model data needed to run the model in a different execution environment. The application 200 also receives an environment specification for an environment in which the model was trained. An embodiment specification indicates characteristics of the model training environment, such as the number of processors, the amount of memory, and the software modules installed in the environment.

[0072] A model feature detection module 210 uses exported data of a trained machine learning model to be deployed and an environment indication for an environment in which the model was trained to detect a resource usage indication. A resource usage indication indicates a set of resources of the model training environment. Some non-limiting examples of model training environment resources include the number and speed of processors, the amount of memory, and the number, architecture, and speed of any graphics processors used to supplement processors in specialized computations. For example, a resource usage indication might indicate that the model training environment had 64 processors and 16 gigabytes of memory.

[0073] Module 210 also uses exported data from a trained machine learning model to be deployed and an environment indication for an environment in which the model was trained to detect a code module usage indication of the model. The code usage indication specifies a set of code modules or libraries present in the model training environment, as well as a version number of each code module, if available. For example, a code usage indication might specify that the training environment included version 1.0 of the Python library scikit-learn.

[0074] Since not every code module present in the model training environment is required to run the model, a code module pruning module 220 analyzes the exported data to prune the code module usage statement, removing one or more code modules that are not actually required. The pruning results in a code module requirements statement that specifies a set of code modules required to run the model in an execution environment. To prune the code module usage statement, the module 220 creates control flow data of the model and uses the control flow data to track the usage of specific code modules while the model was executed in the training environment. Only those code modules that were actually used during model execution remain in the code module requirements statement.To create control flow data of an exported model implemented in the Python language, an implementation of module 220 uses a currently available Python tool (e.g., ast) to create an abstract syntax tree, a record of the Python interpreter's interpretation of the source code of a Python program that includes control flow data of the program.

[0075] A target execution environment selection module 230 uses the model training environment specification to select a target execution environment. A target execution environment is an environment in which the model is deployed for execution with live (non-training) data. The target execution environment is specified by a target execution environment specification. The target execution environment need not have the same resources, code modules, or code module versions as the training execution environment. In implementations of module 230, the target execution environment has a fewer number of processors, less memory, or a different graphics processor architecture than the training execution environment.In implementations of module 230, the target execution environment lacks a code module that is present in the training execution environment, or has an older version of a code module than the training execution environment. In one implementation of module 230, a user provides the indication of the target execution environment. For example, a wind turbine monitoring model may need to be run in the same environment as the environment in which the data is collected from the wind turbine processing the model, and reconfiguring the data collection environment would require adding or replacing certain physical components. In another implementation of module 230, a user provides a preference or constraint (e.g.,specifying the provider of the target execution environment or that the target execution environment be located in a particular country or data center), and in the implementation, a target execution environment is selected that meets the preference or constraint. Another implementation of module 230 selects a target execution environment without user input. To select a target execution environment, module 230 analyzes data from one or more available execution environments and ranks the environments according to the time required to install an additional component, the additional memory required if an existing package cannot be removed, the frequency with which a library version changes, and / or the cost to make the required resources available in the execution environment. Module 230 then selects the highest-ranked available environment.

[0076] A code module installation module 240 determines a code module installation indication from the target execution environment indication and the code module requirements indication. The code module installation indication specifies a set of code modules to be installed in the target execution environment. In particular, the module 240 compares data on the code modules currently installed in the target execution environment (specified by the target execution environment indication or obtained separately from the target environment specified by the target execution environment indication) with data on the code modules that need to be installed in the target execution environment (specified by the code module requirements indication). The module 240 adds any code modules that are not yet installed or that are installed but with earlier versions to the code module installation indication.

[0077] The code module installation module 240 also causes one or more code modules, specified by the code module installation statement, to be installed in the target execution environment. Installing updates the target execution environment. In one implementation of module 240, the installation of code modules is not performed until it has been determined that installing a code module will not cause the target execution environment to exceed a resource limit specified by the target execution environment statement. For example, installing a large code module in an environment already close to running out of memory could cause the environment to actually run out of memory, which is undesirable.If the module 240 determines that installing a code module causes the target execution environment to exceed a resource limit, or if an error occurs during installation, the module 240 informs a user, selects a different target execution environment, and repeats the process of determining the code module installation indication and installation in that environment, or takes other corrective action.

[0078] The application 200 also adjusts the resource usage specification, the code module installation specification, or both to specify fewer resources or code modules, or different versions of code modules, than originally specified. Typically, a deployed model requires fewer resources and code modules than one being trained, and adjusting the target environment requirements to more closely match the actual requirements of a deployed model enables more efficient use of computing resources and saves money.

[0079] A validation module 250 uses the resource usage information and data from the updated target execution environment to validate resources of the updated target execution environment for executing the trained model. The module 250 also uses the code module installation information and data from the updated target execution environment to validate code modules of the updated target execution environment for executing the trained model. Validation checks whether the target execution environment has sufficient resources and whether the code modules are installed and at the correct versions to execute the trained model. Validating before model deployment avoids some potential model deployment errors and thus the need to correct such errors, particularly in non-standard execution environments.

[0080] A simulation module 260 simulates the execution of the model in the updated target execution environment. Simulating verifies whether the model executes correctly in a simulated version of the target execution environment. Simulating before deploying the model avoids some sources of error during model deployment and thus also the need to correct such errors, especially in non-standard execution environments.

[0081] If the simulation fails due to an error or does not meet a specified performance specification, the application 200 readjusts the resource usage specification, the code module installation specification, or both, to specify additional resources or code modules or different versions of code modules, and repeats the verification and simulation using the newly adjusted specification(s).

[0082] If the simulation is successful, a deployment module 270 deploys the model to the updated target execution environment. After deployment, the model runs in the updated target execution environment and can process live data.

[0083] With reference to Fig. 3, this figure illustrates an example of an automated deployment of a machine learning model according to an illustrative embodiment. The example may be implemented using the application 200 in Fig. 1. The model feature detection module 210, the code module pruning module 220, the target execution environment selection module 230, the code module installation module 240, the verification module 250, the simulation module 260, and the deployment module 270 correspond to the model feature detection module 210, the code module pruning module 220, the target execution environment selection module 230, the code module installation module 240, the verification module 250, the simulation module 260, and the deployment module 270 in Fig. 2.

[0084] As illustrated, the model feature detection module 210 uses machine learning model data 310 (exported data of a trained machine learning model to be deployed) and a model training environment indication 312 (indicating an environment in which the model was trained) to detect a resource usage indication 320. The module 210 also uses the machine learning model data 310 and the model training environment indication 312 to detect a code module usage indication 330.

[0085] The code module pruning module 220 prune the code module usage statement 330 by removing one or more code modules that are not actually required. The pruning results in a code module requirements statement 340 that specifies a set of code modules required to execute the model in an execution environment.

[0086] The target execution environment selection module 230 uses the model training environment indication 312 and the execution environment data 314 to select a target execution environment 350. The code module installation module 240 determines a code module installation indication from the target execution environment indication 350 and the code module requirements indication 340. The code module installation module 240 also causes one or more code modules specified by the code module installation indication to be installed in the target execution environment, resulting in an updated target execution environment 360.

[0087] The validation module 250 uses the resource usage information 330 and data of the updated target execution environment 360 to validate resources of the updated target execution environment for executing the trained model. The module 250 also uses the code module installation information and data of the updated target execution environment 360 to validate code modules of the updated target execution environment for executing the trained model. The result is a validation state 370.

[0088] If the verification state 370 is successful, the simulation module 260 simulates the execution of the model in the updated target execution environment. The result is a simulation state 380. If the simulation state 380 is successful, the deployment module 270 deploys the model in the updated target execution environment (390).

[0089] With reference to Fig. 4, this figure depicts exemplary results of automated deployment of a machine learning model according to an illustrative embodiment.

[0090] In particular, in an example 400, a table is presented in which each row represents a scenario of deploying a pipeline or machine learning model using different execution environment configurations. The leftmost column contains a number corresponding to each different scenario, and the "Algorithms" column (second column from the left) contains algorithms used in the machine learning model. The pipeline may include components from multiple libraries, and the "Installed Packages" column (third column from the left) indicates how many new libraries needed to be installed in the target execution environment. In some scenarios, no new libraries were installed (e.g., scenario 2), and in some cases (e.g., scenario 7), an exception was thrown due to an error installing a library.The "Redeployment Time" column (second column from the right) indicates the time required to prepare the target execution environment and make it available for use by a model. The rightmost column indicates the time required by a currently available technique, thus demonstrating the benefits of a shorter deployment time using an embodiment of the present invention.

[0091] With reference to Fig. 5, this figure depicts exemplary results of automated deployment of a machine learning model according to an illustrative embodiment.

[0092] In particular, Example 500 presents a table in which each row represents a scenario of deploying a pipeline or machine learning model using different execution environment configurations. The leftmost column contains a number corresponding to each different scenario, and the scenarios are the same as those shown in Example 400 in Fig. 4. Since different machine learning models have different dependencies, the Packages column names a model package, the Package Size column indicates a package size for a deployed model, and the Install Size column indicates the total memory used when deploying the model.

[0093] With reference to Fig. 6A, this figure depicts a flowchart of an exemplary process for automated deployment of a machine learning model according to an illustrative embodiment. A process 600 may be implemented in the application 200 in Fig. 2 be implemented.

[0094] In block 602, the application uses exported machine learning model data and an indication of the model training environment to determine an indication of model resource usage and an indication of model code module usage. In block 604, the application trims the code module usage indication by analyzing the exported data, where the trimming results in an indication of code module requirements. In block 606, the application uses the model training environment indication to select a target execution environment. In block 608, the application determines an indication of code module installation from the indication of the target execution environment and the indication of code module requirements. In block 610, the application checks whether installing code modules specified in the code module installation indication exceeds a resource limit specified by the target execution environment indication.If this is the case (path "YES" from block 610), the application selects a different target execution environment in block 612 and returns to block 608. Otherwise (path "NO" in block 610), the application installs the code modules specified by the code module installation statement into the target execution environment in block 614. The application then proceeds to point A.

[0095] With reference to Fig. 6B, this figure depicts a continued flowchart of an exemplary process for automated deployment of a machine learning model according to an illustrative embodiment. In particular, Fig. 6B a continuation of process 600 in Fig. 6A. Point A is the same as point A in Fig. 6A.

[0096] From point A, in block 616, the application checks resources of the updated target execution environment and code modules installed in the updated target execution environment for executing the trained model. In block 618, the application checks whether the check was successful. If this is the case (path "YES" from block 618), the application simulates the execution of the model in the updated target execution environment in block 620. In block 622, the application checks whether the simulation was successful. If this is the case (path "YES" from block 622), the application deploys the model in the updated target execution environment in block 624. Then (even with the "NO" paths from blocks 618 and 622), the application terminates.

[0097] Thus, in the illustrative embodiments, a computer-executed method, system or apparatus, and a computer program product are provided for automated deployment of a machine learning model and other related features, functions, or operations. Where an embodiment or a portion thereof is described with respect to a type of device, the computer-executed method, system or apparatus, computer program product, or a portion thereof is adapted or configured for use with a suitable and comparable manifestation of that type of device.

[0098] Where an embodiment is described as being implemented in an application, the illustrative embodiments contemplate delivering the application in a Software as a Service (SaaS) model. In a SaaS model, the functionality of the application implementing an embodiment is provided to a user by executing the application on a cloud infrastructure. The user may access the application using a variety of client devices through a thin-client interface such as a web browser (e.g., web-based email) or other lightweight client applications. The user does not manage or control the underlying cloud infrastructure, including the network, servers, operating systems, or storage of the cloud infrastructure. In some cases, the user may not even manage or control the functionality of the SaaS application.In some other cases, the SaaS implementation of the application may allow a possible exception for limited user-specific application configuration settings.

[0099] The present invention may be a system, a method, and / or a computer program product at any possible technical level of integration. The computer program product may include a computer-readable storage medium (or media) having computer-readable program instructions embodied thereon for causing a processor to perform aspects of the present invention.

[0100] Computer-readable program instructions described herein may be downloaded from a computer-readable storage medium to respective computing / processing units or to an external computer or storage unit via a network such as the Internet, a local area network, a wide area network, and / or a wireless network. The network may include copper transmission cables, fiber optic transmission lines, wireless transmission, routers, firewalls, switching units, gateway computers, and / or edge servers. A network adapter card or network interface in each computing / processing unit receives computer-readable program instructions from the network and forwards the computer-readable program instructions for storage in a computer-readable storage medium within the respective computing / processing unit.

[0101] Computer-readable program instructions for performing operations of the present invention may be assembly instructions, instruction set architecture (ISA) instructions, machine instructions, machine-dependent instructions, microcode, firmware instructions, state-setting data, integrated circuit configuration data, or either source code or object code written in any combination of one or more programming languages, including object-oriented programming languages ​​such as Smalltalk, C++, or the like, and procedural programming languages ​​such as the "C" programming language or similar programming languages.The computer-readable program instructions may execute entirely on the user's computer, partially on the user's computer, as a standalone software package, partially on the user's computer and partially on a remote computer, or entirely on the remote computer or server. In the latter case, the remote computer may be connected to the user's computer through any type of network, including a local area network (LAN) or a wide area network (WAN), or the connection may be made to an external computer (for example, over the Internet using an Internet service provider).In some embodiments, electronic circuits, including, for example, programmable logic circuits, field programmable gate arrays (FPGAs), or programmable logic arrays (PLAs), may execute the computer-readable program instructions by utilizing state information of the computer-readable program instructions to personalize the electronic circuits to perform aspects of the present invention.

[0102] Aspects of the present invention are described herein with reference to flowcharts and / or block diagrams of methods, apparatus (systems), and computer program products according to embodiments of the invention. It should be understood that each block of the flowcharts and / or block diagrams, as well as combinations of blocks in the flowcharts and / or block diagrams, may be implemented by computer-readable program instructions.

[0103] These computer-readable program instructions may be provided to a processor of a computer or other programmable data processing device to produce a machine such that the instructions executing via the processor of the computer or other programmable data processing device produce a means for implementing the functions / steps defined in the block(s) of flowchart and / or block diagrams.These computer-readable program instructions may also be stored on a computer-readable storage medium that can direct a computer, a programmable data processing apparatus, and / or other devices to function in a particular manner, such that the computer-readable storage medium having instructions stored thereon comprises an article of manufacture, including instructions that implement aspects of the function / step specified in the flowchart block(s) and / or block diagrams.

[0104] The computer-readable program instructions may also be loaded onto a computer, other programmable data processing apparatus, or other device to cause a series of process steps to be performed on the computer, other programmable apparatus, or other device to produce a computer-executable process such that the instructions executing on the computer, other programmable apparatus, or other device implement the functions / steps defined in the block(s) of flowcharts and / or block diagrams.

[0105] The flowcharts and block diagrams in the figures illustrate the architecture, functionality, and operation of possible implementations of systems, methods, and computer program products according to various embodiments of the present invention. In this context, each block in the flowcharts or block diagrams may represent a module, segment, or portion of instructions comprising one or more executable instructions for performing the specified logical function(s). In some alternative implementations, the functions specified in the block may occur in a different order than shown in the figures.For example, two blocks shown in sequence may actually be performed as a single step, executed concurrently, executed substantially concurrently, executed in a partially or entirely temporally overlapping manner, or the blocks may sometimes be executed in reverse order depending on the respective functionality. It should also be noted that each block of the block diagrams and / or flowcharts, as well as combinations of blocks in the block diagrams and / or flowcharts, may be implemented by special-purpose hardware-based systems that perform the specified functions or steps, or by combinations of special-purpose hardware and computer instructions.

Claims

[1] A method carried out on a computer, comprising: Detecting, using exported data of a machine learning model and an indication of a model training environment, an indication of resource usage of the machine learning model and an indication of code module usage of the machine learning model, wherein the indication of resource usage indicates a set of resources used in training the machine learning model in a model training environment specified by the indication of the model training environment, and the indication of code module usage indicates a set of code modules used in training the machine learning model in the model training environment; Determining, from an indication of code module requirements and an indication of a target execution environment, an indication of code module installation, wherein the indication of code module requirements specifies a set of code modules required to execute the model, wherein the indication of code module installation specifies a set of code modules to be installed in a target execution environment, wherein the target execution environment comprises an environment for executing the machine learning model, wherein the target execution environment is specified by the indication of the target execution environment; Causing the code modules specified by the code module installation statement to be installed in the target execution environment, wherein the installation results in an updated target execution environment; Verifying the updated target execution environment for executing the machine learning model using data from the updated target execution environment; and Simulating the execution of the machine learning model in the updated target execution environment; and Deploy the machine learning model to the updated target execution environment in response to the simulation being successful. [2] The computer-implemented method of claim 1, wherein the machine learning model is trained in a training execution environment. [3] The computer-implemented method of claim 2, wherein the training execution environment comprises at least one resource that is not included in the target execution environment. [4] The computer-implemented method of claim 2, wherein the training execution environment comprises at least one code module that is not included in the target execution environment. [5] A computer-implemented method according to claim 1, further comprising: Trimming the code module usage information by analyzing the exported data, where trimming results in the code module requirements information. [6] The computer-executable method of claim 1, wherein installing is performed in response to determining that installing code modules specified by the code module installation indication does not exceed a resource limit specified by the target execution environment indication. [7] The computer-implemented method of claim 1, wherein checking the updated target execution environment for executing the machine learning model using data of the updated target execution environment comprises: Validate resources of the updated target execution environment for running the machine learning model using an indication of the machine learning model's resource usage. [8] The computer-implemented method of claim 1, wherein checking the updated target execution environment for executing the machine learning model using data of the updated target execution environment comprises: Verify the code modules installed in the updated target execution environment using the code modules installed for running the machine learning model specification. [9] A computer program product comprising one or more computer-readable storage media and program instructions stored collectively on the one or more computer-readable storage media, the program instructions being executable by a processor to cause the processor to perform operations comprising: Detecting, using exported data of a machine learning model and an indication of a model training environment, an indication of resource usage of the model and an indication of code module usage of the machine learning model, wherein the indication of resource usage indicates a set of resources used in training the machine learning model in a model training environment specified by the indication of the model training environment, and the indication of code module usage indicates a set of code modules used in training the machine learning model in the model training environment; Determining, from an indication of requirements for code modules and an indication of a target execution environment, an indication of the installation of code modules, wherein the indication of requirements for code modules specifies a set of code modules required to execute the model, wherein the indication of the installation of code modules specifies a set of code modules to be installed in a target execution environment, wherein the target execution environment has an environment for executing the model, wherein the target execution environment is specified by the indication of the target execution environment; Causing the code modules specified by the code module installation statement to be installed in the target execution environment, wherein the installation results in an updated target execution environment; Verifying the updated target execution environment for executing the machine learning model using data from the updated target execution environment; and Simulating the execution of the machine learning model in the updated target execution environment; and Deploy the machine learning model to the updated target execution environment in response to the simulation being successful. [10] The computer program product of claim 9, wherein the stored program instructions are stored in a computer-readable storage device in a data processing system, and wherein the stored program instructions are transmitted over a network from a remote data processing system. [11] The computer program product of claim 9, wherein the stored program instructions are stored in a computer-readable storage device in a server data processing system, and wherein the stored program instructions are downloaded in response to a request over a network to a remote data processing system for use in a computer-readable storage device associated with the remote data processing system, further comprising: Program instructions to measure the use of the program instructions associated with the request; and Program instructions for creating an invoice based on measured consumption. [12] The computer program product of claim 9, wherein the machine learning model is trained in a training execution environment. [13] The computer program product of claim 12, wherein the training execution environment comprises at least one resource that is not included in the target execution environment. [14] The computer program product of claim 12, wherein the training execution environment comprises at least one code module that is not included in the target execution environment. [15] A computer program product according to claim 9, further comprising: Trimming the code module usage information by analyzing the exported data, where trimming results in the code module requirements information. [16] The computer program product of claim 9, wherein installing is performed in response to determining that installing code modules specified by the code module installation indication does not exceed a resource limit specified by the target execution environment indication. [17] The computer program product of claim 9, wherein checking the updated target execution environment for executing the machine learning model using data of the updated target execution environment comprises: Validate resources of the updated target execution environment for running the machine learning model using an indication of the model's resource usage. [18] The computer program product of claim 9, wherein checking the updated target execution environment for executing the machine learning model using data of the updated target execution environment comprises: Verify the code modules installed in the updated target execution environment using the code modules installed for running the machine learning model specification. [19] A computer system comprising a processor and one or more computer-readable storage media and program instructions stored collectively on the one or more computer-readable storage media, the program instructions being executable by the processor to cause the processor to perform operations comprising: Detecting, using exported data of a machine learning model and an indication of a model training environment, an indication of resource usage of the model and an indication of code module usage of the machine learning model, wherein the indication of resource usage indicates a set of resources used in training the machine learning model in a model training environment specified by the indication of the model training environment, and the indication of code module usage indicates a set of code modules used in training the machine learning model in the model training environment; Determining, from an indication of requirements for code modules and an indication of a target execution environment, an indication of the installation of code modules, wherein the indication of requirements for code modules specifies a set of code modules required to execute the model, wherein the indication of the installation of code modules specifies a set of code modules to be installed in a target execution environment, wherein the target execution environment has an environment for executing the model, wherein the target execution environment is specified by the indication of the target execution environment; Causing the code modules specified by the code module installation statement to be installed in the target execution environment, wherein the installation results in an updated target execution environment; Verifying the updated target execution environment for executing the machine learning model using data from the updated target execution environment; and Simulating the execution of the machine learning model in the updated target execution environment; and Deploy the machine learning model to the updated target execution environment in response to the simulation being successful. [20] The computer system of claim 19, wherein the machine learning model is trained in a training execution environment.