设置数据库
Label Studio 使用数据库来存储项目数据和配置信息。
标注性能
对于包含数万条标注任务的项目,SQLite数据库可能表现良好,只要您不打算在数据管理器中使用复杂过滤器或其他复杂的多用户流程。如果您需要标注数百万条任务,或预计会有大量并发用户,或计划处理实际项目,请使用PostgreSQL数据库。更多信息请参阅安装和升级Label Studio。
例如,如果在执行标注时导入数据,标注任务可能需要超过10秒才能加载,标注操作也可能需要超过10秒才能完成。如果您需要标注超过10万个任务且有5个或更多并发用户,请考虑在Label Studio中使用PostgreSQL或其他数据库。
SQLite 数据库
Label Studio 默认使用 SQLite 数据库。您无需进行任何配置。Label Studio 将所有数据存储在管理员用户指定目录的单个文件中。当您启动 Label Studio后,所使用的目录会在终端中显示。
PostgreSQL 数据库
您也可以将任务和标注结果存储在PostgreSQL数据库中,而非默认的SQLite数据库。如果您计划频繁导入新的标注任务,或打算跨项目标注数十万甚至更多任务时,推荐使用此方案。
启动时创建连接
运行以下命令以启动Label Studio,配置与PostgreSQL数据库的连接,扫描现有任务并将其加载到应用程序中,以便为特定项目进行标注。
label-studio start my_project --init -db postgresql
您必须设置以下环境变量以将Label Studio连接到PostgreSQL:
DJANGO_DB=default
POSTGRE_NAME=postgres
POSTGRE_USER=postgres
POSTGRE_PASSWORD=
POSTGRE_PORT=5432
POSTGRE_HOST=db
使用Docker Compose创建连接
当你使用Docker Compose启动Label Studio时,系统会使用PostgreSQL数据库进行启动:
docker-compose up -d
Minio 对象存储
MinIO 是一个兼容 Amazon S3 的对象存储解决方案。您可以使用 MinIO 来存储标注任务。
启动容器
对于本地开发,您可以托管一个本地MinIO服务器来更贴近地模拟基于S3的生产环境。 在Label Studio仓库中提供了此功能的示例docker-compose文件。
要在Label Studio实例旁边运行MinIO,请使用以下命令:
# Add sudo on Linux if you are not a member of the docker group
docker compose -f docker-compose.yml -f docker-compose.minio.yml up -d
MinIO服务器可通过http://localhost:9000访问。
要配置MinIO设置,请创建.env
文件。请记得覆盖默认凭据。
MINIO_ROOT_USER=minio_admin_do_not_use_in_production
MINIO_ROOT_PASSWORD=minio_admin_do_not_use_in_production
# To automatically select the right compose file for minio you can add on of the following lines:
# Windows
COMPOSE_FILE=docker-compose.yml;docker-compose.minio.yml
# Linux/Mac
COMPOSE_FILE=docker-compose.yml:docker-compose.minio.yml
# To use a specific minio version you can set the following env var
# MINIO_VERSION=RELEASE.2025-04-22T22-12-26Z
将Label Studio连接到本地MinIO
如果您没有静态IP地址,请在hosts文件中创建一个条目,以便Label Studio容器和您的浏览器都能通过相同的主机名找到MinIO。
以下条目将所有请求重定向到MinIO至您的本地系统:
127.0.0.1 minio
在Windows系统中,您可以在C:\Windows\System32\drivers\etc\hosts
找到hosts文件。
在Linux系统中,您可以在/etc/hosts
找到hosts文件。
在macOS系统中,您可以在/private/etc/hosts
找到hosts文件。
修改hosts文件后,您可以通过浏览器在http://minio:9000连接到您的MinIO服务器。
移除MinIO数据
您可以通过删除容器及关联卷来卸载MinIO安装。 此操作具有破坏性,将清除MinIO中存储的所有数据。
docker-compose -f docker-compose.minio.yml down --volumes
数据持久化
如果您使用的是Docker容器、Heroku或其他云服务提供商,可能希望在关闭Label Studio后数据仍能保留。您可以导出数据以保存标注任务数据和注释,但要保留Label Studio的状态以及上传用于标注的文件等资源,需要设置数据持久化。
使用Docker持久化数据
在您的机器上挂载Docker卷,以便在终止运行Label Studio的Docker容器后,保留内部SQLite数据库和您上传到Label Studio的资源。
如果从命令行启动Docker容器,请使用卷来持久化数据。有关详情请参阅Docker文档中的使用卷。例如,将Docker命令中现有的卷标志替换为您指定的卷:
docker run -it -p 8080:8080 -v <yourvolume>:/label-studio/data heartexlabs/label-studio:latest
重要
由于这是一个非根容器,挂载的文件和目录必须具有UID 1001
的适当权限。
如果您使用Docker Compose配合Label Studio仓库中包含的配置,可以在docker-compose.yml
文件中为Label Studio设置Docker卷:
version: "3.3"
services:
label_studio:
image: heartexlabs/label-studio:latest
container_name: label_studio
ports:
- 8080:8080
volumes:
- ./mydata:/label-studio/data
volumes:
mydata:
重要
由于这是一个非根容器,挂载的文件和目录必须具有UID 1001
的适当权限。
有关在Docker Compose中指定卷的更多信息,请参阅Docker Compose文件文档中的卷部分。
使用云服务提供商持久化数据
托管一个您自行管理的PostgreSQL服务器,并通过Label Studio设置PostgreSQL环境变量,以持久化存储来自云服务提供商(如Heroku、亚马逊网络服务、谷歌云服务或微软Azure)的数据。