Login| Sign Up| Help| Contact|

Patent Searching and Data


Title:
TECHNIQUES FOR MANAGING COMPUTATIONAL MODEL DATA
Document Type and Number:
WIPO Patent Application WO/2019/017874
Kind Code:
A1
Abstract:
Techniques and apparatus for managing data for computational models are described. In one embodiment, an apparatus may include at least one memory, and logic to enable a data management service operative to receive a data request from a data agent, the data request comprising data request information indicating a requested data set, determine a data status of the requested data set, the data status comprises one of existing data responsive to the requested data set being stored in a service database, or new data responsive to the requested data set not being stored in the service database, and responsive to the requested data set having the data status of new data, the data management service operative to access source data corresponding to the requested data set, and perform at least one preliminary operation on the source data to generate transformed data. Other embodiments are described and claimed.

Inventors:
SRIDHARAN SRINVAS (IN)
MUDIGERE DHEEVATSA (IN)
Application Number:
PCT/US2017/042362
Publication Date:
January 24, 2019
Filing Date:
July 17, 2017
Export Citation:
Click for automatic bibliography generation   Help
Assignee:
INTEL CORP (US)
International Classes:
G06N3/08; G06N3/04; G06N99/00
Domestic Patent References:
WO2003094034A12003-11-13
Foreign References:
US20110022552A12011-01-27
US20160092788A12016-03-31
US20150254555A12015-09-10
US20110202487A12011-08-18
Attorney, Agent or Firm:
KACVINSKY, John F. (US)
Download PDF:
Claims:
CLAIMS

What is claimed is:

1. An apparatus, comprising:

at least one memory; and

logic, at least a portion of the logic comprised in hardware coupled to the at least one memory, the logic to enable a data management service operative to:

receive a data request from a data agent, the data request comprising data request information indicating a requested data set,

determine a data status of the requested data set, the data status comprising one of:

existing data responsive to the requested data set being stored in a service database, or

new data responsive to the requested data set not being stored in the service database, and

responsive to the requested data set having the data status of new data, the data management service operative to:

access source data corresponding to the requested data set, and perform at least one preliminary operation on the source data to generate transformed data.

2. The apparatus of claim 1, wherein the data request information comprises at least one of at least one data set, at least one preprocessing operation, or a number of requested records.

3. The apparatus of claim 1, wherein the logic is further to enable the data management service operative to store the transformed data in the service database.

4. The apparatus of claim 1, wherein the logic is further to enable the data management service operative to copy the transformed data corresponding to the data request to an agent memory accessible by the data agent.

5. The apparatus of any of claims 1 to 4, responsive to the requested data set having the data status of existing data, wherein the logic is further to enable the data management service operative to provide the transformed data to the data agent corresponding to the data request from the service database.

6. The apparatus of any of claims 1 to 4, wherein the data request comprises a request for data for training a computational model.

7. The apparatus of any of claims 1 to 4, wherein the computational model comprises at least one of a deep learning (DL) computational model, a convolutional neural network (CNN), or a recurrent neural network (RNN).

8. The apparatus of any of claims 1 to 4, wherein the logic is further to enable the data management service operative to provide a data availability indicator to the data agent responsive to the transformed data being available in the at least one memory.

9. The apparatus of any of claims 1 to 4, wherein the logic is further to enable the data management service operative to provide a revert indicator to the data agent to handle the data request via the data agent.

10. The apparatus of any of claims 1 to 4, wherein the at least one preliminary operation comprises at least one of randomization, formatting, resizing, or translation.

11. A computer- implemented method, comprising, operations, executed by a processor, of: receiving a data request from a data agent, the data request comprising data request information indicating a requested data set;

determining a data status of the requested data set, the data status comprising one of:

existing data responsive to the requested data being stored in a service database, or

new data responsive to the requested data not being stored in the service database, and

responsive to the requested data set having the data status of new data:

accessing source data corresponding to the requested data set, and performing at least one preliminary operation on the source data to generate transformed data.

12. The computer- implemented method of claim 11, the data request information comprising at least one of at least one data set, at least one preprocessing operation, or a number of requested records.

13. The computer- implemented method of claim 11, further comprising storing the transformed data in the service database. 14. The computer-implemented method of any of claims 11 to 13, further comprising copying the transformed data corresponding to the data request to an agent memory accessible by the data agent.

15. The computer- implemented method of any of claims 11 to 13, responsive to the requested data set having the data status of existing data, further comprising providing the transformed data to the data agent corresponding to the data request from the service database.

16. The computer- implemented method of any of claims 11 to 13, the data request comprising a request for data for training a computational model.

17. The computer-implemented method of any of claims 11 to 13, wherein the computational model comprises at least one of a deep learning (DL) computational model, a convolutional neural network (CNN), or a recurrent neural network (RNN). 18. The computer-implemented method of any of claims 11 to 13, further comprising providing a data availability indicator to the data agent responsive to the transformed data being available in the at least one memory.

19. The computer- implemented method of any of claims 11 to 13, further comprising providing a revert indicator to the data agent to handle the data request via the data agent.

20. A non-transitory computer-readable storage medium that stores computer-executable instructions for execution by processing circuitry of a control node, the computer-executable instructions to cause the control node to enable a data management service operative to:

receive a data request from a data agent, the data request comprising data request information indicating a requested data set,

determine a data status of the requested data set, the data status comprising one of:

existing data responsive to the requested data set being stored in a service database, or new data responsive to the requested data set not being stored in the service database, and

responsive to the requested data set having the data status of new data, the data management service operative to:

access source data corresponding to the requested data set, and perform at least one preliminary operation on the source data to generate transformed data.

21. The non- transitory computer-readable storage medium of claim 20, the data request information comprising at least one of at least one data set, at least one preprocessing operation, or a number of requested records.

22. The non-transitory computer-readable storage medium of claim 20, the computer- executable instructions to cause the control node to enable the data management service operative to store the transformed data in the service database.

23. The non- transitory computer-readable storage medium of any of claims 20 to 22, the computer-executable instructions to cause the control node to enable the data management service operative to copy the transformed data corresponding to the data request to an agent memory accessible by the data agent.

24. The non-transitory computer-readable storage medium of any of claims 20 to 22, responsive to the requested data set having the data status of existing data, the computer- executable instructions to cause the control node to enable the data management service operative to provide the transformed data to the data agent corresponding to the data request from the service database.

25. The non- transitory computer-readable storage medium of any of claims 20 to 22, the computer-executable instructions to cause the control node to enable the data management service operative to provide a data availability indicator to the data agent responsive to the transformed data being available in the at least one memory.

Description:
TECHNIQUES FOR MANAGING COMPUTATIONAL MODEL DATA

TECHNICAL FIELD

Embodiments described herein generally relate to information processing and, more specifically, but not exclusively, to techniques for managing data and service requests within a computing environment, such as a computational model.

BACKGROUND

Computational models are used for information processing in various disciplines, such as machine learning, search algorithms, image processing, speech recognition, pattern recognition, and/or the like. Non-limiting examples of computational models may include neural networks (or artificial neural networks) formed of multiple layers operative to perform operations on data to generate an output. In general, computational models are trained to perform certain functions, such as classifying images, categorize objects, and/or the like. During training, the

computational model may be provided with input data with known classifiers (for instance, images with a known object of interest for an image classifier computational model). The computational model will analyze the input data using a set of parameters (or weights) and generate output indicating the classification of the input data (for instance, an indicator of whether an image has an object, a category of the object, and/or the like). The output is analyzed and an objection function may measure the errors in the output data versus the desired output. The weights of the computational model are modified and the input data may be re-analyzed to further train the computational model. Once the computational model achieves a sufficient level of accuracy, it may be used to analyze and/or categorize real-world data.

Computational models may be capable of operating on large volumes of input data (for instance, ranging from gigabytes to petabytes). Raw source data is required to be preprocessed and/or moved into memory before the data can be provided to the computational model for training or analysis. Such preprocessing and memory steps incur significant overhead, for example, as much as 30% of training time in conventional computational model systems. In addition, contention for system resources may be increased because operators typically launch large ensemble jobs using the same input data set, but with minor modifications for hypersensitive training of certain parameters, or continuous-learning jobs that are re -run to update models when new data is added. BRIEF DESCRIPTION OF THE DRAWINGS

FIG. 1 illustrates an embodiment of a first operating environment.

FIG. 2 illustrates an embodiment of a second operating environment.

FIG. 3 illustrates an example of a third operating environment.

FIG. 4 illustrates an embodiment of a fourth operating environment.

FIG. 5 illustrates an embodiment of a fifth operating environment.

FIG. 6 illustrates an embodiment of a sixth operating environment.

FIG. 7 illustrates an embodiment of a data management service agent interface.

FIG. 8 illustrates an embodiment of a first logic flow.

FIG. 9 illustrates an embodiment of a second logic flow.

FIG. 10 illustrates an embodiment of a storage medium.

FIG. 11 illustrates an example computing platform.

DETAILED DESCRIPTION

