文心工具代码结构
更新时间:2022-01-25
文本将对文心NLP开发工具包的代码目录结构进行简要介绍。如果您对个别模块有详细的使用需求,可参考后续其他文档。
一级目录
文心工具包内的一级目录结构及其说明如下所示:
.
├── config.ini ## 用户的使用配置,可以使用默认配置即可
├── env.sh ## 环境变量配置文档
├── tasks ## 各任务入口脚本,通过调用json、自定义textone预置模块实现模型训练。
├── wenxin ## 文心开发套件核心代码
└── requirements.txt ## 文心依赖列表wenxin目录介绍
wenxin目录为核心代码,其核心结构及其说明如下所示:
- common:各模块通用部分,包含注册模块、剪切规则、padding规则、超长字符串截断规则及其常量等设置。
- data:核心数据处理模块,包括数据读取、转id等内容。
- metrics:评估函数。
- models:组建网络主干部分,包括前向网络、优化器、metrics等四部分。
- modules: 子网络部分,一些公用的网络片段,如语义表示部分。
- training:训练主体部分,封装program、load、save等过程。
- inference:预测主体部分,封装program、load等过程。
- utils:辅助工具,包括参数初始化等。
下面将对部分重要代码做概要说明:
.
├── __init__.py
├── common
│ ├── __init__.py
│ ├── args.py
│ ├── register.py ## 注册模块
│ ├── controler.so ## 核心调度模块
│ ├── controler.cpython-37m-x86_64-linux-gnu.so ## python3.7专用核心调度模块
│ └── rule.py ## 裁切规则、padding规则、超长字符串截断规则及其常量设置
├── data
│ ├── data.data_set_reader ## 数据从文件中读取的过程,并在其中配置不同域(field)的处理方式。
│ ├── data.field_reader ## 针对文本域、数值域等不同的数据进行处理。
│ ├── data.tokenizer ## 将文本字符串转换成token列表的过程。
│ └── ...
├── inference
├── metrics ## 预置评估函数
├── models ## 预置网络主干部分,包括前向网络、优化器和metrics。
├── modules ## 子网络部分,一些公用的网络片段,如语义表示等
├── training ## 训练主体部分,封装program、load、save等过程
│ ├── __init__.py
│ ├── custom_trainer.py ## 能够覆盖大部分训练和评估的通用流程,如果对自定义训练评估要求不高,可以直接继承该类
│ ├── mrc_trainer.py ## 针对阅读理解任务的训练流程
│ └── trainer_config.py ## 训练流程相关参数
└── utils ## 辅助工具类tasks目录介绍
文心开发套件tasks目录为各任务入口,其结构及其说明如下所示:
.
├── __init__.py
├── text_classification ## 文本分类任务
├── text_matching ## 文本匹配任务
├── sequence_labeling ## 序列标注任务
├── text_generation ## 文本生成任务
├── entity_attribute_extraction ## 实体属性抽取任务
├── entity_attribute_extraction_many_to_many ## 多对多实体属性抽取任务
├── entity_relation_extraction ## 实体关系抽取任务
├── entity_relation_extraction_many_to_many ## 多对多实体关系抽取任务
├── few_shot_text_classification ## 小样本文本分类任务
├── mrc ## 阅读理解
├── ernie_slim ## ERNIE Slim 蒸馏
└── model_files ## 预训练模型相关文件,包括各模型的参数配置、个模型的词典等