Efficient data processing optimization for machine learning workloads

By automatically optimizing data preprocessing in machine learning systems through dynamic analysis and conversion replacement, the method addresses inefficiencies in existing systems, improving performance and reducing costs.

JP7623772B2Active Publication Date: 2025-01-29INTERNATIONAL BUSINESS MACHINE CORPORATION
View PDF 1 Cites 0 Cited by

Patent Information

Application Number
JP2022568786
Authority / Receiving Office
JP · JP
Patent Type
Patents
Current Assignee / Owner
Priority Date
2020-06-02
Filing Date
2021-05-14
Publication Date
2025-01-29
Estimated Expiration
2041-05-14

AI Technical Summary

Technical Problem

Existing machine learning systems face inefficiencies in data preprocessing, leading to significant calculation costs and resource bottlenecks, which are often addressed through manual and subjective optimization methods that are not systematic.

Method used

A method that automatically identifies and replaces inefficient data preprocessing conversions in a pipeline with optimized alternatives, using data processing graphs and dynamic analysis to reduce calculation costs and improve efficiency.

Benefits of technology

This approach significantly reduces data preprocessing costs and resource usage, enhancing the overall performance of machine learning systems by optimizing data processing pipelines.

✦ Generated by Eureka AI based on patent content.

Smart Images

  • Figure 0007623772000001
    Figure 0007623772000001
  • Figure 0007623772000002
    Figure 0007623772000002
  • Figure 0007623772000003
    Figure 0007623772000003
Patent Text Reader

Abstract

A technique for improving a data pipeline is provided. An original file of a serialized object is received, and an original pipeline including a plurality of transforms is identified based on the original file. A first computational cost for a first transform of the plurality of transforms is determined. The first transform is modified using a predetermined optimization, and a second cost of the modified first transform is determined. Upon determining that the second cost is lower than the first cost, the first transform in the original pipeline is replaced with the optimized first transform.
Need to check novelty before this filing date? Find Prior Art

Description

[Technical field]

[0001] The present disclosure relates to machine learning optimization, and more particularly, to improved techniques for optimizing machine learning pipelines. [Background technology]

[0002] Machine learning (ML) systems often rely on large amounts of data to operate effectively and accurately. For example, large amounts of data are typically required to properly train a system. Similarly, during use, a model is often expected to process substantial amounts of data to yield desired inferences, predictions, and classifications. Furthermore, during a retraining or refinement procedure, it is common to reconstruct the model using previous data (which may include training data and deployment data), which may require the evaluation of large amounts of records.

[0003] In existing systems, data typically passes through a pre-processing system to prepare it to be used as input to the actual model. The pre-processing system may include one or more evaluations and transformations on the raw input data. This pre-processing may incur significant computational costs, including computation time (e.g., processor cycles) and memory requirements. In fact, in many systems, pre-processing the input data is more computationally expensive than actually evaluating the data with the ML model. For these and other reasons, it is important that the pre-processing system operates efficiently to reduce system costs and latency.

[0004] For example, in deployments that rely on real-time inference (e.g., where input data is received as a stream), the input data is typically high-throughput and requires rapid evaluation. If the pre-processing system is inefficient, it acts as a significant bottleneck in the process. Similarly, in batch-based inference systems, a large number of records are typically evaluated at once. If the pre-processing system is inefficient, each batch therefore requires additional significant resources to ingest. Optimization in this pre-processing system is critical to the overall performance of the model. However, existing systems rely on significant manual effort to identify and implement system optimizations, which again results in additional costs and delays. Moreover, these manual approaches are often subjective in nature and do not provide intelligent and systematic techniques for improving the system. Summary of the Invention

[0005] According to one embodiment of the present disclosure, a method is provided, the method including receiving an original file of a serialized object, identifying an original pipeline including a plurality of transforms based on the original file, determining a first computational cost for a first transform of the plurality of transforms, modifying the first transform using a predetermined optimization, determining a second cost of the modified first transform, and replacing the first transform in the original pipeline with the optimized first transform upon determining that the second cost is lower than the first cost. Advantageously, such a method allows for significant data-driven improvements in the processing pipeline.

[0006] According to some embodiments of the present disclosure, any combination of the above embodiments may further include a technique where identifying the original pipeline includes generating a data processing graph, where each vertex of the data processing graph represents a respective one of the plurality of transformations, and each respective edge of the data processing graph represents a data flow of the original pipeline. Such an embodiment is advantageous because it allows for at least a granular evaluation and understanding of the pipeline in order to dynamically analyze each element to identify possible improvements.

[0007] According to some embodiments of the present disclosure, any combination of the above embodiments may further include techniques where generating the data processing graph includes instantiating an original pipeline based on the original file, executing the original pipeline on the sample data, identifying a number of transformations based on the execution, and identifying an order of the number of transformations based on the execution. Advantageously, such embodiments allow the system to monitor the original pipeline in use while allowing the system to identify the specific transformations and data flows included in the pipeline. This reduces complexity and accelerates remediation.