Various embodiments may be generally directed to techniques for managing data used for operations performed with or by a computational model within a computing system. Illustrative and non-restricting examples of a computational model may include a machine-learning model, an artificial intelligence (AI) model, a neural network (NN), an artificial neural network (ANN), a convolutional neural networks (CNN), a deep learning (DL) network, and/or the like. In some embodiments, source data may include data to be provided to the computational model for operations including, without limitation, training, analysis, classification, categorization, and/or the like. The source data may be required to undergo one or more preliminary operations before being provided to the computational model as input data (or transformed data). Non-limiting examples of preliminary operations may include preprocessing, augmentation, file manipulation operations, resizing, randomization, cropping, transmission, memory storage, memory retrieval, compression, decompression, data security operations, translation, compilation, formatting, and/or the like.

In various embodiments, the computing system may include a data management service (for instance, an input data optimization service) to, among other things, accelerate input data input/output (I/O) to the computational model. The data management service may operate across all or substantially all computational model processing (for instance, training and/or analysis) jobs within the computing system (for example, a large-scale cluster). The data management service may operate to leverage computational model domain knowledge, for example, common usage patterns, preliminary operations, and/or the like at the system level for exploiting the temporal and spatial use and reuse of input data sets, reducing or eliminating duplication of data and/or data processing operations (including, without limitation, preliminary operations), and/or efficiently and performantly executing preliminary operations and providing requested input data to computational models.

Certain systems have inadequately addressed the inefficiencies inherent in conventional computational model-based systems. For example, systems have implemented dedicated processor cores, high-performance file systems, and large node-local storage. However, such solutions merely target the symptoms of the inefficiencies of conventional computational model- based systems while overlooking the actual causes. More specifically, high-performance file systems and node-local storage mainly address the file I/O overheads within a single job and not the broader challenges, including duplication of data preprocessing operations, insufficient local storage for replicating full production data sets (for instance, which may be 10s of terabytes (TB) to petabytes (PB)), and contention for system resources by ensemble or continuous-learning jobs. Other approaches, for example, in benchmarking situations, involves statically partitioning a data set and storing it in node-local storage at the expense of higher startup costs. However, this solution is not practical in production environments given the massive size of input data sets and sensitivity to stochasticity and the requirement of further partitioning if new data is added to a data set.

Accordingly, systems and processes configured according to some embodiments address inefficiencies in computational model systems by, among other things, addressing the inefficiencies in a holistic approach that exploits computational model (for instance, DL) domain knowledge and common usage patterns in training jobs. Furthermore, various embodiments employ a system- wide approach to I/O requirements, resulting in the marked reduction or even elimination of duplication of access, processing, storage, and management of the massive data sets used in computational models.

In some embodiments, compute nodes of the computing system may operate to generate requests for processing source data via the computational model. In various embodiments, a data agent may operate on one or more of the compute nodes for, among other things, interfacing with the data management service. Accordingly, in some embodiments, instead of providing requests and/or the like directly (or substantially directly) to the computational model, the requests may be provided to the system-wide data management service. The data management service may obtain and/or pre-process the source data and provide the input data to the computational model. In this manner, the data management service may provide a system-wide logical service that facilitates, among other things, prefetching and/or caching input data, applying preliminary operations to source data, and storing input data (or transformed data), for example, in a distributed in-memory database for fast access from the compute nodes.

Accordingly, in some embodiments, expensive I/O operations and data transformation operations may be transferred to a remote memory access, eliminating inefficiencies within and across training jobs inherent in conventional systems, leading to markedly improved training times, analysis times, and overall system utilization.

FIG. 1 illustrates an example of an operating environment 100 that may be representative of various embodiments. The operating environment 100 depicted in FIG. 1 may include source data 105 to be processed via computational model 125. Source data 105 may generally include any type of data or data structure capable of being used according to some embodiments, such as a database, data files, image files, audio files, multimedia files, word processing documents, spreadsheets, data records, a data stream, compressed data, parallel file system, disk storage, cluster file system, and/or the like. In some embodiments, source data 105 may include high- performance storage typically used with computational models. Non- limiting examples of high- performance storage may include PanFS® (available from Panasas, Inc.), Lustre® (available from the Cluster File Systems, Inc.), and GPFS (the General Parallel File System available from IBM Corp.). Embodiments are not limited in this regard.

Computational model 125 may include any type of computational model, system, architecture, and/or the like capable of operating according to some embodiments. For example, computational model 125 may include, without limitation, a machine-learning model, an artificial intelligence (AI) model, a neural network (NN), an artificial neural network (ANN), a convolutional neural networks (CNN), a deep learning (DL) network, deep neural network (DNN), recurrent neural network (RNNs), and/or the like. Non-limiting examples of computational models may include Caffe, LeNet (for instance, GoogLeNet), Inception,

Microsoft® ResNet, and/or the like.

In some embodiments, computational model 125 may include a DL network. For example,

FIG. 2 illustrates an example of an operating environment 200 that may be representative of various embodiments implementing computational model 125 as a DL neural network 225. The operating environment 200 depicted in FIG. 2 may include a neural network formed of a plurality of layers, including input layer 250, hidden layers 260a-n, and output layer 270. Each layer of neural network 225 may include one or more neurons 280a-n. In general, a neuron 280a-n may be a computational unit that takes in one or more inputs, applies a function to the inputs (for instance, an activation function), and generates an output. The neurons 280a-n may be interconnected such that the output from neurons 280a-n in a first layer may be input to the neurons 280a-n in a subsequent layer (and vice versa). For example, the output of neuron 280a of input layer 250 may be provided as input to neurons 280d-f of hidden layer 260a. In general, input layer 250 and output layer 270 may be visible (for instance, accessible for network input or as network output, respectively) outside of neural network 225, such as to software, agents, and/or the like. Hidden layers 260a-n are not accessible externally from neural network 225 and operate as a hidden (or deep) processing structure for processing (for instance, training and/or analyzing) input data received from input layer 250. Results from the training or analysis may be provided to output layer 280 and transmitted as output 230, for example, to a data consumer.

Referring now to FIG. 1, in various embodiments, computational model 125 may be implemented in hardware, software, or a combination thereof. In some embodiments, computational model 125 and/or operations thereof may be implemented by hardware of and/or software executing on one or more compute nodes 150. For example, compute node 150 may include a processor (not shown; see, for example, FIGS. 4 and 5) having a plurality of cores. At any time, certain of the cores may be executing jobs for the computational model 125 (such as processing input data). In some embodiments, operating environment 100 may include a plurality of compute nodes 150 for implementing computational model 125.

In some embodiments, source data 105 is required to undergo preprocessing 110 before being provided to computational model 125. In general, preprocessing 110 may include any type of preliminary operations required for source data 105 to be capable of being transmitted to and/or processed by computational model 125. For example, images in an image classification neural network 225 may be required to be re- sized, segmented, and/or the like before being trained on and/or analyzed by layers 250, 260a-n, and/or 280 for objects of interest.

Preprocessing 110 of source data 105 may generate transformed data (or transformed records) 120. In some embodiments, transformed data 115 may be provided to computational model 125 for processing to generate output 130.

In a conventional system, I/O operations (such as file I/O operations) and preprocessing 110 may be performed by a node, for instance, via a core of a processor that is not executing a job for computational model 225 (see, for example, FIG. 3). However, in some embodiments, compute node 150 may execute a data agent 152 operative to transmit requests to a data management service 140. In some embodiments, data management service 140 may include a central, system- wide service for managing and/or optimizing data input for computational model 125. The requests may include instructions, algorithms, programs, signals, and/or the like specifying the source data 105 requested for processing by computational model 125. The requests may also include other instructions, such as instructions for preprocessing 110, instructions for training (for instance, parameter settings, expected results, algorithms, and/or the like), batch size, output format, and/or the like. Data management service 140 may handle data I/O for obtaining source data 105 and preprocessing 110 to generate transformed data 115 from source data 105.

In various embodiments, data management service 140 may be implemented in hardware, software, or a combination thereof. In some embodiments, data management service 140 may be implemented by software executing on and/or hardware of one or more computing devices, such as compute nodes, server computing devices, master nodes, and/or the like. In some

embodiments, data management service 140 may include or may be operably coupled to a service database 160. For example, service database may be stored in a memory of or accessible to a computing device implementing data management service. In various embodiments, data management service 140 may store transformed data 115 in service database 160. In some embodiments, transformed data 115 may be stored with metadata, program code, and/or the like (for instance, "transformed data information") to designate the type of data, uses for the data, preprocessing requirements, and/or the like.

In some embodiments, data management service 140 may facilitate the provisioning of input data 120 to computational model 125. For example, responsive to receiving a request from agent 152, data management service 140 may determine whether at least a portion of the requested data that matches the data of the request, for example, processed as transformed data 115, is already located in service database 160 (in-memory database or transformed data database). Data management service 140 may provide the at least a portion of the requested data in service database 160 to computational model 125 as input data 120. In this manner, reprocessing of source data 105 for subsequent jobs requiring the same data may be reduced or even eliminated. If new data is requested by agent 152 (for instance, the requested data is not located in service database 160), data management service 140 may facilitate obtaining the relevant source data 105 (for instance, by handling file I/O, network I/O, and/or the like) and preprocessing 110 to generate the transformed data 115 to be provided to computational model 125 as input data 120 and, in some embodiments, to be stored in service database 160 for use by subsequent jobs.

Data agent 152 and/or data management service 140 may be used for various

