SeqGPT文本理解-中英文-开放域-560m

我要开发同款
匿名用户2024年07月31日
41阅读
开发技术bloom、pytorch
所属分类ai
开源地址https://modelscope.cn/models/iic/nlp_seqgpt-560m
授权协议Apache License 2.0

作品详情

模型介绍

模型描述

SeqGPT是一个不限领域的文本理解大模型。无需训练,即可完成实体识别、文本分类、阅读理解等多种任务。该模型基于Bloomz在数以百计的任务数据上进行指令微调获得。模型可以在低至16G显存的显卡上免费使用。

相关技术可以参考论文:SeqGPT: An Out-of-the-box Large Language Model for Open Domain Sequence Understanding

体验地址:零样本文本理解大模型

github: https://github.com/Alibaba-NLP/SeqGPT

微调模型使用swift, 训练样例, 数据集样例:分类抽取

期望模型使用方式以及适用范围

overview
本模型可用于任何自然语言理解任务。用户只需给定类型标签即可。不同任务的标签给定方式可以参考以下例子:

事件抽取

> 输入: 今日走势:中国银河今日触及涨停板,该股近一年涨停9次。
抽取: 财经/交易事件、事件财经/交易-涨停的时间、事件财经/交易-涨停的涨停股票
输出: 财经/交易事件: 涨停 事件财经/交易-涨停的时间: 今日 事件财经/交易-涨停的涨停股票: 中国银河 > 输入: She laid still.
抽取: Placing event
输出: Placing event: laid

阅读理解-抽取

> 输入: 根据上述采信证据,结合原告陈述,本院确认事实如下:2015年9月26日,苏0与陈x11签订《借款合同》,约定陈x11向苏0借款10000元用于经营资金周转、家庭生活开支,借款期限至2015年12月26日,并约定利息为月利率2%同日,陈x11出具收据确认收到苏0 10000元至本案辩论终结之日止,上述借款尚未归还另查明,陈x11与冼5于××××年××月××日登记结婚陈x4、陈x2、陈x3、陈x1是陈x11的女儿
抽取: 陈x11向苏0借了多少钱
输出: 10000元

实体识别

> 输入: 赛后公牛队主教练杰克逊对罗德曼的表现大加赞赏。 抽取: 组织机构,人物,地点 输出:组织机构: 公牛队 人物: 罗德曼 杰克逊 地点: None > 输入: In Venezuela , her mother told Reuters that Machado had a swollen face when she left home two weeks ago because she had her wisdom teeth extracted .
抽取: organisation,person,misc,location
输出: organisation: Reuters person: Machado misc: None location: Venezuela

意图识别

> 输入: 坐地铁您可以从永泰庄地铁站D口上地铁,在灯市口地铁站A口下地铁,在步行不远就到了。
分类: Inform,Request
输出: Inform > 输入: find travel arrangements for a round trip flight from dallas to pittsburgh
分类: groundservice,restriction,dayname,abbreviation,groundfare,flightno,aircraft,flight,meal,capacity,city
输出: flight

自然语言推理

> 输入: 这个池塘今天仍然存在,离乔巴尔峡谷不远。 池塘很久以前就干了。 分类: contradiction,neutral,entailment 输出: contradiction > 输入: Red! You, Red! Are you up there? Now don't try to hide. Red! Where are you? 分类: neutral,entailment,contradiction 输出: entailment

关系抽取

> 输入: 灵魂的痛(末代御医主题曲)主唱:胡鸿钧视频来自:优酷中灵魂的痛和末代御医的关系是什么? 分类: 主题曲,国籍,父亲,总部地点 输出: 主题曲 > 输入: the tie be go away from man 's wardrobes . What is the relation between tie and wardrobes? 分类: Entity-Origin,Content-Container,Instrument-Agency,Entity-Destination,Message-Topic,Component-Whole,Product-Producer 输出: Entity-Origin

如何使用

  1. 在线体验:零样本文本理解大模型
  2. 在安装ModelScope完成之后即可使用。

代码范例

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

# task可选值为 抽取、分类。text为需要分析的文本。labels为类型列表,中文逗号分隔。
inputs = {'task': '抽取', 'text': '杭州欢迎你。', 'labels': '地名'}
# PROMPT_TEMPLATE保持不变
PROMPT_TEMPLATE = '输入: {text}\n{task}: {labels}\n输出: '
prompt = PROMPT_TEMPLATE.format(**inputs)
pipeline_ins = pipeline(task=Tasks.text_generation, model='damo/nlp_seqgpt-560m', model_revision = 'v1.0.1', run_kwargs={'gen_token': '[GEN]'})
print(pipeline_ins(prompt))