[0008] According to some embodiments of the present disclosure, any combination of the above embodiments may further include a technique in which generating the data processing graph includes evaluating the original file to identify transformations and data flows of the original pipeline without instantiating the original pipeline. Such an embodiment may be advantageous because it allows the system to begin evaluating the pipeline by directly examining the file without requiring resource usage to instantiate a pipeline or to process actual data.

[0009] According to some embodiments of the present disclosure, any combination of the above embodiments may further include techniques where determining a first computational cost for the first transformation includes performing the first transformation on sample data and evaluating the execution to determine a latency for performing the first transformation. Advantageously, this allows the system to dynamically determine the cost associated with processing the data to better reflect what is expected at run time.

[0010] According to some embodiments of the present disclosure, any combination of the above embodiments may further include a technique where the predetermined optimization includes increasing parallelism in the first transform. Such an embodiment may allow significant improvement over the unimproved transform, since parallelism is often useful in reducing processing delays.

[0011] According to some embodiments of the present disclosure, any combination of the above embodiments may further include a technique where the predetermined optimization includes a one-row optimization for the first transform. Such an embodiment allows for significant improvement over the unimproved transform, since the one-row optimization is often much faster and utilizes fewer resources, data permitting.

[0012] According to some embodiments of the present disclosure, any combination of the above embodiments may further include generating an optimized file of the serialized object based on the original pipeline and the optimized first transformation. Advantageously, such an embodiment enables the system to return the improved pipeline to the requesting entity in a useful format that is easy to transmit and analyze.

[0013] According to different embodiments of the present disclosure, any combination of the above embodiments may be implemented by one or more computer readable storage media. The computer readable storage media collectively include computer program code that, when executed by operation of one or more computer processors, performs operations. In one embodiment, the operations performed may correspond to any combination of the methods and embodiments described above.

[0014] According to yet another different embodiment of the present disclosure, any combination of the above embodiments may be implemented by a system that includes one or more computer processors and one or more memories that collectively contain programs that perform operations when executed by the one or more computer processors. In an embodiment, the operations performed may correspond to any combination of the methods and embodiments described above. [Brief description of the drawings]

[0015] [Figure 1] FIG. 1 illustrates an environment for machine learning that includes a pipeline optimizer configured to automatically identify and replace transformation modifications to improve system functionality, according to one embodiment disclosed herein. [Diagram 2] 1 illustrates a workflow for pipeline optimization according to one embodiment disclosed herein. [Diagram 3] 1 illustrates a processing pipeline including a series of transform operations and a set of optimized alternative transforms according to one embodiment disclosed herein. [Figure 4] 1 illustrates a pipeline optimization that exploits parallelism within a data frame, according to one embodiment disclosed herein. [Diagram 5] FIG. 2 is a flow diagram illustrating a method for automatic pipeline optimization using alternative transformations according to one embodiment disclosed herein. [Figure 6]FIG. 1 is a flow diagram illustrating a method for automatically evaluating and performing pipeline optimization according to one embodiment disclosed herein. [Figure 7] FIG. 1 is a block diagram illustrating a pipeline optimizer configured to automatically evaluate an optimal transform pipeline according to one embodiment disclosed herein. DETAILED DESCRIPTION OF THE PREFERRED EMBODIMENTS

[0016] Embodiments of the present disclosure provide techniques for intelligently and automatically optimizing data preprocessing systems by reducing the computational cost they require. In one embodiment, the system receives as its input a data transformation pipeline and returns a modified / improved pipeline that reduces the computational cost of the process. In some embodiments, rather than receiving the pipeline itself, the system receives a data file that specifies a set of serialized objects. That is, the input can be a file created by serializing the pipeline structure. For example, in one such embodiment, the input is a Python® pickle file. In one embodiment, a client designing a preprocessing pipeline can serialize and send or otherwise provide the input to an optimization system that evaluates the input for possible optimizations.

[0017] In one embodiment, the system can first identify relationships between pipeline steps. This can include, for example, generating a data preprocessing graph for the pipeline, where each vertex or node of the graph corresponds to a step or transformation in the pipeline, and each edge indicates the data flow between the operations represented in the pipeline. In one embodiment, the system does this by instantiating a pipeline with a received file (e.g., deserializing the file to build a pipeline) and using the pipeline to process a set of sample data. By observing this execution, the system can identify the transformation functions that are called, as well as the order of these transformations. This can be accomplished by observing how the data changes at each step, adding reflection hooks to each transformation to expose information about the processing, etc. In another embodiment, the system builds the graph by analyzing the serialized file itself, without actually instantiating or executing the pipeline.

[0018] In some embodiments, the system can further determine the computational costs of one or more transformations of the pipeline. These costs can include, for example, computational resource usage (such as memory usage, storage requirements, processor usage, network usage, etc.), latency costs, etc. In one embodiment, the system can determine these costs by instantiating the pipeline and adding hooks to each transformation operation. Then, when the pipeline is used at runtime (to process training or run-time data), the system can determine the cost of each operation based on the actual data used with the ML system. In another embodiment, the system runs the transformations on sample data to estimate or determine each cost. This sample data can be provided by the client (to better match expected real data).