computational models, such as those described herein, and for data of various disciplines, including, without limitation, visual understanding applications, machine-learning domains, DL domains, AI domains, CNN domains, speech processing, natural language processing (NLP), reinforcement learning (RL), combinations of workloads (for instance HPC algorithms with DL). For example, while particular input data formats may differ across disciplines and workloads, usage patterns may be similar and can be supported by data agent 152 and/or data management service 140 according to some embodiments. FIG. 3 illustrates an example of an operating environment 300 that may include an apparatus 305 having a processing unit 310 and a memory unit 315. Processing unit 310 may be a central processing unit (CPU), system-on-a-chip (CPU), and/or the like having a plurality of cores 312a-d, such as four cores. In some embodiments, apparatus 305 may include a compute node operative to implement or otherwise interact with neural network 350. Memory unit 315 may store a neural network application 320 (for instance, a deep learning application) for execution by processing unit 315. Neural network application 320 may execute to implement or otherwise interact with neural network 350. For example, neural network application 320 may initiate one or more jobs 330a and 330b to be processed by processing unit 310, such as via cores 312a and 312b. As shown in FIG. 3, other jobs 330c-n (for instance, executing on other apparatuses) may also send data requests to high-performance storage 360.

Jobs 330a and 330b may require certain I/O operations in order to obtain source data from, for example, a high-performance storage 360. Apparatus 305 may be operably coupled to high performance storage 360, as well as other components, such as one or more compute nodes, servers, master nodes, and/or the like via a network link 370, such as an InfiniBand (IB), Intel® Omni-Path Architecture (OAP) network, or other high-performance network link.

In a conventional system, apparatus 305 may be required to perform the I/O operations over network link 370 to obtain the source data. For example, in a conventional graphics processing unit (GPU)-based DL training system, idle host cores may be dedicated for parallel file read operations. Accordingly, "idle" cores 312c and 312d that are not processing jobs may be used to perform file I/O operations in order to obtain source data from high-performance storage 360 over network link 370. In addition, source data may be obtained as "raw" data that requires preliminary operations in order to be usable for jobs 330a or 330b and/or neural network 350. Accordingly, in a conventional system, apparatus 305 may perform preprocessing on the source data to generate transformed data. For example, idle cores 312c and 312d would typically be used to perform preprocessing operations to generate transformed data from source data. The transformed data may then be provided as input data to jobs 330a and 330b and/or provided to neural network 350.

The operating environment 300 of FIG. 3 is limited because I/O and data preprocessing in CPU cores provides for fewer cores for compute-intensive tasks, such as hidden layer processing, which may have a negative impact on neural network 350 performance (for instance, overall time-to-train). In addition, partial or even full replication of data sets in node-local storage may lead to job startup being delayed until the data set is copied as well as insufficient local storage (for instance, memory unit 315 or other type of memory accessible to apparatus 305) for most production data sets. Furthermore, operating environment 300 demonstrates inefficient use of system resources, such as file systems, networks, and/or the like, particularly for large ensemble jobs and failure to reuse data sets (particularly previously-processed data sets), which leads to duplication of preprocessing.

FIG. 4 illustrates an example of an operating environment 400 that may be representative of various embodiments. The operating environment 400 depicted in FIG. 4 may include one or more compute nodes 405, one or more control nodes 450 (for instance, operating as system managers), and a data source 445 in communication over a network 440.

In various embodiments, each compute node 210 may be embodied as any type of computation or computer device capable of performing the functions described herein, including, without limitation, a computer, a multiprocessor system, a server, a rack-mounted server, a blade server, a laptop computer, a notebook computer, a network appliance, a web appliance, a distributed computing system, a processor-based system, a consumer electronic device, combinations thereof, and/or the like. Each compute node 210 may include a plurality of processors 410a-n, an input/output (I/O) subsystem 420, a memory (an "agent memory") 422, a data storage device 424, communication circuitry 426, and/or the like. Compute nodes 405 may include other or additional components, such as those commonly found in a server device (for instance, transceivers, I/O devices, peripheral cards, and/or the like). Additionally, in some embodiments, one or more the components of compute nodes 405 may be incorporated in, or otherwise form a portion of, another component. For example, memory 422, or portions thereof, may be incorporated in one or more of processors 410a-n.

Each processor 410a-n may be embodied as any type of processor capable of performing functions according to some embodiments. In some embodiments, processors 410a-n may include a multi-core processor, however, in various other embodiments, each processor 410a-n may be embodied as a single or multi-core processor(s), digital signal processor, microcontroller, or other processor or processing/controlling circuit. Each processor 410a-n may include a plurality of cores 412a-n, such as two cores 412a-n, four cores 412a-n, and/or the like, and an uncore 414a-n. In some embodiments, compute node 405 may be configured to implement one or more virtual machines such that a portion of processors 410a-n and/or cores 412a-n may be virtual processors and/or cores. In various embodiments, at least a portion of processors 410a-n may include a central processing unit (CPU), GPU, system-on-a-chip (SoC), and/or the like.

Processors 410a-n may include an uncore 414a-n. In various embodiments, each uncore 414a-n may generally include any part of a particular processor 410a-n not included in the processor cores 412a-n (for instance, all or substantially all components of processor 410a-n except for the processor cores 412a-n themselves). For example, uncores 414a-n of processors 410a-n may include typical components of a processor or a system-on-a-chip (SoC). For example, each uncore 414a-n may include a memory controller, processor graphics, I/O controllers, power management circuitry, or other components of processors 410a-n, processor monitors, cache memory, and/or the like.

In various embodiments, memory 422 may be embodied as any type of volatile or non- volatile memory or data storage capable of performing functions according to some embodiment. In operation, memory 422 may store various data and software used during operation of compute nodes 405, such as OSs, applications, programs, libraries, drivers, agents, and/or the like.

Memory 422 may be communicatively coupled to processors 410a-n via I/O subsystem 240, which may be embodied as circuitry and/or other components operative to facilitate I/O operations with processors 410a-n, memory 422, and/or other components of compute nodes 405. For example, I/O subsystem 240 may be embodied as, or otherwise include, memory controller hubs, I/O control hubs, firmware devices, communication links (for instance, point-to- point links, bus links, wires, cables, light guides, printed circuit board traces, and/or the like), and/or other components and subsystems to facilitate input/output operations. In some embodiments, I/O subsystem 240 may form a portion of a SoC and may be incorporated, along with processors 410a-n, memory 422, and other components of the compute node 210, on a single integrated circuit chip.

Data storage device 424 may be embodied as any type of device or devices configured for short-term or long-term storage of data such as, for example, memory devices and circuits, memory cards, hard disk drives, solid-state drives, and/or other data storage devices.

Communication circuitry 426 may be embodied as any communication circuit, device, or collection thereof, capable of enabling communications between compute nodes 405, control node 450, source data 445, and/or other remote devices over network 440. Communication circuitry 426 may be configured to use various communication technologies (for instance, wired or wireless communications) and associated protocols (for instance, Ethernet, Bluetooth®, Wi- Fi®., WiMAX, and/or the like) to affect such communication.

In some embodiments, compute nodes 405, control node 450, and/or source data 445 may be configured to transmit and receive data with each other and/or other devices operating environment over network 440. Network 440 may be embodied as any number of various wired and/or wireless networks. For example, network 440 may be embodied as, or otherwise include, a wired or wireless local area network (LAN), a wired or wireless wide area network (WAN), a cellular network, InifiniBand (IB), Intel® Omni-Path Architecture (OAP) network, and/or a publicly-accessible, global network such as the Internet. As such, network 440 may include any number of additional devices, such as additional computers, routers, and switches, to facilitate communications among the elements of operating environment 400. As shown in FIG. 4, memory 422 may store various applications for execution by processors 410a-n, such as a computational model application 430 and an agent application 432. In some embodiments, computational model application 430 may operate to implement or otherwise interact with a computational model (for instance, computational model 125).

Computational model application 430 may include an interface for an operator to manage, initiate, or otherwise interface with a computational model. For example, an operator may input commands into computational application 430 (for instance, via a client interface operating on a client computing device) for initiating training of the computational model on a data set, for instance, included in source data 445. In some embodiments, computational model application 430 may initiate jobs for execution by compute node (for instance, via one or more of cores 412a-n) for implementing, managing, training, or otherwise interacting with the computational model. In various embodiments, computational model application 430 operating on a compute node 405 may interact with various other compute nodes 405 to implement or otherwise interact with the computational model. In various embodiments, computational model application 430 may operate or otherwise control components of compute node, such as processors 410a-n, cores, 412a-n, I/O subsystem 420, communication circuitry 426, and/or the like to implement or manage the computational model.

Agent application 432 may operate to interact with data management service, for example, implemented by control node 450 via data management service application 480. In some embodiments, agent application 432 may operate to manage data requests of computational model application 430. In general, data requests may include a request for data by computational model application 430 for the functioning of the corresponding computational model. For example, a data request may include a request for training data, analysis data, updated data, and/or the like for the computational model. Computational model application 430 may generate a data request in response to an operator providing a command to train the computational model on a certain set of data (for instance, ImageNet visual data for visual object recognition, MNIST database for handwritten digits, and/or the like). Computational model application 430 may communicate data request information to an agent implemented by agent application 432. The data request information may include information for implementing the data request including, without limitation, the specific data set, preprocessing operations, number of records requested (for instance, batch size), requested data set (for instance, a data set and requested operations on that data set), and/or the like. The agent may provide the data request to the data management service to obtain input data 480 based on the data request information. In various embodiments, computational model application 430 may communicate data request information to the agent using a non-blocking interface, and then proceeds with other computations related to implementing or interacting with the computational model.

