EasyTransfer帮助用户轻松地将深度 TL 用于 NLP 应用程序

简介: EasyTransfer 旨在简化 NLP 应用程序中迁移学习的开发。

image.png

文献见证了将深度迁移学习 (TL) 成功应用于许多现实世界的 NLP 应用程序,但构建易于使用的 TL 工具包来实现这样的目标并不容易。为了弥补这一差距,EasyTransfer 旨在帮助用户轻松地将深度 TL 用于 NLP 应用程序。2017年初在阿里巴巴开发,目前已应用于阿里巴巴集团各大BU,在20+业务场景中取得了非常好的效果。支持主流的预训练ModelZoo,包括预训练语言模型(PLMs)和PAI上的多模态模型平台,集成了AppZoo中主流NLP应用的SOTA模型,支持PLM知识蒸馏。EasyTransfer 非常方便用户快速开始模型训练、评估、离线预测和在线部署。它还提供了丰富的 API,使 NLP 的开发和迁移学习变得更加容易。

主要特点

  • 语言模型预训练工具:支持全面的预训练工具,供用户预训练T5、BERT等语言模型。基于该工具,用户可以轻松训练模型,在 CLUE、GLUE 和 SuperGLUE 等基准排行榜上取得优异成绩;
  • ModelZoo 具有丰富优质的预训练模型:支持 BERT、ALBERT、RoBERTa、T5 等主流 LM 模型的 Continual Pre-training 和 Fine-tuning。还支持使用 FashionBERT 开发的多模态模型阿里巴巴时尚领域数据;
  • AppZoo 应用丰富易用: 支持主流的NLP应用和阿里巴巴内部开发的模型,例如:文本匹配的HCNN,MRC的BERT-HAE。
  • 自动知识蒸馏:支持任务自适应知识蒸馏,将知识从教师模型提取到特定任务的小型学生模型,以减少参数大小,同时保持可比较的性能。
  • 易于使用和高性能的分布式策略:基于内部PAI特性,为多CPU/GPU训练提供易于使用和高性能的分布式策略。

架构

image.png

安装

您可以从 pip 安装

$ pip install easytransfer

或者从源码设置:

$ git clone https://github.com/alibaba/EasyTransfer.git
$ cd EasyTransfer
$ python setup.py install

此 repo 在 Python3.6/2.7、tensorflow 1.12.3 上测试

快速开始

现在让我们展示如何仅使用 30 行代码来构建基于 BERT 的文本分类模型。

from easytransfer import base_model, layers, model_zoo, preprocessors
from easytransfer.datasets import CSVReader, CSVWriter
from easytransfer.losses import softmax_cross_entropy
from easytransfer.evaluators import classification_eval_metrics
class TextClassification(base_model):
    def __init__(self, **kwargs):
        super(TextClassification, self).__init__(**kwargs)
  self.pretrained_model_name = "google-bert-base-en"
        self.num_labels = 2
    def build_logits(self, features, mode=None):
        preprocessor = preprocessors.get_preprocessor(self.pretrained_model_name)
        model = model_zoo.get_pretrained_model(self.pretrained_model_name)
        dense = layers.Dense(self.num_labels)
        input_ids, input_mask, segment_ids, label_ids = preprocessor(features)
        _, pooled_output = model([input_ids, input_mask, segment_ids], mode=mode)
        return dense(pooled_output), label_ids
    def build_loss(self, logits, labels):
        return softmax_cross_entropy(labels, self.num_labels, logits)
    def build_eval_metrics(self, logits, labels):
        return classification_eval_metrics(logits, labels, self.num_labels)
app = TextClassification()
train_reader = CSVReader(input_glob=app.train_input_fp, is_training=True, batch_size=app.train_batch_size)
eval_reader = CSVReader(input_glob=app.eval_input_fp, is_training=False, batch_size=app.eval_batch_size)              
app.run_train_and_evaluate(train_reader=train_reader, eval_reader=eval_reader)

您可以在我们的 Jupyter/Notebook PAI-DSW 中找到更多详细信息或使用代码。

您还可以使用 AppZoo 命令行工具快速训练 App 模型。以 SST-2 数据集上的文本分类为例。首先你可以下载train.tsvdev.tsvtest.tsv,然后开始训练:

$ easy_transfer_app --mode train \
    --inputTable=./train.tsv,./dev.tsv \
    --inputSchema=content:str:1,label:str:1 \
    --firstSequence=content \
    --sequenceLength=128 \
    --labelName=label \
    --labelEnumerateValues=0,1 \
    --checkpointDir=./sst2_models/\
    --numEpochs=3 \
    --batchSize=32 \
    --optimizerType=adam \
    --learningRate=2e-5 \
    --modelName=text_classify_bert \
    --advancedParameters='pretrain_model_name_or_path=google-bert-base-en'

然后预测:

$ easy_transfer_app --mode predict \
    --inputTable=./test.tsv \
    --outputTable=./test.pred.tsv \
    --inputSchema=id:str:1,content:str:1 \
    --firstSequence=content \
    --appendCols=content \
    --outputSchema=predictions,probabilities,logits \
    --checkpointPath=./sst2_models/ 