[0019] In an embodiment, the system can also determine the cost of possible optimizations or modifications to the transformation operations. In one embodiment, the optimization system can maintain a library or collection of predefined modified transformations / alternative transformations. For each transformation in the original pipeline, the system can identify a set of zero or more alternatives / modifications from this library. The system can then evaluate each such alternative to determine its cost. In at least one embodiment, each transformation is associated with a name or other identifier, a set of inputs, and a set of outputs. Based on this information, the system can identify alternative / modified transformations that can replace operations in the existing pipeline.

[0020] For example, a transformation can be designed or modified to take advantage of parallel processing, which can significantly reduce costs when the input data contains many rows or columns. Similarly, one-row optimization can improve costs for single records or smaller data sets. In one embodiment, the system can maintain any number of alternative transformation functions for a given transformation in the original pipeline. By running each alternative with the same sample data (or actual data at run time), the system can identify the most efficient operation with respect to the actual data and the pipeline being evaluated.

[0021] As each modification is evaluated, in one embodiment, the system can apply the selected optimization to the original pipeline, such as by replacing the original function signature with the selected (optimized) version. In one embodiment, the system can then begin using this optimized pipeline to process data received for the pipeline / client. In another embodiment, the system can serialize this new pipeline and return it to the client (or to another system that will run the pre-processing pipeline or the ML model, or both). This improved pipeline can operate more effectively and efficiently than the original pipeline, reducing computational costs and increasing the functionality of the system.

[0022] FIG. 1 illustrates an environment 100 for machine learning including a pipeline optimizer 115 configured to automatically identify and replace transformation modifications to improve system functionality, according to one embodiment disclosed herein. In the illustrated workflow, input data 105 is received and processed in an initial pre-processing step labeled data preparation 110. This data preparation 110 may include, for example, restructuring and / or reformatting the input data 105, aggregating or splitting the input data 105, etc. In at least one embodiment, the data preparation 110 includes the use of a transformation pipeline in which the input data 105 is sequentially processed through various transformations and operations. In embodiments, the pipeline may be linear or non-linear. That is, in at least one embodiment, the pipeline may include loops, regression sections, etc. For many practical uses, the data preparation 110 is computationally complex and often accounts for a large portion of the computational cost required to evaluate the input data 105.

[0023] In the illustrated embodiment, a pipeline optimizer 115 can be used to improve data preparation 110 so that data preparation 110 operates more efficiently, with lower latency, and / or with fewer computational resources. In some embodiments, the pipeline optimizer 115 iteratively analyzes each transformation in the pipeline to identify alternatives and evaluates each such alternative to identify an optimal replacement. As shown, after passing through data preparation 110, model building 120 occurs. Model building 120 generally includes building, training, and refining ML models. These models can include supervised models (e.g., trained with labeled training data), unsupervised models (prepared without labeled data), etc. In general, model building 120 can include the creation of any number of different models.

[0024] After the models are built, in some embodiments, they are evaluated or validated (e.g., with test data). In some embodiments, this may result in new input data 105 being obtained and prepared to improve the system. Once the model is accepted, the process proceeds to model deployment 125, where the model is used at run time. In one embodiment, each element in the workflow may of course be repeated any number of times. For example, after model deployment 125, the model may be continually or periodically improved with new data. Similarly, the model may be completely reconstructed (e.g., completely retrained) from time to time. Each of these reconstructions requires that the input data 105 be processed by the data preparation 110 pipeline. Similarly, in use, when new data is received and evaluated by the deployed model, the new data must first pass through the data preparation 110 stage. Thus, data preparation 110 occurs throughout the life of the model, not just during training. This increases the importance of an optimized and efficient transformation pipeline.

[0025] FIG. 2 illustrates a workflow 200 for pipeline optimization, according to one embodiment disclosed herein. In the illustrated embodiment, an original pipeline 205 is received. In one embodiment, the original pipeline 205 corresponds to a set or sequence of data transformations that are applied to prepare input data for use in the ML system. For example, the original pipeline 205 can include a series of operations that convert raw input data into prepared data suitable for training a model or inputting a model at run-time, or both. In at least one embodiment, the original pipeline 205 is received by the pipeline optimizer 115 in the form of a serialized data file. For example, in one such embodiment, the input is a Phython® pickle file.

[0026] As shown, the pipeline optimizer 115 evaluates the original pipeline 205 depending on a set of predefined optimized transformations 210 to generate an improved pipeline 215. In one embodiment, the optimized transformations 210 generally include transformations of operators, functions, methods, techniques, modules, or other components. Each optimized transformation 210 is configured to receive one or more elements of input data and perform one or more operations or transformations. In one embodiment, some or all of the optimized transformations 210 are further configured to generate an output (e.g., output the modified / transformed input).

[0027] In one embodiment, each optimized transform 210 is an improved or modified version of one or more original transforms. For example, assume that the original transform function (which may be used in the original pipeline 205) involves reformatting the input data. In one embodiment, the optimized transform 210 may include a set of zero or more modified or improved versions of the reformatting transforms. That is, a user may predefine possible alternatives or modifications to a transform that may make the transform more efficient for some data sets. In such an embodiment, the optimized transform 210 takes the same input and produces the same output as the original transform, but does so in a different way (e.g., takes advantage of parallel processing and outsources some transforms to other more capable components).

