【huggingface】笔记

        在跑公司给的代码中遇到使用huggingface中的模型提取特征的操作,于是了解一下huggingface的使用流程和背后逻辑。

 参考博客:huggingface.transformers速成笔记:Pipeline推理和AutoClass-阿里云开发者社区 (aliyun.com)

Huggingface的介绍,使用(CSDN最强Huggingface入门手册)_huggingface使用教程_小怪兽会微笑的博客-CSDN博客 

        需要提前安装transformers库,可以直接pip install transformers安装。

公司代码中包含:

from transformers import AutoFeatureExtractor, AutoModel, AutoConfig

使用时:

feature_extractor = AutoFeatureExtractor.from_pretrained(model_name['WavLM_base_plus'])

config = AutoConfig.from_pretrained(self.model_name[model_key])

self.pre_model = AutoModel.from_pretrained(self.model_name[model_key], config=config)

不理解from_pretrained方法,于是查阅博客:

AutoFeatureExtractor, AutoModel, AutoConfig都属于AutoClass

AutoClass的from_pretrained()方法自动根据预训练模型的名称或路径提取其architecture,使用户可以迅速加载任何architecture的预训练模型,只需要根据任务选择特定的AutoClass即可直接调用模型。

  • AutoFeatureExtractor对于audio和vision任务,feature extractor将audio signal或图像转换为正确的输入格式。

  • AutoConfig用于加载预训练模型的超参,from_pretrained()函数中可以传入修改特定超参的入参。Config的初次构造相对简单,主要是通过hf_bucket_url函数将函数短名映射成为网络URL,形如'https://s3.amazonaws.com/models.huggingface.co/bert/bert-base-chinese-config.json'的一个json文件。下载它到cache目录,再读取构造对象即可。

  • AutoModel用于加载预训练模型实例,返回一个标准的torch.nn.Module对象。torch.nn.Module解释:torch.nn.Module模块简单介绍-CSDN博客 PyTorch基础:神经网络工具箱torch.nn(nn.Module类)_torch.nn.module-CSDN博客

    Model的构造也相对简单。需要先得到Config对象,然后查MODEL_MAPPING映射表,得到实际的Model Class。Model Class定义了类方法from_pretrained。这个方法会根据模型短名以及该模型是从TF还是PT训练的,利用hf_bucket_url函数转成相应的URL。TF2对应的模型文件名为tf_model.h5,PT对应的模型文件名为pytorch_model.bin。由于模型文件一般比较大,转换时采用了CDN域名,下载时采用了分块下载stream的方式。

       from_pretrained方法,这个方法则一气完成了模型类别推理、模型文件列表映射、模型文件下载及缓存、类对象构建等一系列操作。 from_pretrained这个类方法,最重要的一个参数叫做pretrained_model_name_or_path。顾名思义,我们可以给出一个模型的短名,也可以给出一个路径。如果给的是模型短名,则它会想办法映射出要下载的文件的URL位置,并将文件下载到本地一个固定的cache目录。第二次再调用的时候,它会检查cache中是否已经存在同样的文件,如果有则直接从cache载入,不再走网络下载。如果给的是路径名,那么它假设该路径之下已经存在自行训练/预下载/经过微调的模型文件,直接载入。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值