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

大模型微调(3):Hugging Face Transformers 快速入门

1. Hugging Face Transformers 简介

在前面的文章中,我们已经介绍了 Hugging Face 这个平台,了解了它是当下大模型领域最核心的开源社区,里面托管了大量的开源模型(Models)、数据集(Datasets)和应用(Speces)。

在 Hugging Face 中,最核心的就是 Transformers 库,它是一个基于预训练模型的Python库,构建于经典的深度学习框架 TensorFlow 、PyTorch 和 JAX 之上,并提供了更高层的抽象,允许用户高效地下载和训练机器学习模型。

Transformers最初被创建用于开发语言模型,现在功能已扩展到包括多模态、计算机视觉和音频处理等其他用途的模型,已经成为了大模型 pre-train 和 fine-tune 工程的事实标准,几乎所有大模型微调的项目都会使用到 Transformers 库。

Transformers 库的价值主要在于以下几个方面:

  • 丰富的预训练模型:提供广泛的预训练模型,如 BERT、GPT、T5 等,适用于各种NLP任务。
  • 易于使用:设计注重易用性,使得即使没有深厚机器学习背景的开发者也能快速上手。
  • 快速集成最新研究成果:Transformers 的更新非常活跃,会第一时间跟进最新的研究成果和模型。
  • 强大的社区支持:活跃的社区不断更新和维护库,提供技术支持和新功能。
  • 跨框架兼容性:支持多种深度学习框架,如 PyTorch、TensorFlow 和 JAX,并提供灵活选择。
  • 高度灵活和可定制化:允许用户根据需求定制和调整模型,进行微调或应用于特定任务。
  • 广泛的应用范围:适用于从文本分类到语言生成等多种 NLP 应用,以及多模态的扩展。

2. Pipeline 运行原理

在 Transformers 库中,提供了一个 Pipeline(管道) API,它封装了 Transformers 库中大部分复杂的逻辑处理,并暴露给用户一个简单易用的、可用于处理多种模型任务的接口,包括命名实体识别、情感分析、特征提取、问答等等,可以有效地降低模型推理的学习和使用成本。

可以概览下 Pipeline 所支持的核心功能:

Pipeline 封装了整个数据预处理、模型推理与特定任务后处理的过程,我们以一个具体的情感分析场景为例:输入一句话 "AI changes the world!",让模型判断出出这句话的情感倾向是正面还是负面。

其核心原理可以参考下图:

  1. Tokenizer 分词器:针对文本类大模型来说,通过每个大模型都有一个与其一一对应的 Tokenizer 分词器。因为模型是没法直接处理文本的,它只能进行向量和矩阵计算,因此需要 Tokenizer 先将原始文本编码成对应的 token_ids,这样才能交给模型进行处理。
  2. Model 大模型:预训练好的 LLM 大模型,例如 BERT、GPT 等,对输入的 token_ids 进行推理计算,输出特定的概率。
  3. Post-Processing 特定任务后处理:通常模型的原始输入无法直接使用,需要进行特定业务场景的后处理,在本例子,就需要将模型输出的概率,转换成正向、负向的标签及其对应的置信度(Score)。

3. 使用 Pipeline API 实战情感分析

接下来,我们就以上面的情感分析功能为例,实战下 Pipeline API 的使用。代码非常简单:

from transformers import pipeline  # 导入Transforms Pipeline API# 创建Pipeline
# 使用tabularisai/multilingual-sentiment-analysis模型
pip = pipeline(task="sentiment-analysis",  # 任务类型为sentiment-analysis情感分析model="tabularisai/multilingual-sentiment-analysis")  # 指定模型# 进行情感分析
result = pip("AI changes the world!")
print(result)

执行结果如下 :

模型将 "AI changes the world!" 这句话判定成了 Very Positive,并且置信度分数为 0.69,这比较符合我们的常识。

可以看到,使用 Pipeline API,可以非常方便地实现各种常见的机器学习任务,大幅提高了开发效率。

相关文章:

  • 07-后端Web实战(部门管理)
  • python 报错记录-Linux 退出python环境
  • Class ‘AlibabaCloud\Tea\Utils\Utils\RuntimeOptions‘ not found
  • 2025年中国ERP软件前十名对比:选型指南与适用场景的分析
  • Linux多线程(二)之进程vs线程
  • 单细胞测序细胞注释全攻略:选择自动工还是手动验证,附常见细胞Marker基因
  • 多端一体开发:iVX 如何让「一次开发,全平台部署」从理想照进现实
  • PDF 表单按钮动态边框效果
  • 使用 Vuex 实现用户注册与登录功能
  • Graph Neural Network(GNN)
  • 苍穹外卖--Redis
  • Java基础 Day21
  • 袁庭新陕西理工大学讲座报告:从技术原理到行业变革,构建AI时代的职业护城河
  • Webpack 5 模块联邦(Module Federation)详解与实战
  • 曼昆经济学原理第九版目录
  • 洛谷 P3374 【模板】树状数组 1(线段树解法)
  • 关于 smali:1. Smali 基础语法入门
  • [Java恶补day7] 42. 接雨水
  • AI巡检系统适合多大面积的餐厅?
  • 爬虫学习-Scrape Center spa6 超简单 JS 逆向
  • 免费做cpa单页网站/国际新闻界
  • Win8系统里dw如何做动态网站/网站收录查询入口
  • 网站 not found/最新nba排名
  • 网站建设 微信 app/seo人工智能
  • 网页字体尺寸设计/南京seo推广
  • 想要做网站/营销推广策划方案范文