{"id":28102190,"url":"https://github.com/idea-ccnl/gts-engine","last_synced_at":"2025-05-13T19:34:36.250Z","repository":{"id":64663404,"uuid":"557164801","full_name":"IDEA-CCNL/GTS-Engine","owner":"IDEA-CCNL","description":"GTS Engine: A powerful NLU Training System。GTS引擎（GTS-Engine）是一款开箱即用且性能强大的自然语言理解引擎，聚焦于小样本任务，能够仅用小样本就能自动化生产NLP模型。","archived":false,"fork":false,"pushed_at":"2023-02-28T06:08:47.000Z","size":3991,"stargazers_count":91,"open_issues_count":5,"forks_count":10,"subscribers_count":10,"default_branch":"main","last_synced_at":"2025-05-13T19:34:31.164Z","etag":null,"topics":["natural-language-processing","nli","nlp","pretrained-models","python","pytorch","text","text-classification","text-similarity"],"latest_commit_sha":null,"homepage":"https://gtsfactory.com/","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/IDEA-CCNL.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2022-10-25T07:35:09.000Z","updated_at":"2024-12-19T06:02:45.000Z","dependencies_parsed_at":"2023-02-19T16:45:24.615Z","dependency_job_id":null,"html_url":"https://github.com/IDEA-CCNL/GTS-Engine","commit_stats":null,"previous_names":[],"tags_count":1,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/IDEA-CCNL%2FGTS-Engine","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/IDEA-CCNL%2FGTS-Engine/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/IDEA-CCNL%2FGTS-Engine/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/IDEA-CCNL%2FGTS-Engine/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/IDEA-CCNL","download_url":"https://codeload.github.com/IDEA-CCNL/GTS-Engine/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":254013222,"owners_count":21999382,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["natural-language-processing","nli","nlp","pretrained-models","python","pytorch","text","text-classification","text-similarity"],"created_at":"2025-05-13T19:33:29.398Z","updated_at":"2025-05-13T19:34:36.215Z","avatar_url":"https://github.com/IDEA-CCNL.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# GTS引擎\n\n\u003cp align=\"center\"\u003e\n    \u003ca href=\"./LICENSE\"\u003e\u003cimg src=\"https://img.shields.io/badge/license-Apache%202-dfd.svg\"\u003e\u003c/a\u003e\n    \u003ca href=\"\"\u003e\u003cimg src=\"https://img.shields.io/badge/python-3.7+-aff.svg\"\u003e\u003c/a\u003e\n    \u003ca href=\"\"\u003e\u003cimg src=\"https://img.shields.io/badge/os-linux%2C%20win%2C%20mac-pink.svg\"\u003e\u003c/a\u003e\n\u003c/p\u003e\n\n\n\u003ch4 align=\"center\"\u003e\n  \u003ca href=#安装\u003e 安装 \u003c/a\u003e |\n  \u003ca href=#快速开始\u003e 快速开始 \u003c/a\u003e |\n  \u003ca href=#API文档\u003e API文档 \u003c/a\u003e |\n  \u003ca href=#效果展示\u003e 效果展示 \u003c/a\u003e\n\u003c/h4\u003e\n\n------------------------------------------------------------------------------------------\n\nGTS引擎（GTS-Engine）是一款面向工业级生产的开箱即用且性能强大的自然语言理解引擎，聚焦于自然语言理解的小样本任务，能够仅用小样本就能自动化生产NLP模型。\n\n**2022年11月18日，GTS乾坤鼎引擎自动生产的模型夺得中文小样本权威评测基准FewCLUE榜单的冠军，也预示着其模型自动化生产技术已经达到了顶尖的算法专家水平**（详细内容见[效果展示](#效果展示)）。\n\nGTS引擎提出“用AI生产AI”的理念，它基于封神榜开源体系的基础模型，并在下游进行了有监督预训练，同时集成了多种小样本学习技术，搭建了一个模型自动生产的流水线。\n\nGTS-Engine已开源两个系列的引擎，分别为**乾坤鼎**系列和**八卦炉**系列。\n- **乾坤鼎**系列是以1.3B参数的大模型为底座，通过大模型结合多种小样本学习技术进行训练和推理的引擎。\n- **八卦炉**系列是以110M参数的base模型为底座，融合大模型、数据增强、协同训练等方法进行训练和推理的引擎。\n\nGTS-Engine支持的任务类型：\n\n| 任务类型 | 乾坤鼎 | 八卦炉 |                                             \n| ----------- | -------------- |  ---------------- |\n| 文本分类     | ✔️支持 | ✔️支持 |\n| 句子对相似度  | ✔️支持 | 🚧开发中 |\n| 自然语言推理  | ✔️支持 | 🚧开发中 |\n| 信息抽取     | ❌暂不支持 | ✔️支持 |\n| 关键词生成   | 🚧开发中 | ❌暂不支持 |\n| 摘要生成   | ❌暂不支持 | ✔️支持 |\n\n引擎仍在快速迭代中，更多的功能更新请持续关注我们的Github。\n\n您也可以使用我们的**模型自动生产平台**[GTSfactory](https://gtsfactory.com)来训练你的AI模型。无需海量数据，无需算法基础，只需要上传几份小样本的数据集，就能走完从构建数据集到模型训练、下载部署的全流程，帮助中小企业和个人开发者大大减少获得AI模型的成本。我们将逐步开源GTSfactory，让更多的人可以参与到GTS训练体系中来，将IDEA-CCNL坚持的「用AI生产AI」的理念传播开来。\n\n\u003cdiv align=\"center\"\u003e\n  \u003cimg src=pics/gtsfactory.png width=70% /\u003e\n\u003c/div\u003e\n\n## 更新日志\n\n- `2023/02/20`：八卦炉增加摘要生成任务，支持以238M、523M参数的模型摘要生成；\n- `2022/12/30`：正式发布八卦炉引擎Beta版本，支持以110M参数的base模型为底座的分类、信息抽取类型任务；\n- `2022/11/22`：乾坤鼎分类任务增加高级模式：支持用户上传无标注数据进行Self Training，进一步提升效果；\n- `2022/11/18`：正式发布乾坤鼎引擎Beta版本，FewCLUE榜单任务训练细节将陆续公开；\n\n## 即将发布\n\n- 更好的使用体验，更清晰的接口，更完善的模块划分，代码快速迭代中；\n- 八卦炉引擎分类任务的高级模式，使用大模型生成数据、数据打标进一步提升base模型效果；\n- 八卦炉引擎自然语言推理、句子匹配任务；\n- 乾坤鼎引擎关键词抽取任务；\n\n\n## 安装\n\n#### 环境需求和软件依赖\n\n- 软件环境依赖\n    - Python \u003e= 3.7\n    - 其他依赖请参考`requirements.txt`\n- 硬件环境需求\n    - 乾坤鼎引擎至少需要一张24G显存的RTX3090，使用V100和A100能够获得更好的性能体验；\n    - 八卦炉引擎至少需要一张8G显存的GPU，使用V100和A100能够获得更好的性能体验；\n\n更多环境需求和软件依赖请参考我们的[文档](https://gts-engine-doc.readthedocs.io/en/latest/docs/requirement.html)。\n\n我们提供以下三种安装方式，更详尽的`安装`教程，请参考我们的[文档](https://gts-engine-doc.readthedocs.io/en/latest/docs/quick_start.html)\n  - [pip安装](#pip安装)\n  - [github安装](#github安装)\n  - [Docker安装](#docker安装)\n\n#### pip安装\n\n您可以通过pip直接进行安装。\n\n```bash\n# 建议您通过此方式以获得最新的功能体验\npip install git+https://github.com/IDEA-CCNL/GTS-Engine.git\n```\n\n或者，\n\n```bash\npip install gts-engine\n```\n\n#### github安装\n\n也可以clone下github项目后进行安装。\n\n```bash\ngit clone https://github.com/IDEA-CCNL/GTS-Engine.git\ncd GTS-Engine\npython setup.py install\n```\n\n#### Docker安装\n\n我们提供一个打包好GTS-Engine的Docker来运行我们的引擎。\n\n```bash\n#下载docker\nsudo docker pull gtsfactory/gts-engine:v0\n```\n\n#### Python SDK\n\n建议您通过我们编写的Python SDK来使用GTS-Engine的服务，请参考[GTS-Engine-Client](https://github.com/IDEA-CCNL/GTS-Engine-Client)。\n\n## 快速开始\n\n我们支持两种方式来使用我们的引擎：通过Web服务的方式和通过命令行调用的方式。更多`快速开始`的详情，请参考我们的[文档](https://gts-engine-doc.readthedocs.io/en/latest/docs/quick_start.html)。\n\n  - [Web服务](#web服务)\n  - [调用命令行](#调用命令行)\n\n### 数据预处理\n\n以文本分类任务为例，训练任务中，GTS Engine要求您至少提供三个数据集：训练集、验证集和标签数据，测试集、无标签数据集为可选项。\n\n- **训练数据**\n\n每行是一个样本，采用json格式，数据字段必须含有`\"content\"`和`\"label\"`字段, \"content\"对应的是输入文本，\"label\"字段对应该文本的标签。\n\n```json\n{\"content\": \"佛山市青少年武术比赛开幕，291名武术达人同台竞技\", \"label\": \"教育\"}\n```\n\n- **验证数据**\n\n验证数据与训练数据格式一致。\n\n```json\n{\"content\": \"王者荣耀：官方悄悄的降价了4个强势英雄，看来米莱狄要来\", \"label\": \"电竞\"}\n```\n\n- **测试数据**\n\n每行是一个样本，采用json格式，数据字段必须含有`\"content\"`和`\"label\"`字段。\n\n```json\n{\"content\": \"姚明要建立中国篮球名人堂，哪些人可以入围？\", \"label\": \"体育\"}\n```\n\n- **无标签数据**\n\n每行是一个样本，采用json格式，数据字段必须含有`\"content\"`字段。\n\n```json\n{\"content\": \"挥不去的是记忆，留不住的是年华，拎不起的是失落\"}\n```\n\n- **标签数据**\n\n数据为json格式，只有一行数据，必须含有\"labels\"字段，对应的是标签的列表集合。\n\n```json\n{\"labels\": [\"故事\", \"文化\", \"娱乐\", \"体育\", \"财经\", \"房产\", \"汽车\", \"教育\", \"科技\", \"军事\", \"旅游\", \"国际\", \"股票\", \"农业\", \"电竞\"]}\n```\n\n其他任务的数据预处理要求，请参考我们的[文档](https://gts-engine-doc.readthedocs.io/en/latest/docs/preprocess.html)。\n\n### Web服务\n\nGTS引擎通过调用`gts_engine_service`脚本启动一个FastAPI Web服务，通过向服务发送HTTP Post请求，即可无需了解算法细节零门槛进行训练和推理，您还可以结合我们提供的Python SDK（[GTS-Engine-Client](https://github.com/IDEA-CCNL/GTS-Engine-Client)）来更方便地调用服务。下面以examples中的文本分类任务为例，教您如何快速使用引擎。\n\n#### 启动服务\n\n- 您可以直接通过调用命令行启动GTS-Engine的服务。\n\n```bash\nmkdir pretrained  #将下载好的模型文件放在pretrained\nmkdir tasks\n#pip安装方式    启动\nCUDA_VISIBLE_DEVICES=0 gts_engine_service --task_dir tasks --pretrained_dir pretrained --port 5201 \n#github安装方式 启动\nCUDA_VISIBLE_DEVICES=0 python gts_engine_service.py --task_dir tasks --pretrained_dir pretrained --port 5201 \n\n```\n\n- 同时也可以通过我们已安装的Docker直接运行我们的服务。\n\n```bash\n#docker安装方式 启动\n#--mount 注：目录挂载source对应的必须是存在的本地绝对路径\n#-p 本地端口与docker端口映射\nsudo docker run -it --name gts_engine \\\n-p 5201:5201 \\\n--mount type=bind,source=/usr/tasks,target=/workspace/GTS-Engine/tasks \\\ngtsfactory/gts-engine:v0\n#更新代码\ncd GTS-Engine\ngit pull\ncd gts_engine\n#启动服务\nCUDA_VISIBLE_DEVICES=0 python gts_engine_service.py --port 5201\n```\n\n#### 开始训练\n\n结合GTS-Engine-Client，您可以仅通过八行代码即可完成模型的训练。\n\n```python\nfrom gts_engine_client import GTSEngineClient\n#ip和port参数与启动服务的ip和port一致\nclient = GTSEngineClient(ip=\"192.168.190.2\", port=\"5201\")\n\n# 创建任务\nclient.create_task(\n  task_name=\"tnews_classification\",\n  task_type=\"classification\",\n  engine_type=\"qiankunding\")\n\n# 上传文件  注：要上传的文件地址写绝对路径\nclient.upload_file(\n  task_id=\"tnews_classification\",\n  local_data_path=\"examples/text_classification/tnews_train.json\")\nclient.upload_file(\n  task_id=\"tnews_classification\",\n  local_data_path=\"examples/text_classification/tnews_val.json\")\nclient.upload_file(\n  task_id=\"tnews_classification\",\n  local_data_path=\"examples/text_classification/tnews_test.json\")\nclient.upload_file(\n  task_id=\"tnews_classification\",\n  local_data_path=\"examples/text_classification/tnews_label.json\")\n\n# 开始训练\nclient.start_train(\n  task_id=\"tnews_classification\",\n  train_data=\"tnews_train.json\",\n  val_data=\"tnews_val.json\",\n  test_data=\"tnews_test.json\",\n  label_data=\"tnews_label.json\",\n  train_mode=\"standard\",\n  max_num_epoch=1,\n  min_num_epoch=1, \n  seed=42, \n  gpuid=0)\n```\n\n#### 开始推理\n\n同样地，您也可以在训练完成后，仅使用三行代码完成推理。\n\n```python\nfrom gts_engine_client import GTSEngineClient\n# 加载已训练好的模型\nclient.start_inference(task_id=\"tnews_classification\")\n# 预测\nclient.inference(\n  task_id=\"tnews_classification\",\n  samples=[\n    {\"content\":\"怎样的房子才算户型方正？\"},\n    {\"content\":\"文登区这些公路及危桥将进入 封闭施工，请注意绕行！\"}\n  ])\n```\n\n### 调用命令行\n\n我们也支持直接通过命令行的方式进行训练和推理，适合了解算法的高阶使用者。\n\n#### 开始训练\n\n```bash\nusage: gts_engine_train.py [-h]\n                          --task_dir TASK_DIR\n                          --engine_type ENGINE_TYPE\n                          --task_type TASK_TYPE\n                          [--num_workers NUM_WORKERS]\n                          [--train_batchsize TRAIN_BATCHSIZE]\n                          [--valid_batchsize VALID_BATCHSIZE]\n                          [--test_batchsize TEST_BATCHSIZE]\n                          [--max_len MAX_LEN]\n                          --pretrained_model_dir PRETRAINED_MODEL_DIR \n                          --data_dir DATA_DIR --train_data TRAIN_DATA \n                          --valid_data VALID_DATA\n                          [--test_data TEST_DATA]\n                          [--label_data LABEL_DATA]\n                          [--save_path SAVE_PATH]\n                          [--seed SEED]\n                          [--lr LR]\n                          [--max_epochs MAX_EPOCHS]\n                          [--min_epochs MIN_EPOCHS]\n```\n\n您可以通过`-h`查看详细的参数说明，也可以通过`examples/text_classification/run_train_qiankunding.sh`直接运行训练示例。\n\n#### 开始推理\n\n```bash\nusage: gts_engine_inference.py [-h] --task_dir TASK_DIR --engine_type {qiankunding,bagualu} --task_type {classification,similarity,nli} --input_path INPUT_PATH --output_path OUTPUT_PATH\n\noptional arguments:\n  -h, --help            show this help message and exit\n  --task_dir TASK_DIR   specific task directory\n  --engine_type {qiankunding,bagualu}\n                        engine type\n  --task_type {classification,similarity,nli}\n                        task type for training\n  --input_path INPUT_PATH\n                        input path of data which will be inferenced\n  --output_path OUTPUT_PATH\n                        output path of inferenced data\n```\n\n您可以通过`examples/text_classification/run_inference_qiankunding.sh`直接运行推理示例。\n\n### 分类任务-标签检测\n\n标签检测是一个检测分类任务输入标签的效果的功能，它的作用是判断标签对于文本数据内容的概括性，并且给出分数和评级，依据该分数和评级可以在分类任务之前对标签的性能进行评判，预先将对文本内容概括性差的标签进行相应的修改、删除操作，由此提升后续分类任务的效果。\n\n- **输入-标签数据**\n\n输入数据目录为`gts_engine/examples/text_classification`，示例文件的文件名为`tnews_label`，数据为json格式，只有一行数据，必须含有`\"labels\"`字段，对应的是标签的列表集合，输入格式示例如下，使用时可直接将示例文件内的数据进行替换。\n\n```json\n{\"labels\": [\"故事\", \"文化\", \"娱乐\", \"体育\", \"财经\", \"房产\", \"汽车\", \"教育\", \"科技\", \"军事\", \"旅游\", \"国际\", \"股票\", \"农业\", \"电竞\"]}\n```\n\n- **输入-数据集**\n\n目录与标签数据同级，示例文件的文件名为`tnews_test`，每行是一个样本，只需要一个数据输入文件，输入数据采用json格式，数据必须含有`\"content\"`和`\"label\"`字段，`\"content\"`对应的是输入文本，`\"label\"`字段对应该文本的标签。输入格式示例如下，使用时可直接将示例文件内的数据进行替换。\n\n```json\n{\"content\": \"请替我活下去：6岁女孩身患重病，自愿捐所有器官救5人，万人泪湿\", \"label\": \"故事\", \"id\": 2740}\n```\n\n#### 开始检测\n一行代码启动.py文件即可开始检测\n\n```bash\npython label_detection.py --label_path ../../examples/text_classification/tnews_label.json --data_path ../../examples/text_classification/tnews_test.json\n```\n\n## API文档\n\n更多GTS-Engine的内容可参考[API文档](https://gts-engine-doc.readthedocs.io/en/latest/index.html)。\n\n## 效果展示\n\n在众多真实的业务场景中，有标注的数据是往往是严重稀缺的，而相关数据的获取和标注需要大量的人力和专家知识的投入。因此，小样本学习的研究已经成为业界的热点之一。GTS-Engine将专注于解决各种小样本自然语言理解任务。乾坤鼎引擎通过一套训练流水线，已经达到了人类算法专家的水准。2022年11月18日，GTS乾坤鼎引擎在中文语言理解权威评测基准FewCLUE榜单上登顶。其中，在EPRSTMT(电商评论情感二分类)任务中超过了其他算法专家生产的模型，同时也刷新了 BUSTM(句子对相似度判断)任务的记录。GTS-Engine系列会持续在各个NLU任务上不断优化，持续集成，带来更好的开箱即用的体验。\n\n![avatar](pics/gts_fewclue.png)\n\n## GTS大事件\n\n- [开源引擎GTS乾坤鼎：自动生产模型拿下FewCLUE榜单冠军](https://mp.weixin.qq.com/s/uDMuf0HXanPCM26WFfdvDw) 2022.11.18\n- [IDEA研究院GTSfactory入选信通院首批大模型优秀应用案例](https://mp.weixin.qq.com/s/bYwPsmJsGehCABWs8nC9SQ) 2022.08.30\n- [GTS模型生产平台开放公测，用AI自动化生产AI模型](https://mp.weixin.qq.com/s/AFp22hzElkBmJD_VHW0njQ) 2022.05.23\n\n## 相关链接\n\n- [封神榜官网](https://fengshenbang-lm.com)\n- [封神榜Huggingface](https://huggingface.co/IDEA-CCNL)\n- [封神榜模型体验中心](https://demo.fengshenbang-lm.com)\n- [封神框架](https://github.com/IDEA-CCNL/Fengshenbang-LM)\n- [GTS模型自动生产平台](https://gtsfactory.com)\n- [CCNL技术团队知乎账号-封神空间](https://www.zhihu.com/people/feng-shen-kong-jian)\n\n\n## 引用\n\n如果您在研究中使用了我们的工具，请引用我们的工作：\n\n```\n@misc{GTS-Engine,\n  title={GTS-Engine},\n  author={IDEA-CCNL},\n  year={2022},\n  howpublished={\\url{https://github.com/IDEA-CCNL/GTS-Engine}},\n}\n```\n\n## 联系我们\n\nIDEA研究院CCNL技术团队已创建封神榜+GTS开源讨论群，我们将在讨论群中不定期更新发布GTS新特性、封神榜新模型与系列技术文章。请扫描下面二维码或者微信搜索“fengshenbang-lm”，添加封神空间小助手进群交流！\n\n![avartar](pics/wechat_qrcode.png)\n\n我们也在持续招人，欢迎投递简历！\n\n![avartar](pics/contactus.png)\n\n\n## 开源协议\n\nGTS-Engine遵循[Apache-2.0开源协议](https://github.com/IDEA-CCNL/GTS-Engine/blob/main/LICENSE)。\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fidea-ccnl%2Fgts-engine","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fidea-ccnl%2Fgts-engine","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fidea-ccnl%2Fgts-engine/lists"}