Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/tensorflow/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何从PyTorch或Tensorflow等ML库访问GPU中的Spark数据帧数据_Tensorflow_Apache Spark_Pytorch_Rapids_Spark3 - Fatal编程技术网

如何从PyTorch或Tensorflow等ML库访问GPU中的Spark数据帧数据

如何从PyTorch或Tensorflow等ML库访问GPU中的Spark数据帧数据,tensorflow,apache-spark,pytorch,rapids,spark3,Tensorflow,Apache Spark,Pytorch,Rapids,Spark3,目前我正在研究ApacheSpark3.0与Rapids GPU加速的使用。在官方的spark rapids文件中,我遇到了以下几个州: 在某些情况下,您可能希望访问GPU上的原始数据,最好不复制它。其中一个用例是在进行特征提取后将数据导出到ML框架 对我来说,这听起来好像可以让GPU上已经可用的数据从上游Spark ETL过程直接用于Tensorflow或PyTorch等框架。如果是这种情况,我如何从这些框架中访问数据?如果我在这里误解了什么,那么引用的确切含义是什么?您引用的链接实际上只允许

目前我正在研究ApacheSpark3.0与Rapids GPU加速的使用。在官方的
spark rapids
文件中,我遇到了以下几个州:

在某些情况下,您可能希望访问GPU上的原始数据,最好不复制它。其中一个用例是在进行特征提取后将数据导出到ML框架


对我来说,这听起来好像可以让GPU上已经可用的数据从上游Spark ETL过程直接用于Tensorflow或PyTorch等框架。如果是这种情况,我如何从这些框架中访问数据?如果我在这里误解了什么,那么引用的确切含义是什么?

您引用的链接实际上只允许您访问仍然位于GPU上的数据,但是在另一个框架中使用该数据,如Tensorflow或PyTorch并不是那么简单

TL;博士除非您有一个明确设置的库来使用RAPIDS加速器,否则您可能希望使用RAPIDS运行ETL,然后保存它,并启动一个新作业来使用该数据训练您的模型

仍然有许多问题需要解决。我们已经在的情况下进行了这些工作,但我们还没有尝试为Tensorflow或PyTorch解决这些问题

大问题是

  • 将数据传送到正确的进程。即使数据在GPU上,出于安全考虑,它也与给定的用户进程绑定。PyTorch和Tensorflow通常作为python进程运行,而不是在Spark运行的同一JVM中。这意味着数据必须发送到另一个进程。有几种方法可以做到这一点,但尝试将其作为零拷贝操作来实现并不简单
  • 数据的格式不是Tensorflow或PyTorch想要的格式。RAPIDs的数据采用与箭头兼容的格式。Tensorflow和PyTorch都有用于从CPU导入标准格式数据的API,但要将数据转换为框架所需的格式,并找到一个API,让您直接从GPU导入数据,可能需要一些工作
  • 共享GPU资源。Spark最近才添加了对调度GPU的支持。在此之前,人们只需为每个执行者启动一个spark任务和一个python进程,以便python进程在进行培训或推理时拥有整个GPU。使用RAPIDS加速器,GPU不再免费,您需要一种共享资源的方式。如果两个库都被更新以使用它,并且它们在同一个进程中,RMM就会提供其中的一些功能,但是在Pytorch和Tensoflow的情况下,它们通常在python进程中,因此很难弄清楚如何共享GPU

  • 您引用的链接实际上只允许您访问仍然位于GPU上的数据,但在另一个框架(如Tensorflow或PyTorch)中使用该数据并不是那么简单

    TL;博士除非您有一个明确设置的库来使用RAPIDS加速器,否则您可能希望使用RAPIDS运行ETL,然后保存它,并启动一个新作业来使用该数据训练您的模型

    仍然有许多问题需要解决。我们已经在的情况下进行了这些工作,但我们还没有尝试为Tensorflow或PyTorch解决这些问题

    大问题是

  • 将数据传送到正确的进程。即使数据在GPU上,出于安全考虑,它也与给定的用户进程绑定。PyTorch和Tensorflow通常作为python进程运行,而不是在Spark运行的同一JVM中。这意味着数据必须发送到另一个进程。有几种方法可以做到这一点,但尝试将其作为零拷贝操作来实现并不简单
  • 数据的格式不是Tensorflow或PyTorch想要的格式。RAPIDs的数据采用与箭头兼容的格式。Tensorflow和PyTorch都有用于从CPU导入标准格式数据的API,但要将数据转换为框架所需的格式,并找到一个API,让您直接从GPU导入数据,可能需要一些工作
  • 共享GPU资源。Spark最近才添加了对调度GPU的支持。在此之前,人们只需为每个执行者启动一个spark任务和一个python进程,以便python进程在进行培训或推理时拥有整个GPU。使用RAPIDS加速器,GPU不再免费,您需要一种共享资源的方式。如果两个库都被更新以使用它,并且它们在同一个进程中,RMM就会提供其中的一些功能,但是在Pytorch和Tensoflow的情况下,它们通常在python进程中,因此很难弄清楚如何共享GPU