Hugging Face Transformer:从原理到实战的全面指南

huggingface/transformers快速上手 参考资料现在做NLP方面的研究实在离不开预训练语言模型,尤其是BERT。huggingface的transformers包是目前使用BERT最主流最方便的工具之一,写一遍博客记录如何快速上手。本篇博客使用的transformers版本为 4.15.0。 阅读详情
AI摘要

本文围绕Transformer和Hugging Face展开,介绍了Transformer架构、关键模型及Hugging Face的相关库。还给出大模型AI学习的四个阶段,包括初阶应用、高阶应用、模型训练和商业闭环,为学习者提供了系统的学习路径和实用资料。

一、前言


我们知道ChatGPT和所有预训练大语言模型的核心是什么?其实就是 Transformer,Hugging Face 的火爆离不开他们开源的这个 Transformers 库。这个开源库里有数万个我们可以直接调用的模型。很多场景下,这个开源模型已经足够我们使用了。接下来我们就从Transformer的架构和具体的案例来介绍Hugging Face Transformer。

二、Transformer 架构


Transformer 是一种用于自然语言处理和其它序列到序列任务的神经网络模型,它是在2017年由Vaswani等人提出来的 ,Transformer的核心模块是通过自注意力机制(Self Attention) 捕捉序列之间的依赖关系。

如果只有词向量本身,没有注意力机制和位置编码,那么语言模型就不能够分配。 比如一个单词 apple 它到底是水果还是一个科技公司呢,它是不知道的,只有通过自注意力机制,捕捉到了上下文关联信息之后,这个语言模型才能够建立起整个序列的选举表征。

自注意力机制是由三个部分组成的:

  • Query Key Value: 查询键值,自注意力机制输入进去是一个序列,每一个元素都是一个向量,也就是词向量,对于每一个元素我们都会给它计算出来三个向量 Query、Key还有Value,这三个向量通许序列本身的词向量再乘以Query、Key和Value的参数矩阵,通过矩阵乘法,我们从词向量本身衍生出来三个额外的向量,就是Query、Key和Value。

  • Attention Scores:注意力的得分,对于每个查询向量,我们都要计算它和所有其它键向量之间的相似度得分,这个得分就叫注意力得分。这个得分就是通过对查询向量和键向量进行点击Dot Product计算得到的。

  • Attention Weight:注意力的权重,得到了注意力的得分之后,它会通过Softmax进行一个归一化,然后就得到了注意力的权重。这个权重实际上就是每个值向量的加权平均值,也是自注意力机制的输出,经过这一系列的计算,这个序列中每一个词向量的彼此就开始从完全互不相通变成有了很多关系,那输出的向量就能够为 Transformer 所用,可以进行更进一步的分析处理。

所有的注意力机制都是多头的,多头注意力就是将注意力机制增加了一点小小的改进,也是通过把输入向量进行线性变换,生产很多组注意力机制,这些注意力机制就可以并行计算,同时计算很多组Query、Key和Value,然后聚合成一个新的向量表示,把多头再进行聚合,这样做的好处是它可以同时关注不同位置的和不同语义层面上的信息,从而更好的捕捉序列的全局特征和局部特征,因此,多头注意力在处理复杂序列数据时表现的更好了。

除了自注意力和多头注意力机制之外,Transformer 还包括编码器(Encoder)和解码器(Decoder):Encoder:将序列映射成一组隐藏状态,经过了注意力机制的处理,Decoder再将隐藏状态映射到输出序列,这是Transformer基本的一个机制,这些隐藏状态通过多个堆叠的自注意力层还有前馈神经网络层形成比较复杂的并行结构。

上面这张图展示一个输入的文本序列在编码器Encoder和解码器Decoder内部,以及从Encoder到Decoder怎么样流动的一个过程,可以了解一下。

Encoder和Decoder在Transformer内部是由多个堆叠组成的,所以在Encoder中,每一个Transformer模块都是包含两个子层:

  • 多头自注意力层(Multi Head Self Attention)

  • 前馈神经网络层(Feed Forward Neuro Network)

在Decoder中也包括两个子层,多头注意力机制层和Encoder Decoder注意力层,这是两个不同的注意力层,一个是Self Attention,序列本身自己的注意力;一个是Encoder的输入、Encoder过来的输出和Decoder本身的输入结合的Attention,所以向量序列通过多层的 Transformer 模块进行处理,每一个模块都会对序列进行一系列的自注意力、前馈、再自注意力、前馈、然后传递到Decoder过来又进行自注意力,然后再进行Encoder Decoder Attention,再进行Feed Forward等一系列传递的过程,层层叠加,重重叠叠,这样Transformer就能够得到越来越多的输入和输出序列之间的依赖关系,逐层学习各个序列之间的高级特征,从而可以有效的捕捉到序列到序列的语义,进行语义方面的学习。

三、最具影响力的 Transformers


以下是 Transformer 模型(简短)历史中的一些关键节点:

Transformer 架构 于 2017 年 6 月推出。原本研究的重点是翻译任务。随后推出了几个有影响力的模型,包括

  • 2018 年 6 月: GPT, 第一个预训练的 Transformer 模型,用于各种 NLP 任务并获得极好的结果

  • 2018 年 10 月: BERT**, 另一个大型预训练模型,该模型旨在生成更好的句子摘要**

  • 2019 年 2 月: GPT-2, GPT 的改进(并且更大)版本,由于道德问题没有立即公开发布

  • 2019 年 10 月: DistilBERT, BERT 的提炼版本,速度提高 60%,内存减轻 40%,但仍保留 BERT 97% 的性能

  • 2019 年 10 月: BART 和 T5, 两个使用与原始 Transformer 模型相同架构的大型预训练模型(第一个这样做)

  • 2020 年 5 月, GPT-3, GPT-2 的更大版本,无需微调即可在各种任务上表现良好(称为零样本学习)

