The journey of the reference architecture
This chapter describes the journey of the reference architecture for genomics.
This chapter contains the following topics:
2.1 The history of IBM Reference Architecture
Key stakeholders in personalized medicine initiatives depend on a reliable and flexible platform that meets their diverse data and analytics needs:
Clinical researchers looking for the actionable biomarkers
Scientists in pharma research and development organizations progressing potential drugs through clinical trials
Physicians in hospitals delivering precision medicine treatments that give patients the best outcomes
IBM Reference Architecture for High Performance Data and AI in Healthcare and Life Sciences (formerly IBM Reference Architecture for Genomics) is an end-to-end architecture that is designed to address the common requirements of organizations pursuing genomics and personalized medicine initiatives in biomedical research.
2.1.1 First-generation reference architecture
In 2013, IBM designed the first enterprise architecture for high-performance computing (HPC) in support of the emerging genomics initiative at MD Anderson Cancer Center. The architecture addressed the critical requirement to provide a high-performance and scalable platform for computational chemistry, bioinformatics, imaging, and other analytical workloads.
Because there were multiple systems involved, we needed to make the storage infrastructure globally and continuously available to serve all of the diverse data needs currently and for years to come. Along with the mission-critical need to orchestrate a large compute environment and complicated workloads, we captured and addressed these requirements into a blueprint that we later called Reference Architecture for Genomics in an IBM Redpaper published in 2015.
In this first-generation architecture for genomics, IBM designed the Datahub as an abstraction layer for handling demanding genomics requirements, such as high-throughput data landing, information lifecycle management, and global name space regardless of sharing protocol. These requirements can sometimes be met easily on a single workstation or small cluster, but the capability to handle hundreds of servers and petabytes of data is what made Datahub unique and essential.
What made Datahub even more valuable was its intrinsic scalability to start small (or big) and grow and scale out rapidly based on the workloads. This turned out to be the most important aspect of precision medicine and genomics workloads: as the next-generation sequencing technologies were rapidly advancing, the data and workloads can grow at a rate of 100% every six months.
Datahub fulfills these requirements through software in concert with storage building blocks (flash, disk, and tape library). At this point, we were already able to take advantage of best practices from other institutions (for example, Mount Sinai) that used tiered storage building blocks to land and then move data based on its attributes, such as size and “temperature” (time since last access or creation).
We also designed the Orchestrator as the second abstraction layer for handling application requirements, and mapped it towards the computing building blocks. It has specified functions, such as parallel computing and workflow automation, which can be fulfilled by software in concert with other computing resources, such as an HPC cluster or virtual machine farms.
This software-defined blueprint was essential to future-proof the infrastructure and sustain the usability of applications. This blueprint is designed so that the hardware building blocks can be expanded or replaced without impacting the operation of the system, the running of the application, and ultimately the user experience.
Between 2013 and 2014, we also tested the reference architecture of genomics at Sidra Medicine in Qatar as part of the Qatar Genome Project. This was when we discovered more strategic values of a referenceable architecture. As illustrated in the case study with Sidra later, the HPC infrastructure started small but grew rapidly as the Qatar Genome project got funded and took off on scale. The architecture served as a roadmap that guided every phase of organic growth and infrastructure expansion, at the same time maintaining the integrity and sustainability of the applications, analytics, workflow and databases.
The architecture also ensured interoperability of the applications. When Sidra decided to collaborate with MD Anderson on a research project/publication, they shared a genomic pipeline based on the Orchestrator and underlying software tools. Given the common architecture patterns and building blocks, the two institutions were able to quickly rebuild the workflow and co-publish the results of genomic analysis using GATK best practice pipeline.
2.1.2 Second-generation reference architecture
Since the launch of the reference architecture for genomics, IBM continued to evolve and optimize the reference architecture to reflect the changing needs and challenges for the healthcare and life sciences industries. We harnessed lessons learned and best practices from our clients, industry collaborators, and IBM Business Partners worldwide. Many of these clients were early adopters of precision medicine, battling in the frontiers of medicine, biotechnology, and pharma to discover and advance care for cancers and rare diseases.
We also conducted survey among users from various industry groups and consortiums. In the survey we inquired about the most challenging aspects of adopting and using infrastructure and informatics tools in support of their precision medicine undertakings. We also asked about the fields of research or clinical practice these users represent.
From the results of the survey we can see that although many researchers are in the fields of -omics (genomics, metabolomics, proteomics, and so on), there is a trend of increasing representation from non-omics fields such as medical imaging, clinical analytics, biostatistics, and even real-world evidence (RWE) and internet of things (IoT).
The need to handle and analyze explosive amount of data and collaborate across fields started to bring more and more users to work together and share their experiences. We are fortunate to witness and document these challenges and needs from people who are in the frontiers of precision medicine.
So what are some of their top challenges?
The reference architecture must meet the following requirements:
High-performance. Users want fast and faster time-to-results. The results can be a genomics analysis of clinical variants for patients, or an AI model developed for diagnosing Alzheimer’s Disease, or new biomarkers for cancer. In all of these cases, traditional desktop computing can no longer keep up with the workloads or the data storage. Often, users have to wait for days or even weeks for data to be transferred and loaded, then an even longer time for processing and analysis.
Low-cost. Many of the users we surveyed emphasized the need to start small in terms of the initial platform, and to be able to control the cost during an expansion. Because most projects were funded by external grants, or are internal projects subject to annual assessment, having low or controlled costs can become a show stopper for many projects.
Because the data needs to be stored and accessed almost forever, this requirement adds a baseline cost that is guaranteed to grow over time. In addition, the location of the data often determines the computational needs, so the choice of data storage can be more critical than most users anticipate at the beginning of the projects.
Easy-to-use. Some users reflected in the survey that they learned about the modern big data and AI toolings, such as Spark, Hadoop, and Tensorflow, but most of these tools require a rather steep learning curve or high threshold of adoption. Users want to spend more time analyzing and thinking about the research problem than learning to program, debug a file system, or operate a complex IT platform.
Collaborative. The users desire collaboration across institutional or geographic boundaries without compromising protected healthcare and private, identifiable information. As parallel discovery based on an ever-growing data set is becoming a norm, more users are experimenting with the public cloud. However, not all of their data or metadata can be shared outside their institutions.
Even within the same institution or team, collaboration for sharing resources or data was lacking. As an example, one customer told us that they used a Slack channel to share the usage of a GPU server for deep learning workloads. “Wouldn’t it be great if a team of data scientists could share an ‘unlimited’ pool of resources for compute and data?” they asked during the review of the survey.
With this user feedback and field input in mind, we made a large overhaul of the reference architecture in the last two years in three main areas:
Data-driven
Cloud-ready
AI-capable
We also renamed the reference architecture to High Performance Data and AI to reflect these changes and focuses.
2.2 Overview of IBM Reference Architecture for High Performance Data and AI
Scaling high-performance technical platforms to support growing data volumes and diverse applications, and at the same time continuing to accelerate workloads and minimizing IT costs, requires a flexible yet tightly coordinated framework for data access, computing, and storage. This section describes how the IBM Reference Architecture for High Performance Data and AI helps solve the challenges by providing a solution to benefit users and IT providers.
2.2.1 Challenges
With the arrival of precision medicine and clinical genomics, biomedical research institutes and healthcare providers, such as hospitals, cancer centers, genome centers, pharma R & D and biotech companies are dealing with enormous data growth. This data, mainly unstructured, is flowing at a rate of terabytes per day, or even per hour, from fast-growing sources of instruments, devices, and digital platforms.
This data needs to be captured, labeled, cleaned, stored, managed, analyzed, and archived. The disparate file types generated by different research tools and environments create silos that impede data access, drive down efficiency, drive up costs, and slow times to insight.
The volume and complexity of data also drives the adoption of modern analytical frameworks, such as big data (Hadoop and Spark) and AI (machine learning and deep learning), for thousands off research and business applications (for example, genomics, bioinformatics, imaging, translational, and clinical). The collaborative nature of the biomedical research also facilitates global data sharing in a multicloud environment.
Researchers, clinicians and data scientists struggle to deal with the “ocean” of data and application juggling. Because of this struggle, it is imperative for the infrastructure and underlying IT architecture to be transformed and become agile, data-driven, and application-optimized. The architecture must become data and application ready.
2.2.2 The solution
The IBM High Performance Data and AI (HPDA) architecture for healthcare and life sciences, shown in Figure 2-1 on page 14, is built on the IBM history of delivering best practices in HPC. In fact, the basic HPDA framework and building blocks were used to construct Summit and Sierra, which are currently two of the world’s most powerful supercomputers for data
and AI.
The architecture is designed to help healthcare and life science organizations easily scale and expand compute and storage resources independently as demand grows, to ensure maximum performance and business continuity. It supports the wide range of development frameworks and applications required for industry innovation with optimized hardware as a foundation, without unnecessary reinvestments in technology.
The HPDA is based on software-defined infrastructure solutions that offer advanced policy-driven data and resource management capabilities. It has two key layers, one each for managing storage resources and compute resources. Currently, it can support major computing paradigms, such as traditional HPC, data analytics, cognitive computing, machine learning, and deep learning.
These capabilities then become the infrastructure and informatics foundation for developing and deploying applications for various fields, such as genomics, imaging, clinical, real-world evidence (RWE), and IoT. The HPDA architecture can be implemented on-premise in a local data center, or off-premise in a private or public cloud. We have also demonstrated advanced use cases and platforms that can be deployed as a hybrid cloud.
Figure 2-1 IBM Reference Architecture for High-Performance Data Analytics and AI
Datahub
The HPDA has a Datahub layer designed to manage the deluge of unstructured data that is pouring into and siloed in disparate systems and locations. We define five key functions in handling the full lifecycle of data and metadata:
High-performance ingesting
Policy-based auto tiering
Multiprotocol sharing
Active-active peering
Metadata cataloging
These five mission-critical functions anchor infrastructural capabilities for data to be captured rapidly, stored safely, accessed transparently, and shared globally, wherever and whenever.
The data ingest function is the most basic yet important one: a large amount of raw genomic, imaging, and sensor data needs to be quickly ingested into the infrastructure from the various data sources. These sources include genomic sequencers, high content screening scanners, microscopes, and IoT devices.
One essential requirement for high-performance data ingestion is the ability to load data in parallel, so that a large file can be split into many blocks and written into the target storage device using a parallel file system. The file system must also be able to handle many thousands or even millions of files concurrently. IBM Spectrum Scale is one such file system that meets the requirement for high performance data ingestion.
As a reference architecture, the HPDA Datahub can be implemented as a software-defined storage infrastructure on-premise, in a private cloud, or in a public cloud. The infrastructure building blocks include low-latency Flash/NVME devices, large-capacity and high-performance disk/file system appliances (for example, IBM Elastic Storage® Server), low-cost tape libraries, and cloud object stores.
Datahub can also be deployed as a software-only solution using customers’ existing public cloud infrastructure.
Based on the requirements for capacity, performance, and projected future growth, an HPDA Datahub-based infrastructure can be designed with various building blocks of different sizes and price-performance profiles. The management software (for example, IBM Spectrum Scale, IBM Spectrum Discover, and Cloud Object Store) then works together to connect storage hardware into a global and extensible name space for data services.
Orchestrator
The HPDA has an Orchestrator layer designed to manage myriads of applications and workloads, ranging from a high-throughput genomics (DNAseq, RNAseq) pipeline running on a large cluster to a medical imaging deep learning training job running on a multi-GPU system. There are thousands of applications, tools, frameworks, and workflows that are available for use, with many of them still being actively developed.
The updated versions of the applications often have newer requirements and dependencies for infrastructure (operating system, drivers, libraries, configuration, and so on) that can conflict with older versions or other packages on the system. Because some next-gen applications are developed as Cloud-ready, they can take use modern technologies, such as containers, to gain mobility and elasticity. This technology use makes it necessary to orchestrate and manage containers so that they can share resources among themselves and with non-containerized workloads.
Applications can and do consume computational resources in many types of ways. From highly parallel applications hosted across thousands of nodes, to genomics applications running as single-threaded processes with large memory requirements. To handle the diversity of the workloads and deliver a consistently high-performance computational infrastructure, the first function of Orchestrator is to manage the infrastructure building blocks and turn them into usable resources by way of policy-based allocation and job scheduling.
The system administrator can set the policies that prioritize the placement and execution of workloads, while users can submit jobs to the scheduler through scripts or the graphical user interface.
The agility, elasticity, and flexibility of the compute infrastructure can be accomplished through various functions, such as building platform as a service and cloud computing. The workload isolation into containers, automation by pipelining, and sharing through the catalog makes efficient use of the resources possible.
2.2.3 Key values
The Data Hub and Orchestrator were designed as two separate abstraction layers that can work together to manage data and orchestrate workloads on any supporting storage and computational building blocks. The resulting infrastructure is a true data-driven, cloud-ready, AI-capable platform that is able to handle both complex data at scale and the most demanding analytics and AI workloads.
All of the applications and use cases developed for the architecture are based on deep industry experience, collaboration, and feedback from leading organizations that are at the forefront of precision medicine.
Users and infrastructure providers are achieving valuable results and significant benefits from the HPDA solution, as described in the following sections.
Key values for users
The HPDA solution provides users the following benefits:
Ease-of-use. It provides a self-service App Center with a GUI based on an advanced catalog and search engines for users that enables them to manage the data easily, in real-time, with maximum flexibility.
High-performance. Cloud-scale data management and multicloud workload orchestration locate data where it makes sense, and provision the required environment for peak demand periods in the cloud, dynamically and automatically, only for as long as needed, to maximize performance.
Low cost. It includes policy-based data management that can reduce storage costs up to 90% by automatically migrating file and object medical data to the optimal storage tier, based on data value and performance criteria.
Global collaboration. This functionality facilitates multi-tenant access and data sharing that spans across storage systems and geographic locations, enabling many research initiatives around the globe that use a common reference architecture to establish strategic partnerships and collaboration.
Key values for IT providers
The reference architecture offers the following values to IT providers:
Easy to install. A blueprint compiles best practices and enables IT architects to quickly deploy an end-to-end solution architecture, which is designed and tuned specifically to match different use cases and requirements from different business and research disciplines.
Fully tested. IT architecture based on a solid roadmap of future-ready proven infrastructure can easily be integrated into the existing environment protecting already made investments, especially the hardware purchase and cloud services.
Global Industry Ecosystem. A wide ecosystem aligns with the latest technologies for hybrid multicloud, big data analytics, and AI to optimize data for cost, compliance, and performance that is needed and expected by end users for better services and patient care.
 