Control node 450 may be embodied as any type of server computing device, or collection of devices, capable of performing functions according to various embodiments. In some embodiments, control node 450 may be embodied as a single server computing device or a collection of servers and associated devices. For example, in some embodiments, control node 450 may include a server, for example, including a dedicated server sled with large non- volatile random access memory (NVRAM) capacity. In another example, in some embodiments, control node 450 may be embodied as a "virtual server" formed from multiple computing devices distributed across network 108 and operating in a public or private cloud. Accordingly, although control node 450 is illustrated in FIG. 2 as being embodied as a single server computing device, it should be appreciated that control node 450 may be embodied as multiple devices cooperating together to facilitate functionality according to some embodiments. Control node 450 may include a processor 460, an I/O subsystem 470, a memory 472, a data storage device 476, communication circuitry 476, and/or other components and devices commonly found in a server or similar computing device. Those individual components of control node 450 may be similar to the corresponding components of compute nodes 405, the description of which is applicable to the corresponding components of control node 450 and are not repeated herein so as not to obscure the present disclosure.

Memory 472 of control node 450 may store a data management service application 480 for execution by processor 460. Data management service application 480 may be operative to implement the data management service. In some embodiments, data management service may receive data requests from compute node 405 via an agent. Control node 450 may obtain the data corresponding to the data request and perform any associated preprocessing. In some embodiments, control node 450 may store the data corresponding to the request in memory 472 as input data 482 and provide a communication to the agent that the input data 482 is available. The agent may copy the input data 482 to memory 422 for use by computational model application 430 to input to the computational model (for instance, to an input layer of a deep learning network).

FIG. 5 illustrates an example of an operating environment 500 that may be representative of various embodiments. The operating environment 500 depicted in FIG. 5 may include one or more compute nodes 505 having a memory unit operably coupled to a processing unit 510. In some embodiments, processing unit 510 may have multiple cores 512a-n operably coupled to an accelerator 514a-n. In general, an accelerator is an autonomous element configured to perform functions delegated to it by the processing unit 510. An accelerator may be configured for specific functions and/or may be programmable. For instance, an accelerator may be configured to perform specific calculations, graphics functions (for instance, as a GPU), and/or the like. When an accelerator performs an assigned function, the processor 510 is free to devote resources to other demands.

In some embodiments, memory unit 515 may store various applications, such as a deep learning application 530 and/or an agent application 532. In general, deep learning application 530 may be configured to implement deep learning network 550. Although DL applications and networks may be used as examples, embodiments are not so limited as any type of computational model capable of operating with some embodiments are contemplated herein. Agent application 532 may operate to implement agents 534a-n, for example, executing via accelerators 514a-n. In some embodiments, accelerators 514a-n may be arranged within or coupled to a host fabric interface (HFI) of processing unit. In some embodiments, agent application 532 may implement an agent for each of cores 512a-n, for instance, executing on corresponding accelerators 514a-n. As shown in FIG. 5, operating environment may include a data management service 570. In some embodiments, data management service 570 may be a system-wide service for handling data requests 580 from compute node 505 as well as data requests 584 for jobs 525a-n being executed on other nodes.

In some embodiments, data management service 570 may be implemented via a control node (for example, via data management service application 480 of control node 450). In various embodiments, data management service 570 may be a flexible service capable of being scaled up or down on-demand to deliver a fault-tolerant solution. For example, data

management service application 480 of control node 450 may monitor for resource requirements, number of data requests 580, deep learning network 550 activity, resource 572a-n activity, in- memory database (or service database) 574 capacity and/or activity, and/or the like, to determine the demand for data management service 570 and adjust accordingly on-demand. In addition, in some embodiments, additional memory and/or memory sleds may be used to extend memory capacity available for data management service 570 depending on application and system requirements. In some embodiments, in-memory database 574 may include a distributed database. In some embodiments, in-memory database 574 may be stored in NVRAM of a control node (for example, control node 450) implementing data management service 570 (for instance, NVRAM of a control node sled). In various embodiments, agents 534a-n may have access or limited access to in-memory database 574.

In some embodiments, deep learning application 530 communicates data request information to agent 534a-n. In response, agent 534a-n transmits a data request 580 that includes or otherwise communicates the data request information to data management service 570. For example, data request 580 may include data request information such as a data set, preprocessing operations, a requested data set (requested data and requested preprocessing operations on data set (for instance, the requested data in the form of transformed data), batch size, and/or the like) Data management service 570 may determine a data status of data associated with data request 580. For example, in some embodiments, data management service 570 may determine whether data request 580 includes a request for existing data (for instance, data stored in in- memory database 574), new data (for instance, data not stored in in-memory database), and/or related data (for instance, data from the requested data set with different preprocessing). In some embodiments, in-memory database 574 stores transformed data (for example, data that has been pre-processed) or data that is otherwise suitable as input data for deep learning network 550. For example, in-memory database 574 may store data set X, which has been preprocessed with operations a and b. If data request 580 includes a request for data set X, preprocessed with operations a and b, then data request 580 is for existing data; if data request 580 includes a request for data set Y, then data request 580 is for new data; and if data request 580 is for data set X, preprocessed with operations a, b, and c, then data request 580 is for related data.

Accordingly, data requested via a data request 580 may have various data statuses, such as existing data, related data, new data, and/or the like.

If data request 580 is for new data, data management service 570 may perform an I/O operation 582 to obtain the data set from high-performance storage 560 and may perform preprocessing on the data set, for instance, using resources 572a-n to generate transformed data. Data management service 570 may store the transformed data in in-memory database 574. If data request 580 is for related data, data management service 570 may access the related data in in-memory database 574 and perform the requested operations to match data request 580 to generate transformed data, and store the transformed data in in-memory database 574. If data request 580 is for existing data 580, data management service 570 does not have to perform an operation to obtain the data.

Agent 534a-n may determine when the transformed data is available. For example, data management service 570 may communicate with agent 534a-n (for instance, via a "data ready" or other data acknowledgment signal) responsive to the availability of the transformed data in in- memory database 574. In another example, agent 534a-n may continuously monitor a data availability bit or other indicator provided by data management service 570 to indicate that the transformed data corresponding to data request 580 is available. Agent 534a-n may copy or otherwise receive the transformed data from in-memory database 574, for example, and may store the transformed data as input data 534 in memory unit 515 of compute node. In some embodiments, agent 534a-n may indicate to deep learning application 530 that input data 534 is available to be accessed by deep learning application, for example, for deep layer processing within deep learning network 550. In various embodiments, agents 534a-n may prefetch one or more sets of transformed records from data management service 570 for buffering in memory unit 515 (for instance, as input data 534) for future use by deep learning application.

In some embodiments, preprocessing of data may be performed at compute node 505. For example, for various reasons, deep learning application 530, agent application 532, and/or data management service 570 may decide to revert to performing data preprocessing at compute node 505 (for instance, due to resource availability, preprocessing capabilities (data management service 570 may not have the capability to perform a preprocessing operation that compute node 505 is capable of performing), and/or the like). For example, data management service may receive a data request and send a revert indicator to agent 534a-n to handle data request 580 (for instance, obtaining the data set and/or performing preprocessing operations). Accordingly, accelerators 514a-n may execute preprocessing operations responsive to a preprocessing operation being reverted to control node 505. In some embodiments, accelerators 514a-n may perform other operations, including data compression, decompression, and/or the like. For example, in some embodiments, transformed data may be stored in in-memory database 574 in a compressed format, for example, to conserve memory space. Accelerators 514a-n may decompress compressed transformed data, for example, in the form of messages containing transformed records received or obtained from data management service 570 in a compressed form.

Accordingly, in some embodiments, overhead and resources involved in satisfying subsequent data requests may be fully hidden by agent 534a-n and data management service 570 working in the background (for instance, with respect to deep learning application 530 and/or deep learning network 550). In addition, requests for the same data set by other jobs 525a-n may access the transformed data in in-memory database 574 without incurring additional overhead. Data management service 570 may operate to optimize, among other things, input layer operations of individual computational model training jobs or data analysis jobs. For compute node 505 and deep learning application 530, data management service 570 may operate to transform expensive I/O and data preprocessing operations to a local memory (for instance, in- memory database 574) access, providing for improved time-to-train, analysis results time, system utilization, and other benefits. Data management service 570 may also optimize high- intensity jobs, such as ensemble jobs and/or continuous-training jobs. For example, once transformed records are stored in in-memory database 574, ensemble and continuous-training jobs can directly access the transformed records with substantially reduced or even eliminated overhead. Furthermore, subsequent jobs may rely on data management service 570 to add new records to in-memory database 574 without any direct intervention from deep learning application 530 besides generating the data request information for the data request 580.

