Package: gts-engine
GTS引擎安装|快速开始|API文档|效果展示GTS引擎（GTS-Engine）是一款面向工业级生产的开箱即用且性能强大的自然语言理解引擎，聚焦于自然语言理解的小样本任务，能够仅用小样本就能自动化生产NLP模型。2022年11月18日，GTS乾坤鼎引擎自动生产的模型夺得中文小样本权威评测基准FewCLUE榜单的冠军，也预示着其模型自动化生产技术已经达到了顶尖的算法专家水平（详细内容见效果展示）。GTS引擎提出“用AI生产AI”的理念，它基于封神榜开源体系的基础模型，并在下游进行了有监督预训练，同时集成了多种小样本学习技术，搭建了一个模型自动生产的流水线。GTS-Engine已开源两个系列的引擎，分别为乾坤鼎系列和八卦炉系列。乾坤鼎系列是以1.3B参数的大模型为底座，通过大模型结合多种小样本学习技术进行训练和推理的引擎。八卦炉系列是以110M参数的base模型为底座，融合大模型、数据增强、协同训练等方法进行训练和推理的引擎。GTS-Engine支持的任务类型：任务类型乾坤鼎八卦炉文本分类✔️支持✔️支持句子对相似度✔️支持🚧开发中自然语言推理✔️支持🚧开发中信息抽取❌暂不支持✔️支持关键词生成🚧开发中❌暂不支持摘要生成❌暂不支持✔️支持引擎仍在快速迭代中，更多的功能更新请持续关注我们的Github。您也可以使用我们的模型自动生产平台GTSfactory来训练你的AI模型。无需海量数据，无需算法基础，只需要上传几份小样本的数据集，就能走完从构建数据集到模型训练、下载部署的全流程，帮助中小企业和个人开发者大大减少获得AI模型的成本。我们将逐步开源GTSfactory，让更多的人可以参与到GTS训练体系中来，将IDEA-CCNL坚持的「用AI生产AI」的理念传播开来。更新日志2023/02/20：八卦炉增加摘要生成任务，支持以238M、523M参数的模型摘要生成；2022/12/30：正式发布八卦炉引擎Beta版本，支持以110M参数的base模型为底座的分类、信息抽取类型任务；2022/11/22：乾坤鼎分类任务增加高级模式：支持用户上传无标注数据进行Self Training，进一步提升效果；2022/11/18：正式发布乾坤鼎引擎Beta版本，FewCLUE榜单任务训练细节将陆续公开；即将发布更好的使用体验，更清晰的接口，更完善的模块划分，代码快速迭代中；八卦炉引擎分类任务的高级模式，使用大模型生成数据、数据打标进一步提升base模型效果；八卦炉引擎自然语言推理、句子匹配任务；乾坤鼎引擎关键词抽取任务；安装环境需求和软件依赖软件环境依赖Python >= 3.7其他依赖请参考requirements.txt硬件环境需求乾坤鼎引擎至少需要一张24G显存的RTX3090，使用V100和A100能够获得更好的性能体验；八卦炉引擎至少需要一张8G显存的GPU，使用V100和A100能够获得更好的性能体验；更多环境需求和软件依赖请参考我们的文档。我们提供以下三种安装方式，更详尽的安装教程，请参考我们的文档pip安装github安装Docker安装pip安装您可以通过pip直接进行安装。# 建议您通过此方式以获得最新的功能体验pipinstallgit+https://github.com/IDEA-CCNL/GTS-Engine.git或者，pipinstallgts-enginegithub安装也可以clone下github项目后进行安装。gitclonehttps://github.com/IDEA-CCNL/GTS-Engine.gitcdGTS-Engine
pythonsetup.pyinstallDocker安装我们提供一个打包好GTS-Engine的Docker来运行我们的引擎。#下载dockersudodockerpullgtsfactory/gts-engine:v0Python SDK建议您通过我们编写的Python SDK来使用GTS-Engine的服务，请参考GTS-Engine-Client。快速开始我们支持两种方式来使用我们的引擎：通过Web服务的方式和通过命令行调用的方式。更多快速开始的详情，请参考我们的文档。Web服务调用命令行数据预处理以文本分类任务为例，训练任务中，GTS Engine要求您至少提供三个数据集：训练集、验证集和标签数据，测试集、无标签数据集为可选项。训练数据每行是一个样本，采用json格式，数据字段必须含有"content"和"label"字段, "content"对应的是输入文本，"label"字段对应该文本的标签。{"content":"佛山市青少年武术比赛开幕，291名武术达人同台竞技","label":"教育"}验证数据验证数据与训练数据格式一致。{"content":"王者荣耀：官方悄悄的降价了4个强势英雄，看来米莱狄要来","label":"电竞"}测试数据每行是一个样本，采用json格式，数据字段必须含有"content"和"label"字段。{"content":"姚明要建立中国篮球名人堂，哪些人可以入围？","label":"体育"}无标签数据每行是一个样本，采用json格式，数据字段必须含有"content"字段。{"content":"挥不去的是记忆，留不住的是年华，拎不起的是失落"}标签数据数据为json格式，只有一行数据，必须含有"labels"字段，对应的是标签的列表集合。{"labels":["故事","文化","娱乐","体育","财经","房产","汽车","教育","科技","军事","旅游","国际","股票","农业","电竞"]}其他任务的数据预处理要求，请参考我们的文档。Web服务GTS引擎通过调用gts_engine_service脚本启动一个FastAPI Web服务，通过向服务发送HTTP Post请求，即可无需了解算法细节零门槛进行训练和推理，您还可以结合我们提供的Python SDK（GTS-Engine-Client）来更方便地调用服务。下面以examples中的文本分类任务为例，教您如何快速使用引擎。启动服务您可以直接通过调用命令行启动GTS-Engine的服务。mkdirpretrained#将下载好的模型文件放在pretrainedmkdirtasks#pip安装方式    启动CUDA_VISIBLE_DEVICES=0gts_engine_service--task_dirtasks--pretrained_dirpretrained--port5201#github安装方式 启动CUDA_VISIBLE_DEVICES=0pythongts_engine_service.py--task_dirtasks--pretrained_dirpretrained--port5201同时也可以通过我们已安装的Docker直接运行我们的服务。#docker安装方式 启动#--mount 注：目录挂载source对应的必须是存在的本地绝对路径#-p 本地端口与docker端口映射sudodockerrun-it--namegts_engine\-p5201:5201\--mounttype=bind,source=/usr/tasks,target=/workspace/GTS-Engine/tasks\gtsfactory/gts-engine:v0#更新代码cdGTS-Engine
gitpullcdgts_engine#启动服务CUDA_VISIBLE_DEVICES=0pythongts_engine_service.py--port5201开始训练结合GTS-Engine-Client，您可以仅通过八行代码即可完成模型的训练。fromgts_engine_clientimportGTSEngineClient#ip和port参数与启动服务的ip和port一致client=GTSEngineClient(ip="192.168.190.2",port="5201")# 创建任务client.create_task(task_name="tnews_classification",task_type="classification",engine_type="qiankunding")# 上传文件  注：要上传的文件地址写绝对路径client.upload_file(task_id="tnews_classification",local_data_path="examples/text_classification/tnews_train.json")client.upload_file(task_id="tnews_classification",local_data_path="examples/text_classification/tnews_val.json")client.upload_file(task_id="tnews_classification",local_data_path="examples/text_classification/tnews_test.json")client.upload_file(task_id="tnews_classification",local_data_path="examples/text_classification/tnews_label.json")# 开始训练client.start_train(task_id="tnews_classification",train_data="tnews_train.json",val_data="tnews_val.json",test_data="tnews_test.json",label_data="tnews_label.json",train_mode="standard",max_num_epoch=1,min_num_epoch=1,seed=42,gpuid=0)开始推理同样地，您也可以在训练完成后，仅使用三行代码完成推理。fromgts_engine_clientimportGTSEngineClient# 加载已训练好的模型client.start_inference(task_id="tnews_classification")# 预测client.inference(task_id="tnews_classification",samples=[{"content":"怎样的房子才算户型方正？"},{"content":"文登区这些公路及危桥将进入 封闭施工，请注意绕行！"}])调用命令行我们也支持直接通过命令行的方式进行训练和推理，适合了解算法的高阶使用者。开始训练usage:gts_engine_train.py[-h]--task_dirTASK_DIR--engine_typeENGINE_TYPE--task_typeTASK_TYPE[--num_workersNUM_WORKERS][--train_batchsizeTRAIN_BATCHSIZE][--valid_batchsizeVALID_BATCHSIZE][--test_batchsizeTEST_BATCHSIZE][--max_lenMAX_LEN]--pretrained_model_dirPRETRAINED_MODEL_DIR--data_dirDATA_DIR--train_dataTRAIN_DATA--valid_dataVALID_DATA[--test_dataTEST_DATA][--label_dataLABEL_DATA][--save_pathSAVE_PATH][--seedSEED][--lrLR][--max_epochsMAX_EPOCHS][--min_epochsMIN_EPOCHS]您可以通过-h查看详细的参数说明，也可以通过examples/text_classification/run_train_qiankunding.sh直接运行训练示例。开始推理usage:gts_engine_inference.py[-h]--task_dirTASK_DIR--engine_type{qiankunding,bagualu}--task_type{classification,similarity,nli}--input_pathINPUT_PATH--output_pathOUTPUT_PATH