Note: The reference architecture is based on collaborative work with leading institutions, such as UPMC and Sidra. IBM is expanding it to new domains of imaging, clinical work, and AI. This YouTube video illustrates the challenges and their solution.
2.3 Datahub for High-Performance Data Analytics
Data management is the most fundamental capability for genomics platforms, because a huge amount of data must be processed at the correct time and place at a feasible cost. The temporal factors can range from hours (analyzing data in an HPC system) to years (when data must be recalled from a storage archive for reanalysis). The spatial aspect can span a local infrastructure that provides nearline storage capability to a cloud-based, remote cold archive.
2.3.1 Datahub functions
To address the challenges of data management for genomics, define an enterprise capability that functions as a scalable and extensible layer for serving data and metadata to all workloads. Name this layer Datahub to reflect its critical role as a central hub for data: storing, moving, sharing, and indexing a massive amount of genomic raw and processed data. The Datahub also manages the underlying heterogeneous storage infrastructure from solid-state disk (SSD) and flash storage to disk to tape to cloud (Figure 2-2).
Figure 2-2 Overview of Datahub
The Datahub is the enterprise capability for serving data and metadata to all of the workloads (Figure 2-2). It defines a scalable and extensible layer that virtualizes and globalizes all storage resources under a global name space. Datahub is designed to provide the following key functions:
High-performance data I/O
Policy-driven information lifecycle management (ILM)
Efficient data sharing through caching and necessary replication
Large-scale metadata management
For physical deployment, the Datahub must support an increasing number of storage technologies as modular building blocks, including the following components:
SSD and flash storage
High-performance fast disks
Large-capacity slow disks (4 TB per drive)
High-density and low-cost tape library
External storage cache that can be locally or globally distributed
Big data storage that is based on Hadoop
Cloud-based external storage
The following key functions are mapped to the Datahub:
I/O management. This Datahub function addresses the need for large and scalable I/O capability. There are two dimensions to the capability: I/O bandwidth for serving large-size files, such as Binary Alignment/Map (BAM), and I/O operations per second (IOPS) for serving many small files, such as BCL and FASTQ. Because of these divergent needs, the traditional one-size-fit-all architecture struggles to deliver performance and scalability.
Datahub I/O management solves this challenge by introducing the pooling concept to separate the I/O operations for metadata and small files from those for the large files. These storage pools, although mapped to different underlying hardware to deliver optimal storage performance, are still unified at the file system level to provide a single global name space for all of the data and metadata, and are transparent to users.
Lifecycle management. This Datahub function addresses the need for managing the lifecycle of data from creation to deletion or preservation. We use the analogy of temperature to describe the stages and timeliness in which data needs to be captured, processed, moved, and archived. When raw data is captured from some instruments, such as high-throughput sequencers, that data is the hottest in temperature and must be processed by an HPC cluster with robust I/O performance (so-called scratch storage).
After initial processing, the raw and processed data becomes warm in temperature, because it takes a policy-based process to determine the final outcome: deletion, preservation in a long-term storage pool, or being archived. The process accounts for file type, size, usage (for example, the last time that it was accessed by a user), and system utilization information.
Any files that meet the requirement for action are either deleted or migrated from one storage pool to another, typically one that has a larger capacity, slower performance, and much lower cost. One such target tier can be a tape library. Coupled with storage pooling and low-cost media, such as tape, this function enables the efficient use of underlying storage hardware and drastically lowers the total cost of ownership (TCO) for a Datahub-based solution.
Sharing management. This Datahub function addresses the need for data sharing within and across logical domains of a storage infrastructure. As genomic sample and reference data sets grow larger (in some cases exceeding 1 PB per workload), it is increasingly difficult to move and duplicate data for sharing and collaboration purposes.
To minimize the impact of data duplication and at the same time enable data sharing, Datahub introduces the following elements under sharing management:
 – Storage multi-clustering. One compute cluster can access a remote system directly, and pull data/storage only on demand.
 – Cloud data caching. The metadata index and full data set for a specific data repository (host) can be selectively and asynchronously cached on a remote (client) system for fast local access.
 – Database federation. This enables secured federation among distributed databases.