[0028] In one embodiment, each optimized transform 210 is associated with a corresponding signature that can be used to identify it. This signature, in some embodiments, includes an indication of the inputs or outputs or both for the operation. In some embodiments, the signature further includes the name of the optimized transform 210. In one embodiment, for each transform operation in the original pipeline 205, the pipeline optimizer 115 searches the optimized transform 210 to determine if any alternative forms exist. This can include identifying optimized transforms 210 with the same or overlapping signature as the original transform (e.g., with the same or similar name / description and the same inputs / outputs).

[0029] The pipeline optimizer 115 may then iteratively evaluate each such alternative to determine which one to apply. In one embodiment, the pipeline optimizer 115 performs its evaluation by processing test data with the alternatives and the original. In an embodiment, the best transform operator is likely to vary depending on the nature and structure of the input data. For example, if the input data frame can be split across multiple parallel pipelines, parallel processing can reduce the computational expense for some input data. Similarly, many standard transform functions are designed to operate on input matrices (e.g., having dimensions of M columns and N rows). If the actual input data exists in one dimension (e.g., a single column with multiple rows, or a single row with multiple columns), one-row optimization can be applied to reduce complexity.

[0030] In one embodiment, the pipeline optimizer 115 may select the optimal function based on any number of criteria including the latency of the operation when operating on the data, the computational resources required, etc. Once the best function (which may be the optimized transform 210 or the original transform) is identified, the pipeline optimizer 115 selects this operation for the pipeline and proceeds to the next step in the pipeline. Upon completion of this process, as shown, the pipeline optimizer 115 outputs an improved pipeline 215, which may have some or all of its functions replaced with tweaked / improved operations. In some embodiments, the improved pipeline 215 is deployed and used by the system. In at least one embodiment, the improved pipeline 215 is serialized and returned to the client that originally provided the original pipeline 205 for analysis.

[0031] FIG. 3 illustrates a processing pipeline 300 including a series of transform operations and a set of optimized alternative transforms according to one embodiment disclosed herein. In the illustrated embodiment, the original pipeline 205 includes a series of transform operations 305A-305N. Although shown as a sequential workflow, in some embodiments, the original pipeline 205 can include iterations, loops, cycles, and other complexities. In general, each transform operation 305A-305N is a defined transformation that is applied to input data. The arrows in the original pipeline 205 indicate the flow of data through the pipeline. For example, data is processed by transform operation 305A. After this processing, the data is passed to transform operation 305B, which performs a corresponding operation. The data is then provided to transform operation 305C.

[0032] In the illustrated embodiment, the pipeline optimizer 115 identifies a set of optimized transformations 310A-N for each transform operation 305A-N. That is, the pipeline optimizer 115 determines that transform 305A can be replaced with any optimized transform 310A because each is configured to receive the same input, perform the same operation, and return the same output. Similarly, transform operation 305B can be replaced with optimized transform 310B, and so on. In an embodiment, each transform operation 305 may have zero or more optimized alternative transforms 310. That is, some transform operations 305 may not have any equivalent optimized version, while other transform operations 305 have a single alternative or multiple alternatives.

[0033] In one embodiment, for a given transform operation 305, a set of possible optimized alternative transforms 310 are identified based on their signature. For example, assume a transform operation 305A is associated with two inputs and one input and has a name / description of “DBLookup”. In some embodiments, the pipeline optimizer 115 can identify an optimized transform 310A that utilizes the same inputs and outputs. In at least one embodiment, the pipeline optimizer 115 identifies optimized transforms 310 that have the same or similar names (e.g., “DBLookup_v1.1”). In some embodiments, the optimized transforms 310 can have the same names as the underlying transforms they are designed to replace, but are associated with other metadata indicating the type of optimization, the user who created it, the time and / or date it was created, version information, etc. Once a set of possible alternatives for a given transform operation 305 is identified, they can be iteratively evaluated to select one or more to replace the original pipeline 205.

[0034] 4 illustrates a pipeline optimization 400 that utilizes parallel processing on data frames, according to one embodiment disclosed herein. In the illustrated embodiment, one or more portions of the original pipeline are modified to take advantage of parallel processing, which can increase computational efficiency on some data sets. Specifically, as shown, an input data frame 405 undergoes partitioning 410, and each portion of the partitioned data frame 405 undergoes a transformation separately (in parallel) in operations 415A and 415B. After operation 415B, the individual streams are recombined in aggregation 420 to obtain a single data frame. This frame can then proceed to the next step in the pipeline.

[0035] In some embodiments, when the pipeline optimizer 115 determines that parallel processing would improve a given transform operation, the pipeline optimizer 115 can insert partitioning 410 and aggregation 420, respectively, before and after the given operation. In at least one embodiment, if the pipeline optimizer 115 determines that two or more adjacent operations can both be improved using the same parallel processing, the pipeline optimizer 115 can place partitioning 410 and aggregation 420 around that set of sequential operations. That is, rather than repeatedly partitioning and aggregating a frame of data in each operation, the pipeline optimizer 115 can instead create a pipeline that partitions the data, processes it with a series of transformers, and aggregates it at a point where the next operation will not utilize parallel processing.

