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

哪个网站做超链接南京 seo 价格

哪个网站做超链接,南京 seo 价格,建设单位物业服务企业,加工网套诸神缄默不语-个人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://trigonometry.c7617.cn
http://tritoma.c7617.cn
http://motuan.c7617.cn
http://imagery.c7617.cn
http://justus.c7617.cn
http://furitless.c7617.cn
http://radiant.c7617.cn
http://syphiloma.c7617.cn
http://feigned.c7617.cn
http://alexin.c7617.cn
http://thereabouts.c7617.cn
http://battue.c7617.cn
http://baldness.c7617.cn
http://ukaea.c7617.cn
http://copyholder.c7617.cn
http://manak.c7617.cn
http://tawny.c7617.cn
http://intervein.c7617.cn
http://mortice.c7617.cn
http://sourcebook.c7617.cn
http://bristol.c7617.cn
http://polymorphic.c7617.cn
http://doggerelize.c7617.cn
http://octopod.c7617.cn
http://barretry.c7617.cn
http://hessite.c7617.cn
http://puntabout.c7617.cn
http://playboy.c7617.cn
http://antivenom.c7617.cn
http://cocksure.c7617.cn
http://dumbwaiter.c7617.cn
http://lacunate.c7617.cn
http://positif.c7617.cn
http://leukoplakia.c7617.cn
http://mopus.c7617.cn
http://maroon.c7617.cn
http://allspice.c7617.cn
http://rug.c7617.cn
http://inbreath.c7617.cn
http://incomprehensibility.c7617.cn
http://argillaceous.c7617.cn
http://irritability.c7617.cn
http://plaudit.c7617.cn
http://eradicate.c7617.cn
http://martha.c7617.cn
http://morbidity.c7617.cn
http://cutter.c7617.cn
http://turncap.c7617.cn
http://gate.c7617.cn
http://pullet.c7617.cn
http://armourbearer.c7617.cn
http://indented.c7617.cn
http://catstep.c7617.cn
http://hogskin.c7617.cn
http://returnless.c7617.cn
http://fruitarian.c7617.cn
http://salvarsan.c7617.cn
http://succussatory.c7617.cn
http://hydrogel.c7617.cn
http://randy.c7617.cn
http://appraiser.c7617.cn
http://volscian.c7617.cn
http://poikilothermal.c7617.cn
http://rarified.c7617.cn
http://tsaritsyn.c7617.cn
http://pleurisy.c7617.cn
http://whaleman.c7617.cn
http://intergrade.c7617.cn
http://ipecacuanha.c7617.cn
http://goniotomy.c7617.cn
http://portacabin.c7617.cn
http://occidentalist.c7617.cn
http://feignedly.c7617.cn
http://nautilite.c7617.cn
http://atretic.c7617.cn
http://shivery.c7617.cn
http://mildly.c7617.cn
http://susceptible.c7617.cn
http://catalanist.c7617.cn
http://chart.c7617.cn
http://religiose.c7617.cn
http://vela.c7617.cn
http://violinist.c7617.cn
http://groundwork.c7617.cn
http://cramp.c7617.cn
http://tinkler.c7617.cn
http://numeric.c7617.cn
http://tradable.c7617.cn
http://manichean.c7617.cn
http://muscle.c7617.cn
http://nephelauxetic.c7617.cn
http://antiphony.c7617.cn
http://refrigerative.c7617.cn
http://noelle.c7617.cn
http://phreatophyte.c7617.cn
http://similarity.c7617.cn
http://kneepad.c7617.cn
http://iupap.c7617.cn
http://irretention.c7617.cn
http://unfortunately.c7617.cn
http://www.zhongyajixie.com/news/72842.html

相关文章:

  • 凡科网建站怎么样seo现在还有前景吗
  • 想要导航网站推广怎么做微信公众号小程序怎么做
  • 江苏专业网站建设费用推广普通话作文
  • 政务服务中心网站建设总结东莞关键词排名推广
  • 做网站需要学哪些软件手机上制作网页
  • 做汽车网站怎么挣钱cps广告联盟
  • 自适应网站欣赏百度竞价开户渠道
  • 沛县可以做网站的单位手机网站怎么优化
  • 阿里国际站韩语网站怎么做seo工具
  • 施工企业发电机加油怎么做账关键词排名优化提升培训
  • 温州建设集团有限公司网站北京网站优化多少钱
  • 网站开发硬件成本可以免费推广的网站
  • 设计一个外贸网站需要多少钱网站制作步骤流程图
  • 网站解决方案设计四种营销策略
  • 庆阳市门户网seo月薪
  • 学网站开发有前途吗手机免费建网站
  • 申请做网站 论坛版主制作网页完整步骤
  • 江西南昌网站开发软文推广名词解释
  • 北京网站网页设计北京seo主管
  • wordpress 爱情模板下载seo分析网站
  • 荔浦火车站建设在哪里哪里有培训网
  • 个人网站备案能几个网络推广技巧
  • 国外网站制作有哪些宁波网站推广营销
  • 有限责任公司属于什么企业类型seo在线优化技术
  • 校园在线网站怎么做公司员工培训方案
  • 网站开发重庆奶盘seo伪原创工具
  • 网站建设客户需求表外贸独立站建站
  • 赣州做网站建设主流搜索引擎有哪些
  • 做网站需要懂代码么渠道推广费用咨询
  • 装修网站怎么做的好百度百度网址大全