其中,最具影响力的应该要属Google 2018年提出的BERT模型,它是最流行的自然语言处理模型之一,它是通过双向的 Transformer 编码器来学习上下文相关的单词表示。BERT诞生之后,很多人就开始对BERT加以改进,看看能不能找到更好的 Transformer。

  • RoBERTa:它是Facebook提出来的,基于BERT进一步训练的语言模型,通过改变一些内部结构还有训练过程,提升了一定的模型表现力,实际上对于下游的一些任务来说,RoBERTa和BERT是各有特点,主要看你的具体任务是什么?有些任务还是BERT表现不错,而有些任务上,RoBERTa会比BERT稍微好一些。

  • ALBERT:它是一种基于BERT轻量级的语言模型,是Google和Toyota团队2019年提出的。它通过参数共享和范围这种技术缩短了模型的大小和训练时间,同时还能保持跟BERT差不多的表现能力,它会更轻量级一些。

  • DistillBERT:也是一种基于BERT轻量级的语言模型,由Hugging Face团队2019年推出的,使用了一种知识蒸馏的方法,能够保持BERT模型的效率,还能把BERT模型压缩到一半以上,只剩下一半左右的参数,但是同时保持类似的表现力,可以说DistillBERT是一个很小的大模型,效率比较高。

四、Hugging Face Transformers


Hugging Face Transformers 是一家公司,在Hugging Face提供的API中,我们几乎可以下载到所有前面提到的预训练大模型的全部信息和各种参数。我们可以认为这些模型在Hugging Face基本就是开源的了,我们只需要拿过来微调或者重新训练这些模型。用官方的话来说,Hugging Face Transformers 是一个用于自然语言处理的Python库,提供了预训练的语言模型和工具,使得研究者和工程师能够轻松的训练使用共享最先进的NLP模型,其中包括BERT、GPT、RoBERTa、XLNet、DistillBERT等等。

通过 Transformers 可以轻松的用这些预训练模型进行文本分类、命名实体识别、机器翻译、问答系统等NLP任务。这个库还提供了方便的API、示例代码和文档,让我们使用这些模型或者学习模型变得非常简单。

4.1、Transformers Pipeline

我们先来看看,Transformers 这个开源库到底能干些什么。下面的代码都是直接使用开源模型,需要利用 GPU 的算力,所以你最好还是在 Colab 里运行,注意不要忘记把 Runtime 的类型修改为 GPU。

from transformers import pipeline  
  
classifier = pipeline(task="sentiment-analysis", device=0)  
preds = classifier("I am really happy today!")  
print(preds)

输出结果:

