码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • 【AI大模型】Transformers大模型库(十一):Trainer训练类


     

    目录

    一、引言 

    二、Trainer训练类

    2.1 概述

    2.2 使用示例

    三、总结


    一、引言 

     这里的Transformers指的是huggingface开发的大模型库,为huggingface上数以万计的预训练大模型提供预测、训练等服务。

    🤗 Transformers 提供了数以千计的预训练模型,支持 100 多种语言的文本分类、信息抽取、问答、摘要、翻译、文本生成。它的宗旨是让最先进的 NLP 技术人人易用。
    🤗 Transformers 提供了便于快速下载和使用的API,让你可以把预训练模型用在给定文本、在你的数据集上微调然后通过 model hub 与社区共享。同时,每个定义的 Python 模块均完全独立,方便修改和快速研究实验。
    🤗 Transformers 支持三个最热门的深度学习库: Jax, PyTorch 以及 TensorFlow — 并与之无缝整合。你可以直接使用一个框架训练你的模型然后用另一个加载和推理。

    本文重点介绍Trainer训练类。

    二、Trainer训练类

    2.1 概述

    :

    2.2 使用示例

    1. from transformers import AutoModelForSequenceClassification, Trainer, TrainingArguments
    2. from datasets import load_dataset
    3. # 1. 加载数据集
    4. # 假设我们使用的是Hugging Face的内置数据集,例如SST-2
    5. dataset = load_dataset('sst2') # 或者使用你自己的数据集
    6. # 2. 数据预处理,可能需要根据模型进行Tokenization
    7. # 以BERT为例,使用AutoTokenizer
    8. from transformers import AutoTokenizer
    9. tokenizer = AutoTokenizer.from_pretrained("bert-base-uncased")
    10. def tokenize_function(examples):
    11. return tokenizer(examples["sentence"], truncation=True)
    12. tokenized_datasets = dataset.map(tokenize_function, batched=True)
    13. # 3. 准备训练参数
    14. training_args = TrainingArguments(
    15. output_dir='./results', # 输出目录
    16. num_train_epochs=3, # 总的训练轮数
    17. per_device_train_batch_size=16, # 每个GPU的训练批次大小
    18. per_device_eval_batch_size=64, # 每个GPU的评估批次大小
    19. warmup_steps=500, # 预热步数
    20. weight_decay=0.01, # 权重衰减
    21. logging_dir='./logs', # 日志目录
    22. logging_steps=10,
    23. )
    24. # 4. 准备模型
    25. model = AutoModelForSequenceClassification.from_pretrained("bert-base-uncased")
    26. # 5. 创建Trainer并开始训练
    27. trainer = Trainer(
    28. model=model, # 要训练的模型
    29. args=training_args, # 训练参数
    30. train_dataset=tokenized_datasets['train'], # 训练数据集
    31. eval_dataset=tokenized_datasets['validation'], # 验证数据集
    32. )
    33. # 开始训练
    34. trainer.train()

    整个流程是机器学习项目中的标准流程:数据准备、模型选择、参数设置、训练与评估。每个步骤都是为了确保模型能够高效、正确地训练,以解决特定的机器学习任务:

    • 加载数据集 (load_dataset('sst2')):这行代码是使用Hugging Face的datasets库加载SST-2数据集,这是一个情感分析任务的数据集。如果你使用自定义数据集,需要相应地处理和加载数据。
    • 数据预处理 (tokenizer(examples["sentence"], truncation=True)):在训练模型之前,需要将文本数据转换为模型可以理解的格式。这里使用AutoTokenizer对文本进行分词(Tokenization),truncation=True意味着如果句子超过模型的最大输入长度,将截断超出部分。这一步是将文本转换为模型输入的张量格式。
    • 训练参数 (TrainingArguments):这部分定义了训练过程的配置,包括训练轮数(num_train_epochs)、每个设备的训练和评估批次大小、预热步数(warmup_steps)、权重衰减(weight_decay)等。这些参数对训练效率和模型性能有重要影响。
    • 准备模型 (AutoModelForSequenceClassification.from_pretrained()):这里选择或初始化模型,AutoModelForSequenceClassification是用于序列分类任务的模型,from_pretrained方法加载预训练的模型权重。选择的模型(如BERT的“bert-base-uncased”)是基于任务需求的。
    • 创建Trainer (Trainer):Trainer是Transformers库中的核心类,它负责模型的训练和评估流程。它接收模型、训练参数、训练数据集和评估数据集作为输入。Trainer自动处理了训练循环、损失计算、优化器更新、评估、日志记录等复杂操作,使得训练过程更加简洁和高效。
    • 开始训练 (trainer.train()):调用此方法开始模型的训练过程。Trainer会根据之前设定的参数和数据进行模型训练,并在每个指定的步骤打印日志,训练完成后,模型的权重会保存到指定的输出目录。

    三、总结

    本文对transformers训练类Trainer进行讲述并赋予应用代码,希望可以帮到大家!

    如果您还有时间,可以看看我的其他文章:

    《AI—工程篇》

    AI智能体研发之路-工程篇(一):Docker助力AI智能体开发提效

    AI智能体研发之路-工程篇(二):Dify智能体开发平台一键部署

    AI智能体研发之路-工程篇(三):大模型推理服务框架Ollama一键部署

    AI智能体研发之路-工程篇(四):大模型推理服务框架Xinference一键部署

    AI智能体研发之路-工程篇(五):大模型推理服务框架LocalAI一键部署

    《AI—模型篇》

    AI智能体研发之路-模型篇(一):大模型训练框架LLaMA-Factory在国内网络环境下的安装、部署及使用

    AI智能体研发之路-模型篇(二):DeepSeek-V2-Chat 训练与推理实战

    AI智能体研发之路-模型篇(三):中文大模型开、闭源之争

    AI智能体研发之路-模型篇(四):一文入门pytorch开发

    AI智能体研发之路-模型篇(五):pytorch vs tensorflow框架DNN网络结构源码级对比

    AI智能体研发之路-模型篇(六):【机器学习】基于tensorflow实现你的第一个DNN网络

    AI智能体研发之路-模型篇(七):【机器学习】基于YOLOv10实现你的第一个视觉AI大模型

    AI智能体研发之路-模型篇(八):【机器学习】Qwen1.5-14B-Chat大模型训练与推理实战

    AI智能体研发之路-模型篇(九):【机器学习】GLM4-9B-Chat大模型/GLM-4V-9B多模态大模型概述、原理及推理实战

    《AI—Transformers应用》

    【AI大模型】Transformers大模型库(一):Tokenizer

    【AI大模型】Transformers大模型库(二):AutoModelForCausalLM

    【AI大模型】Transformers大模型库(三):特殊标记(special tokens)

    【AI大模型】Transformers大模型库(四):AutoTokenizer

    【AI大模型】Transformers大模型库(五):AutoModel、Model Head及查看模型结构

  • 相关阅读:
    Python大数据之PySpark(八)SparkCore加强
    数据可视化之平台数据分析
    【多目标进化优化】 Pareto 最优解集的构造方法
    【OFDM系列6】MIMO-OFDM系统模型、迫零(ZF)均衡检测和最小均方误差(MMSE)均衡检测原理和公式推导
    Mysql中char和varchar的区别详细剖析
    代码规范工具
    4、在 CentOS 8 系统上安装 pgAdmin 4
    ArcGIS 软件中路网数据的制作,手把手教学
    Java面试连击发问:Http是短连接还是长连接该怎么回答?
    matlab运行CLBP程序为什么没有图?
  • 原文地址:https://blog.csdn.net/weixin_48007632/article/details/139845226
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | Kerberos协议及其部分攻击手法
    0day的产生 | 不懂代码的"代码审计"
    安装scrcpy-client模块av模块异常,环境问题解决方案
    leetcode hot100【LeetCode 279. 完全平方数】java实现
    OpenWrt下安装Mosquitto
    AnatoMask论文汇总
    【AI日记】24.11.01 LangChain、openai api和github copilot
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1
正则表达式工具 cron表达式工具 密码生成工具

京公网安备 11010502049817号