教程:使用 Label Studio 的 machine learning backend 进行辅助标注和训练
本教程在 基于 UIE 的命名实体识别 的基础上,进一步通过集成 Label Studio 的 Machine Learning Backend 实现交互式预注释和模型训练等功能。
环境准备
-
在 OpenBayes 启动一个「模型训练」的容器,环境选择
paddlepaddle-2.3
资源选择vgpu
或其他 GPU 容器 -
在 Jupyter 中打开一个 Terminal 窗口,然后执行命令
openbayes-label-studio
启动label-studio
在浏览器中打开红框中的链接,注册账户并登录
-
打开另外一个 Terminal 窗口执行如下命令,安装
label_studio_ml
pip install label_studio_ml
pip uninstall attr
Machine Learning Backend 编写
完整的 Machine Learning Backend 见 my_ml_backend.py
文件。更多有关自定义机器学习后端编写的内容可参考 Write your own ML backend。
简单来讲,my_ml_backend.py
内主要包含一个继承自 LabelStudioMLBase
的类,其内容可以分为以下三个主要部分:
__init__
方法,包含模型的加载和基本配置的初始化predict
方法,用于为标注数据生成新的预测结果,其关键参数tasks
就是 label studio 传递的原始数据fit
方法,用于模型的训练,当点击页面上的Train
按钮时,会调用此方法(具体的位置在下文会提到),其关键参数annotations
就是 label studio 传递的已经标注了的数据
__init__
初始化方法
在 __init__
方法中定义和初始化需要的变量。LabelStudioMLBase
类提供了以下几个可供使用的特殊变量:
- self.label_config: 原始标签配置。
- self.parsed_label_config: 为项目提供结构化的 Label Studio 标签配置。
- self.train_output: 包含之前模型训练运行的结果,与训练调用部分中定义的
fit()
方法的输出相同。
如本教程的例子中,标签配置为:
<View>
<Labels name="label" toName="text">
<Label value="地名" background="#FFA39E"/>
<Label value="人名" background="#D4380D"/>
<Label value="组织" background="#FFC069"/>
<Label value="时间" background="#AD8B00"/>
<Label value="产品" background="#D3F261"/>
<Label value="价格" background="#389E0D"/>
<Label value="天气" background="#5CDBD3"/>
</Labels>
<Text name="text" value="$text"/>
</View>
相对应的 parsed_label_config
如下所示:
{
'label': {
'type': 'Labels',
'to_name': ['text'],
'inputs': [{
'type': 'Text',
'value': 'text'
}],
'labels': ['地名', '人名', '组织', '