微调(SFT)

代码链接: https://github.com/modelscope/swift/tree/main/examples/pytorch/llm

  1. 支持的sft方法: lora, qlora, 全参数微调, …
  2. 支持的模型: qwen系列, qwen-vl系列, baichuan系列, chatglm2系列, llama系列, openbuddy-llama系列, internlm系列, xverse系列, …
  3. 支持的特性: 模型量化, DDP, 模型并行, gradient checkpointing, 梯度累加, 支持推送ModelScope Hub, 自定义数据集, 多模态和Agent SFT, 多轮对话, …

使用full+ddp SFT seqgpt-560m的脚本 (需要2*13GB显存)

# https://github.com/modelscope/swift/blob/main/examples/pytorch/llm/scripts/seqgpt_560m/full_ddp/sft.sh
# Experimental environment: 2 * A10
# 2 * 13GB GPU memory
nproc_per_node=2

PYTHONPATH=../../.. \
CUDA_VISIBLE_DEVICES=0,1 \
torchrun \
    --nproc_per_node=$nproc_per_node \
    --master_port 29500 \
    src/llm_sft.py \
    --model_type seqgpt-560m \
    --sft_type full \
    --template_type default-generation \
    --dtype bf16 \
    --output_dir output \
    --ddp_backend nccl \
    --dataset ner-jave-zh \
    --train_dataset_sample -1 \
    --num_train_epochs 3 \
    --max_length 1024 \
    --gradient_checkpointing true \
    --batch_size 4 \
    --weight_decay 0.01 \
    --learning_rate 2e-5 \
    --gradient_accumulation_steps $(expr 32 / $nproc_per_node / 4) \
    --max_grad_norm 1 \
    --warmup_ratio 0.03 \
    --eval_steps 100 \
    --save_steps 100 \
    --only_save_model false \
    --save_total_limit 2 \
    --logging_steps 10 \
    --push_to_hub false \
    --hub_model_id seqgpt-560m-full \
    --hub_private_repo true \
    --hub_token 'your-sdk-token' \

训练数据介绍

训练分类两个阶段,分别为:预训练和微调,两阶段数据分别为:
预训练数据:包含来自多个领域(包括维基百科、新闻和社交媒体等)极其多样化的标签集的数据。我们主要选择了三个任务:分类(CLS)、实体分类(ET)和实体识别(NER)。我们通过调用ChatGPT为每个样本获得伪标签。最终,PT数据集包含1,146,271个实例和817,075个不同的标签。
微调数据:我们收集了来自不同领域的大规模高质量NLU数据集进行微调。如下图所示,我们的微调(FT)数据集包含110个NLU数据集,涵盖英语和中文两种语言以及10大类任务。除了任务多样性外,领域(包括医学、新闻和与AI助手的对话)的多样性以及标签多样性也保证了数据多样性。每个任务被转化为原子任务,共产生了139个分类原子任务和94个抽取原子任务。

数据评估及结果

evaluation 注:以上评估数据集均未出现在训练数据中。

引用信息

@misc{yu2023seqgpt,
      title={SeqGPT: An Out-of-the-box Large Language Model for Open Domain Sequence Understanding}, 
      author={Tianyu Yu and Chengyue Jiang and Chao Lou and Shen Huang and Xiaobin Wang and Wei Liu and Jiong Cai and Yangning Li and Yinghui Li and Kewei Tu and Hai-Tao Zheng and Ningyu Zhang and Pengjun Xie and Fei Huang and Yong Jiang},
      year={2023},
      eprint={2308.10529},
      archivePrefix={arXiv},
      primaryClass={cs.CL}
}
声明:本文仅代表作者观点,不代表本站立场。如果侵犯到您的合法权益,请联系我们删除侵权资源!如果遇到资源链接失效,请您通过评论或工单的方式通知管理员。未经允许,不得转载,本站所有资源文章禁止商业使用运营!
下载安装【程序员客栈】APP
实时对接需求、及时收发消息、丰富的开放项目需求、随时随地查看项目状态

评论