T5 是谷歌研发的一款文本到文本转换框架,基于 Transformer。
该框架在多个 benchmarks 上的总结、问题回答、文本归类任务表现突出。
开发团队已经在 GitHub 上开源了 T5 相关数据集、预训练模型以及所有代码。
T5 为文本到文本任务的模型训练和微调提供了非常实用的模块,开发者可以将它用于未来的模型开发工作中。
对应的论文是https://arxiv.org/abs/1910.10683。
库的构成:
t5.data
t5.data是一个能提供t5.data.Dataset定义的task对象的包。每个task的构成包括数据源,文本预处理函数、
SentencePiece模型,标准函数;以及token预处理函数,postprocess函数。
在数据源中提供了对t5.data.Dataset的封装即TfdsTask(TensorFlow Datasets (TFDS)),存储为文本文件的TextLineTask。
在文本预处理函数中包括了把源数据处理为text-to-text模型的inputs,targets。如t5.data.preprocessors.translate,
{'inputs': 'translate German to English: Das ist gut.', 'targets': 'That is good.'}
t5.evaluation
t5.evaluation包括2个组件,评估标准函数及支持函数。
t5.models
t5.models包括task及mixtures,即为训练、评估的模型实现。
安装:
pip install t5[gcp]
目前的训练依赖TPU。
训练:
t5_mesh_transformer \\
--tpu="${TPU_NAME}" \\
--gcp_project="${PROJECT}" \\
--tpu_zone="${ZONE}" \\
--model_dir="${MODEL_DIR}" \\
--t5_tfds_data_dir="${DATA_DIR}" \\
--gin_file="dataset.gin" \\
--gin_file="models/bi_v1.gin" \\
--gin_param="utils.tpu_mesh_shape.model_parallelism = 1" \\
--gin_param="utils.tpu_mesh_shape.tpu_topology = '2x2'" \\
--gin_param="MIXTURE_NAME = 'glue_mrpc_v002'"
导出模型
t5_mesh_transformer \\
--gcp_project="${PROJECT}" \\
--tpu_zone="${ZONE}" \\
--model_dir="${MODEL_DIR}" \\
--use_model_api \\
--mode="export" \\
--export_dir="/path/to/export/dir"
预训练的模型;
T5-Small (60 million parameters): gs://t5-data/pretrained_models/small
T5-Base (220 million parameters): gs://t5-data/pretrained_models/base
T5-Large (770 million parameters): gs://t5-data/pretrained_models/large
T5-3B (3 billion parameters): gs://t5-data/pretrained_models/3B
T5-11B (11 billion parameters): gs://t5-data/pretrained_models/11B
閱讀更多 AI踐行者 的文章