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

30s上手使用

30s上手文心

文心的核心操作是训练模型与预测模型,本文档以NLP应用最广的文本分类任务进行介绍。

环境安装

环境安装与配置

进入目录

首先进入文本分类的示例代码目录./wenxin_appzoo/wenxin_appzoo/tasks/text_classification/ 。

cd ./wenxin_appzoo/wenxin_appzoo/tasks/text_classification/

准备训练数据

  • 文心中模型的训练、预测、评估等都是通过Python脚本来运行的,需要的参数都是配置在json文件中。具体原理详见文心中的注册机制与Json配置。
  • 我们以BOW中文文本分类的模型训练进行介绍,其预置json文件为./examples/目录下的cls_bow_ch.json。文本分类的预置示例数据在json的”dataset_reader”->”train_reader”->”config”->”data_path”进行配置,默认路径为./data/train_data。模型训练时,将会把data_path路径下的所有数据集文件进行读取和训练使用。 在训练前,请确认任务对应的数据reader的数据格式,可查看每个任务中提供的示例数据(如文本分类任务:wenxin_appzoo/tasks/text_classification/data)
{"dataset_reader":{"train_reader":{"config":{"data_path":"./data/train_data"}}}}

使用BOW模型进行训练

  • 将数据集存放妥当,并配置好cls_bow_ch.json,我们就可以运行模型训练的命令。

    • 其中,单卡指令为python run_trainer.py,如下所示,使用基于BOW的中文文本分类模型在训练集上进行本地模型训练。
# BOW 中文文本分类模型
# 基于json实现预置网络训练。其调用了配置文件./examples/cls_bow_ch.json
python run_trainer.py --param_path ./examples/cls_bow_ch.json

多卡指令为fleetrun --gpus=x,y run_trainer.py,如下所示,使用基于BOW的中文文本分类模型在训练集上进行本地模型训练。

export  CUDA_VISIBLE_DEVICES=1,2
fleetrun --gpus=1,2 run_trainer.py --param_path ./examples/cls_bow_ch.json

更多可参考百度飞桨多机多卡训练FleetX说明文档

使用ERNIE预训练模型进行训练

我们使用ERNIE3.0作为预训练模型,准备工作包括:下载模型、配置json,和启动训练

  • ERNIE3.0的下载与配置
# ernie_3.0 模型下载
# 进入models_hub目录
cd wenxin_appzoo/models_hub
# 运行下载脚本
sh download_ernie_3.0_base_ch.sh
# 回到文本分类目录
cd ../text_classification/
  • 配置

    • json配置方法见前面的介绍
  • 启动训练
## 选择ernie相关json即可实现
python run_trainer.py --param_path ./examples/cls_ernie_fc_ch.json

使用单卡训练模型

# 选择ernie相关json即可实现
python run_trainer.py --param_path ./examples/cls_ernie_fc_ch.json

使用多卡训练模型

# 选择ernie相关json即可实现
# 其中,--gpus参数指定的显卡号需要是$CUDA_VISIBLE_DEVICES的子集
fleetrun --gpus=0,1 run_trainer.py --param_path ./examples/cls_ernie_fc_ch.json
  • 训练运行的日志会自动保存在./log/test.log文件中。
  • 训练中以及结束后产生的模型文件会默认保存在./output/cls_cnn_ch/目录下,其中save_inference_model/文件夹会保存用于预测的模型文件,save_checkpoint/ 文件夹会保存用于热启动的模型文件。
  • 注:示例数据仅作为格式演示使用,在真正训练模型时请替换为真实数据。

常见问题

  • 描述:找不到 fleetrun 命令
  • 问题解决方案:指定 fleetrun 位置(提供的镜像里面这个位置有): /usr/local/python37/bin/fleetrun --gpus=6,7 run_trainer.py --param_path ./examples/xxx.json
  • 详细步骤

步骤一:

#1.使用 hostname -i 等命令分别得到各个机器的 ip 
#2. 修改 json PADDLE_IS_FLEET 值为 1

"trainer": {
"type": "CustomDynamicTrainer",
"PADDLE_PLACE_TYPE": "gpu",
"PADDLE_IS_FLEET": 1,
"train_log_step": 10,
"use_amp": true,
"is_eval_dev": 0,
"is_eval_test": 1,
"eval_step": 100,
"save_model_step": 200,
...
}

步骤二:

设置环境变量指定可见显卡

export CUDA_VISIBLE_DEVICES=0,1,2,3 1. 分别在各台机器上运行如下命令:

fleetrun --ips "ip1,ip2" --gpus 0,1,2,3 run_trainer.py --param_path ./examples/some.json

其中,--ips 参数传入各个机器的 ip,ip 之间用,分隔;--gpus 参数传入每台 机器实际使用的显卡号,要保证是$CUDA_VISIBLE_DEVICES 的子集。 百亿模型预测: 参考使用文档即可(目前只支持单机单卡预测,32G 单卡)

配置预测数据与模型路径

我们以BOW中文文本分类的模型训练进行介绍,其预置预测json文件为./examples/目录下的cls_bow_ch_infer.json。

  • 文本分类的预置预测示例数据路径在json的”dataset_reader”->”predict__reader”->”config”->”data_path”进行配置,默认路径为./data/predict_data。
  • 预制模型在”inference”->”inference_model_path”进行配置,此处配置前面训练保存好在 save_inference_model/ 路径下的预测模型。
{
"dataset_reader":{"train_reader":{"config":{"data_path":"./data/predict_data"}}},
"inference":{"inference_model_path":"./output/cls_bow_ch/save_inference_model/inference_step_251"}
}

启动预测

  • 运行run_infer.py ,选择对应的参数配置文件即可。如下所示:
python run_infer.py --param_path ./examples/cls_bow_ch_infer.json
  • 预测过程中的日志自动保存在./output/predict_result.txt文件中。
  • 如果使用ERNIE预训练模型则需要修改为ernie对应的配置文件,请参考:./examples/cls_ernie_fc_ch_infer.json 。
上一篇
环境安装与配置
下一篇
目录结构