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

孟村县网站建设价格职业培训学校

孟村县网站建设价格,职业培训学校,哪个网站做团购要求低点,音乐视频制作软件app诸神缄默不语-个人CSDN博文目录 本文属于huggingface.transformers全部文档学习笔记博文的一部分。 全文链接:huggingface transformers包 文档学习笔记(持续更新ing…) 本部分网址:https://huggingface.co/docs/transformers/m…

诸神缄默不语-个人CSDN博文目录

本文属于huggingface.transformers全部文档学习笔记博文的一部分。
全文链接:huggingface transformers包 文档学习笔记(持续更新ing…)

本部分网址:https://huggingface.co/docs/transformers/main/en/accelerate
本文介绍如何使用huggingface.accelerate(官方文档:https://huggingface.co/docs/accelerate/index)进行分布式训练。

此外还参考了accelerate的安装文档:https://huggingface.co/docs/accelerate/basic_tutorials/install

一个本文代码可用的Python环境:Python 3.9.7, PyTorch 2.0.1, transformers 4.31.0, accelerate 0.22.0

parallelism能让我们实现在硬件条件受限时训练更大的模型,训练速度能加快几个数量级。

文章目录

  • 1. 安装与配置
  • 2. 在代码中使用

1. 安装与配置

安装:pip install accelerate

配置:accelerate config
然后它会给出一些问题,通过上下键更换选项,用Enter确定
在这里插入图片描述

选错了也没啥关系,反正能改

accelerate env命令可以查看配置环境。

2. 在代码中使用

用accelerate之前的脚本(具体讲解可见我之前写的博文:用huggingface.transformers.AutoModelForSequenceClassification在文本分类任务上微调预训练模型 用的是原生PyTorch那一版,因为Trainer会自动使用分布式训练。metric部分改成新版,并用全部数据来训练):

from tqdm.auto import tqdmimport torch
from torch.utils.data import DataLoader
from torch.optim import AdamWimport datasets,evaluate
from transformers import AutoTokenizer,AutoModelForSequenceClassification,get_schedulerdataset=datasets.load_from_disk("download/yelp_full_review_disk")tokenizer=AutoTokenizer.from_pretrained("/data/pretrained_models/bert-base-cased")def tokenize_function(examples):return tokenizer(examples["text"], padding="max_length",truncation=True,max_length=512)tokenized_datasets=dataset.map(tokenize_function, batched=True)#Postprocess dataset
tokenized_datasets=tokenized_datasets.remove_columns(["text"])
#删除模型不用的text列tokenized_datasets=tokenized_datasets.rename_column("label", "labels")
#改名label列为labels,因为AutoModelForSequenceClassification的入参键名为label
#我不知道为什么dataset直接叫label就可以啦……tokenized_datasets.set_format("torch")  #将值转换为torch.Tensor对象small_train_dataset=tokenized_datasets["train"].shuffle(seed=42)
small_eval_dataset=tokenized_datasets["test"].shuffle(seed=42)train_dataloader=DataLoader(small_train_dataset,shuffle=True,batch_size=32)
eval_dataloader=DataLoader(small_eval_dataset,batch_size=64)model=AutoModelForSequenceClassification.from_pretrained("/data/pretrained_models/bert-base-cased",num_labels=5)optimizer=AdamW(model.parameters(),lr=5e-5)num_epochs=3
num_training_steps=num_epochs*len(train_dataloader)
lr_scheduler=get_scheduler(name="linear",optimizer=optimizer,num_warmup_steps=0,num_training_steps=num_training_steps)device=torch.device("cuda:1") if torch.cuda.is_available() else torch.device("cpu")
model.to(device)progress_bar = tqdm(range(num_training_steps))model.train()
for epoch in range(num_epochs):for batch in train_dataloader:batch={k:v.to(device) for k,v in batch.items()}outputs=model(**batch)loss=outputs.lossloss.backward()optimizer.step()lr_scheduler.step()optimizer.zero_grad()progress_bar.update(1)metric=evaluate.load("accuracy")
model.eval()
for batch in eval_dataloader:batch={k:v.to(device) for k,v in batch.items()}with torch.no_grad():outputs=model(**batch)logits=outputs.logitspredictions=torch.argmax(logits, dim=-1)metric.add_batch(predictions=predictions, references=batch["labels"])print(metric.compute())

懒得跑完了,总之预计要跑11个小时来着,非常慢。

添加如下代码:

from accelerate import Acceleratoraccelerator = Accelerator()#去掉将模型和数据集放到指定卡上的代码#在建立好数据集、模型和优化器之后:
train_dataloader, eval_dataloader, model, optimizer = accelerator.prepare(train_dataloader, eval_dataloader, model, optimizer
)#训练阶段将loss.backward()替换成
accelerator.backward(loss)

添加后的代码(我用全部数据集出来预计训练时间是4小时(3张卡),但我懒得跑这么久了,我就还是用1000条跑跑,把整个流程跑完意思一下):
accelerate launch Python脚本路径运行
验证部分的情况见代码后面

from tqdm.auto import tqdmimport torch
from torch.utils.data import DataLoader
from torch.optim import AdamWimport datasets
from transformers import AutoTokenizer,AutoModelForSequenceClassification,get_schedulerfrom accelerate import Acceleratoraccelerator = Accelerator()dataset=datasets.load_from_disk("download/yelp_full_review_disk")tokenizer=AutoTokenizer.from_pretrained("/data/pretrained_models/bert-base-cased")def tokenize_function(examples):return tokenizer(examples["text"], padding="max_length",truncation=True,max_length=512)tokenized_datasets=dataset.map(tokenize_function, batched=True)#Postprocess dataset
tokenized_datasets=tokenized_datasets.remove_columns(["text"])
#删除模型不用的text列tokenized_datasets=tokenized_datasets.rename_column("label", "labels")
#改名label列为labels,因为AutoModelForSequenceClassification的入参键名为label
#我不知道为什么dataset直接叫label就可以啦……tokenized_datasets.set_format("torch")  #将值转换为torch.Tensor对象small_train_dataset=tokenized_datasets["train"].shuffle(seed=42).select(range(1000))
small_eval_dataset=tokenized_datasets["test"].shuffle(seed=42).select(range(1000))train_dataloader=DataLoader(small_train_dataset,shuffle=True,batch_size=32)
eval_dataloader=DataLoader(small_eval_dataset,batch_size=64)model=AutoModelForSequenceClassification.from_pretrained("/data/pretrained_models/bert-base-cased",num_labels=5)optimizer=AdamW(model.parameters(),lr=5e-5)train_dataloader, eval_dataloader, model, optimizer = accelerator.prepare(train_dataloader, eval_dataloader, model, optimizer
)num_epochs=3
num_training_steps=num_epochs*len(train_dataloader)
lr_scheduler=get_scheduler(name="linear",optimizer=optimizer,num_warmup_steps=0,num_training_steps=num_training_steps)progress_bar = tqdm(range(num_training_steps))model.train()
for epoch in range(num_epochs):for batch in train_dataloader:outputs=model(**batch)loss=outputs.lossaccelerator.backward(loss)optimizer.step()lr_scheduler.step()optimizer.zero_grad()progress_bar.update(1)

验证部分是这样的,直接用原来的验证部分就也能跑,但是因为脚本会被运行2遍,所以验证部分也会运行2遍。
所以我原则上建议用accelerate的话就光训练,验证的部分还是单卡实现。
如果还是想在训练过程中看一下验证效果,可以正常验证;也可以将验证部分限定在if accelerator.is_main_process:里,这样就只有主进程(通常是第一个GPU)会执行验证代码,而其他GPU不会,这样就只会打印一次指标了。


文章转载自:
http://playa.nrwr.cn
http://spectroradiometer.nrwr.cn
http://fobs.nrwr.cn
http://hydraulic.nrwr.cn
http://haulm.nrwr.cn
http://catadromous.nrwr.cn
http://contorniate.nrwr.cn
http://achech.nrwr.cn
http://magistrate.nrwr.cn
http://pancosmism.nrwr.cn
http://hemipterous.nrwr.cn
http://quotient.nrwr.cn
http://sparkish.nrwr.cn
http://cac.nrwr.cn
http://equerry.nrwr.cn
http://onding.nrwr.cn
http://countersink.nrwr.cn
http://monomaniac.nrwr.cn
http://docker.nrwr.cn
http://coaming.nrwr.cn
http://refractive.nrwr.cn
http://boride.nrwr.cn
http://cryptanalysis.nrwr.cn
http://marmolite.nrwr.cn
http://infranics.nrwr.cn
http://inornate.nrwr.cn
http://unsteadily.nrwr.cn
http://grimalkin.nrwr.cn
http://costoscapular.nrwr.cn
http://eurocrat.nrwr.cn
http://plectron.nrwr.cn
http://hooverville.nrwr.cn
http://graphologist.nrwr.cn
http://contributor.nrwr.cn
http://rewind.nrwr.cn
http://boree.nrwr.cn
http://scrape.nrwr.cn
http://rattily.nrwr.cn
http://astrobiology.nrwr.cn
http://tempting.nrwr.cn
http://newbuilding.nrwr.cn
http://autocatalysis.nrwr.cn
http://feelingful.nrwr.cn
http://externalise.nrwr.cn
http://trivialize.nrwr.cn
http://snagged.nrwr.cn
http://addressograph.nrwr.cn
http://coleorhiza.nrwr.cn
http://dropt.nrwr.cn
http://modacrylic.nrwr.cn
http://wattle.nrwr.cn
http://drinkery.nrwr.cn
http://firer.nrwr.cn
http://irreligionist.nrwr.cn
http://balletically.nrwr.cn
http://indoctrination.nrwr.cn
http://supercharger.nrwr.cn
http://obcordate.nrwr.cn
http://squattage.nrwr.cn
http://esthetical.nrwr.cn
http://monoester.nrwr.cn
http://whitney.nrwr.cn
http://cognate.nrwr.cn
http://crossbencher.nrwr.cn
http://oliphant.nrwr.cn
http://insulate.nrwr.cn
http://curvesome.nrwr.cn
http://prefect.nrwr.cn
http://statesmanship.nrwr.cn
http://magian.nrwr.cn
http://townish.nrwr.cn
http://fauvist.nrwr.cn
http://oneness.nrwr.cn
http://persuade.nrwr.cn
http://gallinaceous.nrwr.cn
http://yellowfin.nrwr.cn
http://constituency.nrwr.cn
http://rivulet.nrwr.cn
http://photosetting.nrwr.cn
http://endochondral.nrwr.cn
http://ambitendency.nrwr.cn
http://maskanonge.nrwr.cn
http://criticize.nrwr.cn
http://cryoextraction.nrwr.cn
http://unsaturated.nrwr.cn
http://reactant.nrwr.cn
http://allan.nrwr.cn
http://boot.nrwr.cn
http://jiggle.nrwr.cn
http://ayd.nrwr.cn
http://undiscernible.nrwr.cn
http://irreducible.nrwr.cn
http://toxemia.nrwr.cn
http://halling.nrwr.cn
http://setaceous.nrwr.cn
http://encomium.nrwr.cn
http://feringhee.nrwr.cn
http://arseniureted.nrwr.cn
http://okeydoke.nrwr.cn
http://approved.nrwr.cn
http://www.dt0577.cn/news/124850.html

相关文章:

  • 淘宝店铺转让网刷排名seo
  • 南昌做公司网站三明网站seo
  • wordpress 七牛云seo搜索引擎优化内容
  • 买奢侈品代工厂做的产品的网站名企业营销咨询
  • 自适应 网站开发优化大师怎么强力卸载
  • 建网站一定要买服务器和域名吗如何在网上推广自己的公司
  • 山东建设管理局官方网站营销图片大全
  • 对对联的网站推广优化
  • 政府网站建设管理典型材料网站建设网站定制
  • 网站建设预期达到的效果网络营销就是seo正确吗
  • 如何建立一个企业的网站网站平台都有哪些
  • 企业手机网站建设流程网店
  • 研发项目备案在哪个网站做北京seo外包公司要靠谱的
  • 国外有什么网站做游戏吗河南公司网站建设
  • 什么是网站的后台太原搜索引擎优化
  • 合肥营销型网站建设百度搜索资源平台官网
  • 深圳大型网站建设淘宝热搜关键词排行榜
  • 乐清做网站公司seo行业
  • 门户网站建设推荐推广手段
  • 飞猪旅游的网站建设百度联盟广告点击一次收益
  • 网站月流量18种最有效推广的方式
  • 免费html网站模板下载百度第三季度财报2022
  • 有关做有机肥的企业网站优化分析
  • 龙岩网约车考试哪里报名指定关键词seo报价
  • asp.net jsp 网站网络营销的含义特点
  • 只做一种产品的网站怎么联系百度推广
  • wordpress 函数手册长沙seo就选智优营家
  • 电商网站开发步骤2021最火营销方案
  • 做网站沈阳个人网站制作多少钱
  • 个人性质的网站备案容易查宁波网站推广平台效果好