FIG. 6 illustrates an example of an operating environment 600 that may be representative of various embodiments. The operating environment 600 depicted in FIG. 6 may include one or more compute nodes 605 executing a network agent 610 (for instance, via a processor core or accelerator of compute node 605). In some embodiments, data agent 610 may interface with a computational model framework 620 (for instance, a Caffe framework) via an agent application program interface (API) 630 (see, for example, FIG. 7). Data management service 640 may provide a data management service API 632 for data agent 610 to interface with data management service 640. For example, data agent 610 may use communications formed according to data management service API 632 for accessing data stored in an in-memory database associated with data management service 640, providing data requests, and/or the like. A data management service external API 634 may be used to facilitate communications between data management service 640 and a scheduler 650 (for instance, a cluster scheduler), data sets 660 (for instance, register input data sets, data sets stored in high-performance storage 560, and/or the like), and other external entities used by data management service.

In some embodiments, a user or administrator of a computational model may use data management service external API 634 to register input data sets with data management service 640 as a one-time operation to allow data management service 640 to optimize future accesses to the data set. In various embodiments, common or shared preprocessing operations may be specified, for example via data management service external API 634, enabling data management service 640 to apply such preprocessing operations before storing transformed records. Data management service external API 634 may support updating data set 660 with new data via various processes, such as creating a full copy of an existing data set or appending new files to an existing data set. An updated data set 660 may be accessed like any other data set. In various embodiments, data management service external API 634 may be extended to allow schedulers 650, such as cluster schedulers and resource managers, to co-schedule independent jobs, for example, with similar input layer requirements to further exploit re-use of input data.

FIG. 7 illustrates a data management service agent interface according to some embodiments. More specifically, FIG. 7 depicts a data management service agent interface 702 for a Caffe DL network. Data management service interface 702 may be implemented using various configuration files or programs, including, without limitation a Caffe input layer implementation file 710, data management service Caffe input layer implementation file 715, and/or a Caffe DL topology configuration file 720. Caffe DL topology configuration file 720 generally describes the different layers of the Caffe DL topology, including the input layer. Caffe input layer implementation file 710 generally depicts pseudo-code for a typical Caffe input layer implementation. Data management service Caffe input layer implementation file 715 generally depicts pseudo-code for a Caffe input layer implementation using a data management service according to some embodiments. In general, use of a data management service according to some embodiments may allow for a higher-level abstraction for specifying the input layer of a computational model and enabling implementation to offload per-job low-level file I/O and data transformation operations for better performance and scalability.

Computational model training, such as training a Caffe DL network, inherently requires stochiasticity, which may be achieved by presenting a finite set of input files in a random order (for instance, across epochs). Caffe DL topology configuration file 720 may include hints to guide such a randomization process. In some embodiments, data management service Caffe input layer implementation file 715 may use the same hints to ensure the required randomization conditions are met when a computational model application requests transformed records.

Included herein is a set of logic flows representative of exemplary methodologies for performing novel aspects of the disclosed architecture. While, for purposes of simplicity of explanation, the one or more methodologies shown herein are shown and described as a series of acts, those skilled in the art will understand and appreciate that the methodologies are not limited by the order of acts. Some acts may, in accordance therewith, occur in a different order and/or concurrently with other acts from that shown and described herein. For example, those skilled in the art will understand and appreciate that a methodology could alternatively be represented as a series of interrelated states or events, such as in a state diagram. Moreover, not all acts illustrated in a methodology may be required for a novel implementation.

A logic flow may be implemented in software, firmware, and/or hardware. In software and firmware embodiments, a logic flow may be implemented by computer executable instructions stored on a non-transitory computer readable medium or machine readable medium, such as an optical, magnetic or semiconductor storage. The embodiments are not limited in this context.

FIG. 8 illustrates an embodiment of a logic flow 800. Logic flow 800 may be

representative of some or all of the operations executed by one or more embodiments described herein, such as operations executed by one or more of compute nodes 150, 405, 505, and/or 605. For example, logic flow 800 may generally include operations for an agent of a control node to obtain input data for a computational model.

In the illustrated embodiment shown in FIG. 8, logic flow 800 may receive data request information at block 802. For example, deep learning application 530 may communicate data request information to agent 534a-n. The data request information may include information for implementing the data request including, without limitation, the specific data set, preprocessing operations, number of records requested (for instance, batch size), and/or the like. At block 804, logic flow 804 may generate a data request. For example, agent 534a-n may transmit a data request 580 that includes or otherwise communicates the data request information to data management service 570.

Logic flow 800 may determine whether data is available at block 806. For example, agent 534a-n may determine when the transformed data is available via various processes, such as receiving a message from data management service 570 or monitoring a data availability indicator operative to indicate that the transformed data corresponding to data request 580 is available. Responsive to the data being available at block 806, logic flow 800 may access transformed data corresponding to the data request at block 808. For example, agent 534a-n may copy or otherwise receive the transformed data from in-memory database 574 (for instance, a memory of a control node implementing data management service 570). At block 810, logic flow 800 may provide the transformed data to a computational model as input data. For example, agent 534a-n may indicate to deep learning application 530 that input data 534 is available to be accessed by deep learning application, for example, for deep layer processing within deep learning network 550.

FIG. 9 illustrates an embodiment of a logic flow 900. Logic flow 900 may be

representative of some or all of the operations executed by one or more embodiments described herein, such as operations executed by control node 450 and/or data management service 140, 570, and/or 640. For example, logic flow 900 may generally include operations for a data management service (or a control node implementing a data management service) to provide input data to a requesting agent.

In the illustrated embodiment shown in FIG. 9, logic flow 900 may receive a data request from a data agent at block 902. For example, data management service 570 may receive data request 580 from agent 534a-n. Data request 580 may include or otherwise communicate data request information to data management service 570. At block 904, logic flow 900 may determine data status of requested data. For example, data management service 570 may determine the data status of data associated with data request 580. Data status may be determined by data management service 570 according to whether data request 580 includes a request for existing data (for instance, data stored in in-memory database 574), new data (for instance, data not stored in in-memory database), and/or related data (for instance, data from the requested data set with different preprocessing).

Responsive to determining that the data request is for existing data at block 906, logic flow 900 may provide transformed data to requesting agent at block 908. For example, if data request 580 is for existing data 580, the requested data is stored as transformed data in in-memory database 574. Data management service 570 may provide the requested data to agent 534a-n via various processes, such providing access to in-memory database 574, providing an availability indicator indicating that compute node 505 may start copying the data, initiating transmission of the data to compute node 505, and/or the like.

Responsive to determining that the data request is for new data at block 906, logic flow 900 may obtain data from source data at block 910. For example, data management service 570 may perform an I/O operation 582 to obtain the data set from high-performance storage 560. At block 912, logic flow 900 may preprocess data to generate transformed data. For example, data management service 570 may perform preprocessing on the data set, for instance, using resources 572a-n to generate transformed data. Logic flow 900 may store transformed data in memory at block 914. For example, data management service 570 may store the transformed data in in-memory database 574. Logic flow 900 may provide transformed data to requesting agent at block 908.

FIG. 15 illustrates an example of a storage medium 1000. Storage medium lOOOmay comprise an article of manufacture. In some examples, storage medium lOOOmay include any non-transitory computer readable medium or machine readable medium, such as an optical, magnetic or semiconductor storage. Storage medium 1000 may store various types of computer executable instructions, such as instructions to implement logic flow 800 and/or logic flow 900. Examples of a computer readable or machine readable storage medium may include any tangible media capable of storing electronic data, including volatile memory or non- volatile memory, removable or non-removable memory, erasable or non-erasable memory, writeable or re- writeable memory, and so forth. Examples of computer executable instructions may include any suitable type of code, such as source code, compiled code, interpreted code, executable code, static code, dynamic code, object-oriented code, visual code, and the like. The examples are not limited in this context.

FIG. 11 illustrates an embodiment of an exemplary computing architecture 1100 suitable for implementing various embodiments as previously described. In various embodiments, the computing architecture 1100 may comprise or be implemented as part of an electronic device. In some embodiments, the computing architecture 1100 may be representative, for example, of compute nodes 150, 405, 505, and/or 605 and control node 450. The embodiments are not limited in this context.

As used in this application, the terms "system" and "component" and "module" are intended to refer to a computer-related entity, either hardware, a combination of hardware and software, software, or software in execution, examples of which are provided by the exemplary computing architecture 1100. For example, a component can be, but is not limited to being, a process running on a processor, a processor, a hard disk drive, multiple storage drives (of optical and/or magnetic storage medium), an object, an executable, a thread of execution, a program, and/or a computer. By way of illustration, both an application running on a server and the server can be a component. One or more components can reside within a process and/or thread of execution, and a component can be localized on one computer and/or distributed between two or more computers. Further, components may be communicatively coupled to each other by various types of communications media to coordinate operations. The coordination may involve the uni-directional or bi-directional exchange of information. For instance, the components may communicate information in the form of signals communicated over the communications media. The information can be implemented as signals allocated to various signal lines. In such allocations, each message is a signal. Further embodiments, however, may alternatively employ data messages. Such data messages may be sent across various connections. Exemplary connections include parallel interfaces, serial interfaces, and bus interfaces.

