Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/295.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
Python 我应该创建一个PyTorch数据集来训练pyspark数据帧下的模型吗?_Python_Pyspark_Pytorch_Huggingface Tokenizers_Petastorm - Fatal编程技术网

Python 我应该创建一个PyTorch数据集来训练pyspark数据帧下的模型吗?

Python 我应该创建一个PyTorch数据集来训练pyspark数据帧下的模型吗?,python,pyspark,pytorch,huggingface-tokenizers,petastorm,Python,Pyspark,Pytorch,Huggingface Tokenizers,Petastorm,我想在以列格式训练数据的基础上训练PyTorch NLP模型,我想用pyspark数据帧作为原始数据构建PyTorchDataset(不确定这是正确的方法…) 为了预处理文本,我使用了transformers库提供的标记器和tokenization\u UDF函数来应用标记化 然后将数据集对象馈送给数据加载器,以训练ML模型 我目前拥有的是: 作为pd导入熊猫#理想情况下,我想在这里清除熊猫 进口火炬 从torch.utils.data.dataset导入数据集 从transformers导入标

我想在以列格式训练数据的基础上训练PyTorch NLP模型,我想用pyspark数据帧作为原始数据构建PyTorch
Dataset
(不确定这是正确的方法…)

为了预处理文本,我使用了
transformers
库提供的标记器和
tokenization\u UDF
函数来应用标记化

然后将
数据集
对象馈送给
数据加载器
,以训练ML模型

我目前拥有的是:

作为pd导入熊猫#理想情况下,我想在这里清除熊猫
进口火炬
从torch.utils.data.dataset导入数据集
从transformers导入标记器
从pyspark.sql导入类型为T
从pyspark.sql导入函数为F
标记器=BertTokenizer.from_pretrained('bert-base-uncased'))
text=[“这是一个测试。”,“这不是一个测试。”]*100
标签=[1,0]*100
df=sqlContext.createDataFrame(zip(文本,标签),模式=['text','label'])
标记化_UDF=UDF(lambda t:tokenizer.encode(t),t.ArrayType(t.LongType())
df=df.withColumn(“tokenized”,tokenized_UDF(F.col(“text”))#不确定这是正确的方法
df=df.toPandas()#丑陋
类标记化数据集(数据集):
“需要重构…”
定义初始(自我,df):
self.data=df
定义uu获取项目uu(自身,索引):
text=self.data.loc[index]。标记化
text=火炬长传感器(text)
label=self.data.loc[index].label
返回(文本、标签)
定义(自我):
计数=len(自身数据)
返回计数
数据集=标记化数据集(df)#慢。。。
我目前调用
.toPandas()
,以便我的
标记化数据集
可以处理熊猫数据帧

这是明智的做法吗? 如果是这样,我应该如何修改
TokenizedDataset
代码以直接处理pyspark数据帧?
如果我偏离了正轨,我应该改用吗?

PyTorch论坛似乎对这个话题没有特别的关注。你有多少数据?我怀疑pyspark是否是一种快速的方法。@cronoik大约有2Gb的训练数据。它一点也不庞大,但我想到的优势是使用Databricks运行整个管道(ETL+模型训练)。使用pyspark进行ETL和pytorch+petastorm+MLflow进行模型培训应该可以完成这项工作,但还没有成功实现。我仍然认为,由于从JVM到python解释器的数据传输,标记化UDF在这里造成了一个瓶颈。你有没有考虑过使用熊猫自选基金?关于你最初的问题,你检查过了吗?在@cronoik这里可能更清楚一点,在我看来,使用
petastorm
时不需要
Dataset