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

本文涉及的产品
NLP自然语言处理_高级版,每接口累计50万次
NLP自然语言处理_基础版,每接口每天50万次
NLP 自学习平台,3个模型定制额度 1个月
简介: 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

相关文章
|
6天前
|
机器学习/深度学习 数据采集 自然语言处理
深度学习在自然语言处理中的应用与挑战
本文探讨了深度学习技术在自然语言处理(NLP)领域的应用,包括机器翻译、情感分析和文本生成等方面。同时,讨论了数据质量、模型复杂性和伦理问题等挑战,并提出了未来的研究方向和解决方案。通过综合分析,本文旨在为NLP领域的研究人员和从业者提供有价值的参考。
|
17天前
|
机器学习/深度学习 人工智能 自然语言处理
AI技术在自然语言处理中的应用
【9月更文挑战第17天】本文主要介绍了AI技术在自然语言处理(NLP)领域的应用,包括文本分类、情感分析、机器翻译和语音识别等方面。通过实例展示了AI技术如何帮助解决NLP中的挑战性问题,并讨论了未来发展趋势。
|
12天前
|
机器学习/深度学习 人工智能 自然语言处理
探索AI技术在自然语言处理中的应用
【9月更文挑战第22天】本文将探讨AI技术在自然语言处理(NLP)领域的应用,包括文本挖掘、情感分析、机器翻译等方面。我们将通过实例和代码示例,展示如何使用Python和相关库实现这些功能。
|
14天前
|
机器学习/深度学习 人工智能 自然语言处理
深度学习在自然语言处理中的应用与未来展望
本文探讨了深度学习技术在自然语言处理(NLP)领域的应用,重点分析了神经网络模型如循环神经网络(RNN)、长短期记忆网络(LSTM)和Transformer等在文本生成、语义理解及情感分析等任务中的卓越表现。通过具体案例展示了这些模型如何有效解决传统方法难以处理的问题,并讨论了当前面临的挑战及未来可能的发展方向,为进一步研究提供了新的视角和思路。
|
22天前
|
机器学习/深度学习 数据采集 人工智能
AI技术在自然语言处理中的应用与挑战
【9月更文挑战第12天】本文将探讨AI技术在自然语言处理(NLP)领域的应用及其面临的挑战。我们将介绍NLP的基本概念、主要任务和应用场景,并分析当前AI技术在NLP中的局限性和未来发展趋势。通过实际案例和代码示例,我们将展示AI技术如何帮助解决NLP问题,并探讨如何克服现有挑战以实现更高效的自然语言处理系统。
|
8天前
|
机器学习/深度学习 自然语言处理 搜索推荐
探索深度学习与自然语言处理(NLP)在智能客服系统中的创新应用
探索深度学习与自然语言处理(NLP)在智能客服系统中的创新应用
32 0
|
2月前
|
机器学习/深度学习 人工智能 自然语言处理
AI技术在自然语言处理中的应用与挑战
【8月更文挑战第28天】本文将探讨AI技术在自然语言处理(NLP)领域的应用及其面临的挑战。我们将通过实例和代码示例,展示AI如何帮助机器理解和生成人类语言,并讨论在这一过程中遇到的主要问题和可能的解决方案。
|
2月前
|
机器学习/深度学习 人工智能 自然语言处理
AI技术在自然语言处理中的应用
【8月更文挑战第27天】本文将探讨人工智能技术在自然语言处理领域的应用,包括语音识别、机器翻译、情感分析等方面。我们将通过实例展示AI如何改变我们与计算机的交互方式,并讨论其在未来发展的潜力。
|
2月前
|
机器学习/深度学习 人工智能 自然语言处理
AI技术在自然语言处理中的应用与挑战
【8月更文挑战第26天】本文将探讨AI技术在自然语言处理(NLP)领域的应用和面临的挑战。我们将通过实例分析,展示AI如何帮助机器理解和生成人类语言,并讨论当前技术的局限性和未来发展的可能性。
|
2月前
|
人工智能 自然语言处理 语音技术
AI在自然语言处理中的应用
【8月更文挑战第24天】人工智能(AI)已经渗透到我们生活的方方面面,其中自然语言处理(NLP)是AI的一个重要应用领域。本文将介绍NLP的基本概念,以及AI如何帮助计算机理解和生成人类语言。我们将通过一个简单的代码示例,展示如何使用Python和NLTK库进行文本分析。
下一篇
无影云桌面