[ 
https://issues.apache.org/jira/browse/SPARK-24579?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Xiangrui Meng updated SPARK-24579:
----------------------------------
    Description: 
(see attached SPIP pdf for more details)

At the crossroads of big data and AI, we see both the success of Apache Spark 
as a unified
analytics engine and the rise of AI frameworks like TensorFlow and Apache MXNet 
(incubating).
Both big data and AI are indispensable components to drive business innovation 
and there have
been multiple attempts from both communities to bring them together.

We saw efforts from AI community to implement data solutions for AI frameworks 
like tf.data and tf.Transform. However, with 50+ data sources and built-in SQL, 
DataFrames, and Streaming features, Spark remains the community choice for big 
data. This is why we saw many efforts to integrate DL/AI frameworks with Spark 
to leverage its power, for example, TFRecords data source for Spark, 
TensorFlowOnSpark, TensorFrames, etc. As part of Project Hydrogen, this SPIP 
takes a different angle at Spark + AI unification.

None of the integrations are possible without exchanging data between Spark and 
external DL/AI frameworks. And the performance matters. However, there doesn’t 
exist a standard way to exchange data and hence implementation and performance 
optimization fall into pieces. For example, TensorFlowOnSpark uses Hadoop 
InputFormat/OutputFormat for TensorFlow’s TFRecords to load and save data and 
pass the RDD records to TensorFlow in Python. And TensorFrames converts Spark 
DataFrames Rows to/from TensorFlow Tensors using TensorFlow’s Java API. How can 
we reduce the complexity?

The proposal here is to standardize the data exchange interface (or format) 
between Spark and DL/AI frameworks and optimize data conversion from/to this 
interface.  So DL/AI frameworks can leverage Spark to load data virtually from 
anywhere without spending extra effort building complex data solutions, like 
reading features from a production data warehouse or streaming model inference. 
Spark users can use DL/AI frameworks without learning specific data APIs 
implemented there. And developers from both sides can work on performance 
optimizations independently given the interface itself doesn’t introduce big 
overhead.

> SPIP: Standardize Optimized Data Exchange between Spark and DL/AI frameworks
> ----------------------------------------------------------------------------
>
>                 Key: SPARK-24579
>                 URL: https://issues.apache.org/jira/browse/SPARK-24579
>             Project: Spark
>          Issue Type: Epic
>          Components: ML, PySpark, SQL
>    Affects Versions: 3.0.0
>            Reporter: Xiangrui Meng
>            Assignee: Xiangrui Meng
>            Priority: Major
>              Labels: Hydrogen
>         Attachments: [SPARK-24579] SPIP_ Standardize Optimized Data Exchange 
> between Apache Spark and DL%2FAI Frameworks .pdf
>
>
> (see attached SPIP pdf for more details)
> At the crossroads of big data and AI, we see both the success of Apache Spark 
> as a unified
> analytics engine and the rise of AI frameworks like TensorFlow and Apache 
> MXNet (incubating).
> Both big data and AI are indispensable components to drive business 
> innovation and there have
> been multiple attempts from both communities to bring them together.
> We saw efforts from AI community to implement data solutions for AI 
> frameworks like tf.data and tf.Transform. However, with 50+ data sources and 
> built-in SQL, DataFrames, and Streaming features, Spark remains the community 
> choice for big data. This is why we saw many efforts to integrate DL/AI 
> frameworks with Spark to leverage its power, for example, TFRecords data 
> source for Spark, TensorFlowOnSpark, TensorFrames, etc. As part of Project 
> Hydrogen, this SPIP takes a different angle at Spark + AI unification.
> None of the integrations are possible without exchanging data between Spark 
> and external DL/AI frameworks. And the performance matters. However, there 
> doesn’t exist a standard way to exchange data and hence implementation and 
> performance optimization fall into pieces. For example, TensorFlowOnSpark 
> uses Hadoop InputFormat/OutputFormat for TensorFlow’s TFRecords to load and 
> save data and pass the RDD records to TensorFlow in Python. And TensorFrames 
> converts Spark DataFrames Rows to/from TensorFlow Tensors using TensorFlow’s 
> Java API. How can we reduce the complexity?
> The proposal here is to standardize the data exchange interface (or format) 
> between Spark and DL/AI frameworks and optimize data conversion from/to this 
> interface.  So DL/AI frameworks can leverage Spark to load data virtually 
> from anywhere without spending extra effort building complex data solutions, 
> like reading features from a production data warehouse or streaming model 
> inference. Spark users can use DL/AI frameworks without learning specific 
> data APIs implemented there. And developers from both sides can work on 
> performance optimizations independently given the interface itself doesn’t 
> introduce big overhead.



--
This message was sent by Atlassian JIRA
(v7.6.3#76005)

---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to