当前位置: 首页 > wzjs >正文

微信小程序网站建设公司什么软件可以推广

微信小程序网站建设公司,什么软件可以推广,做一个中英文网站的价格,wordpress 链接 中文遇到的问题: 在使用hugging face封装的Trainer的时候,使用了自定义的compute_metric函数,但是会出现OOM的情况。 我的transformer版本是: 经过验证,发现哪怕compute_metrics里的内容写的再简单,只有一个p…

遇到的问题:

在使用hugging face封装的Trainer的时候,使用了自定义的compute_metric函数,但是会出现OOM的情况。

我的transformer版本是:

经过验证,发现哪怕compute_metrics里的内容写的再简单,只有一个print,也不行,根本就执行不到这个函数内部。才发现,原来不是这个东西的内部的问题。

原因:

经过探究发现,Trainer会把所有 logits、label都算好,拼在一起后,再从CUDA传到内存,然后,再给compute_metrics计算指标。这样导致需要特别大的内存。直接就报错了。

有一些解决思路是:

1. 调节per_device_eval_batch_size=1, eval_accumulation_steps  这俩参数来解决。

        经过尝试,确实会好一点,但是速度非常慢,但是对于较大的验证集,还是不行,治标不治本。原理就是:

        per_device_eval_batch_size 用来 设置验证的时候的batchsize,但是不能解决,拼接了很大的数据量的问题。

        eval_accumulation_steps 是分步骤累积评估结果,减少显存峰值,可能对于 GPU的oom 会有点用吧。但是同样还是没有解决计算所有logits之后,拼接的问题。

training_args = TrainingArguments(# 其他的参数设置# .....# 这两个参数的使用per_device_eval_batch_size=1,eval_accumulation_steps=100)

最优解:preprocess_logits_for_metrics 函数

使用 preprocess_logits_for_metrics 函数 ,这个函数就是用于在每个评估步骤中缓存 logits之前对其进行预处理。

使用方法如下,注意搭配的compute_metrics 可能需要进一步修改,因为,已经在preprocess_logits_for_metrics计算出来需要使用的东西了。

def compute_metrics(pred):labels_ids = pred.label_idspred_ids = pred.predictions[0]pred_str = tokenizer.batch_decode(pred_ids, skip_special_tokens=True)labels_ids[labels_ids == -100] = tokenizer.pad_token_idlabel_str = tokenizer.batch_decode(labels_ids, skip_special_tokens=True)rouge_output = rouge.compute(predictions=pred_str,references=label_str,rouge_types=["rouge1", "rouge2", "rougeL", "rougeLsum"],)return {"R1": round(rouge_output["rouge1"], 4),"R2": round(rouge_output["rouge2"], 4),"RL": round(rouge_output["rougeL"], 4),"RLsum": round(rouge_output["rougeLsum"], 4),}def preprocess_logits_for_metrics(logits, labels):"""Original Trainer may have a memory leak. This is a workaround to avoid storing too many tensors that are not needed."""pred_ids = torch.argmax(logits[0], dim=-1)return pred_ids, labelstrainer = Trainer(model=model,args=training_args,train_dataset=train_dataset,eval_dataset=test_dataset,compute_metrics=compute_metrics,# 关键函数preprocess_logits_for_metrics=preprocess_logits_for_metrics
)

参考的:

https://discuss.huggingface.co/t/cuda-out-of-memory-when-using-trainer-with-compute-metrics/2941/13

https://huggingface.co/docs/transformers/main_classes/trainer#transformers.Trainer.preprocess_logits_for_metrics

http://www.dtcms.com/wzjs/142664.html

相关文章:

  • 小企业网站建设公司东莞建设企业网站
  • 电商网站建设资讯推广网站排名
  • 网站集约化建设 技术网络营销策划的目的
  • 公司网站建设 入账自动点击竞价广告软件
  • seo和网站建设那个先学网站seo入门基础教程书籍
  • 合水网站建设免费站长工具
  • 用html做网站代码福州百度seo代理
  • 电子商务网站建设心得体会搜索引擎关键词怎么选
  • 网站建设协议书seo外链工具有用吗
  • H5 网站重庆seo整站优化设置
  • 如何借助网站打广告营销策略的概念
  • 汉中疫情最新消息今天新增了15例360手机优化大师下载
  • 购物网站源码下载代运营公司怎么找客户
  • 企业网站的建立视频恩施seo整站优化哪家好
  • nas做流媒体网站成都seo经理
  • 如何将自己做的网站网上全网推广
  • 汽车报价网站品牌网站建设解决方案
  • 武汉做医院网站公司百度网盘云资源搜索引擎
  • 地产网站开发公司seo网站优化培训价格
  • 曹县网站建设百度关键词指数工具
  • 网站建设技术seo好seo
  • 设计企业网站多少钱网络营销在哪里学比较靠谱
  • 撰写网站建设规划设计任务书如何搭建自己的网站
  • 企业为什么要做网站湖南网站设计外包哪家好
  • 室内设计专业招聘信息爱站网站长seo综合查询工具
  • 安国手机网站设计百度导航最新版本下载安装
  • 能发朋友圈的网站建设语360推广开户
  • 如何做网站模版南昌seo快速排名
  • 电商网站模板html网络营销意思
  • 网页制作软件hb南宁seo标准