【一文详解】Hugging face训练学习大模型的必懂技能

一、Hugging face简介


1.HuggingFace是什么
可以理解为对于AI开发者的Github,提供了模型、数据集(文本|图像|音频|视频)、类库(比如transformers|peft|accelerate)、教程等。
2.为什么需要HuggingFace
主要是HuggingFace把AI项目的研发流程标准化,即准备数据集、定义模型、训练和测试,如下所示:

 如果你关注自然语言处理(NLP)、机器学习领域,那么对 Hugging Face 一定不会陌生。它就像一个强大的 AI 工具百宝箱,为全球开发者、研究人员和 AI 爱好者提供了丰富的资源和强大的支持。

二、HUgging face核心业务与产品矩阵

(一)提供 AI 模型服务

Hugging Face 拥有一系列强大的预训练 AI 模型,涵盖自然语言处理、计算机视觉、语音识别等多个领域。无论是想做文本分类、情感分析,还是图像识别、语音合成,在这里都能找到合适的预训练模型。这些模型就像是搭建高楼大厦的基石,开发者可以基于它们快速构建和部署 AI 应用程序,大大节省了开发时间和成本。

(二)构建开源产品矩阵

自然语言处理库(如 Transformers):这是 Hugging Face 最知名的开源库之一,包含了众多经典的 Transformer 架构变体,如 BERT、GPT、Roberta、T5、Electra 等。这些模型在 NLP 任务中表现卓越,被广泛应用于各种场景。以 BERT 为例,它在命名实体识别任务中,能够准确地从文本中识别出人名、地名、组织机构名等实体,为信息抽取、知识图谱构建等应用提供了关键支持。
模型库:除了自然语言处理相关模型,还收纳了各种领域的模型,方便开发者根据需求选择和使用。
数据集:丰富多样的数据集,覆盖各种 NLP 任务和领域,如新闻、社交媒体、医疗文本等。这些数据集是训练和评估模型的重要素材,帮助开发者更好地优化模型性能。比如,在训练情感分析模型时,使用包含不同情感倾向的社交媒体文本数据集,可以让模型学习到更准确的情感表达模式。


(三)建立 AI 开发生态

开发者社区:这是一个充满活力的社区,全球的 AI 开发者在这里交流经验、分享代码、讨论技术难题。无论是刚入门的新手,还是经验丰富的专家,都能在社区中找到帮助和灵感。社区里经常有各种技术分享活动、挑战赛,促进开发者之间的互动和合作。
Spaces:一个神奇的地方,允许用户运行和共享 AI 应用程序。开发者可以在 Spaces 上部署自己的模型,并创建交互式应用程序,供其他用户试用和反馈。比如,你开发了一个图像生成模型,就可以在 Spaces 上展示,让大家直观地体验模型的效果,同时收集用户的意见,进一步改进模型。
(四)提供 AI 解决方案服务

围绕 NLP、Vision 等方向,为客户提供定制化解决方案,收取技术服务费用。这使得 Hugging Face 不仅在技术开源上做出贡献,还能通过实际的商业应用,推动 AI 技术在各个行业的落地。

三、技术优势与应用场景

(一)技术优势

丰富的预训练模型:前面提到,大量的预训练模型,覆盖多种语言和 NLP 任务,大大缩短了模型开发周期。对于企业来说,无需从头开始训练模型,节省了大量的时间和计算资源。
多模态处理能力:除了强大的文本处理能力,Hugging Face 还支持图像、音频和视频等多种媒体类型的处理。这意味着可以开发出更加智能、多功能的 AI 应用,比如图像描述生成(输入一张图片,生成描述图片内容的文本)、语音转文本并进行情感分析等。
API 服务:提供的模型推理 API,让用户无需下载模型,就能方便地进行模型调用。这对于一些计算资源有限,或者需要快速验证模型效果的用户来说,非常便捷。
开源共享:所有模型、数据集和工具都是开放的,任何人都可以自由访问、使用和修改。这种开源精神吸引了全球开发者的参与,不断推动技术的创新和发展。


(二)应用场景

