文章目录
前言
本文主要介绍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.其他任务类型
-
序列标注(Token Classification)
例如:命名实体识别(NER)、分词等 常用模型:BertForTokenClassification pipeline类型:token-classification
-
问答(Question Answering)
例如:阅读理解、抽取式问答 常用模型:BertForQuestionAnswering pipeline类型:question-answering
-
文本摘要(Summarization)
例如:长文本自动生成摘要 常用模型:BartForConditionalGeneration、T5ForConditionalGeneration pipeline类型:summarization
-
翻译(Translation)
例如:中英文互译 常用模型:MarianMTModel、T5ForConditionalGeneration pipeline类型:translation
-
填空(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(是否返回所有类别分数)等。 |