Hugging Face模型及核心库使用

AgenticAI·十月创作之星挑战赛 10w+人浏览 921人参与


前言

本文主要介绍Hugging Face网站下的模型下载和使用,并对常用的Transformers库Datasets库进行简单介绍。


提示:以下是本篇文章正文内容,下面案例可供参考

一、Hugging Face网站简介

Hugging Face是一个在人工智能领域,尤其是自然语言处理(NLP)方向极具影响力的开源平台和社区,常被亲切地称为“AI界的GitHub”。它极大地降低了AI技术的使用门槛,推动了机器学习模型的共享与协作。

  • 访问网址https://huggingface.co
  • 核心构成:此表格概括了Hugging Face的核心组成部分及其价值:
核心组成部分主要功能解决的问题 / 核心价值
Transformers 库​提供统一的API,支持调用数千种预训练模型(如BERT、GPT、Stable Diffusion)。简化了最先进模型的使用流程,无需从头实现复杂架构。
Hub (模型库)​托管海量开源模型、数据集和演示应用(Spaces),支持版本管理和协作。提供了AI领域的“模型百货商场”,方便查找、分享和复现成果。
Datasets & Tokenizers​提供高效的数据集加载和文本预处理工具。解决了数据获取和清洗的难题,为模型训练提供高质量输入。
Spaces​允许用户快速构建并托管交互式机器学习演示应用。降低了展示和分享AI项目原型的门槛,促进创意交流。

二、模型的本地下载和加载

1.查找所需模型

进入官网的模型库界面进入到网站的模型库界面:https://huggingface.co/models,根据所需搜索并查找相应的模型,并复制模型名称。
复制模型名称

2.模型的下载

from transformers import AutoModel       #通用模型类,可以自动识别并加载大多数Hugging Face上的模型。
from transformers import AutoTokenizer   #通用分词器类,用于加载与模型配套的分词工具。

model_name = "模型名称"  # 此处粘贴你复制的模型名称
cache_dir = "保存路径"   # 指定模型和分词器下载保存的本地路径

# 下载模型和分词器到本地(from_pretrained方法会自动下载模型和分词器文件,并保存到cache_dir路径下。)
AutoModel.from_pretrained(model_name, cache_dir=cache_dir)
AutoTokenizer.from_pretrained(model_name, cache_dir=cache_dir)

print(f"模型和分词器已下载到:{cache_dir}")

三、Transformers 库的简单使用

1.文本分类(Text Classification)

  • 定义:通过预训练模型对文本进行语义理解,并将其归类到预定义的类别中(如情感分析、新闻分类、意图识别等)。
  • 参考模板
# 自动加载适配模型的分词器;自动加载用于文本分类的预训练模型
from transformers import AutoTokenizer, AutoModelForSequenceClassification, pipeline 

# 1. 获取模型保存路径
model_dir = "保存路径"  # 拿到模型和分词器下载保存的本地路径(里面有 config.json、pytorch_model.bin、tokenizer.json 等)。

# 2. 加载模型和分词器
model = AutoModelForSequenceClassification.from_pretrained(model_dir)
tokenizer = AutoTokenizer.from_pretrained(model_dir)

# 3. 创建文本分类 pipeline(pipeline 会自动把输入文本分词、送入模型、输出分类结果)
classifier = pipeline("text-classification", model=model, tokenizer=tokenizer)

# 4. 输入文本进行分类
text = "你好,我在尝试文本分类任务中......"
result = classifier(text)
print(result)

最终输出的LABEL_i 只是模型内部的类别编号,具体含义取决于训练数据。如果用的是公开情感分类模型,通常 LABEL_0 代表“消极”,LABEL_1 代表“积极”,但具体要看模型文档或训练集说明。(也可进行自定义数据集训练)

2.文本生成(Text Generation)

  • 定义:它的功能是自然语言处理中极具创造性的任务,能够根据输入提示(Prompt)自动生成连贯的文本。
  • 参考模板
# 自动加载适配模型的分词器;自动加载用于文本生成的预训练模型
from transformers import AutoModelForCausalLM, AutoTokenizer, pipeline

# 1. 获取模型保存路径
model_dir = "保存路径"  # 拿到模型和分词器下载保存的本地路径(里面有 config.json、pytorch_model.bin、tokenizer.json 等)。

# 2. 加载模型和分词器
model = AutoModelForCausalLM.from_pretrained(model_dir)
tokenizer = AutoTokenizer.from_pretrained(model_dir)

# 3. 创建文本生成 pipeline
generator = pipeline("text-generation", model=model, tokenizer=tokenizer)

# 4. 输入种子文本,生成后续内容
prompt = "请输入你的种子文本"
output = generator(
    prompt,                    #生成文本的输入种子文本(prompt)。模型会根据这个初始文本,生成后续的文本
    max_length=100,            # 生成文本的最大长度,这里最多包含 100 个标记(tokens)
    num_return_sequences=1,    # 返回几段文本序列,这里表示只生成并返回一段文本
    temperature=1.0,           # 随机性(越大越随机)
    top_k=50,                  # 只考虑概率最高的前k个词
    top_p=0.95,                # 核采样,概率累计到p,这里意味着模型会在可能性最强的 95% 的词中选择下一个词
    truncation=True,           # 是否截断输入
    clean_up_tokenization_spaces=True # 清理多余空格
)
print(output)

3.其他任务类型

  1. 序列标注(Token Classification)

    例如:命名实体识别(NER)、分词等
    常用模型:BertForTokenClassification
    pipeline类型:token-classification
    
  2. 问答(Question Answering)

    例如:阅读理解、抽取式问答
    常用模型:BertForQuestionAnswering
    pipeline类型:question-answering
    
  3. 文本摘要(Summarization)

    例如:长文本自动生成摘要
    常用模型:BartForConditionalGeneration、T5ForConditionalGeneration
    pipeline类型:summarization
    
  4. 翻译(Translation)

    例如:中英文互译
    常用模型:MarianMTModel、T5ForConditionalGeneration
    pipeline类型:translation
    
  5. 填空(Fill-Mask)

    例如:完形填空、掩码预测
    常用模型:BertForMaskedLM
    pipeline类型:fill-mask
    

四、Datasets 库的简单使用

1.加载在线数据集

from datasets import load_dataset

dataset = load_dataset("数据集名称")  #直接从hugging face官网获取,因此要利用魔法
print(dataset)

2.加载本地 CSV/JSON 数据

dataset = load_dataset("csv", data_files="文件路径.csv")
# 或
dataset = load_dataset("json", data_files="文件路径.json")
print(dataset)

3.加载本地缓存数据

from datasets import load_from_disk

dataset = load_from_disk("缓存目录路径")
print(dataset)

4.访问和遍历数据

train_data = dataset["train"]  # 或 "test", "validation"
for item in train_data:
    print(item)

补充:pipeline 用法

# pipeline:HuggingFace 提供的高层 API,可以快速实现各种 NLP 任务(如文本分类、生成、问答等)。
pipeline(task, model=None, tokenizer=None, ...)
参数解释
task:任务类型,如 “text-classification”、“text-generation”、“question-answering” 等。
model:模型对象(如 BERT、RoBERTa)。
tokenizer:分词器对象。
其它参数如 device(指定用 CPU 还是 GPU)、return_all_scores(是否返回所有类别分数)等。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Hey_06

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值