模型训练及推理
ner_s2s 是基于tensorflow的NER(命名实体识别)训练、推理模型。代码github链接ner_s2s
ner_s2s项目文件
data文件夹用来存放数据集,其中包括训练集(train.conllx)、测试集(test.conllx)、实体(entity.txt)、字典(unicode_char_list.txt)等。
docker文件夹用来制作项目的docker镜像,以便于后面的训练部署,其中nightly是测试版,stable是稳定版,都包含制作了两个镜像:trainer是训练镜像,server是服务镜像。
tests文件夹是pytest测试脚本,对项目的部分脚本进行测试验证。
ner_s2s文件夹是项目具体的执行代码块,程序的执行入口有两个:
基于tensorflow的estimator框架--ner_estimator文件夹下的estimator_run文件;
基于tensorflow的keras框架--ner_keras文件夹下的keras_run文件。二者都可以执行项目文件的训练任务。
configure.yaml 是项目文件的超参数配置。
Makefile 是项目文件部分功能执行的命令集,比如docker打包生成的镜像文件命令等。
configure.yaml
其中:
Data source 部分指定了项目文件的数据(data)的相对路径:包括训练集、测试集、实体、字典等,其中warm_start_dir指定了checkpoint需要继续训练的文件路径;
model configure 部分指定了一些常用模型的超参数配置(包括estimator与keras模式),例如batch_size,epochs,learning_rate等
Data output 部分指定了模型生成的多种保存格式的相对路径,包括pb,h5等,其中deliverable_model对模型进行了前置,后置处理,推理、解码进行了封装
安装 ner_s2s 项目环境
在conda环境中新建python=3.6版本,名为ner_s2s的conda环境:
bash
conda create --name ner_s2s python=3.6
安装 ner_s2s 项目环境依赖:
bash
pip install -U ner_s2s
安装 tensorflow-gpu 环境版本(如有nvidia gpu芯片)
这里需要说明的是,通过pip install -U ner_s2s安装所需的依赖在服务器上的conda环境中,
是无法直接使用gpu训练模型的,需要在conda环境中安装 nvidia 相关的 cudnn 驱动;
所以需要在 conda 环境中多安装一次 gpu 驱动:
bash
# 使用中科大conda加速镜像
conda config –add channels https://mirrors.ustc.edu.cn/anaconda/pkgs/free
conda config –set show_channel_urls yes
# 通过conda安装tensorflow-gpu版本
conda install tensorflow-gpu==1.15
怎样查看 conda 环境是否可以使用gpu加速?三步:
bash
python 进入命令行模式
import tensorfow as tf 导入tensorflow
tf.test.is_gpu_available() 如果显示 True 则大功告成
ner_s2s 训练及推理命令
ner_s2s 训练(通过项目代码)
cpu (没有GPU加速)
bash
# estimator 模式
python -m ner_s2s.ner_estimator.estimator_run
# keras 模式
python -m ner_s2s.ner_keras.keras_run
gpu 指定显卡运行(针对多显卡)
bash
# estimator 模式
CUDA_VISIBLE_DEVICES=0 python -m ner_s2s.ner_estimator.estimator_run
# keras 模式
CUDA_VISIBLE_DEVICES=1 python -m ner_s2s.ner_keras.keras_run
ner_s2s 推理(通过项目代码)
推理项目代码执行入口在 ner_s2s/server/http.py 文件
run service
bash
python -m ner_s2s.server.http /path/to