ARTICLE DETAIL

资讯详情

深耕网站建设、视觉设计与SEO优化的一线实战洞察。

Label Studio 云存储点击 Sync 后数据不更新怎么排查?

Label Studio 云存储点击 Sync 后数据不更新怎么排查? Label Studio 云存储点击 Sync 后数据不更新怎么排查【免费下载链接】label-studioLabel Studio is a multi-type data labeling and annotation tool with standardized output format项目地址: https://gitcode.com/GitHub_Trending/la/label-studio在 Label Studio 项目中配置了 Source StorageAmazon S3、Google Cloud Storage 或 Microsoft Azure Blob Storage后往 bucket 里上传了新文件点击Sync按钮Data Manager 里却一直没有新任务或者数据看起来不更新。这种情况在 Label Studio 官方排查文档中对应Clicking Sync does not update my data一节见 Troubleshooting 文档本文按该文档给出的路径逐项排查。先明确一个前提Sync 过程可能不会立刻启动因为它基于内部 job scheduler 调度。所以点击 Sync 后应等待一段时间再开始下面的检查。本文针对的是Source storage从云端导入任务场景如果你说的是标注结果没有写回目标 bucket那属于 Target storage 的机制本文末尾会做一句边界说明。先弄清 Sync 实际做了什么排查之前需要知道 Source Storage 的两个机制来自 云存储集成文档否则很容易误判Label Studio 不会自动同步 Source storage 的数据。上传新文件后必须通过 UI 点击 Sync或使用 API把新任务加入项目无需重启服务。Sync 是单向的Source storage 只能从 bucket 对象创建任务这一个方向工作在 bucket 侧改动内容不会自动保证 Label Studio 侧的结果一致。官方建议每个 Label Studio 项目使用独立的 bucket 文件夹。Import method 决定了同步行为设为Files时Label Studio 不导入 bucket 中的数据而是为对象创建引用URI 链接如s3://bucket/1.jpg打开标注界面时才解析为 presignedhttpsURL设为Tasks时bucket 中的 JSON/JSONL 文件被假定为不可变——想推入文件的新状态只能以新文件名上传或删掉与该文件关联的所有任务后重新 Sync。如果你修改的是同一文件的内容且 Import method 为 Tasks数据不更新可能是设计如此而不是故障。第一步确认凭证与权限按官方文档排查的第一项是凭证是否正确对应 Troubleshooting 文档中的 CORS errors 与 403 errors 两节。打开浏览器控制台看错误现象CORS 错误如果没配置 CORS你无法在 Label Studio 中查看云存储数据——可能看到的是一个数据链接而不是预览或者控制台里直接报 CORS error。这属于 bucket 侧的 CORS 配置问题需要按所用云厂商的 CORS 文档为 bucket 开启跨域。403 错误控制台出现 403 时说明凭证配置不对。Amazon S3确认创建存储连接时使用的 Access Key ID、Secret Access Key、Session ID 仍然有效临时凭证会过期并确认 region 与 bucket 一致必要时修改源存储设置或~/.aws/config中的 region。文档给出的示例us-east-2仅为文档示例值需替换为你 bucket 的 region[default] regionus-east-2 # change to the region of your bucketGoogle Cloud Storage账户必须具有Service Account Token Creator角色、Storage Object Viewer角色以及storage.buckets.get访问权限若通过 service account 授权访问 GCP还要确认该 service account 已激活。如果 DEBUG 日志中出现了形如 service account 名labelstudio的报错可以用label-studio start命令的--log-level DEBUG标志开启详细日志来定位。另外核对 Source storage 的权限档位来自 storage 文档 的Source storage permissionsImport method后端需要的权限Files只需 LIST 权限后端不下载任何数据Tasks需要 GET 权限用于读取 JSON 文件并转换为任务用户浏览器在标注界面加载媒体时还会对云存储发起 HEAD 和 GET 请求。第二步Edit 存储连接检查 Filter 正则与 Import method进入项目的云存储设置页在对应的云连接旁点击Edit检查以下两项这是官方排查流程的核心步骤File Filter Regex在 S3 存储配置文档 的字段表中写作File Name Filter是否已设置且正确。这里有两个容易踩的坑没有指定 filter 时所有找到的对象都会被跳过——这正好表现为点了 Sync 却一个任务都没有Filter 必须是合法的正则表达式不是通配符.*是合法的匹配所有对象*.不合法。Import method是否与存储内容匹配处理图片、音频、文本等二进制文件时应设为FilesLabel Studio 会为每个文件自动创建带 URI 链接的任务bucket 中存的是 Label Studio 格式的 JSON/JSONL 任务或 Parquet 文件时才设为Tasks。修改完不要直接点 Sync在配置页先点Load preview确认预览里列出的正是你想同步的对象再点Save Sync立即同步只点Save则稍后手动同步。预览能直接暴露filter 把对象全部过滤掉这类问题。第三步检查 rq worker 是否故障即使凭证和 filter 都正确同步任务由后台 rq worker 执行worker 故障时 Sync 会点了没反应。官方文档给了两种检查方式通过导出验证在 Data manager 中点击Export创建一个新 snapshot 并下载 JSON 文件。如果看到 Error大概率是 rq worker 出了问题。通过 django-rq 页面以 superuser 登录访问/django-rq页面查看其中的workers列。如果值为0或该列为空可能表示 worker 故障。特殊情况bucket 里有 JSON 文件Data Manager 却是空的Troubleshooting 文档中单列了JSON files from a cloud storage are not synced and the Data Manager is empty一节排查顺序是编辑存储设置并重新同步。如果 Data Manager 里能看到任务把Import method改为Tasks。如果仍然看不到任务说明 bucket 只有 LIST 权限而没有 GET 权限只有 LIST 时Label Studio 只能扫描对象是否存在无法读取内容有了 GET 权限才能读取数据并正确解析出 JSON 任务。如何确认已经恢复在存储配置页点Load preview能看到预期对象列表点击Sync或Save Sync后Data Manager 中出现新任务使用Files导入方法时打开标注界面确认媒体能通过 presigned URL 正常加载这一步同时会暴露 bucket 侧的 CORS 问题。边界与限制Sync 与外部 bucket 之间是单向的Source storage 只负责从 bucket 建任务Target storage 只负责把标注推送到输出 bucketbucket 侧的改动不会自动同步回 Label Studio。Tasks导入方法假设 bucket 文件不可变要更新某个文件的内容只能以新文件名重新上传或删除关联任务后重新 Sync。如果你排查的对象是 Target storage 的Sync按钮标注结果未写入目标 bucket其机制不同该按钮会把所有标注从头重新保存一遍且存储凭证需要 PUT 权限DELETE 可选官方排查文档未对这一路径给出更细的排错步骤不在本文范围内。更多云存储配置细节可参考 云存储总览、Amazon S3、Google Cloud Storage 与 Azure Blob Storage 文档。【免费下载链接】label-studioLabel Studio is a multi-type data labeling and annotation tool with standardized output format项目地址: https://gitcode.com/GitHub_Trending/la/label-studio创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表