optionalarguments:-h,--helpshowthishelpmessageandexit--task_dirTASK_DIRspecifictaskdirectory--engine_type{qiankunding,bagualu}enginetype--task_type{classification,similarity,nli}tasktypefortraining--input_pathINPUT_PATHinputpathofdatawhichwillbeinferenced--output_pathOUTPUT_PATHoutputpathofinferenceddata您可以通过examples/text_classification/run_inference_qiankunding.sh直接运行推理示例。分类任务-标签检测标签检测是一个检测分类任务输入标签的效果的功能，它的作用是判断标签对于文本数据内容的概括性，并且给出分数和评级，依据该分数和评级可以在分类任务之前对标签的性能进行评判，预先将对文本内容概括性差的标签进行相应的修改、删除操作，由此提升后续分类任务的效果。输入-标签数据输入数据目录为gts_engine/examples/text_classification，示例文件的文件名为tnews_label，数据为json格式，只有一行数据，必须含有"labels"字段，对应的是标签的列表集合，输入格式示例如下，使用时可直接将示例文件内的数据进行替换。{"labels":["故事","文化","娱乐","体育","财经","房产","汽车","教育","科技","军事","旅游","国际","股票","农业","电竞"]}输入-数据集目录与标签数据同级，示例文件的文件名为tnews_test，每行是一个样本，只需要一个数据输入文件，输入数据采用json格式，数据必须含有"content"和"label"字段，"content"对应的是输入文本，"label"字段对应该文本的标签。输入格式示例如下，使用时可直接将示例文件内的数据进行替换。{"content":"请替我活下去：6岁女孩身患重病，自愿捐所有器官救5人，万人泪湿","label":"故事","id":2740}开始检测一行代码启动.py文件即可开始检测pythonlabel_detection.py--label_path../../examples/text_classification/tnews_label.json--data_path../../examples/text_classification/tnews_test.jsonAPI文档更多GTS-Engine的内容可参考API文档。效果展示在众多真实的业务场景中，有标注的数据是往往是严重稀缺的，而相关数据的获取和标注需要大量的人力和专家知识的投入。因此，小样本学习的研究已经成为业界的热点之一。GTS-Engine将专注于解决各种小样本自然语言理解任务。乾坤鼎引擎通过一套训练流水线，已经达到了人类算法专家的水准。2022年11月18日，GTS乾坤鼎引擎在中文语言理解权威评测基准FewCLUE榜单上登顶。其中，在EPRSTMT(电商评论情感二分类)任务中超过了其他算法专家生产的模型，同时也刷新了 BUSTM(句子对相似度判断)任务的记录。GTS-Engine系列会持续在各个NLU任务上不断优化，持续集成，带来更好的开箱即用的体验。GTS大事件开源引擎GTS乾坤鼎：自动生产模型拿下FewCLUE榜单冠军2022.11.18IDEA研究院GTSfactory入选信通院首批大模型优秀应用案例2022.08.30GTS模型生产平台开放公测，用AI自动化生产AI模型2022.05.23相关链接封神榜官网封神榜Huggingface封神榜模型体验中心封神框架GTS模型自动生产平台CCNL技术团队知乎账号-封神空间引用如果您在研究中使用了我们的工具，请引用我们的工作：@misc{GTS-Engine,
  title={GTS-Engine},
  author={IDEA-CCNL},
  year={2022},
  howpublished={\url{https://github.com/IDEA-CCNL/GTS-Engine}},
}联系我们IDEA研究院CCNL技术团队已创建封神榜+GTS开源讨论群，我们将在讨论群中不定期更新发布GTS新特性、封神榜新模型与系列技术文章。请扫描下面二维码或者微信搜索“fengshenbang-lm”，添加封神空间小助手进群交流！我们也在持续招人，欢迎投递简历！开源协议GTS-Engine遵循Apache-2.0开源协议。