自然语言处理相关应用:如聊天机器人、智能客服、机器翻译、文本摘要、内容生成等。许多企业的智能客服系统,就是基于 Hugging Face 的模型进行开发,能够快速准确地回答用户问题,提升客户服务效率。
计算机视觉领域:图像分类、目标检测、图像生成等。例如,基于 Hugging Face 的模型开发的图像分类应用,可以对大量图片进行自动分类,用于图像管理、安防监控等场景。
语音识别与合成:语音助手、有声读物生成等。通过 Hugging Face 的语音相关模型,能够实现高质量的语音识别和合成,为用户提供更好的语音交互体验。


四、如何使用 Hugging Face

(一)注册与环境搭建

首先,在 Hugging Face 官网(https://huggingface.co/)创建账户。
确保你的系统安装了 Python 3.8 或更高版本,以及 Python 的包管理器 pip。
打开终端或命令提示符,运行命令安装 Hugging Face 库,如pip install transformers。

访问私有模型或数据集、上传模型或数据集到Hugging Face Hub或者遇到某些模型或数据集可能有使用限制的情况,需要通过登录Hugging Face Hub来验证自己的身份。需要访问https://huggingface.co/settings/tokens,创建具有写权限的访问令牌,然后使用令牌来登录。

1.Jupyter Notebook
from huggingface_hub import notebook_login
notebook_login()
#在输入中输入你的token
 2.代码中使用
from huggingface_hub import login
login(token="your_token")
3.在命令行中
pip install huggingface_hub
huggingface-cli login
#输入你的访问令牌后,提示登录成功
#也可以通过添加环境变量来实现
export HUGGINGFACE_TOKEN=your_token
#验证是否登录成功
huggingface-cli whoami

如果需要使用数据集和 tokenizers 等功能,还需安装相应的库,如pip install datasets tokenizers。

pip install transformers
pip install datasets
pip install pytorch
 
pip install tokenizers
pip install diffusers
pip install accelerate
pip install evaluate
pip install optimum
 
pip install pillow
pip install requests
pip install gradio


(二)使用模型库

选择你喜欢的代码编辑器或 IDE,如 Jupyter Notebook、PyCharm 或 Visual Studio Code。
在代码中导入所需的库和模型,例如:

from transformers import BertTokenizer, BertModel
tokenizer = BertTokenizer.from_pretrained('bert-base-uncased')
model = BertModel.from_pretrained('bert-base-uncased')
text = "这是一个示例文本"
inputs = tokenizer(text, return_tensors='pt')
outputs = model(**inputs)

这段代码展示了如何使用 Bert 模型对文本进行处理,首先导入 Bert 分词器和模型,然后对文本进行分词并输入模型,得到模型的输出。

1)模型调用API-transformers

Hugging Face 的核心库,提供了用于加载预训练模型、分词器和其他相关工具的接口。可以理解为它可以直接调用HuggingFace上各种预训练模型中的每块“积木”(如编码器、解码器、注意力机制层等),用户可以直接下载这些去搭建使用,而非像研究者一样需要用pytorch或者tensorflow框架对一层层神经网络进行搭建去关注其中的细节。

#from_pretrained方法
from transformers import AutoModel, AutoConfig, AutoTokenizer
#AutoModel.from_pretrained(pretrained_model_name_or_path, **kwargs)
model = AutoModel.from_pretrained("google-bert/bert-base-cased")
#AutoConfig.from_pretrained(pretrained_model_name_or_path, **kwargs)
config = AutoConfig.from_pretrained("bert-base-uncased")
#AutoTokenizer.from_pretrained(pretrained_model_name_or_path, *inputs, **kwargs)
tokenizer = AutoTokenizer.from_pretrained("bert-base-uncased")
 
 
#register方法 创建个性化类
# AutoConfig.register(model_type, config, exist_ok = False)
AutoConfig.register("new-model", NewModelConfig)
 
#如果想保存模型到本地,使用save_pretrained方法
model.save_pretrained('PATH')

(三)使用数据集

从 Hugging Face 的 Datasets 平台加载数据集,例如:

数据处理框架(datasets) 

