OFA自然语言推理模型-英文-数据集MNLI-large
给定一个前提句和一个假设句,任务是预测前提是否包含假设(蕴含),与假设相矛盾(矛盾),或者两者都不包含(中性)。
  • 模型资讯
  • 模型资料

OFA-自然语言推理 (MNLI)

自然语言推理是什么?

给定一个前提句和一个假设句,任务是预测前提是否包含假设(蕴含),与假设相矛盾(矛盾),或者两者都不包含(中性)。

快速玩起来

玩转OFA只需区区以下数行代码,就是如此轻松!如果你觉得还不够方便,请点击右上角Notebook按钮,我们为你提供了配备好的环境(可选CPU/GPU),你只需要在notebook里输入提供的代码,就可以把OFA玩起来了!

from modelscope.pipelines import pipeline
from modelscope.utils.constant import Tasks

ofa_pipe = pipeline(
    Tasks.text_classification,
    model='damo/ofa_text-classification_mnli_large_en',
    model_revision='v1.0.1'
)
text = 'One of our number will carry out your instructions minutely.'
text2 = 'A member of my team will execute your orders with immense precision.'
input = {'text': text, 'text2': text2}
result = ofa_pipe(input)
print(result)

OFA是什么?

OFA(One-For-All)是通用多模态预训练模型,使用简单的序列到序列的学习框架统一模态(跨模态、视觉、语言等模态)和任务(如图片生成、视觉定位、图片描述、图片分类、文本生成等),详见我们发表于ICML 2022的论文:OFA: Unifying Architectures, Tasks, and Modalities Through a Simple Sequence-to-Sequence Learning Framework,以及我们的官方Github仓库https://github.com/OFA-Sys/OFA




Github  |  Paper   |  Blog



OFA模型规模:

ModelParams-enParams-zhBackboneHidden sizeIntermediate sizeNum. of headsEnc layersDec layers
OFATiny33M-ResNet502561024444
OFAMedium93M-ResNet1015122048844
OFABase180M160MResNet10176830721266
OFALarge470M440MResNet15210244096161212
OFAHuge930M-ResNet15212805120162412

效果展示

OFA在GLUE多个任务上取得了和RoBERTa、DEBERTa等经典模型匹敌的结果,具体如下所示:

score

模型训练流程

训练数据介绍

本模型训练数据集是glue/mnli数据集。

训练流程

模型及finetune细节请参考OFA Tutorial 1.4节。

Finetune示例

from modelscope.msdatasets import MsDataset
import tempfile
from modelscope.msdatasets import MsDataset
from modelscope.metainfo import Trainers
from modelscope.trainers import build_trainer
from modelscope.utils.constant import DownloadMode

train_dataset = MsDataset(
    MsDataset.load('clue', subset_name='afqmc', split='train').remap_columns({
        'sentence1': 'text',
        'sentence2': 'text2'
    }))
test_dataset = MsDataset(
    MsDataset.load('clue', subset_name='afqmc', split='validation').remap_columns({
        'sentence1': 'text',
        'sentence2': 'text2'
    }))


def cfg_modify_fn(cfg):
    cfg.train.hooks = [{
        'type': 'CheckpointHook',
        'interval': 2
    }, {
        'type': 'TextLoggerHook',
        'interval': 1
    }, {
        'type': 'IterTimerHook'
    }]
    cfg.train.max_epochs=2
    return cfg

args = dict(
    model='damo/ofa_text-classification_mnli_large_en',
    model_revision='v1.0.1',
    train_dataset=train_dataset,
    eval_dataset=test_dataset,
    cfg_modify_fn=cfg_modify_fn,
    work_dir = tempfile.TemporaryDirectory().name)
trainer = build_trainer(name=Trainers.ofa, default_args=args)
trainer.train()

模型局限性以及可能的偏差

训练数据集自身有局限,有可能产生一些偏差,请用户自行评测后决定如何使用。

相关论文以及引用信息

如果你觉得OFA好用,喜欢我们的工作,欢迎引用:

@article{wang2022ofa,
  author    = {Peng Wang and
               An Yang and
               Rui Men and
               Junyang Lin and
               Shuai Bai and
               Zhikang Li and
               Jianxin Ma and
               Chang Zhou and
               Jingren Zhou and
               Hongxia Yang},
  title     = {OFA: Unifying Architectures, Tasks, and Modalities Through a Simple Sequence-to-Sequence
               Learning Framework},
  journal   = {CoRR},
  volume    = {abs/2202.03052},
  year      = {2022}
}