[0036] FIG. 5 is a flow diagram illustrating a method 500 of automatic pipeline optimization using alternative transformations, according to one embodiment disclosed herein. In the illustrated embodiment, the method 500 begins at block 505 where the pipeline optimizer 115 receives a data preparation pipeline. In some embodiments, the pipeline is received from a client. For example, a client provides a pipeline and requests that it be evaluated / optimized. In at least one embodiment, the pipeline optimizer 115 is a component of a system that provides ML services. For example, a client can define the structure and configuration of the preparation pipeline and ML model itself and send these specifications to an entity that hosts the model and provides computing resources.

[0037] In some embodiments, the pipeline is received as a serialized data file. Generally, the received pipeline specifies a set of one or more transformations, operations, or functions to be applied and defines the data flow between the transformations. At block 510, the pipeline optimizer 115 generates a processing graph for the received pipeline. In one embodiment, each vertex or node of the processing graph corresponds to one of the transformations or operations, and each edge of the graph corresponds to how data flows through the pipeline. In one embodiment, the pipeline optimizer 115 generates the graph by evaluating the data file itself, identifying the transformations and data flow without actually instantiating or building the pipeline. In at least one embodiment, the pipeline optimizer 115 builds the graph by constructing / instantiating a pipeline based on the received specification.

[0038] In some embodiments, the pipeline optimizer 115 then adds hooks or other structures to each transformation to track the data as it moves through the pipeline. The pipeline optimizer 115 then runs a set of sample data through the instantiated pipeline and uses this reflection mechanism to identify the transformations / operations that are performed at each node, as well as the order in which the transformations are applied.

[0039] At block 515, the pipeline optimizer 115 selects a transform operation from the original pipeline. In one embodiment, selecting the transform operation is done by selecting a node / vertex of the generated graph and identifying an underlying function of the pipeline. The method 500 then continues to block 520, where the pipeline optimizer 115 determines whether one or more alternatives exist for the selected transform operation. In one embodiment, this involves searching a set of predefined transforms (e.g., optimized transforms 210) to identify alternative functions that utilize the same input data, return the same output data, and perform the same operation / transformation as the selected function. In some embodiments, as described above, the pipeline optimizer 115 uses the signature of the selected operation to identify a matching or related modified transform.

[0040] If no alternative or modified transformations are available for the selected node, method 500 continues to block 550, which is discussed in more detail below. Returning to block 520, if at least one modified, optimized, or alternative transformation operation exists for the selected function, method 500 continues to block 525. At block 525, pipeline optimizer 115 selects one of the identified alternative operations. Method 500 then proceeds to block 530, where pipeline optimizer 115 quantifies the cost of the selected alternative.

[0041] In one embodiment, the pipeline optimizer 115 quantifies the selected alternatives by running them on sample data. This sample data can be created or selected by the pipeline optimizer 115 or can be provided by a client. For example, in one such embodiment, a client can provide a sample of data reflecting expected runtime data, which allows the pipeline optimizer 115 to determine the cost of the selected alternatives based on realistic data. In some embodiments, the pipeline optimizer 115 instantiates and uses the original pipeline at runtime (e.g., begins processing actual data in a deployment to train or use a model). In such an embodiment, the pipeline optimizer 115 can similarly process data with the identified alternatives at runtime to quantify the cost of using each actual data.

[0042] In embodiments, the collected costs may include any number of different metrics including latency, cost, memory usage, processor usage, storage usage, etc. In some embodiments, the client may select and / or weight the costs to be considered. Once the cost of the transformation has been determined, method 500 proceeds to block 535 where the pipeline optimizer 115 determines whether there is at least one alternative that has not yet been evaluated. If so, method 500 returns to block 525. Once the costs of all possible alternative transformation functions have been identified, method 500 continues to block 540 where the pipeline optimizer 115 similarly determines the cost of the original transformation function in the pipeline. In embodiments, this may include evaluating sample data with the original pipeline. In some embodiments, as described above, this may include instantiating and using the pipeline at run time and monitoring the cost of operation in processing actual data in the system.

[0043] In block 545, the pipeline optimizer 115 selects the best evaluated transformation for use in the pipeline. That is, in one embodiment, the pipeline optimizer 115 identifies the function (which may be the original operation or one of the identified alternatives) with the least cost. In some embodiments, this decision is made in part based on client-defined weights for each cost criterion. If the original transformation has the lowest cost, the pipeline optimizer 115 avoids modifying this portion of the pipeline and leaves the original element in place. However, if one alternative is better, the pipeline optimizer 115 may modify the pipeline by replacing the original transformation with the identified optimal transformation. For example, the pipeline optimizer 115 may modify function calls or other elements of the pipeline to route data through the optimized version instead of the original operation.

[0044] The method 500 then proceeds to block 550, where the pipeline optimizer 115 determines whether there is at least one additional transform operation in the original pipeline that has not yet been evaluated. If so, the method 500 returns to block 515. If each step in the original pipeline has been evaluated, the method 500 continues to block 555, where the pipeline optimizer 115 returns an improved pipeline. In some embodiments, this includes generating a serialized data file for the modified pipeline (including the selected replaced / alternative elements) and returning it to the client. In one embodiment, the system can instead instantiate the improved pipeline and begin using the improved pipeline in the deployed environment to begin processing runtime data for the client.

