news 2026/10/21 5:21:14

基于Transformers的NLP解决方案

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
基于Transformers的NLP解决方案

文本分类示例

step1 导入相关包

fromtransformersimportAutoTokenizer,AutoModelForSequenceClassification,Trainer,TrainingArgumentsfromdatasetsimportload_data_set

step2 加载数据集

dataset=load_dataset("csv",data_files="./ChnSentiCorp.csv",split="train")dataset=dataset.filter(lambdax:x["review"]isnotNone)

step3 划分数据集

datasets=dataset.train_test_split(test_size=0.1)

step4 数据集预处理

importtorch# 加载 rbt3 对应的分词器tokenizer=AutoTokenizer.from_pretrained("hfl/rbt3")# 定义预处理函数,batched=True时examples是一批样本defprocess_function(examples):# 对review字段(评论文本)分词编码tokenized_examples=tokenizer(examples["review"],max_length=128,truncation=True)# 把原始标签复制到labels字段(Trainer训练要求固定名字labels)tokenized_examples["labels"]=examples["label"]returntokenized_examples# 批量处理整个数据集tokenized_datasets=datasets.map(process_function,batched=True,remove_columns=datasets["train"].column_names)

step5 创建模型

model=AutoModelForSequenceClassification.from_pretrained("hfl/chinese-macbert-large")

step6 创建评估函数

importevaluate# 如果网络不太好,也可以使用本地加载的方式acc_metric=evaluate.load("./metric_accuracy.py")f1_metirc=evaluate.load("./metric_f1.py")defeval_metric(eval_predict):predictions,labels=eval_predict predictions=predictions.argmax(axis=-1)acc=acc_metric.compute(predictions=predictions,references=labels)f1=f1_metirc.compute(predictions=predictions,references=labels)acc.update(f1)returnacc

Step7 创建TrainingArguments

train_args=TrainingArguments(output_dir="./checkpoints",# 输出文件夹per_device_train_batch_size=2,# 训练时的batch_sizegradient_accumulation_steps=32,# *** 梯度累加 ***gradient_checkpointing=True,# *** 梯度检查点 ***optim="adafactor",# *** adafactor优化器 ***per_device_eval_batch_size=4,# 验证时的batch_sizenum_train_epochs=1,# 训练轮数logging_steps=10,# log 打印的频率eval_strategy="epoch",# 评估策略save_strategy="epoch",# 保存策略save_total_limit=3,# 最大保存数learning_rate=2e-5,# 学习率weight_decay=0.001,# weight_decaymetric_for_best_model="f1",# 设定评估指标load_best_model_at_end=True)# 训练完成后加载最优模型train_args

Step8 创建Trainer

fromtransformersimportDataCollatorWithPadding# *** 参数冻结 ***forname,paraminmodel.bert.named_parameters():param.requires_grad=Falsetrainer=Trainer(model=model,args=train_args,tokenizer=tokenizer,train_dataset=tokenized_datasets["train"],eval_dataset=tokenized_datasets["test"],data_collator=DataCollatorWithPadding(tokenizer=tokenizer),compute_metrics=eval_metric)

Step9 模型训练

trainer.train()trainer.evaluate(tokenized_datasets["test"])trainer.predict(tokenized_datasets["test"])

Step10 模型预测

sen="我觉得这家酒店不错,饭很好吃!"id2_label={0:"差评!",1:"好评!"}model.eval()withtorch.inference_mode():inputs=tokenizer(sen,return_tensors="pt")inputs={k:v.cuda()fork,vininputs.items()}logits=model(**inputs).logits pred=torch.argmax(logits,dim=-1)print(f"输入:{sen}\n模型预测结果:{id2_label.get(pred.item())}")fromtransformersimportpipeline model.config.id2label=id2_label pipe=pipeline("text-classification",model=model,tokenizer=tokenizer,device=0)

显存优化策略

模型权重 4B模型参数量
优化器状态 8B
模型参数量,对于常用的AdamW优化器而言
梯度 4B*模型参数量
前向激活值 取决于序列长度、隐层维度、batch大小等多个因素

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/10/21 5:20:55

C#实战:从零构建股票交易模拟系统,掌握撮合引擎与账户结算

简介:这是一份面向C#初学者与.NET开发者的股票交易模拟系统源码,适合希望通过完整项目实战掌握桌面应用开发、数据库操作与业务逻辑实现的学习者。系统提供图形化界面与数据库支持,可进行虚拟股票买卖,模拟真实市场环境。压缩包共…

作者头像 李华
网站建设 2026/10/21 5:20:54

无监督阅读理解实战:摆脱标注数据,用MLM与自训练构建问答系统

做过NLP的人基本都懂那个潜规则:凡是靠监督学习吃饭的任务,一半时间不是在调模型,而是在跟标注数据搏斗。尤其是阅读理解这类任务——你给模型一篇文章,让它回答“文中提到的主角为什么离开城市”,看似简单&#xff0c…

作者头像 李华
网站建设 2026/10/21 5:20:28

极简标题“rea”拆解指南:从模糊缩写到可执行技术方案

1. 从“rea”这个标题说起:一个被低估的通用缩写第一次看到“rea”这个标题的时候,我脑子里蹦出来的第一反应是——这大概率又是一个被缩写玩坏的项目名。在技术圈混久了你会发现,越是短到只有三个字母的标题,背后藏的东西往往越不…

作者头像 李华
网站建设 2026/10/21 5:20:12

Opencode + Sisyphus:搭建全自动AI编码外包流水线

今天不聊“AI能不能写代码”这种老掉牙的问题了,直接说怎么把写代码这件事变成“发一句任务,全程不用盯”的外包流水线。我试过在很多场景下用Cursor辅助编码,日常小需求确实省事,但凡是项目级、需要连续改十几个文件、跑一轮测试…

作者头像 李华
网站建设 2026/10/21 5:20:10

Windows 7 SP1与Server 2008 R2最终版补丁集成镜像制作指南

很多运维老哥手里都还压着几台 Win7 工控机和 Server 2008 R2 老服务器,不是不想换,是真换不动。这几个月我一直在琢磨怎么把补丁一次到位,直到看到 Windows 7 SP1 & Server 2008 R2 2026年2月最终版这个概念,我立刻动手重新做…

作者头像 李华
网站建设 2026/10/21 5:19:10

DELL R730 装 Windows Server 2008 R2 驱动全攻略:从 F6 加载到离线集成

简介:这份驱动包面向需要在Windows Server 2008 R2 64位系统上部署DELL PowerEdge R730服务器的运维人员与装机工程师,用于解决服务器重装或系统迁移后网卡、芯片组、磁盘阵列卡、显卡等设备缺少匹配驱动、无法正常识别的问题。包内共96个文件&#xff0…

作者头像 李华