要了解有关 AppZoo 使用的更多信息,请参阅我们的文档

教程

线索基准

image.png

您可以在https://www.yuque.com/easytransfer/cn/rkm4p7 中找到更多基准

这是 CLUE 快速入门笔记本

链接

教程:https://www.yuque.com/easytransfer/itfpm9/qtzvuc

ModelZoo:https://www.yuque.com/easytransfer/itfpm9/oszcof

AppZoo:https://www.yuque.com/easytransfer/itfpm9/ky6hky

API文档:http://atp-modelzoo-sh.oss-cn-shanghai.aliyuncs.com/eztransfer_docs/html/index.html

相关文章
|
1月前
|
机器学习/深度学习 人工智能 自然语言处理
深度学习在自然语言处理中的应用探索
本文从一个独特的角度出发,通过对深度学习技术在自然语言处理(NLP)领域应用的深入分析,展现了如何通过深度学习模型理解和生成人类语言的可能性。文章首先概述了深度学习技术的基础知识,随后详细探讨了其在NLP中的几个关键应用,包括语言模型、文本分类、情感分析和机器翻译。此外,文章还着重讨论了面临的挑战以及未来的发展方向,旨在为读者提供一个全面而深刻的理解,关于深度学习如何推动自然语言处理技术的进步,以及这一进步对人类社会可能产生的深远影响。
|
3月前
|
机器学习/深度学习 自然语言处理 算法框架/工具
在Python中进行自然语言处理(NLP)的进阶应用
在Python中进行自然语言处理(NLP)的进阶应用
40 3
|
3月前
|
机器学习/深度学习 人工智能 自然语言处理
自然语言处理(NLP)在文本分析中的应用:从「被动收集」到「主动分析」
过去,文本分析往往是依靠人工阅读、标注和分类。但随着自然语言处理(NLP)技术的发展,文本分析的方式也在发生变化。本文将探讨NLP在文本分析中的应用,介绍NLP技术在不同领域的具体应用案例,并探讨NLP技术未来的发展方向。
31 0
|
21天前
|
机器学习/深度学习 人工智能 自然语言处理
深度学习在自然语言处理中的应用与挑战
随着深度学习技术的快速发展,自然语言处理领域也迎来了前所未有的机遇和挑战。本文将探讨深度学习在自然语言处理中的应用现状、关键技术及面临的挑战,并展望未来发展方向。
|
22天前
|
机器学习/深度学习 人工智能 自然语言处理
深度学习在自然语言处理中的应用与挑战
传统的自然语言处理技术在面对复杂语义和语境时往往表现不佳,而深度学习技术的兴起为解决这一难题提供了新的可能性。本文将探讨深度学习在自然语言处理中的应用现状、关键技术及挑战,并展望未来的发展方向。
17 1
|
1月前
|
机器学习/深度学习 人工智能 自然语言处理
深度学习在自然语言处理中的应用探索
【2月更文挑战第13天】 本文从一个独特的角度出发,通过对深度学习技术在自然语言处理(NLP)领域应用的深入分析,展现了如何通过深度学习模型理解和生成人类语言的可能性。文章首先概述了深度学习技术的基础知识,随后详细探讨了其在NLP中的几个关键应用,包括语言模型、文本分类、情感分析和机器翻译。此外,文章还着重讨论了面临的挑战以及未来的发展方向,旨在为读者提供一个全面而深刻的理解,关于深度学习如何推动自然语言处理技术的进步,以及这一进步对人类社会可能产生的深远影响。
|
1月前
|
机器学习/深度学习 人工智能 自然语言处理
深度学习在自然语言处理中的应用与挑战
【2月更文挑战第10天】 随着人工智能技术的不断发展,深度学习在自然语言处理领域的应用日益广泛。本文将探讨深度学习在自然语言处理中的重要性、现状和未来挑战,以及我个人对于该领域的一些思考和见解。
17 1
|
30天前
|
机器学习/深度学习 人工智能 自然语言处理
探索前沿技术:基于深度学习的自然语言处理应用与挑战
本文将深入探讨基于深度学习的自然语言处理(NLP)技术在当今应用中的重要性以及所面临的挑战。通过分析NLP的基本原理、应用场景和未来发展趋势,帮助读者更好地了解NLP技术的前沿领域和发展方向。
|
1月前
|
机器学习/深度学习 人工智能 自然语言处理
探索自然语言处理:语言模型的发展与应用
探索自然语言处理:语言模型的发展与应用
13 0
|
1月前
|
机器学习/深度学习 自然语言处理
基于深度学习的自然语言处理技术在智能客服系统中的应用
【2月更文挑战第21天】随着人工智能技术的不断发展,自然语言处理(NLP)技术在各个领域得到了广泛应用。本文主要探讨了基于深度学习的自然语言处理技术在智能客服系统中的应用。首先介绍了深度学习和自然语言处理的基本概念,然后分析了智能客服系统的工作原理和技术要求,接着详细阐述了基于深度学习的自然语言处理技术在智能客服系统中的具体应用,包括语义理解、情感分析和问答系统等。最后对基于深度学习的自然语言处理技术在智能客服系统中的优势和挑战进行了总结。
42 1