[0045] FIG. 6 is a flow diagram illustrating a method 600 for automatically evaluating and performing pipeline optimizations according to one embodiment disclosed herein. The method 600 begins at block 605 where an original file of a serialized object is received. At block 610, the pipeline optimizer 115 identifies an original pipeline including a plurality of transforms based on the original file. The method 600 then continues to block 615 where the pipeline optimizer 115 determines a first computational cost for a first transform of the plurality of transforms. Further, at block 620, the pipeline optimizer 115 modifies the first transform using a predetermined optimization. At block 625, the pipeline optimizer 115 determines a second cost of the modified first transform. The method 600 then proceeds to block 630 where, upon a determination that the second cost is lower than the first cost, the pipeline optimizer 115 replaces the first transform in the original pipeline with the optimized first transform.

[0046] FIG. 7 is a block diagram illustrating a pipeline optimizer 115 configured to automatically evaluate an optimized transform pipeline, according to one embodiment disclosed herein. Although shown as a physical device, in an embodiment, the pipeline optimizer 115 may be implemented using a virtual device or across multiple devices (e.g., in a cloud environment), or both. As shown, the pipeline optimizer 115 includes a processor 710, a memory 715, a storage 720, a network interface 725, and one or more I / O interfaces 730. In the illustrated embodiment, the processor 710 retrieves and executes program instructions stored in the memory 715, as well as stores and retrieves application data resident in the storage 720. The processor 710 generally represents a single CPU or GPU or both, multiple CPUs or GPUs or both, a single CPU or GPU or both having multiple processing cores, etc. The memory 715 is generally included as representative of random access memory. Storage 720 may be any combination of disk drives, flash-based storage devices, and the like, and may include fixed or removable storage devices, or both, such as fixed disk drives, removable memory cards, cache, optical storage, network attached storage (NAS), or storage area networks (SAN).

[0047] In some embodiments, input and output devices (e.g., keyboard, monitor, etc.) are connected via I / O interface 730. Additionally, pipeline optimizer 115 may be communicatively coupled to one or more other devices and components via network interface 725 (e.g., via network 780, which may include the Internet, a local network, etc.). As shown, processor 710, memory 715, storage 720, network interface 725, and I / O interface 730 are communicatively coupled by one or more buses 775.

[0048] In the illustrated embodiment, storage 720 includes a set of predefined modified transformations 755. In some embodiments, these modified transformations 755 are user-defined functions, transformations, and operations designed to perform one or more operations in different ways (e.g., utilizing parallel processing). Each modified transformation 755 may be performed differently based on the underlying data being processed. In at least one embodiment, each modified transformation 755 includes indications of modifications that have been or should be applied to the original function to implement the modifications. In some embodiments, each modified transformation 755 further indicates the original function, allowing pipeline optimizer 115 to easily identify relevant / suitable alternatives for each step in the original pipeline.

[0049] In the illustrated embodiment, memory 715 includes an optimizer application 735. Although shown as software resident in memory 715, in embodiments, the functionality of optimizer application 735 may be implemented using hardware, software, or a combination of hardware and software. As shown, optimizer application 735 includes a pipeline component 740, a modification component 745, and a cost component 750. Although shown as separate components for conceptual clarity, in embodiments, the operations of pipeline component 740, modification component 745, and cost component 750 may be combined or distributed across any number of components and devices.

[0050] In one embodiment, the pipeline component 740 is configured to receive a pipeline (or a data file containing serialized objects) that is used to process and transform data in preparation for use with one or more ML models. The pipeline component 740 can then build a graph based on this file / pipeline, where each node of the graph corresponds to a transformation step and each edge indicates the flow of data between steps. In some embodiments, once optimal modifications are identified, the pipeline component 740 modifies the original pipeline as needed (e.g., by replacing the original transformations with modified ones, by changing pointers or data flows, etc.). The pipeline component 740 then returns the optimized pipeline.

[0051] In the illustrated embodiment, the modification component 745 evaluates each step in the original pipeline to identify potential modified transformations 755. In some embodiments, as described above, the modification component 745 does so by identifying modified transformations 755 that have the same or similar signature as the original step. In at least one embodiment, the modified transformations 755 specifically identify the original function they are intended to replace. In one embodiment, the cost component 750 is used to collect the cost of each original element and the corresponding alternatives, as described above. For example, the cost component 750 can run test data through the transformations and / or monitor the transformers as they process actual data at runtime. This allows the cost component 750 to identify the lowest cost transformation operation for each element of the pipeline.

[0052] The description of various embodiments of the present invention has been presented for illustrative purposes, but they are not intended to be exhaustive or limited to the disclosed embodiments. Many modifications and variations will be apparent to those skilled in the art without departing from the scope and spirit of the described embodiments. The terms used in this specification have been selected to best explain the principles of the embodiments, practical applications, or technical improvements over the art found in the market, or to enable those skilled in the art to understand the embodiments disclosed herein.

