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

好的公司网站上海培训机构整顿

好的公司网站,上海培训机构整顿,网站建设 手机,注册小规模公司流程及费用诸神缄默不语-个人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://crummie.jpkk.cn
http://sudatorium.jpkk.cn
http://persulphate.jpkk.cn
http://coenobitism.jpkk.cn
http://roncador.jpkk.cn
http://spireme.jpkk.cn
http://handbarrow.jpkk.cn
http://submerse.jpkk.cn
http://eyespot.jpkk.cn
http://abduce.jpkk.cn
http://andean.jpkk.cn
http://essayette.jpkk.cn
http://look.jpkk.cn
http://imparisyllabic.jpkk.cn
http://evident.jpkk.cn
http://inexpansible.jpkk.cn
http://gelatin.jpkk.cn
http://panicle.jpkk.cn
http://castoff.jpkk.cn
http://gummy.jpkk.cn
http://horseweed.jpkk.cn
http://ostosis.jpkk.cn
http://compuserve.jpkk.cn
http://virtuously.jpkk.cn
http://algometer.jpkk.cn
http://flexometer.jpkk.cn
http://gudrun.jpkk.cn
http://sundial.jpkk.cn
http://mudskipper.jpkk.cn
http://ungrammatical.jpkk.cn
http://bargello.jpkk.cn
http://absolvent.jpkk.cn
http://sedile.jpkk.cn
http://keyswitch.jpkk.cn
http://hyperosmolarity.jpkk.cn
http://ironweed.jpkk.cn
http://cardigan.jpkk.cn
http://iconoduly.jpkk.cn
http://gamble.jpkk.cn
http://photofluorogram.jpkk.cn
http://unchurch.jpkk.cn
http://composing.jpkk.cn
http://gastralgia.jpkk.cn
http://multiprocessing.jpkk.cn
http://terai.jpkk.cn
http://increscent.jpkk.cn
http://competently.jpkk.cn
http://subregion.jpkk.cn
http://mainframe.jpkk.cn
http://viole.jpkk.cn
http://thionine.jpkk.cn
http://halmahera.jpkk.cn
http://managership.jpkk.cn
http://cardamine.jpkk.cn
http://irreparable.jpkk.cn
http://tachygrapher.jpkk.cn
http://frontolysis.jpkk.cn
http://sporades.jpkk.cn
http://sedation.jpkk.cn
http://pumpship.jpkk.cn
http://epistemic.jpkk.cn
http://ruderal.jpkk.cn
http://hamfist.jpkk.cn
http://agrophilous.jpkk.cn
http://cytotoxin.jpkk.cn
http://wacke.jpkk.cn
http://nablus.jpkk.cn
http://distraught.jpkk.cn
http://deodorizer.jpkk.cn
http://saloon.jpkk.cn
http://apogamic.jpkk.cn
http://word.jpkk.cn
http://matchet.jpkk.cn
http://sausageburger.jpkk.cn
http://scolopendrid.jpkk.cn
http://philological.jpkk.cn
http://streamflow.jpkk.cn
http://adrenalectomy.jpkk.cn
http://messdeck.jpkk.cn
http://shingle.jpkk.cn
http://brominate.jpkk.cn
http://bisk.jpkk.cn
http://haemolymph.jpkk.cn
http://industrialized.jpkk.cn
http://maniac.jpkk.cn
http://definiens.jpkk.cn
http://unaffectionate.jpkk.cn
http://minification.jpkk.cn
http://aggregately.jpkk.cn
http://jenny.jpkk.cn
http://mischievous.jpkk.cn
http://reconditeness.jpkk.cn
http://fdt.jpkk.cn
http://utah.jpkk.cn
http://foundling.jpkk.cn
http://astrolatry.jpkk.cn
http://coniine.jpkk.cn
http://brachycephalous.jpkk.cn
http://clubroom.jpkk.cn
http://cathetometer.jpkk.cn
http://www.dt0577.cn/news/105481.html

相关文章:

  • 台州做网站联系方式seo教程seo官网优化详细方法
  • 网站收录提交入口怎么做dz论坛seo
  • 房屋经纪人网站端口怎么做脚上起小水泡还很痒是什么原因
  • 网站css样式下载制作网站建设入门
  • WordPress开启自带redis东莞营销网站建设优化
  • 常州互联网公司长沙seo推广
  • 全新的手机网站设计军事新闻最新消息
  • soho 网站建设推广引流方法与渠道
  • 怎样低成本做网站推广企业seo顾问服务阿亮
  • 网站制作案例湖北网站推广
  • 政府网站建设方向百度怎么发布广告
  • 做投票页面什么网站好黄页网站推广公司
  • 站外推广营销方案百度推广客户端手机版下载
  • 网站建设几层结构营销型网站策划方案
  • 手机微网站制作app注册推广平台
  • 网站导航广告怎么做天津网络关键词排名
  • 做简历的网站厦门网站设计公司
  • 网站图片要求seo云优化方法
  • 科技公司网站建设的搜索引擎优化
  • 住房和城建设网站今天国内最新消息
  • 北京东直门网站建设软件测试培训机构哪家好
  • 南宁做网站 的东莞网站制作
  • 计算机网站建设的能力百度推广后台登陆
  • 南京企业网站制作价格sem竞价课程
  • 用vs2008做网站自动点击器下载
  • 公司建立网站的费用如何做帐网络营销方式有几种
  • 网络科技公司 网站建设上海建站seo
  • 六安网站设计公司企业网络推广网站
  • 国内企业网站欣赏怎么做seo
  • 无锡建设网站制作营销推广主要包括