No model was supplied, defaulted to distilbert-base-uncased-finetuned-sst-2-english and revision af0f99b (https://huggingface.co/distilbert-base-uncased-finetuned-sst-2-english).  
Using a pipeline without specifying a model name and revision in production is not recommended.  
[{'label': 'POSITIVE', 'score': 0.9998762607574463}]

这个代码非常简单,第一行代码,我们定义了一个 task 是 sentimental-analysis 的 Pipeline,也就是一个情感分析的分类器。里面 device=0 的意思是我们指定让 Transformer 使用 GPU 资源。如果你想要让它使用 CPU,你可以设置 device=-1。然后,调用这个分类器对一段文本进行情感分析。从输出结果看,它给出了正确的 Positive 预测,也给出了具体的预测分数。因为我们在这里没有指定任何模型,所以 Transformers 自动选择了默认的模型,也就是日志里看到的 distilbert-base-uncased-finetuned-sst-2-english 这个模型。

看名字我们可以知道,这个模型是一个针对英语的模型。如果想要支持中文,我们也可以换一个模型来试试。

classifier = pipeline(model="uer/roberta-base-finetuned-jd-binary-chinese", task="sentiment-analysis", device=0)  
preds = classifier("这家店有点黑,鱼香肉丝也太难吃了。")  
print(preds)

输出结果:

[{'label': 'negative (stars 1, 2 and 3)', 'score': 0.934112012386322}]

这里,我们指定模型的名称,就能换用另一个模型来进行情感分析了。这次我们选用的是 roberta-base-finetuned-jd-binary-chinese 这个模型。RoBERTa 这个模型是基于 BERT 做了一些设计上的修改而得来的。而后面的 finetuned-jd-binary-chinese 是基于京东的数据进行微调过的一个模型。

Pipeline 是 Transformers 库里面的一个核心功能,它封装了所有托管在 HuggingFace 上的模型推理预测的入口。你不需要关心具体每个模型的架构、输入数据格式是什么样子的。我们只要通过 model 参数指定使用的模型,通过 task 参数来指定任务类型,运行一下就能直接获得结果。

比如,我们现在不想做情感分析了,而是想要做英译中,我们只需要把 task 换成 translation_en_to_zh,然后选用一个合适的模型就好了。

translation = pipeline(task="translation_en_to_zh", model="Helsinki-NLP/opus-mt-en-zh", device=0)  
  
text = "Artificial intelligence is really amazing. I believe you will fall in love with it."  
translated_text = translation(text)  
print(translated_text)

输出结果:

[{'translation_text': '人工智能真的太神奇啦,我相信你会喜欢上它'}]

在这里,我们选用了赫尔辛基大学的 opus-mt-en-zh 这个模型来做英译中,运行一下就可以看到,我们输入的英文被翻译成了中文。不过,我们怎么知道应该选用哪个模型呢?这个如魔法一般的 Helsinki-NLP/opus-mt-en-zh 模型名字从哪里可以找到呢?

五、Hugging Face实战


Hugging Face是一个AI社区,致力于分享机器学习模型和数据集。它的主要产品包括Hugging Face Dataset、Hugging Face Tokenizer、Hugging Face Transformer和Hugging Face Accelerate。

  • Hugging Face Dataset是一个库,用于轻松访问和共享音频、计算机视觉和自然语言处理(NLP)任务的数据集。只需一行代码即可加载数据集,并使用强大的数据处理方法快速准备好数据集,以便在深度学习模型中进行训练。在Apache Arrow格式的支持下,以零拷贝读取处理大型数据集,没有任何内存限制,以实现最佳速度和效率。

  • Hugging Face Tokenizer是一个用于将文本转换为数字表示形式的库。它支持多种编码器,包括BERT、GPT-2等,并提供了一些高级对齐方法,可以用于映射原始字符串(字符和单词)和标记空间之间的关系。

  • Hugging Face Transformer是一个用于自然语言处理(NLP)任务的库。它提供了各种预训练模型,包括BERT、GPT-2等,并提供了一些高级功能,例如控制生成文本的长度、温度等。

  • Hugging Face Accelerate是一个用于加速训练和推理的库。它支持各种硬件加速器,例如GPU、TPU等,并提供了一些高级功能,例如混合精度训练、梯度累积等。

5.1、Hugging Face Dataset

Hugging Face Dataset是一个公共数据集仓库,用于轻松访问和共享音频、计算机视觉和自然语言处理(NLP)任务的数据集。只需一行代码即可加载数据集,并使用强大的数据处理方法快速准备好数据集,以便在深度学习模型中进行训练。

在Apache Arrow格式的支持下,以零拷贝读取处理大型数据集,没有任何内存限制,以实现最佳速度和效率。Hugging Face Dataset还与拥抱面部中心深度集成,使您可以轻松加载数据集并与更广泛的机器学习社区共享数据集。

在花时间下载数据集之前,快速获取有关数据集的一些常规信息通常会很有帮助。数据集的信息存储在 DatasetInfo 中,可以包含数据集描述、要素和数据集大小等信息。

使用 load_dataset_builder() 函数加载数据集构建器并检查数据集的属性,而无需提交下载:

>>> from datasets import load_dataset_builder  
>>> ds_builder = load_dataset_builder("rotten_tomatoes")  
  
# Inspect dataset description  
>>> ds_builder.info.description  
Movie Review Dataset. This is a dataset of containing 5,331 positive and 5,331 negative processed sentences from Rotten Tomatoes movie reviews. This data was first used in Bo Pang and Lillian Lee, ``Seeing stars: Exploiting class relationships for sentiment categorization with respect to rating scales.'', Proceedings of the ACL, 2005.  
  
# Inspect dataset features  
>>> ds_builder.info.features  
{'label': ClassLabel(num_classes=2, names=['neg', 'pos'], id=None),  
 'text': Value(dtype='string', id=None)}

如果您对数据集感到满意,请使用 load_dataset() 加载它:

from datasets import load_dataset  
  
dataset = load_dataset("rotten_tomatoes", split="train")

5.2、Hugging Face Tokenizer

Tokenizers 提供了当今最常用的分词器的实现,重点是性能和多功能性。这些分词器也用于Transformers。

Tokenizer 把文本序列输入到模型之前的预处理,相当于数据预处理的环节,因为模型是不可能直接读文字信息的,还是需要经过分词处理,把文本变成一个个token,每个模型比如BERT、GPT需要的Tokenizer都不一样,它们都有自己的字典,因为每一个模型它的训练语料库是不一样的,所以它的token和它的字典大小、token的格式都会各有不同,整体来讲,就是给各种各样的词进行分词,然后编码,以123456来代表词的状态,这个就是Tokenizer的作用。

所以,Tokenizer的任务就是把输入的文本转换成一个一个的标记,它还可以负责对文本序列的清洗、截断、填充进行处理。简而言之,就是为了满足具体模型所要求的格式。

主要特点:

  • 使用当今最常用的分词器训练新的词汇表并进行标记化。

  • 由于Rust实现,因此非常快速(训练和标记化),在服务器CPU上对1GB文本进行标记化不到20秒。

  • 易于使用,但也非常多功能。

  • 旨在用于研究和生产。

  • 完全对齐跟踪。即使进行破坏性规范化,也始终可以获得与任何令牌对应的原始句子部分。

  • 执行所有预处理:截断、填充、添加模型所需的特殊令牌。

这里演示如何使用 BPE 模型实例化一个:classTokenizer

from tokenizers import Tokenizer  
from tokenizers.models import BPE  
tokenizer = Tokenizer(BPE(unk_token="[UNK]"))

5.3、Hugging Face Transformer

Transformers提供API和工具,可轻松下载和训练最先进的预训练模型。使用预训练模型可以降低计算成本、碳足迹,并节省训练模型所需的时间和资源。这些模型支持不同模态中的常见任务,例如:

  • 自然语言处理:文本分类、命名实体识别、问答、语言建模、摘要、翻译、多项选择和文本生成。

  • 计算机视觉:图像分类、目标检测和分割。

  • 音频:自动语音识别和音频分类。

  • 多模式:表格问答、光学字符识别、从扫描文档中提取信息、视频分类和视觉问答。

Transformers支持PyTorch、TensorFlow和JAX之间的框架互操作性。这提供了在模型的每个阶段使用不同框架的灵活性;在一个框架中用三行代码训练一个模型,在另一个框架中加载它进行推理。模型还可以导出到ONNX和TorchScript等格式,以在生产环境中部署。

# 导入必要的库  
from transformers import AutoModelForSequenceClassification  
  
# 初始化分词器和模型  
model_name = "bert-base-cased"  
model = AutoModelForSequenceClassification.from_pretrained(model_name, num_labels=2)  
  
# 将文本编码为模型期望的张量格式  
inputs = tokenizer(dataset["train"]["text"][:10], padding=True, truncation=True, return_tensors="pt")  
  
# 将编码后的张量输入模型进行预测  
outputs = model(**inputs)  
  
# 获取预测结果和标签  
predictions = outputs.logits.argmax(dim=-1)

5.4、Hugging Face Accelerate

Accelerate 是一个库,只需添加四行代码,即可在任何分布式配置中运行相同的 PyTorch 代码!简而言之,大规模的训练和推理变得简单、高效和适应性强。

from accelerate import Accelerator  
  
accelerator = Accelerator()  
  
model, optimizer, training_dataloader, scheduler = accelerator.prepare(  
    model, optimizer, training_dataloader, scheduler  
)

5.5、基于Hugging Face Transformer实现的文本分类示例

安装Hugging Face必要的库

pip install torch  
pip install transformers  
pip install datasets
# 导入必要的库  
from transformers import AutoTokenizer, AutoModelForSequenceClassification  
from datasets import load_dataset  
  
# 定义数据集名称和任务类型  
dataset_name = "imdb"  
task = "sentiment-analysis"  
  
# 下载数据集并打乱数据  
dataset = load_dataset(dataset_name)  
dataset = dataset.shuffle()  
  
# 初始化分词器和模型  
model_name = "bert-base-cased"  
tokenizer = AutoTokenizer.from_pretrained(model_name)  
model = AutoModelForSequenceClassification.from_pretrained(model_name, num_labels=2)  
  
# 将文本编码为模型期望的张量格式  
inputs = tokenizer(dataset["train"]["text"][:10], padding=True, truncation=True, return_tensors="pt")  
  
# 将编码后的张量输入模型进行预测  
outputs = model(**inputs)  
  
# 获取预测结果和标签  
predictions = outputs.logits.argmax(dim=-1)  
labels = dataset["train"]["label"][:10]  
  
# 打印预测结果和标签  
for i, (prediction, label) in enumerate(zip(predictions, labels)):  
    prediction_label = "正面评论" if prediction == 1 else "负面评论"  
    true_label = "正面评论" if label == 1 else "负面评论"  
    print(f"Example {i+1}: Prediction: {prediction_label}, True label: {true_label}")


输出结果:


100%|██████████| 3/3 [00:00<00:00, 65.66it/s]  
Downloading model.safetensors: 100%|██████████| 436M/436M [00:19<00:00, 22.0MB/s]  
Some weights of the model checkpoint at bert-base-cased were not used when initializing BertForSequenceClassification: ['cls.predictions.transform.dense.bias', 'cls.predictions.transform.LayerNorm.bias', 'cls.seq_relationship.weight', 'cls.seq_relationship.bias', 'cls.predictions.bias', 'cls.predictions.transform.LayerNorm.weight', 'cls.predictions.transform.dense.weight']  
- This IS expected if you are initializing BertForSequenceClassification from the checkpoint of a model trained on another task or with another architecture (e.g. initializing a BertForSequenceClassification model from a BertForPreTraining model).  
- This IS NOT expected if you are initializing BertForSequenceClassification from the checkpoint of a model that you expect to be exactly identical (initializing a BertForSequenceClassification model from a BertForSequenceClassification model).  
Some weights of BertForSequenceClassification were not initialized from the model checkpoint at bert-base-cased and are newly initialized: ['classifier.bias', 'classifier.weight']  
**You should probably TRAIN this model on a down-stream task to be able to use it for predictions and inference.  
**Example 1: Prediction: 正面评论, True label: 正面评论  
Example 2: Prediction: 正面评论, True label: 负面评论  
Example 3: Prediction: 正面评论, True label: 正面评论  
Example 4: Prediction: 正面评论, True label: 负面评论  
Example 5: Prediction: 正面评论, True label: 负面评论  
Example 6: Prediction: 正面评论, True label: 正面评论  
Example 7: Prediction: 正面评论, True label: 正面评论  
Example 8: Prediction: 负面评论, True label: 正面评论  
Example 9: Prediction: 正面评论, True label: 负面评论  
Example 10: Prediction: 正面评论, True label: 负面评论

从上面的结果来看,效果其实不太好,因为我们没有做任务相关数据的训练,直接使用bert模型进行文本情感分析,自然效果不太理想的,从运行的日志也能看到,提示我们应该在下游任务上训练这个模型,以便能够用于预测和推理。

  • Transformer 架构论文: https://arxiv.org/abs/1706.03762

  • Hugging Face官方文档:https://huggingface.co/docs

如何学习大模型 AI ?

由于新岗位的生产效率,要优于被取代岗位的生产效率,所以实际上整个社会的生产效率是提升的。

但是具体到个人,只能说是:

“最先掌握AI的人,将会比较晚掌握AI的人有竞争优势”。

这句话,放在计算机、互联网、移动互联网的开局时期,都是一样的道理。

我在一线互联网企业工作十余年里,指导过不少同行后辈。帮助很多人得到了学习和成长。

我意识到有很多经验和知识值得分享给大家,也可以通过我们的能力和经验解答大家在人工智能学习中的很多困惑,所以在工作繁忙的情况下还是坚持各种整理和分享。但苦于知识传播途径有限,很多互联网行业朋友无法获得正确的资料得到学习提升,故此将并将重要的AI大模型资料包括AI大模型入门学习思维导图、精品AI大模型学习书籍手册、视频教程、实战学习等录播视频免费分享出来。

在这里插入图片描述

第一阶段(10天):初阶应用

该阶段让大家对大模型 AI有一个最前沿的认识,对大模型 AI 的理解超过 95% 的人,可以在相关讨论时发表高级、不跟风、又接地气的见解,别人只会和 AI 聊天,而你能调教 AI,并能用代码将大模型和业务衔接。

  • 大模型 AI 能干什么?
  • 大模型是怎样获得「智能」的?
  • 用好 AI 的核心心法
  • 大模型应用业务架构
  • 大模型应用技术架构
  • 代码示例:向 GPT-3.5 灌入新知识
  • 提示工程的意义和核心思想
  • Prompt 典型构成
  • 指令调优方法论
  • 思维链和思维树
  • Prompt 攻击和防范
  • …

第二阶段(30天):高阶应用

该阶段我们正式进入大模型 AI 进阶实战学习,学会构造私有知识库,扩展 AI 的能力。快速开发一个完整的基于 agent 对话机器人。掌握功能最强的大模型开发框架,抓住最新的技术进展,适合 Python 和 JavaScript 程序员。

  • 为什么要做 RAG
  • 搭建一个简单的 ChatPDF
  • 检索的基础概念
  • 什么是向量表示(Embeddings)
  • 向量数据库与向量检索
  • 基于向量检索的 RAG
  • 搭建 RAG 系统的扩展知识
  • 混合检索与 RAG-Fusion 简介
  • 向量模型本地部署
  • …

第三阶段(30天):模型训练

恭喜你,如果学到这里,你基本可以找到一份大模型 AI相关的工作,自己也能训练 GPT 了!通过微调,训练自己的垂直大模型,能独立训练开源多模态大模型,掌握更多技术方案。

到此为止,大概2个月的时间。你已经成为了一名“AI小子”。那么你还想往下探索吗?

  • 为什么要做 RAG
  • 什么是模型
  • 什么是模型训练
  • 求解器 & 损失函数简介
  • 小实验2:手写一个简单的神经网络并训练它
  • 什么是训练/预训练/微调/轻量化微调
  • Transformer结构简介
  • 轻量化微调
  • 实验数据集的构建
  • …

第四阶段(20天):商业闭环

对全球大模型从性能、吞吐量、成本等方面有一定的认知,可以在云端和本地等多种环境下部署大模型,找到适合自己的项目/创业方向,做一名被 AI 武装的产品经理。

  • 硬件选型
  • 带你了解全球大模型
  • 使用国产大模型服务
  • 搭建 OpenAI 代理
  • 热身:基于阿里云 PAI 部署 Stable Diffusion
  • 在本地计算机运行大模型
  • 大模型的私有化部署
  • 基于 vLLM 部署大模型
  • 案例:如何优雅地在阿里云私有部署开源大模型
  • 部署一套开源 LLM 项目
  • 内容安全
  • 互联网信息服务算法备案
  • …

学习是一个过程,只要学习就会有挑战。天道酬勤,你越努力,就会成为越优秀的自己。

如果你能在15天内完成所有的任务,那你堪称天才。然而,如果你能完成 60-70% 的内容,你就已经开始具备成为一名大模型 AI 的正确特征了。

这份完整版的大模型 AI 学习资料已经上传优快云,朋友们如果需要可以微信扫描下方优快云官方认证二维码免费领取【保证100%免费】
Transformer大模型教程:从原理到Hugging Face实战应用 Transformer作为现代大语言模型的核心架构,通过自注意力机制实现了对序列数据的并行高效处理。其技术价值在于突破了传统RNN的顺序计算限制,大幅提升了训练和推理效率。在工程实践中,Hugging Face Transformers库为开发者提供了统一的预训练模型接口,支持文本分类、多模态任务等高频应用场景。特别是在模型微调方面,通过领域数据适配可以显著提升特定任务的性能表现。本教程基于自注意力机制和模型微调这两个关键技术点,系统讲解如何将Transformer理论原理转化为实际工程解决方案。 阅读详情

相关推荐

从零到一:Transformer架构原理与Hugging Face大模型实战指南

Transformer架构作为现代自然语言处理(NLP)和AI大模型的核心引擎,通过自注意力机制实现了对序列数据的全局建模,解决了传统循环神经网络(RNN)在长程依赖和并行计算上的瓶颈。其技术价值在于为GPT、BERT等大模型提供了可并行化训练的基础,极大地提升了模型训练效率和表达能力。在工程实践中,开发者可以基于PyTorch等框架从零实现Transformer组件以深入理解原理,并利用Hugging Face的transformers库快速进行模型微调与部署。本文聚焦于Transformer架构的实战应

weixin_31100517的博客 262

全面解析大型模型——Hugging Face Transformers使用指南

使得研究人员和开发者能够轻松地加载、微调和使用这些模型。,最初被创建用于,如今它的功能已经扩展到包括。这意味着,除了处理语言数据之外,Hugging Face Transformers还能,使其成为一个多功能的工具库。:这些模型已经在庞大的数据集上进行过训练,可以直接使用,帮助用户节省了大量的时间和计算资源,让开发过程更加高效。:详细的文档和简洁的API使得开发者可以快速上手,进行实验和开发。:包含最新的研究成果和模型,用户可以及时获取和使用最前沿的技术,保持项目的先进性。

2401_85373898的博客 3983

Hugging Face快速入门(重点讲解模型(Transformers)和数据集部分(Datasets))

1. Hugging Face是什么,提供了哪些内容 2. Hugging Face模型的使用(Transformer类库) 3. Hugging Face数据集的使用(Datasets类库)

iioSnail的博客 8万+

Huggingface中Transformer模型使用

2、如何培养模型的学习能力?自然语言处理就像我们读书一样,要训练它的阅读能力、学习能力、理解能力,给出的是一系列阅读材料,然后想办法让它理解语言,不仅仅是一个分类的专项技能,这里就涉及到注意力机制了。1、自然语言处理究竟要做一件什么事呢?自然语言处理最终解决的是分类问题,但是它不仅仅输出一个分类的预测结果,关键的在于构建一个聪明的模型,不光能学习不同数据集的问题,还能处理不同类别的问题。

苏云南雁的博客 6277

huggingface NLP -Transformers库

1.1 易于使用:下载、加载和使用最先进的NLP模型进行推理只需两行代码即可完成。1.2 灵活:所有型号的核心都是简单的PyTorch nn.Module 或者 TensorFlow tf.kears.Model,可以像它们各自的机器学习(ML)框架中的任何其他模型一样进行处理。1.3 简单:当前位置整个库几乎没有任何摘要。“都在一个文件中”是一个核心概念:模型的正向传递完全定义在一个文件中,因此代码本身是可以理解的,并且是可以破解的。

weixin_40455124的博客 1885

别再傻傻分不清!5分钟搞懂倾斜摄影里‘地面分辨率’和‘模型精度’到底啥关系

本文深入解析倾斜摄影中‘地面分辨率’与‘模型精度’的关系,帮助读者快速理解两者的本质区别与内在关联。通过实战案例和公式计算,详细说明如何从航飞设计到精度验证全流程控制,避免常见认知误区,并针对不同应用场景提供精度需求建议。

weixin_33700350的博客 477

Transformer架构与Hugging Face库:从原理到实战

自然语言处理中的序列建模长期面临长距离依赖难题,RNN/LSTM的串行结构限制了并行效率。自注意力机制让任意位置直接交互,配合多头注意力捕捉多维度信息,构成了Transformer架构的核心。以此为基石,预训练-微调范式成为主流,显著降低了NLP任务落地成本。Hugging Face Transformers库将这一整套流程工程化,提供从模型加载、微调训练到推理部署的全链路支持。本文深入解析Transformer的核心机制,并结合文本分类、模型调优、服务部署等实际场景,展示如何高效使用Transformer

weixin_33046983的博客 307

UE4/5编译报错MSB3073终极解决指南:从路径检查到MSVC版本降级

本文针对UE4/5开发中常见的MSB3073编译报错,提供了一套从根源到实战的终极解决指南。文章系统性地讲解了错误成因,并分层次指导排查路径字符、环境变量、MSVC版本兼容性、权限冲突等核心问题,重点介绍了通过降级MSVC编译器版本等关键操作来彻底解决此编译难题。

rl6adventurer的博客 1435

Transformer大模型实战:从原理到Hugging Face应用全解析

Transformer架构作为现代自然语言处理的基石,通过自注意力机制实现了序列数据的并行处理,有效解决了传统RNN的长距离依赖问题。这一技术突破使得模型能够同时关注输入序列的所有位置,为大规模预训练模型的发展奠定了理论基础。在工程实践中,Hugging Face Transformers库提供了标准化的API接口,极大降低了Transformer模型的应用门槛。开发者可以通过该库快速实现文本分类、多模态处理等核心功能,同时支持模型微调以适应特定领域任务。特别是在多模态应用场景中,Transformer架构

weixin_34355559的博客 396

手把手教你:在联想/戴尔笔记本上安装华为电脑管家,实现多屏协同(附详细避坑步骤)

本文详细指导如何在联想、戴尔等非华为笔记本上安装华为电脑管家,实现多屏协同功能。从硬件兼容性检查到定制化安装流程,再到功能调优与异常处理,提供了一套完整的解决方案,帮助用户突破品牌限制,享受华为生态的高效办公体验。

weixin_30251829的博客 852

R 分析裂区试验设计

裂区试验有主区部分和副区部分, 因而有主区部分误差(误差 a,简记为Ea )和副区部分误差(误差b,简记为Eb) 分别用于测验主区处理以及副区处理和主、副互作的显著性。对同一个二因素试验资料作自由度和平方和的分解,则可发现随机区组的误差项自由度和平方和分别为DFe、SSe,而裂区设计有两个误差项,其自由度和平方和分别为DFEa,DFEb, SSEa, SSEb。而区组,处理效应等各个变异项目的自由

samhuairen的专栏 8934

Transformer大模型实战:从自注意力原理到Hugging Face应用

自注意力机制是Transformer架构的核心技术,通过查询-键-值(QKV)模型实现序列数据的并行计算和长距离依赖捕捉。这一原理解决了传统RNN和CNN在处理序列数据时的局限性,为大规模预训练模型的发展奠定了技术基础。在工程实践中,Hugging Face Transformers库提供了统一的API接口,支持BERT、GPT等主流模型的快速部署和微调。开发者可以通过文本分类、多模态处理等实际场景,深入理解Transformer的技术价值。本文结合自注意力机制和Hugging Face实战案例,帮助读者掌

weixin_30985047的博客 255

图文带你理解什么是Few-shot Learning

Few-shot Learning(少样本学习)是Meta Learning(元学习)中的一个实例1,所以在了解什么是Few-shot Learning之前有必要对Meta Learning有一个简单的认识。不过在了解什么是Meta Learning之前还是要了解一下什么是Meta。因此,阅读本文后你将对如下知识有一个初步的了解。 What is Meta What is Meta Learning What is Few-shot Learning 1. What is Meta? meta就是描述

Pr4da的博客 1万+

Hugging Face Transformers库:从Transformer原理到AI模型实战应用

Transformer架构通过自注意力机制实现了对序列数据的并行处理,克服了传统RNN和LSTM在长距离依赖和训练效率上的局限,成为自然语言处理、计算机视觉等领域的核心技术基础。其核心价值在于通过预训练模型实现了强大的迁移学习能力,显著降低了AI应用开发门槛。在实际工程中,Hugging Face Transformers库将这一架构标准化,提供了统一的模型加载、训练和推理接口。该库采用模型-分词器分离的设计范式,其中分词器负责将文本转换为模型可理解的Token序列,支持WordPiece、BPE等多种算法

weixin_28725959的博客 551

MS51内部振荡器

MS51内部有两个RC振荡器,一个高速16MHz或24MHz(HIRC),可通过HIRC24(RCTRIM1.4)位进 行选择配置,以及一个低速10 kHz(LIRC)。它们都可被选择用作系统时钟。通过设置HIRCEN (CKEN.5)位使能HIRC,设备上电时LIRC被使能。用户可设置OSC[1:0] (CKSWT [2:1])为[0,0]选择HIRC 作为系统时钟,设置OSC[1:0](CKSWT [1:0])为[1,0]选择LIRC作为系统时钟。注意:MS51上电后HIRC 和 LIRC都被...

seraphseraphhill2008的博客 808

智能车图像处理9-进阶篇1--中线的提取

(1)10-50行 基础扫线 (2)56-71 断行0 ,就是比如遇到十字,十字路口下方 第一次断线的地方。 (3)83-124 按照原先有效行,拟线作为中值,然后从中值向左右扫线,同时计算赛道宽度。 (4)125-138 如果出现赛道宽度小于先前有效行,则找到二次扫线的起点,从二次扫线起点处,继续向下扫线,直至结束,同时记录最后的有效行。 (5) 310-- 最后计算左右边线类似于方差的值,用于环岛的判断 ***这里着重描述一下二次扫线,希望大家可以理解的深刻

taiyuezyh的博客 1万+

Transformer大模型实战:从自注意力原理到Hugging Face工程应用

自注意力机制是Transformer架构的核心技术,通过查询、键、值向量的交互实现序列元素的动态关联计算。这种机制突破了传统RNN的序列依赖限制,支持并行处理长文本序列,为自然语言处理带来革命性进步。在工程实践中,Hugging Face Transformers库提供了标准化的预训练模型接口,支持文本分类、序列标注等多样化任务。基于自注意力原理的Transformer模型通过多头注意力机制捕捉不同层次的语义信息,结合位置编码保持序列顺序,在BERT、GPT等大模型中展现出强大的表示能力。本教程重点解析自注

weixin_29032489的博客 342

17track单号查询逆向分析

这就说明该网站很有可能存在其它检测点,而检测本地替换最大可能的就是检测了代码格式化或者代码长度。也一样,要么导致网站卡死,要么会导致网页加载异常,这里可能就难到不少人了,让我们一步一步解决。而这个站主要是检测了代码格式化,无限循环检测造成了网站卡死,经多次测试发现检测点共三处。方法中代码很长,但是经调试后发现,它其实只返回一个固定的值,这里直接写死即可。同样的,虽然看起来很长,但是跟过之后就会发现流程很简单,这里主要就是对。追加了一些值,是一条很长的语句,整理代码。,核心流程也很简单,稍微跟一下就出来了,

pyzzd的博客 1623

AR-NAR混合Transformer建模:从原理到Hugging Face实战

自回归(AR)与非自回归(NAR)是生成式AI的两大基础范式,各自面临速度与质量的固有瓶颈。混合建模通过结构化协同,在单模型内实现动态分工——NAR主干保障高效粗粒度生成,AR分支聚焦关键位置精修,兼顾推理延迟、输出保真度与细粒度控制能力。该技术已广泛应用于语音合成、代码生成、实时字幕等低延迟高精度场景,并深度集成于Hugging Face生态,支持开箱即用的pipeline调用、Tei嵌入服务协同及transformers标准接口微调。YuE2作为典型开源实现,提供了Python级可复现的Mixture-

weixin_29063979的博客 167

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

AR-NAR混合Transformer模型:YuE2架构原理与Hugging Face实战

AR(自回归)与NAR(非自回归)是序列建模的两大基础范式,前者保障时序建模精度但推理慢,后者提升吞吐却易丢失长程依赖。AR–NAR混合架构通过主干NAR+局部AR校准的协同机制,在语音合成、代码补全等低延迟高精度场景中实现PPL与RTF的帕累托优化。YuE2作为该范式的轻量级工程实现,深度适配Hugging Face Transformers生态,支持AutoTokenizer、Trainer和pipeline标准接口,显著降低MoT模型定制门槛。其核心创新在于可学习Top-k门控机制与联合蒸馏训练策略,

weixin_33402252的博客 276

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

Transformer架构深度解析:从自注意力原理到PyTorch实战与Hugging Face部署

自注意力机制是深度学习中处理序列数据的核心技术,通过Query、Key、Value计算实现全局依赖建模,解决了RNN串行计算和长距离依赖衰减问题。其技术价值在于支持完全并行计算,大幅提升训练效率,广泛应用于NLP、CV和多模态任务。在工程实践中,PyTorch环境搭建、Hugging Face预训练模型加载、混合精度训练和梯度裁剪是关键环节。本文深入拆解Transformer架构,涵盖多头注意力、位置编码、编码器-解码器结构,并分享PyTorch实战踩坑与Hugging Face部署经验。

weixin_32181267的博客 13

深度学习工具包 DeepLearningToolbox

深度学习工具包Deprecation notice.-----This toolbox is outdated and no longer maintained.There are much better tools available for deep learning than this toolbox, e.g. [Theano](http://deeplearning.net/software/theano/), [torch](http://torch.ch/) or [tensorflow](http://www.tensorflow.org/)I would suggest you use one of the tools mentioned above rather than use this toolbox.Best, Rasmus.DeepLearnToolbox================A Matlab toolbox for Deep Learning.Deep Learning is a new subfield of machine learning that focuses on learning deep hierarchical models of data.It is inspired by the human brain's apparent deep (layered, hierarchical) architecture.A good overview of the theory of Deep Learning theory is[Learning Deep Architectures for AI](http://www.iro.umontreal.ca/~bengioy/papers/ftml_book.pdf)For a more informal introduction, see the following videos by Geoffrey Hinton and Andrew Ng.* [The Next Generation of Neural Networks](http://www.youtube.com/watch?v=AyzOUbkUf3M) (Hinton, 2007)* [Recent Developments in Deep Learning](http://www.youtube.com/watch?v=VdIURAu1-aU) (Hinton, 2010)* [Unsupervised Feature Learning and Deep Learning](http://www.youtube.com/watch?v=ZmNOAtZIgIk) (Ng, 2011)If you use this toolbox in your research please cite [Prediction as a candidate for learning deep hierarchical models of data](http://www2.imm.dtu.dk/pubdb/views/publication_details.php?id=6284)```@MASTERSTHESIS\{IMM2012-06284, author = "R. B. Palm", title = "Prediction as a candidate for learning deep hierarchical models of data", year = "2012",}```Contact: rasmusbergpalm at gmail dot comDirectories included in the toolbox-----------------------------------`NN/` - A library for Feedforward Backpropagation Neural Networks`CNN/` - A library for Convolutional Neural Networks`DBN/` - A library for Deep Belief Networks`SAE/` - A library for Stacked Auto-Encoders`CAE/` - A library for Convolutional Auto-Encoders`util/` - Utility functions used by the libraries`data/` - Data used by the examples`tests/` - unit tests to verify toolbox is workingFor references on each library check REFS.mdSetup-----1. Download.2. addpath(genpath('DeepLearnToolbox'));Example: Deep Belief Network---------------------```matlabfunction test_example_DBNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit RBM and visualize its weightsrand('state',0)dbn.sizes = [100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);figure; visualize(dbn.rbm{1}.W'); % Visualize the RBM weights%% ex2 train a 100-100 hidden unit DBN and use its weights to initialize a NNrand('state',0)%train dbndbn.sizes = [100 100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);%unfold dbn to nnnn = dbnunfoldtonn(dbn, 10);nn.activation_function = 'sigm';%train nnopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.10, 'Too big error');```Example: Stacked Auto-Encoders---------------------```matlabfunction test_example_SAEload mnist_uint8;train_x = double(train_x)/255;test_x = double(test_x)/255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit SDAE and use it to initialize a FFNN% Setup and train a stacked denoising autoencoder (SDAE)rand('state',0)sae = saesetup([784 100]);sae.ae{1}.activation_function = 'sigm';sae.ae{1}.learningRate = 1;sae.ae{1}.inputZeroMaskedFraction = 0.5;opts.numepochs = 1;opts.batchsize = 100;sae = saetrain(sae, train_x, opts);visualize(sae.ae{1}.W{1}(:,2:end)')% Use the SDAE to initialize a FFNNnn = nnsetup([784 100 10]);nn.activation_function = 'sigm';nn.learningRate = 1;nn.W{1} = sae.ae{1}.W{1};% Train the FFNNopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.16, 'Too big error');```Example: Convolutional Neural Nets---------------------```matlabfunction test_example_CNNload mnist_uint8;train_x = double(reshape(train_x',28,28,60000))/255;test_x = double(reshape(test_x',28,28,10000))/255;train_y = double(train_y');test_y = double(test_y');%% ex1 Train a 6c-2s-12c-2s Convolutional neural network %will run 1 epoch in about 200 second and get around 11% error. %With 100 epochs you'll get around 1.2% errorrand('state',0)cnn.layers = { struct('type', 'i') %input layer struct('type', 'c', 'outputmaps', 6, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %sub sampling layer struct('type', 'c', 'outputmaps', 12, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %subsampling layer};cnn = cnnsetup(cnn, train_x, train_y);opts.alpha = 1;opts.batchsize = 50;opts.numepochs = 1;cnn = cnntrain(cnn, train_x, train_y, opts);[er, bad] = cnntest(cnn, test_x, test_y);%plot mean squared errorfigure; plot(cnn.rL);assert(er<0.12, 'Too big error');```Example: Neural Networks---------------------```matlabfunction test_example_NNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);% normalize[train_x, mu, sigma] = zscore(train_x);test_x = normalize(test_x, mu, sigma);%% ex1 vanilla neural netrand('state',0)nn = nnsetup([784 100 10]);opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samples[nn, L] = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.08, 'Too big error');%% ex2 neural net with L2 weight decayrand('state',0)nn = nnsetup([784 100 10]);nn.weightPenaltyL2 = 1e-4; % L2 weight decayopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex3 neural net with dropoutrand('state',0)nn = nnsetup([784 100 10]);nn.dropoutFraction = 0.5; % Dropout fraction opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex4 neural net with sigmoid activation functionrand('state',0)nn = nnsetup([784 100 10]);nn.activation_function = 'sigm'; % Sigmoid activation functionnn.learningRate = 1; % Sigm require a lower learning rateopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex5 plotting functionalityrand('state',0)nn = nnsetup([784 20 10]);opts.numepochs = 5; % Number of full sweeps through datann.output = 'softmax'; % use softmax outputopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex6 neural net with sigmoid activation and plotting of validation and training error% split training data into training and validation datavx = train_x(1:10000,:);tx = train_x(10001:end,:);vy = train_y(1:10000,:);ty = train_y(10001:end,:);rand('state',0)nn = nnsetup([784 20 10]); nn.output = 'softmax'; % use softmax outputopts.numepochs = 5; % Number of full sweeps through dataopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, tx, ty, opts, vx, vy); % nntrain takes validation set as last two arguments (optionally)[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');```[![Bitdeli Badge](https://d2weczhvl823v0.cloudfront.net/rasmusbergpalm/deeplearntoolbox/trend.png)](https://bitdeli.com/free "Bitdeli Badge")

深入解析 Hugging Face Transformers 中的卷积视觉 Transformer(CvT):架构原理、配置参数与图像分类实战

CvT(Convolutional Vision Transformer,卷积视觉 Transformer)是在 🤗 Transformers 中完整实现的一种视觉骨干网络,它把卷积神经网络(CNN)的局部建模能力与 Vision Transformer(ViT)的全局自注意力优势融合到同一架构中。本文以 [docs/source/ja/model_doc/cvt.md](https://lin

gitblog_00897的博客 143

AR-NAR混合Transformer架构实战:YuE2模型原理与Hugging Face部署

AR-NAR混合Transformer是一种融合自回归(AR)与非自回归(NAR)解码优势的生成式AI架构,通过动态路由、梯度隔离和共享骨干网络,在保持文本质量前提下显著降低推理延迟。其核心原理在于将AR的序列连贯性建模能力与NAR的并行预测效率协同互补,技术价值体现在低延迟、高稳定性及资源友好性,广泛适用于prompt优化、实时摘要、边缘端生成等对响应速度与一致性均有要求的工程场景。本文基于可复现的YuE2实现,深入解析三层动态路由设计与Hugging Face生态下的训练、量化及Spaces部署全流程。

weixin_29531177的博客 193

Transformer从原理到实战:自注意力机制与Hugging Face微调全指南

自注意力机制是深度学习中处理序列数据的核心技术,通过动态计算序列内各位置的关联权重,解决了传统RNN难以并行化和长距离依赖的问题。其原理基于查询、键、值向量的交互,使模型能够高效捕捉全局上下文信息。在工程实践中,这一机制支撑了BERT、GPT等预训练模型的微调与部署,广泛应用于文本分类、生成和翻译等场景。结合Hugging Face生态,开发者可以快速加载预训练权重,利用学习率预热、分层学习率和混合精度训练等技巧,在有限显存下完成模型微调与推理优化。

weixin_29052717的博客 225

Hugging Face课程零基础通关攻略:一份写给新手的Transformer学习路线图

想学大模型,最难的往往不是"学不会",而是"不知道从哪开始"。网上资料浩如烟海,有人推论文,有人推视频,结果越刷越焦虑。如果你也处于这个状态,不妨换个思路:直接跟着一套官方出品的开源课程,把路线走完。这就是本文的主角——Hugging Face 课程项目(The Hugging Face course on Transformers),一个把 Transformer 从原理到实战完整拆解成十二个章

gitblog_01052的博客 928
上一篇: 大模型神书《HuggingFace自然语言处理详解——基于BERT中文模型的任务实战》读完少走几年弯路!
下一篇: 工业狗转行AI的心路历程,重新来过为时不晚!
AI_小站
博客等级 码龄3年 6255粉丝 1152原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值