指南 3个标注团队操作手册:提升标注速度与质量

编写您自己的机器学习后端

使用Label Studio ML后端将Label Studio与机器学习模型集成。Label Studio ML后端是一个SDK,可用于封装您的机器学习模型代码并将其转换为Web服务器。该机器学习服务器使用uWSGIsupervisord,并通过RQ处理后台训练任务。

按照以下步骤使用Label Studio ML SDK封装自定义机器学习模型代码,或查看我们的示例ML后端库,与流行的机器学习框架和工具(如Huggingface的TransformersOpenAILangchain等)集成。

有关使用Label Studio示例后端的信息,请参阅设置示例ML后端

企业

Label Studio Enterprise 提供了一套开箱即用的LLM辅助标注解决方案。您只需连接我们支持的模型之一即可开始使用。更多信息,请参阅Prompts

如需视频教程,请参阅以下内容:

1. 安装ML后端仓库

从仓库下载并安装 label-studio-ml-backend

git clone https://github.com/HumanSignal/label-studio-ml-backend.git
cd label-studio-ml-backend/
pip install -e .

2. 创建一个空的机器学习后端

label-studio-ml create my_ml_backend

这将创建以下目录结构,您可以修改它来实现自己的推理逻辑:

my_ml_backend/
├── Dockerfile
├── .dockerignore
├── docker-compose.yml
├── model.py
├── _wsgi.py
├── README.md
├── requirements-base.txt
├── requirements-test.txt
├── requirements.txt
└── test_api.py

位置:

  • Dockerfile, docker-compose.yml.dockerignore 用于通过 Docker 运行 ML 后端。
  • model.py 是主文件,您可以在其中实现自己的训练和推理逻辑。
  • _wsgi.py 是一个辅助文件,用于通过Docker运行ML后端(您无需修改此文件)。
  • README.md 必须包含如何运行ML后端的说明。
  • requirements.txt 是存放Python依赖项的文件。
  • requirements_base.txtrequirements_test.txt 是基础依赖项(您无需修改此部分)
  • test_api.py 是存放模型测试文件的地方

3. 实现预测逻辑

在您的模型目录中,找到model.py文件(例如:my_ml_backend/model.py)。

model.py 文件包含一个继承自 LabelStudioMLBase 的类声明。该类为 Label Studio 用于与 ML 后端通信的 API 方法提供了封装。您可以重写这些方法来实现自己的逻辑:

def predict(self, tasks, context, **kwargs):
    """Make predictions for the tasks."""
    return predictions

predict 方法用于对任务进行预测。它使用以下内容:

一旦你实现了predict方法,就可以在Label Studio中看到来自连接的机器学习后端的预测结果。

支持在您的ML后端中进行交互式预标注

如果希望在机器学习后端支持交互式预标注功能,可以使用predict()方法编写推理调用。关于文本标注项目中实现此功能的示例,请参阅此子字符串匹配代码示例

完成以下步骤:

  1. 按照上述方式使用predict()方法定义推理调用。predict()方法接收任务数据和上下文数据:
  • tasks 参数包含有关待预标注任务的详细信息。参见 Label Studio tasks in JSON format

  • context参数包含在Label Studio中执行的标注操作详情,例如以Label Studio标注结果格式发送的高亮文本字符串。

    context 具有以下属性。

    • annotation_id: 标注ID。
    • draft_id: 草稿标注ID。
    • user_id: 用户ID。
    • result: 这是标注结果,但包含一个用户可修改的is_positive: true标志。例如,通过按住Alt键并使用关键点在用户界面中与图像交互。
  1. 根据任务和上下文数据,利用从Label Studio接收的数据构建预测。
  2. 返回一个符合Label Studio预测格式的结果,该格式会根据执行的标注类型而变化。

有关如何在NER标注项目中执行此操作的更多详细信息,请参考上面链接的代码示例。

有关启用预标注的更多信息,请参阅交互式预标注

4. 实现训练逻辑(可选)

你也可以实现fit方法来训练你的模型。fit方法通常用于在标注数据上训练模型,尽管它也可以用于任何需要数据持久化的任意操作(例如,将标注数据存储到数据库、保存模型权重、保留LLM提示历史记录等)。

默认情况下,在Label Studio中执行任何数据操作(如创建新任务或更新标注)时,都会调用fit方法。您可以通过Webhooks来修改此行为。

要实现fit方法,您需要在model.py文件中重写fit方法:

def fit(self, event, data, **kwargs):
    """Train the model on the labeled data."""
    old_model = self.get('old_model')
    # write your logic to update the model
    self.set('new_model', new_model)

包含:

  • event: 事件类型。可以是 'ANNOTATION_CREATED', 'ANNOTATION_UPDATED' 等。
  • data: 从事件接收到的有效载荷(参见Webhook事件参考)。

此外,还有两个辅助方法可用于从ML后端存储和检索数据:

  • self.set(key, value) - 在ML后端存储数据
  • self.get(key) - 从ML后端检索数据

这两种方法都可以在机器学习后端代码的其他地方使用,例如在predict方法中获取新的模型权重。

通过Webhooks触发训练

从Label Studio 1.4.1版本开始,当您向项目添加机器学习后端时,Label Studio会创建一个指向该后端的webhook,以便在每次创建或更新标注时发送事件通知。

默认情况下,webhook事件的有效负载不包含标注本身。您可以通过以下方式获取标注:修改Label Studio发送的webhook事件以发送完整负载,或使用Label Studio API通过按ID获取标注端点、使用SDK按ID获取任务方法,或从您设置的存储标注的目标存储中检索。

查看标注webhook事件参考获取关于webhook事件的更多详细信息。

其他方法和参数

LabelStudioMLBase 类中还提供了其他方法和参数:

  • self.label_interface - 返回Label Studio标签界面对象,该对象包含标注任务的所有相关信息。
  • self.model_version - 返回当前模型版本。

4. 确保机器学习后端能够访问Label Studio数据

如果您的数据存储在云端、本地目录或已导入Label Studio,您需要设置LABEL_STUDIO_URLLABEL_STUDIO_API_KEY环境变量。

更多信息,请参阅允许机器学习后端访问Label Studio数据

5. 运行ML后端服务器

使用Docker Compose运行:

docker-compose up

ML后端服务器地址为http://localhost:9090。当将ML后端连接到Label Studio时可以使用该URL。

备注

localhost 是一个特殊的域名,它会直接回环到您的本地环境。在Docker托管的容器实例中,这个域名会回环到容器本身,而不是托管容器的主机。Docker提供了一个特殊域名作为解决方案:docker.host.internal。如果您在Docker内部署Label Studio和ML后端服务,可以尝试使用该域名替代localhost。(http://host.docker.internal:9090

不使用Docker运行

要在不使用Docker的情况下运行(例如出于调试目的),可以使用以下命令:

pip install -r my_ml_backend
label-studio-ml start my_ml_backend

修改主机和端口

要修改主机和端口,请使用以下命令行参数:

label-studio-ml start my_ml_backend -p 9091 --host 0.0.0.0

测试您的机器学习后端

修改my_ml_backend/test_api.py文件以确保您的机器学习后端按预期工作。

6. 将机器学习后端连接到Label Studio

您可以通过API或设置 > 模型进行操作。更多详情请参阅将模型连接到Label Studio