The computing architecture 1100 includes various common computing elements, such as one or more processors, multi-core processors, co-processors, memory units, chipsets, controllers, peripherals, interfaces, oscillators, timing devices, video cards, audio cards, multimedia input/output (I/O) components, power supplies, and so forth. The embodiments, however, are not limited to implementation by the computing architecture 1100.

As shown in FIG. 11, the computing architecture 1100 comprises a processing unit 1104, a system memory 1106 and a system bus 1108. The processing unit 1104 can be any of various commercially available processors, including without limitation an AMD® Athlon®, Duron® and Opteron® processors; ARM® application, embedded and secure processors; IBM® and Motorola® DragonBall® and PowerPC® processors; IBM and Sony® Cell processors; Intel® Celeron®, Core (2) Duo®, Itanium®, Pentium®, Xeon®, and XScale® processors; and similar processors. Dual microprocessors, multi-core processors, and other multi-processor

architectures may also be employed as the processing unit 1104.

The system bus 1108 provides an interface for system components including, but not limited to, the system memory 1106 to the processing unit 1104. The system bus 1108 can be any of several types of bus structure that may further interconnect to a memory bus (with or without a memory controller), a peripheral bus, and a local bus using any of a variety of commercially available bus architectures. Interface adapters may connect to the system bus 1108 via a slot architecture. Example slot architectures may include without limitation

Accelerated Graphics Port (AGP), Card Bus, (Extended) Industry Standard Architecture ((E)ISA), Micro Channel Architecture (MCA), NuBus, Peripheral Component Interconnect (Extended) (PCI(X)), PCI Express, Personal Computer Memory Card International Association (PCMCIA), and the like.

The system memory 1106 may include various types of computer-readable storage media in the form of one or more higher speed memory units, such as read-only memory (ROM), random-access memory (RAM), dynamic RAM (DRAM), Double-Data-Rate DRAM

(DDRAM), synchronous DRAM (SDRAM), static RAM (SRAM), programmable ROM

