pyspark中 --archives上传bert文件进行预测

在pyspark环境中提交任务时,为了执行BERT预测,需要通过shell脚本运行spark代码。关键在于,由于BERT模型的大小,不能使用broadcast,而是采用map操作将模型分发到每个executor上。在shell命令中,利用--archives参数上传BERT文件,并在代码中解压成my_bert目录,以确保模型在所有节点可用,从而实现高效预测。
摘要由CSDN通过智能技术生成

pyspark中提交任务

  • 通常工作中将spark代码写好会通过shell脚本来执行spark代码具体如下所示的shell
	spark-3.0/bin/spark-submit \
    --master yarn \
    --deploy-mode cluster \
    --queue queue1\
    --driver-memory 8g  \
    --executor-memory 8g   \
    --executor-cores 5 \
    --num-executors 10 \
    --conf spark.network.timeout=7200 \
    --conf spark.executor.heartbeatInterval=3600 \
    --conf spark.sql.shuffle.partitions=1500 \
    --conf spark.default.parallelism=1000 \
    --conf spark.yarn.executor.memoryOverhead=2048M \
    --archives viewfs:hdfs/tf_env.zip,hdfs/my_bert.zip#my_bert \
    --conf spark.yarn.appMasterEnv.PYSPARK_PYTHON=./tf_env.zip/tf/bin/python \
    --conf spark.yarn.appMasterEnv.PYSPARK_DRIVER_PYTHON=./tf_env.zip/tf/bin/python \
    ./spark_predict_bert.py
  • 这种方式会需要注意的是要通过excutor来执行bert代码,通过map操作将bert放到每个节点上面进行预测,不通通过broadcast的方式对代码进行预测,具体的代码读去如下所示:
text_list = df_res.select("content").rdd.flatMap(lambda x: x).collect()
for i in text_list:
    tokenizer = BertTokenizer('./my_bert/my_bert/vocab.txt')
    model = TFBertForSequenceClassification.from_pretrained("./my_bert/my_bert")
    bert_input = encode_examples(i, tokenizer)
    note_class = predict(model, bert_input)
    print(f"the note is : {i}, and the predict result is: {note_class} !!!")
  • 注意上述的代码中加载bert的文件需要多增加一层,因为在shell中用了#文件对其进行解压,使得整个目录解压成为my_bert文件。
  • 然后执行shell基本就可以进行bert预测了。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

算法驯化师

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值