模型架构与原理1720 字

基于IA3训练Seq2Seq模型

·全库 313 / 611

《基于IA3训练Seq2Seq模型》共 0.2 万字,通篇围绕 数据集、上下文、向量、推理 展开,归在「模型架构与原理」这一层。

覆盖数据集上下文向量推理LoRAGPU

适合要跟模型团队对话、得听懂他们在说什么的人

目录骨架(3 节)
  1. 示例代码
  2. 分享您的模型
  3. PEFT 配置和模型
目录 · 3 节

示例代码

📎 附件:ia3-train.zip(zip, 9KB)

原文链接:https://www.yuque.com/attachments/yuque/0/2025/zip/2424104/1746582257220-f74d982a-1384-4671-8a22-84f37b619367.zip

前言

IA3 通过三个学习到的向量来乘模型的激活值(自注意力机制和编码器-解码器注意力模块中的键和值,以及逐位置前馈网络的中间激活值)。这种 PEFT 方法引入的可训练参数数量甚至比 LoRA 更少,LoRA 引入的是权重矩阵而不是向量。原始模型的参数保持冻结,只有这些向量会被更新。因此,为新的下游任务进行微调更快、更便宜、更高效。

本指南将向您展示如何使用 IA3 训练序列到序列模型,以生成给定财经新闻的情感。

熟悉训练序列到序列模型的一般过程将非常有帮助,并使您能够专注于如何应用 IA3。如果您是新手,我们建议您首先查看 Transformers 文档中的 翻译 和 摘要 指南。当您准备好后,再回来看看将 PEFT 融入您的训练有多么容易!

一般任务类型有以下几种

SEQ_CLS
序列分类(Sequence Classification),对整个句子进行分类。如: 获取评论的情绪,检测电子邮件是否为垃圾邮件,确定句子在语法上是否正确或两个句子在逻辑上是否相关等
SEQ_2_SEQ_LM
条件生成任务,根据给定的输入(可能是文本、图片等)生成符合条件的输出。

与因果语言建模任务不同,条件生成不仅仅关注于给定上下文的连贯性,还关注于满足预定的任务要求。因果语言建模仅关注于根据给定的上下文生成文本序列。

条件生成的应用包括但不限于机器翻译、文本摘要、图像描述等。这些任务通常需要模型在输入和输出之间建立复杂的映射关系。
CAUSAL_LM
因果语言建模任务(CLM),在这种建模方法中,模型试图预测给定上下文中的下一个单词,该上下文通常包括在当前单词之前的所有单词。这种建模方法遵循因果原则,即当前单词只受到其前面单词的影响,而不受后面单词的影响。代表模型有 GPT2、Bloom、OPT、GPT-Neo、GPT-J、LLaMA、ChatGLM。
TOKEN_CLS
Token 分类任务(Token Classification),对句子中的每个词进行分类。如: 识别句子的语法成分(名词、动词、形容词)或命名实体(人、地点、组织)。

数据集

您将使用 financial_phrasebank 数据集的 sentences_allagree 子集。此子集包含财经新闻,其中情感标签的标注者一致性为 100%。查看 数据集查看器,以更好地了解您将使用的数据和句子。

使用 load_dataset 函数加载数据集。数据集的此子集仅包含训练拆分,因此使用 train_test_split 函数创建训练和验证拆分。创建一个新的 text_label 列,以便更容易理解 label 值 0、1 和 2 的含义。

from datasets import load_dataset

ds = load_dataset("financial_phrasebank", "sentences_allagree")
ds = ds["train"].train_test_split(test_size=0.1)
ds["validation"] = ds["test"]
del ds["test"]

classes = ds["train"].features["label"].names
ds = ds.map(
    lambda x: {"text_label": [classes[label] for label in x["label"]]},
    batched=True,
    num_proc=1,
)

资料里没有你的场景?

把你手上的数据和想解决的那个环节发上来,我们按具体情况回,不复述方法论。

发布需求