[0053] Above and / or below, reference is made to the embodiments presented in the present disclosure. However, the scope of the present disclosure is not limited to the specific embodiments described. Instead, any combination of features and elements, whether related to different embodiments or not, is contemplated to implement and practice the contemplated embodiments. Furthermore, while the embodiments disclosed herein may realize advantages over other possible solutions or over the prior art, whether or not a particular advantage is realized by a given embodiment does not limit the scope of the present disclosure. Thus, the aspects, features, embodiments, and advantages discussed herein are merely illustrative and should not be considered as elements or limitations of the appended claims unless expressly recited in the claims. Similarly, references to the "present invention" should not be construed as a generalization of the subject matter of any invention disclosed herein, and should not be considered as elements or limitations of the appended claims unless expressly recited in the claims.

[0054] Aspects of the present invention may take the form of an entirely hardware embodiment, an entirely software embodiment (including firmware, resident software, microcode, etc.), or an embodiment combining software and hardware aspects, which may be collectively referred to herein as a "circuit," "module," or "system."

[0055] The present invention may be a system, a method, or a computer program product, or a combination thereof. The computer program product may include a computer readable storage medium or media having computer readable program instructions for causing a processor to perform aspects of the present invention.

[0056] A computer readable storage medium may be any tangible device capable of holding and storing instructions for use by an instruction execution device. A computer readable storage medium may be, for example, but not limited to, an electronic storage device, a magnetic storage device, an optical storage device, an electromagnetic storage device, a semiconductor storage device, or any suitable combination of the above. A non-exhaustive list of more specific examples of computer readable storage media includes the following: portable computer diskettes, hard disks, random access memory (RAM), read-only memory (ROM), erasable programmable read-only memory (EPROM or flash memory), static random access memory (SRAM), portable compact disk read-only memory (CD-ROM), digital versatile disk (DVD), memory sticks, floppy disks, mechanically encoded devices such as punch cards or ridge structures in grooves having instructions recorded thereon, and any suitable combination of the above. As used herein, a computer-readable storage medium is not to be construed as a transitory signal per se, such as an electric wave or other freely propagating electromagnetic wave, an electromagnetic wave propagating through a waveguide or other transmission medium (e.g., light pulses through a fiber optic cable), or an electrical signal sent through a wire.

[0057] The computer readable program instructions described herein can be downloaded from the computer readable storage medium to the respective computing / processing device or to an external computer or storage device over a network, such as the Internet, a local area network, a wide area network, or a wireless network, or a combination thereof. The network can include copper transmission cables, optical transmission fiber, wireless transmission, routers, firewalls, switches, gateway computers, or edge servers, or a combination thereof. A network adapter card or network interface in each computing / processing device receives the computer readable program instructions from the network and transfers the computer readable program instructions for storage in the computer readable storage medium of the respective computing / processing device.

[0058] The computer readable program instructions for carrying out the operations of the present invention may be assembler instructions, instruction set architecture (ISA) instructions, machine instructions, machine dependent instructions, microcode, firmware instructions, state setting data, or source or object code written in any combination of one or more programming languages, including object oriented programming languages ​​such as Smalltalk, C++, and traditional procedural programming languages ​​such as the "C" programming language or similar programming languages. The computer readable program instructions may be executed entirely on the user's computer, partly on the user's computer as a stand-alone software package, partly on the user's computer and partly on a remote computer, or entirely on a remote computer or server. In the last scenario, the remote computer may be connected to the user's computer through any type of network, including a local area network (LAN) or wide area network (WAN), or may be connected to an external computer (e.g., through the Internet using an Internet Service Provider). In some embodiments, electronic circuitry including, for example, a programmable logic circuit, a field programmable gate array (FPGA), or a programmable logic array (PLA) can execute computer readable program instructions to individualize the electronic circuitry by utilizing state information of the computer readable program instructions to perform aspects of the invention.

[0059] Aspects of the present invention are described with reference to flowchart illustrations and / or block diagrams of methods, apparatus (systems) and computer program products according to embodiments of the invention. It will be understood that each block of the flowchart illustrations and / or block diagrams, and combinations of blocks in the flowchart illustrations and / or block diagrams, can be implemented by computer readable program instructions.

[0060] These computer readable program instructions may be provided to a processor of a general purpose computer, special purpose computer, or other programmable data processing apparatus to produce a machine, whereby the instructions executed by the processor of the computer or other programmable data processing apparatus create means for performing the functions / operations specified in one or more blocks of the flowcharts or block diagrams, or both. These computer program instructions may also be stored on a computer readable medium capable of directing a computer, programmable data processing apparatus, or other device, or combination thereof, to function in a particular manner, whereby the instructions stored on the computer readable medium include an article of manufacture including instructions implementing aspects of the functions / operations specified in one or more blocks of the flowcharts or block diagrams, or both.

[0061] 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 operational steps to be performed on the computer, other programmable data processing apparatus, or other device to generate a computer-implemented process, such that the instructions executing on the computer, other programmable apparatus, or other device perform the functions / operations specified in one or more blocks of the flowcharts or block diagrams or both.

