Python 我应该创建一个PyTorch数据集来训练pyspark数据帧下的模型吗?
我想在以列格式训练数据的基础上训练PyTorch NLP模型,我想用pyspark数据帧作为原始数据构建PyTorchPython 我应该创建一个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导入标
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