Huggingface 的介绍 使用入门

举报
tea_year 发表于 2025/05/15 20:26:21 2025/05/15
【摘要】 1.Huggingface 的简介Huggingface 即是网站名也是其公司名 ,随着 transformer 浪潮 ,Huggingface 逐步收纳了众多最前沿的模型和数据集等有趣的工 作 ,与 transformers 库结合 ,可以快速使用学习这些模型。 目前提到 NLP 必然绕不开 Huggingface。2. Huggingface 的具体介绍进入 Huggingface 网站...


1.Huggingface 的简介

Huggingface 即是网站名也是其公司名 ,随着 transformer 浪潮 ,Huggingface 逐步收纳了众多最前沿的模型和数据集等有趣的工 ,与 transformers 库结合 ,可以快速使用学习这些模型。 目前提到 NLP 必然绕不开 Huggingface。

2. Huggingface 的具体介绍

进入 Huggingface 网站,如下图所示。

其主要包含:

Models(模型 包括各种处理 CV 和 NLP 等任务的模型 ,上面模型都是可以免费获得 Datasets(数据集 包括很多数据集

Spaces(分享空间 包括社区空间下最新的一些有意思的分享 ,可以理解为 huggingface 朋友圈 Docs(文档 ,各种模型算法文档 包括各种模型算法等说明使用文档Solutions(解决方案 ,体验等 包括 others Pricing(dddd 懂的都懂

3.Huggingface Models

点开 Models。可以看到下图的任务 ,再点开+23 Tasks。



可以看到下图所有的任务。

其中 ,主要包括计算机视觉、 自然语言处理、语音处理、多模态、表格处理、强化学习。

展开介绍:

Computer Vision(计算机视觉任务):包括 lmage Classification(图像分类 lmage Segmentation(图像分割)、zero-Shot lmage Classification(零样本图像分类)、lmage-to-Image(图像到图像的任务)、Unconditional lmage Generation(无条件 图像生成)、Object Detection(目标检测)、Video Classification(视频分类)、 Depth Estimation(深度估计 ,估计拍摄者距离图 像各处的距离)

Natural Language Processing(自然语言处理):包括 Translation(机器翻译)、Fill-Mask(填充掩码 ,预测句子中被遮掩的词)、 Token Classification(词分类)、Sentence Similarity(句子相似度)、Question Answering(问答系统 Summarization(总 结,缩句)、Zero-Shot Classification (零样本分类)、Text Classification(文本分类)、Text2Text(文本到文本的生成)、Text Generation (文本生成)、Conversational(聊天)、Table Question Answer(表问答 ,1.预测表格中被遮掩单词 2.数字推理 ,判断句子是否 被表格数据支持)

Audio(语音):Automatic Speech Recognition(语音识别)、Audio Classification(语音分类)、Text-to-Speech(文本到语 音的生成)、Audio-to-Audio(语音到语音的生成)、Voice Activity Detection(声音检测、检测识别出需要的声音部分)

Multi modal(多模态 Feature Extraction(特征提取)、Text-to-Image(文本到图像)、Visual Question Answering(视觉 问答)、Image2Text(图像到文本)、Document Question Answering(文档问答)


Tabular(表格):Tabular Classification(表分类)、Tabular Regression(表回归)

Reinforcement Learning(强化学习 Reinforcement Learning(强化学习)、Robotics(机器人)


模型的使用

一般来说 ,页面上会给出模型的介绍。例如 ,我们打开其中一个 fill-mask 任务下下载最多的模型 bert-base-uncased。


可以看到模型描述:


使用方法-1


需要提前安装 transformers 库 ,可以直接 pip install transformers 安装。还有 Pytorch 或 TensorFlow 库 ,读者自行下载。

下载完后可以使用 pipeline 直接简单的使用这些模型。第一次执行时 pipeline 会加载模型 ,模型会自动下载到本地 ,可以直接用。 第一个参数是任务类型 ,第二个是具体模型名字。

from transformers import pipeline

unmasker = pipeline('fill-mask',model ='bert-base-uncased') unmasker("Hello I'm a [MASK] model.")

模型下载在本地的地址:

C:\Users\【自己的用户名】\.cache\huggingface\hub

当然 ,不同模型使用方法略有区别 ,直接通过页面学习或文档学习最好

可以自定义加载输入分词器:使用 AutoTokenizer

from transformers import AutoTokenizer #下面这种方式可以自动加载bert-base-uncased中使用的分词器 tokenizer=AutoTokenizer.from_pretrained("bert-base-uncased")


可以自定义加载模型结构:使用 AutoModel

不包括输入分词器和输出部分!!!

from transformersimport AutoModel

#下面这种方式可以自动加载bert-base-uncased中使用的模型,没有最后的全连接输出层和softmax model=AutoModel.from_pretrained("bert-base-uncased")

可以自定义加载模型和输出部分:使用 AutoModel ForSequenceClassification 等

from transformersimport AutoModelForSequenceClassification

#下面这种方式可以自动加载bert-base-uncased中使用的模型(包括了输出部分),有最后的全连接输出层

model=AutoModel.AutoModelForSequenceClassification("bert-base-uncased")


模型保存

model.save_pretrained("./")#保持到当前目录

1 个简单流程例子

input=['Thefirst sentence!,' 'The secondsentence!]' from transformersimport AutoTokenizer

tokenizer=AutoTokenizer.from_pretrained("distilbert-base-uncased-finetuned-sst-2-english")#htps:/huggingface.co/dis tilbert-base-uncased-finetuned-sst-2-english


input=tokenizer(input, pading=True, truncation=True, return_tensors='pt)'#pading='max_length' from transformersimport AutoModelForSequenceClassification

model=AutoModel.AutoModelForSequenceClassification("distilbert-base-uncased-finetuned-sst-2-english") print(model)

output=model(**input) print(output.logits.shape) import torch

predictions=torch.nn.functional.softmax(output.logits, dim=1) print(predictions)

print(model.config.id2label)


使用方法-2



下面以ChatGLM2-6B 为例(见上图 先在 git hub 上 git 下 ChatGLM2-6B 除模型外的相关文件 git clone https://git hub.com/THUDM/ChatGLM2-6B.git cd ChatGLM2-6B

再安装好相关依赖

pip install -r requirements.txt


接下来可以类似刚才的方法一直接执行下面代码 ,会在网上自动下载模型文件

> > > from transformers import AutoTokenizer, AutoModel


> > > tokenizer = AutoTokenizer.from_pretrained("THUDM/chatglm2-6b", trust_remote_code =True)


> > > model = AutoModel.from_pretrained("THUDM/chatglm2-6b", trust_remote_code =True, device='cuda') > > > model = model.eval()

> > > response, history = model.chat(tokenizer, "你好", history=[]) > > > print(response)

你好 !我是人工智能助手 ChatGLM2-6B,很高兴见到你,欢迎问我任何问题。


> > > response, history = model.chat(tokenizer, "晚上睡不着应该怎么办", history=history) > > > print(response)


晚上睡不着可能会让你感到焦虑或不舒服,但以下是一些可以帮助你入睡的方法:


1. 制定规律的睡眠时间表:保持规律的睡眠时间表可以帮助你建立健康的睡眠习惯,使你更容易入睡。尽量在每天的相同时间上床,并在 同一时间起床。

2. 创造一个舒适的睡眠环境:确保睡眠环境舒适,安静,黑暗且温度适宜。可以使用舒适的床上用品,并保持房间通风。

3. 放松身心:在睡前做些放松的活动,例如泡个热水澡,听些轻柔的音乐,阅读一些有趣的书籍等,有助于缓解紧张和焦虑,使你更容易入睡。

4. 避免饮用含有咖啡因的饮料:咖啡因是一种刺激性物质,会影响你的睡眠质量。尽量避免在睡前饮用含有咖啡因的饮料,例如咖啡,茶和 可乐。

5. 避免在床上做与睡眠无关的事情:在床上做些与睡眠无关的事情,例如看电影,玩游戏或工作等,可能会干扰你的睡眠。

6. 尝试呼吸技巧:深呼吸是一种放松技巧,可以帮助你缓解紧张和焦虑,使你更容易入睡。试着慢慢吸气,保持几秒钟,然后缓慢呼气。

如果这些方法无法帮助你入睡,你可以考虑咨询医生或睡眠专家,寻求进一步的建议。

也可以方法二,找到 huggingface 上Cha tGLM2-6B 模型地址 ,直接 git

git clone https://huggingface.co/THUDM/chatglm2-6b


然后打开刚才的 ChatGLM2-6B 里的 web_demo.py ,修改里面的模型和 AutoTokenizer 目录 ,为刚才 git 模型的目录 ,例如我在 ChatGLM2-6B 里新建了一个 model ,在 model 目录下 git 模型的 ,所以我的目录修改为下图


最后 ,在终端直接执行下面代码 python web_demo.py点击下图链接 ,即可使用 ChatGLM2-6B


4.Huggingface 的 dataset


可以看到有如下任务的数据集。读者可自行打开学习



例如 ,我们打开 Text Classification 任务的 glue 数据集



可以看到下图 ,里面会有数据集的介绍、相关信息和下载方式 ,读者自行查看。



加粗样式

导入数据集方法(提前 pip install datasets)

from datasets import load_dataset


datasets =load_dataset("glue","mrpc")#glue 下还有其他数据集 print(datasets)

train_data=datasets['train'] print(train_data[0])

有了数据后训练模型方法

#下面给出 bert-base-uncased 的例子 ,实现对两个句子的相似度计算 #导入 tokenizer

from transformers import AutoTokenizer


tokenizer=AutoTokenizer.from_pretrained("bert-base-uncased")#https://huggingface.co/bert-base- uncased


#input =tokenizer('The first sentence!','The second sentence!')#测试 #print(tokenizer.convert_ids_to_tokens(input["input_id"]))

#实际使用 tokenizer 的方法 ,得到 tokenizer_data def tokenize_function(example):

return tokenizer(example["sentence1"],example["sentence2"],truncation =True) from datasets import load_dataset


datasets =load_dataset("glue","mrpc")


tokenizer_data=datasets.map(tokenize_function,batched =True) print(tokenizer_data)

#训练参数


from transformers import TrainingArguments


training_arg =TrainingArguments("test-trainer")#训练参数 ,可以自己去改 ,参数意思参考

https://huggingface.co/docs/transformers/main_classes/trainer#transformers .TrainingArguments print(training_arg)#看下默认值

#导入模型

from transformers import AutoModel ForSequenceClassification

model =AutoModel ForSequenceClassification.from_pre_trained("bert-base-uncased",num_labels =2)#num_labels 自己定义 ,所以不会导入输出层


#导入数据处理的一个东西 DataCollatorWith Padding ,变成一个一个 batch from transformers import DataCollatorWith Padding

data_collator =DataCollatorWith Padding(tokenizer =tokenizer)

#导入训练器 ,进行训练,API : https://huggingface.co/docs/transformers/main_classes/trainer#transformers.Trainer from transformers import Trainer

trainer =Trainer(model,training_arg,train_dataset =tokenizer_data["train"],eval_dataset =tokenizer_data["validation"],data_c ollator =data_collator,tokenizer =tokenizer)


trainer.train()


5.Huggingface spaces


点开如下图所示。里面有些近些天有趣的东西火热的 apps。



比如 ,我看到一个有趣的扩散模型的 app。 。 打开后发现其可以实现许多多模态之间的转换。


【声明】本内容来自华为云开发者社区博主,不代表华为云及华为云开发者社区的观点和立场。转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。