[0062] 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 regard, each block in the flowcharts may represent a module, segment or portion of code, including one or more executable instructions for implementing the specified logical functions. In some alternative implementations, the functions shown in the blocks may occur in a different order than that shown in the figures. For example, two blocks shown in succession may in fact be executed substantially simultaneously, or these blocks may sometimes be executed in the reverse order, depending on the functionality involved. It should also be noted that each block in the block diagrams and / or flowchart illustrations, and combinations of blocks in the block diagrams and / or flowchart illustrations, may be implemented by a dedicated hardware-based system that executes the specified functions or operations, or executes a combination of dedicated hardware and computer instructions.

[0063] An embodiment of the present invention may be provided to end users through a cloud computing infrastructure. Cloud computing generally refers to the provision of scalable computing resources as a service over a network. More formally, cloud computing may be defined as a computing capability that provides an abstraction between computing resources and the underlying technological architecture (e.g., servers, storage, networks) that enables convenient, on-demand network access to a shared pool of configurable computing resources that can be rapidly provisioned and released with minimal management effort or service provider interaction. Thus, cloud computing allows users to access virtual computing resources (e.g., storage, data, applications, and even fully virtualized computing systems) in the "cloud" without having to consider the underlying physical systems (or the location of those systems) used to provide the computing resources.

[0064] Typically, cloud computing resources are provided to users on a pay-per-use basis, with the user being charged only for the computing resources actually used (e.g., the amount of storage space consumed by the user or the number of virtualization systems instantiated by the user). The user may access any resource residing in the cloud at any time from any location across the Internet. In the context of the present invention, the user may access applications (e.g., optimizer application 735) or associated data available in the cloud. For example, optimizer application 735 may run, analyze, and refine a data pipeline on a computing system in the cloud. In such a case, optimizer application 735 may receive the pipeline, optimize it, and store the refined pipeline and the given modifications in a storage location in the cloud. Doing so allows the user to access this information from any computing system connected to a network (e.g., the Internet) connected to the cloud.

[0065] While the forgoing is directed to embodiments of the present invention, other and further embodiments of the invention may be devised without departing from the basic scope thereof, which scope is determined by the following claims.

Claims

1. A computer comprising: Receive the original file of the serialized object, and identifying an original pipeline based on the original file, the original pipeline including a plurality of transformations; determining a first computational cost for a first transform of the plurality of transforms; modifying the first transformation using a predetermined optimization; determining a second cost of the modified first transformation; and replacing the first transform with the modified first transform in the original pipeline upon determining that the second cost is less than the first computational cost; The method includes:

2. 2. The method of claim 1, wherein identifying the original pipeline comprises generating a data processing graph, each vertex of the data processing graph representing a respective one of the plurality of transformations, and each edge of the data processing graph indicating a data flow of the original pipeline.

3. Generating the data processing graph comprises: instantiating the original pipeline based on the original file; and running the original pipeline on sample data; identifying the plurality of transformations based on the execution; and determining an order of the plurality of transformations based on the execution; and The method of claim 2 , comprising:

4. 3. The method of claim 2, wherein generating the data processing graph comprises evaluating the original file to identify the transformations and the data flow of the original pipeline without instantiating the original pipeline.

5. Determining the first computational cost for the first transform includes: performing the first transformation on sample data; evaluating the execution to determine a latency for performing the first transformation; The method of claim 1 , comprising:

6. The method of claim 1 , wherein the predetermined optimization comprises increasing parallelism in the first transformation.

7. The method of claim 1 , wherein the predetermined optimization comprises a one-line optimization for the first transform.

8. The method of claim 1 , further comprising generating an optimized file of a serialized object based on the original pipeline and the modified first transform.

9. A computer program comprising computer readable program instructions causing a computer to carry out a method according to any one of claims 1 to 8.

10. 10. A computer readable storage medium having stored thereon the computer program product of claim 9.

11. one or more computer processors; one or more memories collectively containing one or more programs; A system comprising: The one or more programs, when executed by the one or more computer processors, Receive the original file of the serialized object, and identifying an original pipeline based on the original file, the original pipeline including a plurality of transformations; determining a first computational cost for a first transform of the plurality of transforms; modifying the first transformation using a predetermined optimization; determining a second cost of the modified first transformation; and replacing the first transform with the modified first transform in the original pipeline upon determining that the second cost is less than the first computational cost; Performing an action including system.

12. 12. The system of claim 11, wherein identifying the original pipeline comprises generating a data processing graph, each vertex of the data processing graph representing a respective one of the plurality of transformations, and each edge of the data processing graph indicating a data flow of the original pipeline.

13. Generating the data processing graph comprises: instantiating the original pipeline based on the original file; and running the original pipeline on sample data; identifying the plurality of transformations based on the execution; and determining an order of the plurality of transformations based on the execution; and The system of claim 12 , comprising:

14. 13. The system of claim 12, wherein generating the data processing graph comprises evaluating the original file to identify the plurality of transformations and the data flow of the original pipeline without instantiating the original pipeline.

15. Determining the first computational cost for the first transform includes: performing the first transformation on sample data; evaluating the execution to determine a latency for performing the first transformation; The system of claim 11 , comprising:

Citation Information

Patent Citations

  • Development assistance device, development assistance system, and development assistance method

    WO2020157799A1