(PROM), erasable programmable ROM (EPROM), electrically erasable programmable ROM (EEPROM), flash memory, polymer memory such as ferroelectric polymer memory, ovonic memory, phase change or ferroelectric memory, silicon-oxide-nitride-oxide-silicon (SONOS) memory, magnetic or optical cards, an array of devices such as Redundant Array of Independent Disks (RAID) drives, solid state memory devices (e.g., USB memory, solid state drives (SSD) and any other type of storage media suitable for storing information. In the illustrated embodiment shown in FIG. 11, the system memory 1106 can include non- volatile memory 1110 and/or volatile memory 1112. A basic input/output system (BIOS) can be stored in the non- volatile memory 1110.

The computer 1102 may include various types of computer-readable storage media in the form of one or more lower speed memory units, including an internal (or external) hard disk drive (HDD) 1114, a magnetic floppy disk drive (FDD) 1116 to read from or write to a removable magnetic disk 1118, and an optical disk drive 1120 to read from or write to a removable optical disk 1122 (e.g., a CD-ROM or DVD). The HDD 1114, FDD 1116 and optical disk drive 1120 can be connected to the system bus 1108 by a HDD interface 1124, an FDD interface 1126 and an optical drive interface 1128, respectively. The HDD interface 1124 for external drive implementations can include at least one or both of Universal Serial Bus (USB) and IEEE 1384 interface technologies.

The drives and associated computer-readable media provide volatile and/or nonvolatile storage of data, data structures, computer-executable instructions, and so forth. For example, a number of program modules can be stored in the drives and memory units 1110, 1112, including an operating system 1130, one or more application programs 1132, other program modules 1134, and program data 1136. In one embodiment, the one or more application programs 1132, other program modules 1134, and program data 1136 can include, for example, the various applications and/or components of compute nodes 150, 405, 505, and/or 605 and control node 450.

A user can enter commands and information into the computer 1102 through one or more wire/wireless input devices, for example, a keyboard 1138 and a pointing device, such as a mouse 1140. Other input devices may include microphones, infra-red (IR) remote controls, radio-frequency (RF) remote controls, game pads, stylus pens, card readers, dongles, finger print readers, gloves, graphics tablets, joysticks, keyboards, retina readers, touch screens (e.g., capacitive, resistive, etc.), trackballs, trackpads, sensors, styluses, and the like. These and other input devices are often connected to the processing unit 1104 through an input device interface 1142 that is coupled to the system bus 1108, but can be connected by other interfaces such as a parallel port, IEEE 1384 serial port, a game port, a USB port, an IR interface, and so forth.

A monitor 1144 or other type of display device is also connected to the system bus 1108 via an interface, such as a video adaptor 1146. The monitor 1144 may be internal or external to the computer 1102. In addition to the monitor 1144, a computer typically includes other peripheral output devices, such as speakers, printers, and so forth.

The computer 1102 may operate in a networked environment using logical connections via wire and/or wireless communications to one or more remote computers, such as a remote computer 1148. The remote computer 1148 can be a workstation, a server computer, a router, a personal computer, portable computer, microprocessor-based entertainment appliance, a peer device or other common network node, and typically includes many or all of the elements described relative to the computer 1102, although, for purposes of brevity, only a

memory/storage device 1150 is illustrated. The logical connections depicted include wire/wireless connectivity to a local area network (LAN) 1152 and/or larger networks, for example, a wide area network (WAN) 1154. Such LAN and WAN networking environments are commonplace in offices and companies, and facilitate enterprise-wide computer networks, such as intranets, all of which may connect to a global communications network, for example, the Internet.

When used in a LAN networking environment, the computer 1102 is connected to the LAN 1152 through a wire and/or wireless communication network interface or adaptor 1156. The adaptor 1156 can facilitate wire and/or wireless communications to the LAN 1152, which may also include a wireless access point disposed thereon for communicating with the wireless functionality of the adaptor 1156.

When used in a WAN networking environment, the computer 1102 can include a modem 1158, or is connected to a communications server on the WAN 1154, or has other means for establishing communications over the WAN 1154, such as by way of the Internet. The modem 1158, which can be internal or external and a wire and/or wireless device, connects to the system bus 1108 via the input device interface 1142. In a networked environment, program modules depicted relative to the computer 1102, or portions thereof, can be stored in the remote memory/storage device 1150. It will be appreciated that the network connections shown are exemplary and other means of establishing a communications link between the computers can be used.

The computer 1102 is operable to communicate with wire and wireless devices or entities using the IEEE 802 family of standards, such as wireless devices operatively disposed in wireless communication (e.g., IEEE 802.16 over-the-air modulation techniques). This includes at least Wi-Fi (or Wireless Fidelity), WiMax, and Bluetooth™ wireless technologies, among others. Thus, the communication can be a predefined structure as with a conventional network or simply an ad hoc communication between at least two devices. Wi-Fi networks use radio technologies called IEEE 802. l lx (a, b, g, n, etc.) to provide secure, reliable, fast wireless connectivity. A Wi-Fi network can be used to connect computers to each other, to the Internet, and to wire networks (which use IEEE 802.3-related media and functions).

One or more aspects of at least one embodiment may be implemented by representative instructions stored on a machine-readable medium which represents various logic within the processor, which when read by a machine causes the machine to fabricate logic to perform the techniques described herein. Such representations, known as "IP cores" may be stored on a tangible, machine readable medium and supplied to various customers or manufacturing facilities to load into the fabrication machines that actually make the logic or processor. Some embodiments may be implemented, for example, using a machine -readable medium or article which may store an instruction or a set of instructions that, if executed by a machine, may cause the machine to perform a method and/or operations in accordance with the embodiments. Such a machine may include, for example, any suitable processing platform, computing platform, computing device, processing device, computing system, processing system, computer, processor, or the like, and may be implemented using any suitable combination of hardware and/or software. The machine-readable medium or article may include, for example, any suitable type of memory unit, memory device, memory article, memory medium, storage device, storage article, storage medium and/or storage unit, for example, memory, removable or nonremovable media, erasable or non-erasable media, writeable or re-writeable media, digital or analog media, hard disk, floppy disk, Compact Disk Read Only Memory (CD-ROM), Compact Disk Recordable (CD-R), Compact Disk Rewriteable (CD-RW), optical disk, magnetic media, magneto-optical media, removable memory cards or disks, various types of Digital Versatile Disk (DVD), a tape, a cassette, or the like. The instructions may include any suitable type of code, such as source code, compiled code, interpreted code, executable code, static code, dynamic code, encrypted code, and the like, implemented using any suitable high-level, low- level, object-oriented, visual, compiled and/or interpreted programming language.

The following include examples according to some embodiments: Example 1 is an apparatus, comprising at least one memory, and logic, at least a portion of the logic comprised in hardware coupled to the at least one memory, the logic to enable a data management service operative to receive a data request from a data agent, the data request comprising data request information indicating a requested data set, determine a data status of the requested data set, the data status comprising one of existing data responsive to the requested data set being stored in a service database, or new data responsive to the requested data set not being stored in the service database, and responsive to the requested data set having the data status of new data, the data management service operative to access source data corresponding to the requested data set, and perform at least one preliminary operation on the source data to generate transformed data.

Example 2 is the apparatus of Example 1, wherein the at least one memory comprises at least a portion of the service database.

Example 3 is the apparatus of Example 1, the data request information comprises at least one of at least one data set, at least one preprocessing operation, or a number of requested records.

Example 4 is the apparatus of Example 1, the requested data set comprises a source data set preprocessed with at least one preliminary operation.

Example 5 is the apparatus of Example 1, wherein the logic is further to enable the data management service operative to store the transformed data in the service database.

Example 6 is the apparatus of Example 1, wherein the logic is further to enable the data management service operative to copy the transformed data corresponding to the data request to an agent memory accessible by the data agent.

Example 7 is the apparatus of Example 1, responsive to the requested data set having the data status of existing data, wherein the logic is further to enable the data management service operative to provide the transformed data to the data agent corresponding to the data request from the service database.

Example 8 is the apparatus of Example 1, wherein the logic is further to enable the data management service operative to manage data requests for training of a computational model.

Example 9 is the apparatus of Example 1, the data request comprises a request for data for training a computational model.

Example 10 is the apparatus of Example 1, the data request comprises a request for data for training a computational model comprising a deep learning (DL) computational model.

Example 11 is the apparatus of Example 1, the data request comprises a request for data for training a computational model comprising at least one of a deep learning (DL) computational model, a convolutional neural network (CNN), or a recurrent neural network (RNN). Example 12 is the apparatus of Example 1, wherein the logic is further to enable the data management service operative to provide a data availability indicator to the data agent responsive to the transformed data being available in the at least one memory.

Example 13 is the apparatus of Example 1, wherein the logic is further to enable the data management service operative to compress the transformed data.

Example 14 is the apparatus of Example 1, wherein the logic is further to enable the data management service operative to provide a revert indicator to the data agent to handle the data request via the data agent.

Example 15 is the apparatus of Example 1, wherein the logic is further to enable the data management service operative to provide a revert indicator to the data agent to handle the data request via the data agent based on one of resource availability or data management service preprocessing capabilities.

Example 16 is the apparatus of Example 1, the at least one preliminary operation comprises at least one of randomization, formatting, resizing, or translation.

Example 17 is the apparatus of Example 1, wherein the logic is further to enable the data management service operative to receive a data set for registration with data management service.

Example 18 is a system, comprising the apparatus according to any of Examples 1 - 17, and at least one transceiver.

Example 19 is a computer-implemented method, comprising, operations, executed by a processor, of receiving a data request from a data agent, the data request comprising data request information indicating a requested data set, determining a data status of the requested data set, the data status comprising one of existing data responsive to the requested data being stored in a service database, or new data responsive to the requested data not being stored in the service database, and responsive to the requested data set having the data status of new data accessing source data corresponding to the requested data set, and performing at least one preliminary operation on the source data to generate transformed data.

Example 20 is the computer-implemented method of Example 19, the data request information comprises at least one of at least one data set, at least one preprocessing operation, or a number of requested records.

Example 21 is the computer-implemented method of Example 19, the requested data set comprises a source data set preprocessed with at least one preliminary operation.

Example 22 is the computer-implemented method of Example 19, further comprising storing the transformed data in the service database. Example 23 is the computer-implemented method of Example 19, further comprising coping the transformed data corresponding to the data request to an agent memory accessible by the data agent.

Example 24 is the computer-implemented method of Example 19, responsive to the requested data set having the data status of existing data, further comprising providing the transformed data to the data agent corresponding to the data request from the service database.

Example 25 is the computer-implemented method of Example 19, further comprising manage data requests for training of a computational model.

Example 26 is the computer-implemented method of Example 19, the data request comprises a request for data for training a computational model.

Example 27 is the computer-implemented method of Example 19, the data request comprises a request for data for training a computational model comprising a deep learning (DL) computational model.

Example 28 is the computer-implemented method of Example 19, the data request comprises a request for data for training a computational model comprising at least one of a deep learning (DL) computational model, a convolutional neural network (CNN), or a recurrent neural network (RNN).

Example 29 is the computer-implemented method of Example 19, further comprising providing a data availability indicator to the data agent responsive to the transformed data being available in the at least one memory.

Example 30 is the computer-implemented method of Example 19, further comprising compressing the transformed data.

Example 31 is the computer- implemented method of Example 19, further comprising providing a revert indicator to the data agent to handle the data request via the data agent.

Example 32 is the computer-implemented method of Example 19, further comprising providing a revert indicator to the data agent to handle the data request via the data agent based on one of resource availability or data management service preprocessing capabilities.

Example 33 is the computer-implemented method of Example 19, the at least one preliminary operation comprising at least one of randomization, formatting, resizing, or translation.

Example 34 is the computer-implemented method of Example 19, further comprising receiving a data set for registration with data management service.

Example 35 is a non-transitory computer-readable storage medium that stores computer- executable instructions for execution by processing circuitry of a control node, the computer- executable instructions to cause the control node to enable a data management service operative to receive a data request from a data agent, the data request comprising data request information indicating a requested data set, determine a data status of the requested data set, the data status comprising one of existing data responsive to the requested data set being stored in a service database, or new data responsive to the requested data set not being stored in the service database, and responsive to the requested data set having the data status of new data, the data management service operative to access source data corresponding to the requested data set, and perform at least one preliminary operation on the source data to generate transformed data.

Example 36 is the non-transitory computer-readable storage medium of Example 35, the data request information comprising at least one of at least one data set, at least one

preprocessing operation, or a number of requested records.

Example 37 is the non-transitory computer-readable storage medium of Example 35, the requested data set comprising a source data set preprocessed with at least one preliminary operation.

Example 38 is the non-transitory computer-readable storage medium of Example 35, the computer-executable instructions to cause the control node to enable the data management service operative to store the transformed data in the service database.

Example 39 is the non-transitory computer-readable storage medium of Example 35, the computer-executable instructions to cause the control node to enable the data management service operative to copy the transformed data corresponding to the data request to an agent memory accessible by the data agent.

Example 40 is the non-transitory computer-readable storage medium of Example 35, responsive to the requested data set having the data status of existing data, the computer- executable instructions to cause the control node to enable the data management service operative to provide the transformed data to the data agent corresponding to the data request from the service database.

Example 41 is the non-transitory computer-readable storage medium of Example 35, the computer-executable instructions to cause the control node to enable the data management service operative to manage data requests for training of a computational model.

Example 42 is the non-transitory computer-readable storage medium of Example 35, the data request comprising a request for data for training a computational model.

Example 43 is the non-transitory computer-readable storage medium of Example 35, the data request comprising a request for data for training a computational model comprising a deep learning (DL) computational model.

Example 44 is the non-transitory computer-readable storage medium of Example 35, the data request comprising a request for data for training a computational model comprising at least one of a deep learning (DL) computational model, a convolutional neural network (CNN), or a recurrent neural network (RNN).

Example 45 is the non-transitory computer-readable storage medium of Example 35, the computer-executable instructions to cause the control node to enable the data management service operative to provide a data availability indicator to the data agent responsive to the transformed data being available in the at least one memory.

Example 46 is the non-transitory computer-readable storage medium of Example 35, the computer-executable instructions to cause the control node to enable the data management service operative to compress the transformed data.

Example 47 is the non-transitory computer-readable storage medium of Example 35, the computer-executable instructions to cause the control node to enable the data management service operative to provide a revert indicator to the data agent to handle the data request via the data agent.

Example 48 is the non-transitory computer-readable storage medium of Example 35, the computer-executable instructions to cause the control node to enable the data management service operative to provide a revert indicator to the data agent to handle the data request via the data agent based on one of resource availability or data management service preprocessing capabilities.

Example 49 is the non-transitory computer-readable storage medium of Example 35, the at least one preliminary operation comprising at least one of randomization, formatting, resizing, or translation.

Example 50 is the non-transitory computer-readable storage medium of Example 35, the computer-executable instructions to cause the control node to enable the data management service operative to receive a data set for registration with data management service.

Example 51 is an apparatus, comprising a data request handling means to receive a data request from a data agent, the data request comprising data request information indicating a requested data set, a data management service means operative to determine a data status of the requested data set, the data status comprising one of existing data responsive to the requested data being stored in a service database, or new data responsive to the requested data not being stored in the service database, and responsive to the requested data set having the data status of new data, the data management service operative to access source data corresponding to the requested data set, and perform at least one preliminary operation on the source data to generate transformed data.

Example 52 is the apparatus of Example 51, further comprising at least one memory means to store at least a portion of the service database. Example 53 is the apparatus of Example 51, the data request information comprising at least one of at least one data set, at least one preprocessing operation, or a number of requested records.

Example 54 is the apparatus of Example 51, the requested data set comprising a source data set preprocessed with at least one preliminary operation.

Example 55 is the apparatus of Example 51, the data management service means is further to store the transformed data in the service database.

Example 56 is the apparatus of Example 51, the data management service means is further to copy the transformed data corresponding to the data request to an agent memory accessible by the data agent.

Example 57 is the apparatus of Example 51, responsive to the requested data set having the data status of existing data, the data management service means is further to provide the transformed data to the data agent corresponding to the data request from the service database.

Example 58 is the apparatus of Example 51, the data management service means is further to manage data requests for training of a computational model.

Example 59 is the apparatus of Example 51, the data request comprising a request for data for training a computational model.

Example 60 is the apparatus of Example 51, the data request comprising a request for data for training a computational model comprising a deep learning (DL) computational model.

Example 61 is the apparatus of Example 51, the data request comprising a request for data for training a computational model comprising at least one of a deep learning (DL)

computational model, a convolutional neural network (CNN), or a recurrent neural network (RNN).

Example 62 is the apparatus of Example 51, the data management service means is further to provide a data availability indicator to the data agent responsive to the transformed data being available in the at least one memory.

Example 63 is the apparatus of Example 51, the data management service means is further to compress the transformed data.

Example 64 is the apparatus of Example 51, the data management service means is further to provide a revert indicator to the data agent to handle the data request via the data agent.

Example 65 is the apparatus of Example 51, the data management service means is further to provide a revert indicator to the data agent to handle the data request via the data agent based on one of resource availability or data management service preprocessing capabilities.

Example 66 is the apparatus of Example 51, the at least one preliminary operation comprising at least one of randomization, formatting, resizing, or translation. Example 67 is the apparatus of Example 51, the data management service means is further to receive a data set for registration with data management service.

Example 68 is a system, comprising the apparatus according to any of Examples 51 - 67, and at least one transceiver.

Example 69 is an apparatus, comprising at least one memory, and logic, at least a portion of the logic comprised in hardware coupled to the at least one memory, the logic to enable a data agent operative to receive data request information, the data request information comprising a requested data set for processing by a computational model, provide a data request comprising the data request information to a data management service, receive an availability indicator that transformed data corresponding to the data request is available in a service database associated with the data management service, and access the transformed data.

Example 70 is the apparatus of Example 69, comprising at least one processor circuit having at least one core, the at least one core operative to execute the data agent.

Example 71 is the apparatus of Example 69, comprising at least one processor circuit operably coupled to at least one accelerator, the at least one accelerator operative to execute the data agent.

Example 72 is the apparatus of Example 69, wherein the logic is further to enable the data agent operative to provide the transformed data to the computational model as input data.

Example 73 is the apparatus of Example 69, the data request information comprising at least one of at least one data set, at least one preprocessing operation, or a number of requested records.

Example 74 is the apparatus of Example 69, wherein the logic is further to enable the data agent operative to receive a copy of the transformed data corresponding to the data request from the data management service.

Example 75 is the apparatus of Example 69, the data request comprising a request for data for training a computational model comprising at least one of a deep learning (DL)

computational model, a convolutional neural network (CNN), or a recurrent neural network (RNN).

Example 76 is the apparatus of Example 69, wherein the logic is further to enable the data agent operative to receive a data availability indicator from the data management service responsive to the transformed data being available at the data management service.

Example 77 is the apparatus of Example 69, wherein the logic is further to enable the data agent operative to receive a revert indicator from the data management service to handle the data request via the data agent. Example 78 is the apparatus of Example 69, wherein the logic is further to enable the data agent operative to generate the transformed data responsive to receiving a revert indicator from the data management service.

Example 79 is a system, comprising the apparatus according to any of Examples 69 - 78, and at least one transceiver.

Example 80 is a computer-implemented method, comprising, operations, executed by a processor, of receiving data request information, the data request information comprising a requested data set for processing by a computational model, providing a data request comprising the data request information to a data management service, receiving an availability indicator that transformed data corresponding to the data request is available in a service database associated with the data management service, and accessing the transformed data.

Example 81 is the computer- implemented method of Example 80, further comprising providing the transformed data to the computational model as input data.

Example 82 is the computer-implemented method of Example 80, the data request information comprising at least one of at least one data set, at least one preprocessing operation, or a number of requested records.

Example 83 is the computer-implemented method of Example 80, further comprising receiving a copy of the transformed data corresponding to the data request from the data management service.

Example 84 is the computer-implemented method of Example 80, the data request comprising a request for data for training a computational model comprising at least one of a deep learning (DL) computational model, a convolutional neural network (CNN), or a recurrent neural network (RNN).

Example 85 is the computer-implemented method of Example 80, further comprising receiving a data availability indicator from the data management service responsive to the transformed data being available at the data management service.

Example 86 is the computer-implemented method of Example 80, further comprising receiving a revert indicator from the data management service to handle the data request via the data agent.

Example 87 is the computer-implemented method of Example 80, further comprising generating the transformed data responsive to receiving a revert indicator from the data management service.

Example 88 is a non-transitory computer-readable storage medium that stores computer- executable instructions for execution by processing circuitry of a compute node, the computer- executable instructions to cause the compute node to enable a data agent operative to receive data request information, the data request information comprising a requested data set for processing by a computational model, provide a data request comprising the data request information to a data management service, receive an availability indicator that transformed data corresponding to the data request is available in a service database associated with the data management service, and access the transformed data.

Example 89 is the non-transitory computer-readable storage medium of Example 88, the computer-executable instructions to cause the compute node to enable the data agent operative to provide the transformed data to the computational model as input data.

Example 90 is the non-transitory computer-readable storage medium of Example 88, the data request information comprising at least one of at least one data set, at least one

preprocessing operation, or a number of requested records.

Example 91 is the non-transitory computer-readable storage medium of Example 88, the computer-executable instructions to cause the compute node to enable the data agent operative to receive a copy of the transformed data corresponding to the data request from the data management service.

Example 92 is the non-transitory computer-readable storage medium of Example 88, the data request comprising a request for data for training a computational model comprising at least one of a deep learning (DL) computational model, a convolutional neural network (CNN), or a recurrent neural network (RNN).

Example 93 is the non-transitory computer-readable storage medium of Example 88, the computer-executable instructions to cause the compute node to enable the data agent operative to receive a data availability indicator from the data management service responsive to the transformed data being available at the data management service.

Example 94 is the non-transitory computer-readable storage medium of Example 88, the computer-executable instructions to cause the compute node to enable the data agent operative to receive a revert indicator from the data management service to handle the data request via the data agent.

Example 95 is the non-transitory computer-readable storage medium of Example 88, the computer-executable instructions to cause the compute node to enable the data agent operative to generate the transformed data responsive to receiving a revert indicator from the data management service.

Example 96 is an apparatus, comprising a data request manager means to receive data request information, the data request information comprising a requested data set for processing by a computational model, and a data agent means to provide a data request comprising the data request information to a data management service, receive an availability indicator that transformed data corresponding to the data request is available in a service database associated with the data management service, and access the transformed data.

Example 97 is the apparatus of Example 96, further comprising a data input means to provide the transformed data to the computational model as input data.

Example 98 is the apparatus of Example 96, the data request information comprising at least one of at least one data set, at least one preprocessing operation, or a number of requested records.

Example 99 is the apparatus of Example 96, the data agent means is further to receive a copy of the transformed data corresponding to the data request from the data management service.

Example 100 is the apparatus of Example 96, the data request comprising a request for data for training a computational model comprising at least one of a deep learning (DL)

computational model, a convolutional neural network (CNN), or a recurrent neural network (RNN).

Example 101 is the apparatus of Example 96, the data agent means is further to receive a data availability indicator from the data management service responsive to the transformed data being available at the data management service.

Example 102 is the apparatus of Example 96, the data agent means is further to receive a revert indicator from the data management service to handle the data request via the data agent.

Example 103 is the apparatus of Example 96, the data agent means is further to generate the transformed data responsive to receiving a revert indicator from the data management service.

Example 104 is a system, comprising the apparatus according to any of Examples 96 - 103, and at least one transceiver.

It should be noted that the methods described herein do not have to be executed in the order described, or in any particular order. Moreover, various activities described with respect to the methods identified herein can be executed in serial or parallel fashion.

Although specific embodiments have been illustrated and described herein, it should be appreciated that any arrangement calculated to achieve the same purpose may be substituted for the specific embodiments shown. This disclosure is intended to cover any and all adaptations or variations of various embodiments. It is to be understood that the above description has been made in an illustrative fashion, and not a restrictive one. Combinations of the above

embodiments, and other embodiments not specifically described herein will be apparent to those of skill in the art upon reviewing the above description. Thus, the scope of various embodiments includes any other applications in which the above compositions, structures, and methods are used.

It is emphasized that the Abstract of the Disclosure is provided to comply with 37 C.F.R. § 1.72(b), requiring an abstract that will allow the reader to quickly ascertain the nature of the technical disclosure. It is submitted with the understanding that it will not be used to interpret or limit the scope or meaning of the claims. In addition, in the foregoing Detailed Description, it can be seen that various features are grouped together in a single embodiment for the purpose of streamlining the disclosure. This method of disclosure is not to be interpreted as reflecting an intention that the claimed embodiments require more features than are expressly recited in each claim. Rather, as the following claims reflect, inventive subject matter lies in less than all features of a single disclosed embodiment. Thus the following claims are hereby incorporated into the Detailed Description, with each claim standing on its own as a separate preferred embodiment. In the appended claims, the terms "including" and "in which" are used as the plain- English equivalents of the respective terms "comprising" and "wherein," respectively.

Moreover, the terms "first," "second," and "third," etc. are used merely as labels, and are not intended to impose numerical requirements on their objects.

Although the subject matter has been described in language specific to structural features and/or methodological acts, it is to be understood that the subject matter defined in the appended claims is not necessarily limited to the specific features or acts described above. Rather, the specific features and acts described above are disclosed as example forms of implementing the claims.