Hugging face库

1. Transformers

是NLP, CV, audio,speech processing 任务的库。 它包含了超过10000个预训练的模型,涵盖了各种NLP任务,如文本分类,问答,文本生成,情感分析等。Transformers库支持多种深度学习框架,如PyTorch,TensorFlow,JAX和Flax,并且可以轻松地在不同的设备上运行,如CPU,GPU和TPU。

官网:GitHub - huggingface/transformers: Transformers: State-of-the-art Machine Learning for Pytorch, TensorFlow, and JAX.

主要包含三部分:Config、Tokenizer、Model。

Config

用于配置模型的名称、最终输出的样式、隐藏层宽度和深度、激活函数的类别等。

Model

AI模型(指代基于各种算法模型,比如预训练模型、深度学习算法、强化学习算法等的实现)的抽象概念。
除了初始的BertGPT等基本模型,针对下游任务,还定义了诸如BertForQuestionAnswering等下游任务模型。

Tokenizer

将纯文本转换为编码的过程(注意:该过程并不会生成词向量)。由于模型(Model)并不能识别(或很好的识别)文本数据,因此对于输入的文本需要做一层编码。在这个过程中,首先会将输入文本分词而后添加某些特殊标记([MASK]标记、[SEP]、[CLS]标记),比如断句等,最后就是转换为数字类型的ID(也可以理解为是字典索引)。

transformers使用-pipelines函数

在Transformers库中最基本的对象就是pipeline()函数。该流水线操作将模型处理的三个步骤组合在一起:预处理、通过模型传递输入以及后处理。

调用pipeline函数指定预训练模型,有三个主要步骤:

  • 输入的文本被预处理成模型(Model)可以理解的格式的数据(就是上述中Tokenizer组件的处理过程)。
  • 预处理后的数据作为输入参数传递给模型(Model)。
  • 模型的预测结果(输出内容)是经过后处理的,可供理解。

现有可用的pipeline()函数功能如下:

  • feature-extraction:特征抽取,将文本转化为一个向量,这就是embedding呀
  • fill-mask:完形填空,BERT, BART等模型的预训练策略。
  • ner (named entity recognition):命名实体识别
  • question-answering:问答,一般是抽取式问答
  • sentiment-analysis:情感分析,也是文本分类
  • summarization:摘要,一般是抽取式摘要
  • text-generation:文本生成,一般指GPT类模型
  • translation:翻译,seq2seq。

2. Datasets

高效的数据集加载、预处理库

官网:https://github.com/huggingface/datasets

3. Tokenizers

官网:https://github.com/huggingface/tokenizers

4. optimum

官网:https://github.com/huggingface/optimum

5. peft

模型参数高效微调,目前支持Prefix Tuning、Prompt Tuning、PTuningV1、PTuningV2、Adapter、LoRA、AdaLoRA,LoRA使用重参数化的思想,目前支持Linear线性层、Conv1D(实际上也是一个线性层),正在开发的版本即将支持3x3和1x1的Conv2d卷积

官网:GitHub - huggingface/peft: PEFT: State-of-the-art Parameter-Efficient Fine-Tuning.

  • LoraConfig: lora配置
  • get_peft_model: 在模型中添加lora层
  • prepare_model_for_kbit_training: 用来在微调中提高训练的稳定性

6. accelerate

大规模分部署训练,支持DP、DDP、Deep Speed、Zero、Fully Sharded Data Parallel、Gradient Checkpoint、梯度累积等

官网:https://github.com/huggingface/

你可能感兴趣的:(python基础,python,pytorch,AI编程)