In all of these functions, the data sharing and movement can occur over a private high-performance network, or over a wide area network (such as the internet). The technology accounts for the security and fault tolerance.
Metadata management. This Datahub function provides a foundation for I/O, lifecycle, and sharing management. The ability to store, manage, and analyze billions of metadata objects is necessary for any data repository that scales beyond petabytes of size, which is increasingly the case for genomics infrastructures. The metadata includes system metadata, such as file name, path, size, pool name, creation time, and modified or access time. It can also include custom metadata in the form of key value pairs that applications, workflow, or users can create to associate with the files of interest.
This metadata must be efficiently used to accomplish the following goals:
 – Facilitate the I/O management by placing and moving files based on file size, type, or usage.
 – Enable policy-based lifecycle management of data based on information that is collected from lightning-fast metadata scans.
 – Enable data-caching so that the distribution of metadata can be lightweight and depend less on networking.
2.3.2 Datahub solution and use cases
Datahub is based on IBM Spectrum Scale (formerly IBM GPFS) which provides a file system with high-performance, scalability, and extensibility characteristics.
Initially developed and optimized as an HPC parallel file system, IBM Spectrum Scale manages to serve large volumes of data at a high bandwidth and in parallel to all the compute nodes in the computing system. Because genomic pipelines can consist of hundreds of applications that are engaged in concurrent data processing on many files, this capability is critical in feeding data to the computational genomics workflow.
The traditional genomics pipeline generates a huge amount of metadata and data. The file system, which is a system pool that is built on SSD and flash storage with high-IOPS capability, can be dedicated to store metadata for files and directories, and in some cases small-size files directly. This situation drastically improves file system performance and responsiveness to metadata-heavy operations, such as listing all files in a directory.
As a file system with a connector to MapReduce, Datahub can also serve MapReduce and big data jobs on the same set as compute nodes, eliminating the need for (and complexity of) Hadoop Distributed File System (HDFS).
The policy-based data lifecycle management capability enables Datahub to move data from one storage pool to others, maximizing I/O performance and storage utilization, and minimizing operational cost. These storage pools can range from high-I/O flash storage or a high-capacity storage appliance, to low-cost tape media through integration with a tape management solution, such as IBM Spectrum Protect (formerly IBM Tivoli® Storage Manager) and IBM Spectrum Archive (formerly IBM Linear Tape File System).
The increasingly distributed nature of genomics infrastructure also requires data management on a larger and global scale. Data must be moved or shared across different sites, and its movement or sharing must be coordinated with computational workload and workflow.
To achieve this goal, Datahub relies on a sharing function that is based on the Active File Management (AFM) feature of IBM Spectrum Scale. AFM enables the Datahub to extend the global name space to multiple sites, enabling them to share a common metadata catalog and a cache copy of home data for a remote client site to access locally.
For example, a genomic center can own, operate, and control the versions of all the reference databases or data sets during the time the affiliated or partner sites or centers can access the reference data set through this sharing function. When the centralized copy of a database is updated, so are the cache copies of the other sites.
With Datahub, a system-wide metadata engine can also be built to index and search all the genomic and clinical data, enabling powerful downstream analytics and translational research.
2.4 Orchestrator of High-Performance Data Analytics
This section describes the challenges in workload management with genomics, and using Orchestrator to help minimize workload management challenges.
2.4.1 Orchestrator functions
Through the Orchestrator, the IBM Reference Architecture for Genomics defines the capability to orchestrate resources, workload, and workflow, as shown in Figure 2-3. This functionality, a unique combination of the workload manager and workflow engine, links and coordinates a spectrum of computational and analytical jobs into fully automated pipelines that can be easily built, customized, shared, and run on a shared platform.
The workload manager allows and enables multiple platforms. This setup provides the necessary abstraction of applications from the underlying infrastructure, such as an HPC cluster with a graphical processor unit (GPU) or a big data cluster in the cloud.
Figure 2-3 Orchestrator overview
The Orchestrator is the enterprise capability for orchestrating resources, workloads, and managing provenance, as shown in Figure 2-3. It is designed to provide the following key functions:
Resource management, by allocating infrastructure to computational requirements dynamically and elastically.
Workload management, by efficient placement of jobs onto various computational resources, such as local or remote clusters.
Workflow management, by linking applications into logical and automated pipelines.
Provenance management, by recording and saving metadata that is associated with the workload and workflow.
By mapping and distributing workloads to elastic and heterogeneous resources (HPC, Hadoop, Spark, Openstack/Docker, and cloud) based on workflow logic and application requirements (for example, architecture, CPU, memory, or I/O), the Orchestrator defines the abstraction layer between the diverse computing infrastructure and the fast-growing array of genomic workloads.
The IBM reference architecture reflects work that is continually underway within IBM Systems to integrate elements of our compute and storage platforms. This integration delivers the highest levels of performance for big data, while also lowering the total cost of IT ownership.
Many healthcare organizations are optimizing their systems with a high-performance analytics framework to improve business results, as shown in this High-Performance Data Architecture for Healthcare YouTube video.
2.4.2 Orchestrator solution and use cases
The IBM Spectrum LSF® family of products is one such solution to the requirements of the Orchestrator. It is used in business-critical environments ranging from semiconductor design to aircraft design to financial services.
Genomics pipelines consist of hundreds of applications generating tens of thousands to millions of individual jobs. Being able to scale reliably to these volumes is critical to delivering a production-quality, personalized medicine solution. Telling a patient that their tests are delayed because the IT can’t handle the load is just not acceptable.
A powerful policy engine enables arbitration between different users and applications, with time-critical patient analyses being automatically prioritized over research tasks. However, fine-grained role-based access control (RBAC) ensures that users only see what they are allowed to see, protecting confidentiality and intellectual property.
IBM Spectrum LSF also supports powerful multicloud capabilities, not only enabling bursting or flexing if additional capacity is required, but supporting data affinity. Therefore, particular analyses and pipelines can be run where the data resides, rather than incurring the resource use required by replicating remote data on-site.
IBM Spectrum LSF Application Manager and IBM Spectrum LSF Process Manager enable custom workload portals and workflows to be readily built. These portals and workflows enable the healthcare professional to learn new tools faster and with fewer errors. More importantly, the professionals can keep their focus on healthcare and not IT.
IBM Spectrum Conductor®, IBM Deep Learning Impact, and IBM Watson® Machine Learning Accelerator for Enterprise AI can all use IBM Spectrum LSF for orchestration, allowing a broad range of analyses to be supported on a single orchestration platform.
For more information about how to get your data ready for precision medicine and experience new records for speed and scale through tips that are based on real-world use cases of high-performance genomics and imaging, see The smart tips guide to high performance data and AI architecture at the following website:
..................Content has been hidden....................

You can't read the all page of ebook, please click here login for view all page.
Reset
3.15.226.239