Hugging Face 的核心库,提供了用于加载预训练模型、分词器和其他相关工具的接口。可以理解为它可以直接调用HuggingFace上各种预训练模型中的每块“积木”(如编码器、解码器、注意力机制层等),用户可以直接下载这些去搭建使用,而非像研究者一样需要用pytorch或者tensorflow框架对一层层神经网络进行搭建去关注其中的细节。

#from_pretrained方法
from transformers import AutoModel, AutoConfig, AutoTokenizer
#AutoModel.from_pretrained(pretrained_model_name_or_path, **kwargs)
model = AutoModel.from_pretrained("google-bert/bert-base-cased")
#AutoConfig.from_pretrained(pretrained_model_name_or_path, **kwargs)
config = AutoConfig.from_pretrained("bert-base-uncased")
#AutoTokenizer.from_pretrained(pretrained_model_name_or_path, *inputs, **kwargs)
tokenizer = AutoTokenizer.from_pretrained("bert-base-uncased")
 
 
#register方法 创建个性化类
# AutoConfig.register(model_type, config, exist_ok = False)
AutoConfig.register("new-model", NewModelConfig)
 
#如果想保存模型到本地,使用save_pretrained方法
model.save_pretrained('PATH')

dataset是一个用于表示数据集的抽象类。它的主要职责是提供数据的访问接口,使得数据可以被dataloader方便地加载和处理;dataloader是一个迭代器,用于多线程地读取数据,并可以实现批量(batch)处理和数据随机打乱(shuffle)等功能,它组合了数据集(dataset)和采样器(sampler),并在数据集上提供单线程或多线程的可迭代对象。

import torch.utils.data.dataset as Dataset
import torch.utils.data.dataloader as DataLoader
from PIL import Image
import torch
import os
 
#自定义的Dataset类,用于加载图像数据及其标签
class CustomDataset(Dataset):
    def __init__(self, image_paths, labels):
        self.image_paths = image_paths
        self.labels = labels
 
    def __len__(self):
        return len(self.image_paths)
 
    def __getitem__(self, idx):
        image = Image.open(self.image_paths[idx])
        label = self.labels[idx]
        return image, label
 
#实例化CustomDataset类
dataset = CustomDataset(image_paths, labels)
 
#创建DataLoader迭代器
dataloader = DataLoader.DataLoader(dataset, batch_size=32, shuffle = True, num_workers= 4)
#后续就可以进行训练或者验证了

在真实使用用中,datasets主要运用其load_dataset方法来加载数据集,还是要和pytorch的库结合使用。 

dataset = load_dataset(
    'dataset_name', #数据集名称
    name='subset_name' #数据集的子集名称
    split='train' #数据集的分割,如 ‘train’、‘test’、‘validation’ 等
    cache_dir='./cache',  # 指定数据集的缓存目录
    use_auth_token='your_token',  # 使用认证令牌
    download_mode='force_redownload' #指定下载模式 或'reuse_dataset_if_exists'
)

这里加载了 GLUE 基准数据集中的 MRPC 数据集,用于自然语言推理任务的训练和评估。

五、总结HuggingFace使用步骤

        1)注册并登录HuggingFace平台:首先,你需要在HuggingFace官网上注册一个账号并登录。这将使你能够访问平台上的所有资源和功能。

        2)选择合适的模型和数据集:在平台上浏览并选择合适的预训练模型和数据集。你可以根据自己的需求和任务来选择相应的模型和数据集。

        3)下载并加载模型和数据集:一旦选择了模型和数据集,你可以直接下载并加载到本地环境中。HuggingFace提供了详细的文档和教程来帮助你完成这个过程。

        4)进行NLP任务:使用加载好的模型和数据集进行NLP任务。HuggingFace提供了丰富的API和工具来支持各种NLP任务,如文本分类、情感分析、命名实体识别等。

        5)发布自研模型与数据集:如果你有自己的模型和数据集,也可以选择在HuggingFace平台上发布。这将使你的工作得到更多人的关注和使用,同时也能促进社区的交流与合作。

总之,HuggingFace作为自然语言处理领域的瑞士军刀,为开发者提供了丰富的预训练模型和数据集以及便捷的社区交流平台。通过使用HuggingFace,开发者能够更快速、高效地完成NLP任务,推动人工智能技术的发展。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值