资讯 社区 文档
技术能力
语音技术
文字识别
人脸与人体
图像技术
语言与知识
视频技术

2.文心代码结构

一级目录

├── README.md     
├── requirements.txt                ## wenxin的其他依赖列表
├── env.sh                          ## 环境变量配置文档,待定(在docker模式下无env.sh)
├── tasks                           ## 各任务入口脚本,通过调用json、自定义wenxin预置模块实现模型练。
├── wenxin                          ## wenxin核心代码。
└── version.txt                     ## wenxin版本信息

wenxin目录

  • 核心目录如下:

    common:各模块通用部分,包含注册模块、剪切规则、padding规则、超长字符串截断规则及其常量等设置。

    data:核心数据处理模块,包括数据读取、转id等内容。

    data.data_set_reader:数据从文件中读取的过程,并在其中配置不同域(field)的处理方式。

    data.field_reader:针对文本域、数值域等不同的数据进行处理。

    data.tokenizer:将文本字符串转换成token列表的过程。

    metrics:评估函数。

    models:组建网络主干部分,包括前向网络、优化器、metrics等四部分。

    modules: 子网络部分,一些公用的网络片段,如语义表示部分。

    training:训练主体部分,封装program、load、save等过程。

    inference:预测主体部分,封装program、load等过程。

    utils:辅助工具,包括参数初始化等。

    ├── __init__.py                                                  
    ├── common                             ## 各模块通用部分
    │   ├── __init__.py
    │   ├── args.py                        ## 命令行参数解析
    │   ├── controler.so                  ## 核心调度模块
    │   ├── infer_parser_api.py						 ## 各个task的预测结果解析接口
    │   ├── inference_builder.py           ## 预测实例构造器
    │   ├── model_manager.py   ## 模型管理模块,主要用来按一些指标或者规则去选择保存哪些模型
    │   ├── register.py        ## 实现注册机制的模块
    │   └── rule.py            ## 文心中用到的常量设置、裁切规则、padding规则等规则设置
    ├── data                   ## 数据处理相关的内容都在data目录下
    │   ├── __init__.py
    │   ├── data_aug
    │   │   ├── README.md
    │   ├── data_cleaning
    │   │   ├── file_encoding.py    ## 文件格式转换
    │   │   ├── input.txt    				## 预置的测试数据
    │   ├── data_set.py        ## 用来存放训练集、测试集、验证集、预测集对应Reader实例的类                                                
    │   ├── data_set_reader
    │   │   ├── __init__.py                                                 
    │   │   ├── base_dataset_reader.py  ## 基类,读文件、转id、组batch
    │   │   ├── basic_dataset_reader.py ## 一个基础的data_set_reader,实现了文件读取,id序列化,token embedding化等基本操作    
    │   │   ├── ernie_classification_dataset_reader.py ## ERNIE句对分类和匹配任务用到的的reader,特点是将两个句子的id拼接在一起,以sep分隔,与ErnieClassificationFieldReader配合使用。
    │   │   └── ...
    │   ├── field.py                  ## field(域)的基本定义
    │   ├── field_reader
    │   │   ├── __init__.py                                                 
    │   │   ├── base_field_reader.py        ## 基类
    │   │   ├── custom_text_field_reader.py ## 通用文本reader basic + mask(用于区分padding), 非ernie网络通用
    │   │   ├── ernie_classification_field_reader.py ## ernie句对分类reader
    │   │   ├── ernie_seqlabel_label_field_reader.py ## ernie序列标注标签域reader                       
    │   │   ├── ernie_text_field_reader.py           ## ernie双塔文本域reader
    │   │   ├── scalar_array_field_reader.py         ## 数值类型数组reader,需要指定整型还是浮点型,支持转为id的文本数据
    │   │   ├── scalar_field_reader.py               ## 数值类型标量reader,需要指定整型还是浮点型
    │   │   └── ...
    │   ├── reader_config.py
    │   ├── tokenizer
    │   │   ├── __init__.py 
    │   │   ├── tokenizer.py                       ## 基类
    │   │   ├── custom_tokenizer.py                ## 分词用tokenizer, 对于已用空格(或其他自定义分隔符)分好词的文本
    │   │   ├── lac_tokenizer.py                   ## 使用LAC的分词器
    │   │   ├── mrc_tokenizer.py                   ## 阅读理解任务的分词器
    │   │   ├── tokenization_spm.py                ## 该文件貌似没人用?待确认是否要删除
    │   │   ├── tokenization_utils.py              ## 一些通用工具,如编码格式转换等。
    │   │   └── tokenization_wp.py                 ## ERNIE任务的分词器,basic, sentence_piece, word_piece的总集,按字粒度进行切分
    │   
    │   ├── wordseg    ## LAC切词模块
    │   │   ├── __init__.py
    │   │   └── test_seg  ## 预置的demo数据 
    │   │   └── wordseg_lac.py 
    │
    │   ├── build_voc.py   	 ## 根据已切好词的数据集进行词频统计,生成词表文件。
    │   ├── util_helper.py   ## data模块的一些通用方法,比如组batch,padding数据等。
    │   └── vocabulary.py    ## 词表模块
    │
    ├── metrics              ## 预置评估函数                                                    
    │   ├── __init__.py
    │   ├── glue_eval.py 
    │   ├── metrics.py       ## 常用评估指标计算:acc、recall、precision、f1、ppl等
    │   ├── mrc_eval.py
    │   └── ...
    ├── models                   ## 预置网络主干部分,包括前向网络、优化器和metrics。预置网络持续更新中
    │   ├── __init__.py
    │   ├── model.py             ## 基类
    │   ├── cnn_classification.py  ## 非ERNIECNN分类网络
    │   ├── ernie_cnn_classification.py  ## 基于ERNIECNN分类网络
    │   ├── bow_matching_pairwise.py
    │   ├── crf_sequence_label.py
    │   ├── ernie_multil_task_language_model.py
    │   ├── generate_language_model.py
    │   └── ...
    ├── modules           ## 子网络部分,一些公用的网络片段,如语义表示等
    │   ├── __init__.py
    │   ├── ernie.py
    │   ├── token_embedding    ## 语义表示部分
    │   │   ├── __init__.py
    │   │   ├── base_token_embedding.py
    │   │   ├── custom_fluid_embedding.py
    │   │   ├── custom_token_embedding.py
    │   │   └── ernie_embedding.py
    │   └── transformer_encoder.py
    ├── inference
    │   ├── __init__.py
    │   └── inference.py
    ├── training               ## 训练主体部分,封装program、load、save等过程
    │   ├── __init__.py
    │   ├── custom_trainer.py  ## 能够覆盖大部分训练和评估的通用流程,如果对自定义训练评估要求不高,可以直接继承该类
    │   ├── mrc_trainer.py         ## 针对阅读理解任务的训练流程   
    │   └── trainer_config.py      ## 训练流程相关参数
    └── utils                      ## 辅助工具类
        ├── __init__.py
        ├── args.py 
        ├── init.py
        ├── log.py
        ├── multi_process_eval.py
        ├── params.py
        ├── stream.py
        ├── util_helper.py
        └── ...
        

tasks目录

  • tasks目录为各任务入口,其结构及其说明如下所示:
├── __init__.py                            
├── text_classification                                        ## 文本分类任务
├── text_matching                                              ## 文本匹配任务
├── sequence_labeling                                          ## 序列标注任务
├── mrc                                                        ## 阅读理解
└── model_files                                                ## 预训练模型相关文件
     ├── config                                                ## 各模型参数配置                   
     │   ├── ernie_2.0_base_ch_config.json
     │   └── ernie_2.0_large_ch_config.json
     ├── dict                                                  ## 各模型词典
     │   ├── vocab_ernie_2.0_base_ch.txt
     │   └── vocab_ernie_2.0_large_ch.txt
     ├── download_ernie_2.0_base_ch.sh                         
     └── download_ernie_2.0_large_ch.sh     
上一篇
1.30s上手文心
下一篇
3.环境安装与配置