synapse-sdk 1.0.0a35__py3-none-any.whl → 2025.11.7__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.

Potentially problematic release.


This version of synapse-sdk might be problematic. Click here for more details.

Files changed (307) hide show
  1. synapse_sdk/__init__.py +24 -0
  2. synapse_sdk/cli/__init__.py +308 -5
  3. synapse_sdk/cli/alias/utils.py +1 -1
  4. synapse_sdk/cli/code_server.py +687 -0
  5. synapse_sdk/cli/config.py +440 -0
  6. synapse_sdk/cli/devtools.py +90 -0
  7. synapse_sdk/cli/plugin/publish.py +23 -15
  8. synapse_sdk/clients/agent/__init__.py +9 -3
  9. synapse_sdk/clients/agent/container.py +133 -0
  10. synapse_sdk/clients/agent/core.py +19 -0
  11. synapse_sdk/clients/agent/ray.py +298 -9
  12. synapse_sdk/clients/backend/__init__.py +28 -12
  13. synapse_sdk/clients/backend/annotation.py +9 -1
  14. synapse_sdk/clients/backend/core.py +31 -4
  15. synapse_sdk/clients/backend/data_collection.py +186 -0
  16. synapse_sdk/clients/backend/hitl.py +1 -1
  17. synapse_sdk/clients/backend/integration.py +4 -3
  18. synapse_sdk/clients/backend/ml.py +1 -1
  19. synapse_sdk/clients/backend/models.py +35 -1
  20. synapse_sdk/clients/base.py +309 -36
  21. synapse_sdk/clients/ray/serve.py +2 -0
  22. synapse_sdk/devtools/__init__.py +0 -0
  23. synapse_sdk/devtools/config.py +94 -0
  24. synapse_sdk/devtools/docs/.gitignore +20 -0
  25. synapse_sdk/devtools/docs/README.md +41 -0
  26. synapse_sdk/devtools/docs/blog/2019-05-28-first-blog-post.md +12 -0
  27. synapse_sdk/devtools/docs/blog/2019-05-29-long-blog-post.md +44 -0
  28. synapse_sdk/devtools/docs/blog/2021-08-01-mdx-blog-post.mdx +24 -0
  29. synapse_sdk/devtools/docs/blog/2021-08-26-welcome/docusaurus-plushie-banner.jpeg +0 -0
  30. synapse_sdk/devtools/docs/blog/2021-08-26-welcome/index.md +29 -0
  31. synapse_sdk/devtools/docs/blog/authors.yml +25 -0
  32. synapse_sdk/devtools/docs/blog/tags.yml +19 -0
  33. synapse_sdk/devtools/docs/docs/api/clients/agent.md +43 -0
  34. synapse_sdk/devtools/docs/docs/api/clients/annotation-mixin.md +378 -0
  35. synapse_sdk/devtools/docs/docs/api/clients/backend.md +420 -0
  36. synapse_sdk/devtools/docs/docs/api/clients/base.md +257 -0
  37. synapse_sdk/devtools/docs/docs/api/clients/core-mixin.md +477 -0
  38. synapse_sdk/devtools/docs/docs/api/clients/data-collection-mixin.md +422 -0
  39. synapse_sdk/devtools/docs/docs/api/clients/hitl-mixin.md +554 -0
  40. synapse_sdk/devtools/docs/docs/api/clients/index.md +391 -0
  41. synapse_sdk/devtools/docs/docs/api/clients/integration-mixin.md +571 -0
  42. synapse_sdk/devtools/docs/docs/api/clients/ml-mixin.md +578 -0
  43. synapse_sdk/devtools/docs/docs/api/clients/ray.md +342 -0
  44. synapse_sdk/devtools/docs/docs/api/index.md +52 -0
  45. synapse_sdk/devtools/docs/docs/api/plugins/categories.md +43 -0
  46. synapse_sdk/devtools/docs/docs/api/plugins/models.md +114 -0
  47. synapse_sdk/devtools/docs/docs/api/plugins/utils.md +328 -0
  48. synapse_sdk/devtools/docs/docs/categories.md +0 -0
  49. synapse_sdk/devtools/docs/docs/cli-usage.md +280 -0
  50. synapse_sdk/devtools/docs/docs/concepts/index.md +38 -0
  51. synapse_sdk/devtools/docs/docs/configuration.md +83 -0
  52. synapse_sdk/devtools/docs/docs/contributing.md +306 -0
  53. synapse_sdk/devtools/docs/docs/examples/index.md +29 -0
  54. synapse_sdk/devtools/docs/docs/faq.md +179 -0
  55. synapse_sdk/devtools/docs/docs/features/converters/index.md +455 -0
  56. synapse_sdk/devtools/docs/docs/features/index.md +24 -0
  57. synapse_sdk/devtools/docs/docs/features/utils/file.md +415 -0
  58. synapse_sdk/devtools/docs/docs/features/utils/network.md +378 -0
  59. synapse_sdk/devtools/docs/docs/features/utils/storage.md +57 -0
  60. synapse_sdk/devtools/docs/docs/features/utils/types.md +51 -0
  61. synapse_sdk/devtools/docs/docs/installation.md +94 -0
  62. synapse_sdk/devtools/docs/docs/introduction.md +47 -0
  63. synapse_sdk/devtools/docs/docs/plugins/categories/neural-net-plugins/train-action-overview.md +814 -0
  64. synapse_sdk/devtools/docs/docs/plugins/categories/pre-annotation-plugins/pre-annotation-plugin-overview.md +198 -0
  65. synapse_sdk/devtools/docs/docs/plugins/categories/pre-annotation-plugins/to-task-action-development.md +1645 -0
  66. synapse_sdk/devtools/docs/docs/plugins/categories/pre-annotation-plugins/to-task-overview.md +717 -0
  67. synapse_sdk/devtools/docs/docs/plugins/categories/pre-annotation-plugins/to-task-template-development.md +1380 -0
  68. synapse_sdk/devtools/docs/docs/plugins/categories/upload-plugins/upload-plugin-action.md +948 -0
  69. synapse_sdk/devtools/docs/docs/plugins/categories/upload-plugins/upload-plugin-overview.md +544 -0
  70. synapse_sdk/devtools/docs/docs/plugins/categories/upload-plugins/upload-plugin-template.md +766 -0
  71. synapse_sdk/devtools/docs/docs/plugins/export-plugins.md +1092 -0
  72. synapse_sdk/devtools/docs/docs/plugins/plugins.md +852 -0
  73. synapse_sdk/devtools/docs/docs/quickstart.md +78 -0
  74. synapse_sdk/devtools/docs/docs/troubleshooting.md +519 -0
  75. synapse_sdk/devtools/docs/docs/tutorial-basics/_category_.json +8 -0
  76. synapse_sdk/devtools/docs/docs/tutorial-basics/congratulations.md +23 -0
  77. synapse_sdk/devtools/docs/docs/tutorial-basics/create-a-blog-post.md +34 -0
  78. synapse_sdk/devtools/docs/docs/tutorial-basics/create-a-document.md +57 -0
  79. synapse_sdk/devtools/docs/docs/tutorial-basics/create-a-page.md +43 -0
  80. synapse_sdk/devtools/docs/docs/tutorial-basics/deploy-your-site.md +31 -0
  81. synapse_sdk/devtools/docs/docs/tutorial-basics/markdown-features.mdx +152 -0
  82. synapse_sdk/devtools/docs/docs/tutorial-extras/_category_.json +7 -0
  83. synapse_sdk/devtools/docs/docs/tutorial-extras/img/docsVersionDropdown.png +0 -0
  84. synapse_sdk/devtools/docs/docs/tutorial-extras/img/localeDropdown.png +0 -0
  85. synapse_sdk/devtools/docs/docs/tutorial-extras/manage-docs-versions.md +55 -0
  86. synapse_sdk/devtools/docs/docs/tutorial-extras/translate-your-site.md +88 -0
  87. synapse_sdk/devtools/docs/docusaurus.config.ts +148 -0
  88. synapse_sdk/devtools/docs/i18n/ko/code.json +325 -0
  89. synapse_sdk/devtools/docs/i18n/ko/docusaurus-plugin-content-docs/current/api/clients/agent.md +43 -0
  90. synapse_sdk/devtools/docs/i18n/ko/docusaurus-plugin-content-docs/current/api/clients/annotation-mixin.md +289 -0
  91. synapse_sdk/devtools/docs/i18n/ko/docusaurus-plugin-content-docs/current/api/clients/backend.md +420 -0
  92. synapse_sdk/devtools/docs/i18n/ko/docusaurus-plugin-content-docs/current/api/clients/base.md +257 -0
  93. synapse_sdk/devtools/docs/i18n/ko/docusaurus-plugin-content-docs/current/api/clients/core-mixin.md +417 -0
  94. synapse_sdk/devtools/docs/i18n/ko/docusaurus-plugin-content-docs/current/api/clients/data-collection-mixin.md +356 -0
  95. synapse_sdk/devtools/docs/i18n/ko/docusaurus-plugin-content-docs/current/api/clients/hitl-mixin.md +192 -0
  96. synapse_sdk/devtools/docs/i18n/ko/docusaurus-plugin-content-docs/current/api/clients/index.md +391 -0
  97. synapse_sdk/devtools/docs/i18n/ko/docusaurus-plugin-content-docs/current/api/clients/integration-mixin.md +479 -0
  98. synapse_sdk/devtools/docs/i18n/ko/docusaurus-plugin-content-docs/current/api/clients/ml-mixin.md +284 -0
  99. synapse_sdk/devtools/docs/i18n/ko/docusaurus-plugin-content-docs/current/api/clients/ray.md +342 -0
  100. synapse_sdk/devtools/docs/i18n/ko/docusaurus-plugin-content-docs/current/api/index.md +52 -0
  101. synapse_sdk/devtools/docs/i18n/ko/docusaurus-plugin-content-docs/current/api/plugins/models.md +114 -0
  102. synapse_sdk/devtools/docs/i18n/ko/docusaurus-plugin-content-docs/current/categories.md +0 -0
  103. synapse_sdk/devtools/docs/i18n/ko/docusaurus-plugin-content-docs/current/cli-usage.md +280 -0
  104. synapse_sdk/devtools/docs/i18n/ko/docusaurus-plugin-content-docs/current/concepts/index.md +38 -0
  105. synapse_sdk/devtools/docs/i18n/ko/docusaurus-plugin-content-docs/current/configuration.md +83 -0
  106. synapse_sdk/devtools/docs/i18n/ko/docusaurus-plugin-content-docs/current/contributing.md +306 -0
  107. synapse_sdk/devtools/docs/i18n/ko/docusaurus-plugin-content-docs/current/examples/index.md +29 -0
  108. synapse_sdk/devtools/docs/i18n/ko/docusaurus-plugin-content-docs/current/faq.md +179 -0
  109. synapse_sdk/devtools/docs/i18n/ko/docusaurus-plugin-content-docs/current/features/converters/index.md +30 -0
  110. synapse_sdk/devtools/docs/i18n/ko/docusaurus-plugin-content-docs/current/features/index.md +24 -0
  111. synapse_sdk/devtools/docs/i18n/ko/docusaurus-plugin-content-docs/current/features/utils/file.md +415 -0
  112. synapse_sdk/devtools/docs/i18n/ko/docusaurus-plugin-content-docs/current/features/utils/network.md +378 -0
  113. synapse_sdk/devtools/docs/i18n/ko/docusaurus-plugin-content-docs/current/features/utils/storage.md +60 -0
  114. synapse_sdk/devtools/docs/i18n/ko/docusaurus-plugin-content-docs/current/features/utils/types.md +51 -0
  115. synapse_sdk/devtools/docs/i18n/ko/docusaurus-plugin-content-docs/current/installation.md +94 -0
  116. synapse_sdk/devtools/docs/i18n/ko/docusaurus-plugin-content-docs/current/introduction.md +47 -0
  117. synapse_sdk/devtools/docs/i18n/ko/docusaurus-plugin-content-docs/current/plugins/categories/neural-net-plugins/train-action-overview.md +815 -0
  118. synapse_sdk/devtools/docs/i18n/ko/docusaurus-plugin-content-docs/current/plugins/categories/pre-annotation-plugins/pre-annotation-plugin-overview.md +198 -0
  119. synapse_sdk/devtools/docs/i18n/ko/docusaurus-plugin-content-docs/current/plugins/categories/pre-annotation-plugins/to-task-action-development.md +1645 -0
  120. synapse_sdk/devtools/docs/i18n/ko/docusaurus-plugin-content-docs/current/plugins/categories/pre-annotation-plugins/to-task-overview.md +717 -0
  121. synapse_sdk/devtools/docs/i18n/ko/docusaurus-plugin-content-docs/current/plugins/categories/pre-annotation-plugins/to-task-template-development.md +1380 -0
  122. synapse_sdk/devtools/docs/i18n/ko/docusaurus-plugin-content-docs/current/plugins/categories/upload-plugins/upload-plugin-action.md +948 -0
  123. synapse_sdk/devtools/docs/i18n/ko/docusaurus-plugin-content-docs/current/plugins/categories/upload-plugins/upload-plugin-overview.md +544 -0
  124. synapse_sdk/devtools/docs/i18n/ko/docusaurus-plugin-content-docs/current/plugins/categories/upload-plugins/upload-plugin-template.md +766 -0
  125. synapse_sdk/devtools/docs/i18n/ko/docusaurus-plugin-content-docs/current/plugins/export-plugins.md +1092 -0
  126. synapse_sdk/devtools/docs/i18n/ko/docusaurus-plugin-content-docs/current/plugins/plugins.md +117 -0
  127. synapse_sdk/devtools/docs/i18n/ko/docusaurus-plugin-content-docs/current/quickstart.md +78 -0
  128. synapse_sdk/devtools/docs/i18n/ko/docusaurus-plugin-content-docs/current/troubleshooting.md +519 -0
  129. synapse_sdk/devtools/docs/i18n/ko/docusaurus-plugin-content-docs/current.json +34 -0
  130. synapse_sdk/devtools/docs/i18n/ko/docusaurus-theme-classic/footer.json +42 -0
  131. synapse_sdk/devtools/docs/i18n/ko/docusaurus-theme-classic/navbar.json +18 -0
  132. synapse_sdk/devtools/docs/package-lock.json +18784 -0
  133. synapse_sdk/devtools/docs/package.json +48 -0
  134. synapse_sdk/devtools/docs/sidebars.ts +122 -0
  135. synapse_sdk/devtools/docs/src/components/HomepageFeatures/index.tsx +71 -0
  136. synapse_sdk/devtools/docs/src/components/HomepageFeatures/styles.module.css +11 -0
  137. synapse_sdk/devtools/docs/src/css/custom.css +30 -0
  138. synapse_sdk/devtools/docs/src/pages/index.module.css +23 -0
  139. synapse_sdk/devtools/docs/src/pages/index.tsx +21 -0
  140. synapse_sdk/devtools/docs/src/pages/markdown-page.md +7 -0
  141. synapse_sdk/devtools/docs/static/.nojekyll +0 -0
  142. synapse_sdk/devtools/docs/static/img/docusaurus-social-card.jpg +0 -0
  143. synapse_sdk/devtools/docs/static/img/docusaurus.png +0 -0
  144. synapse_sdk/devtools/docs/static/img/favicon.ico +0 -0
  145. synapse_sdk/devtools/docs/static/img/logo.png +0 -0
  146. synapse_sdk/devtools/docs/static/img/undraw_docusaurus_mountain.svg +171 -0
  147. synapse_sdk/devtools/docs/static/img/undraw_docusaurus_react.svg +170 -0
  148. synapse_sdk/devtools/docs/static/img/undraw_docusaurus_tree.svg +40 -0
  149. synapse_sdk/devtools/docs/tsconfig.json +8 -0
  150. synapse_sdk/devtools/server.py +41 -0
  151. synapse_sdk/devtools/streamlit_app/__init__.py +5 -0
  152. synapse_sdk/devtools/streamlit_app/app.py +128 -0
  153. synapse_sdk/devtools/streamlit_app/services/__init__.py +11 -0
  154. synapse_sdk/devtools/streamlit_app/services/job_service.py +233 -0
  155. synapse_sdk/devtools/streamlit_app/services/plugin_service.py +236 -0
  156. synapse_sdk/devtools/streamlit_app/services/serve_service.py +95 -0
  157. synapse_sdk/devtools/streamlit_app/ui/__init__.py +15 -0
  158. synapse_sdk/devtools/streamlit_app/ui/config_tab.py +76 -0
  159. synapse_sdk/devtools/streamlit_app/ui/deployment_tab.py +66 -0
  160. synapse_sdk/devtools/streamlit_app/ui/http_tab.py +125 -0
  161. synapse_sdk/devtools/streamlit_app/ui/jobs_tab.py +573 -0
  162. synapse_sdk/devtools/streamlit_app/ui/serve_tab.py +346 -0
  163. synapse_sdk/devtools/streamlit_app/ui/status_bar.py +118 -0
  164. synapse_sdk/devtools/streamlit_app/utils/__init__.py +40 -0
  165. synapse_sdk/devtools/streamlit_app/utils/json_viewer.py +197 -0
  166. synapse_sdk/devtools/streamlit_app/utils/log_formatter.py +38 -0
  167. synapse_sdk/devtools/streamlit_app/utils/styles.py +241 -0
  168. synapse_sdk/devtools/streamlit_app/utils/ui_components.py +289 -0
  169. synapse_sdk/devtools/streamlit_app.py +10 -0
  170. synapse_sdk/loggers.py +65 -7
  171. synapse_sdk/plugins/README.md +1340 -0
  172. synapse_sdk/plugins/categories/base.py +73 -11
  173. synapse_sdk/plugins/categories/data_validation/actions/validation.py +72 -0
  174. synapse_sdk/plugins/categories/data_validation/templates/plugin/validation.py +33 -5
  175. synapse_sdk/plugins/categories/export/actions/__init__.py +3 -0
  176. synapse_sdk/plugins/categories/export/actions/export/__init__.py +28 -0
  177. synapse_sdk/plugins/categories/export/actions/export/action.py +165 -0
  178. synapse_sdk/plugins/categories/export/actions/export/enums.py +113 -0
  179. synapse_sdk/plugins/categories/export/actions/export/exceptions.py +53 -0
  180. synapse_sdk/plugins/categories/export/actions/export/models.py +74 -0
  181. synapse_sdk/plugins/categories/export/actions/export/run.py +195 -0
  182. synapse_sdk/plugins/categories/export/actions/{export.py → export/utils.py} +47 -82
  183. synapse_sdk/plugins/categories/export/templates/config.yaml +19 -1
  184. synapse_sdk/plugins/categories/export/templates/plugin/__init__.py +390 -0
  185. synapse_sdk/plugins/categories/export/templates/plugin/export.py +153 -129
  186. synapse_sdk/plugins/categories/neural_net/actions/deployment.py +9 -62
  187. synapse_sdk/plugins/categories/neural_net/actions/train.py +1062 -32
  188. synapse_sdk/plugins/categories/neural_net/actions/tune.py +534 -0
  189. synapse_sdk/plugins/categories/neural_net/templates/config.yaml +27 -5
  190. synapse_sdk/plugins/categories/neural_net/templates/plugin/inference.py +26 -10
  191. synapse_sdk/plugins/categories/pre_annotation/actions/__init__.py +4 -0
  192. synapse_sdk/plugins/categories/pre_annotation/actions/pre_annotation/__init__.py +3 -0
  193. synapse_sdk/plugins/categories/pre_annotation/actions/pre_annotation/action.py +10 -0
  194. synapse_sdk/plugins/categories/pre_annotation/actions/to_task/__init__.py +28 -0
  195. synapse_sdk/plugins/categories/pre_annotation/actions/to_task/action.py +145 -0
  196. synapse_sdk/plugins/categories/pre_annotation/actions/to_task/enums.py +269 -0
  197. synapse_sdk/plugins/categories/pre_annotation/actions/to_task/exceptions.py +14 -0
  198. synapse_sdk/plugins/categories/pre_annotation/actions/to_task/factory.py +76 -0
  199. synapse_sdk/plugins/categories/pre_annotation/actions/to_task/models.py +97 -0
  200. synapse_sdk/plugins/categories/pre_annotation/actions/to_task/orchestrator.py +250 -0
  201. synapse_sdk/plugins/categories/pre_annotation/actions/to_task/run.py +64 -0
  202. synapse_sdk/plugins/categories/pre_annotation/actions/to_task/strategies/__init__.py +17 -0
  203. synapse_sdk/plugins/categories/pre_annotation/actions/to_task/strategies/annotation.py +287 -0
  204. synapse_sdk/plugins/categories/pre_annotation/actions/to_task/strategies/base.py +170 -0
  205. synapse_sdk/plugins/categories/pre_annotation/actions/to_task/strategies/extraction.py +83 -0
  206. synapse_sdk/plugins/categories/pre_annotation/actions/to_task/strategies/metrics.py +87 -0
  207. synapse_sdk/plugins/categories/pre_annotation/actions/to_task/strategies/preprocessor.py +127 -0
  208. synapse_sdk/plugins/categories/pre_annotation/actions/to_task/strategies/validation.py +143 -0
  209. synapse_sdk/plugins/categories/pre_annotation/actions/to_task.py +966 -0
  210. synapse_sdk/plugins/categories/pre_annotation/templates/config.yaml +19 -0
  211. synapse_sdk/plugins/categories/pre_annotation/templates/plugin/to_task.py +40 -0
  212. synapse_sdk/plugins/categories/upload/actions/upload/__init__.py +19 -0
  213. synapse_sdk/plugins/categories/upload/actions/upload/action.py +232 -0
  214. synapse_sdk/plugins/categories/upload/actions/upload/context.py +185 -0
  215. synapse_sdk/plugins/categories/upload/actions/upload/enums.py +471 -0
  216. synapse_sdk/plugins/categories/upload/actions/upload/exceptions.py +36 -0
  217. synapse_sdk/plugins/categories/upload/actions/upload/factory.py +138 -0
  218. synapse_sdk/plugins/categories/upload/actions/upload/models.py +203 -0
  219. synapse_sdk/plugins/categories/upload/actions/upload/orchestrator.py +183 -0
  220. synapse_sdk/plugins/categories/upload/actions/upload/registry.py +113 -0
  221. synapse_sdk/plugins/categories/upload/actions/upload/run.py +179 -0
  222. synapse_sdk/plugins/categories/upload/actions/upload/steps/__init__.py +1 -0
  223. synapse_sdk/plugins/categories/upload/actions/upload/steps/base.py +107 -0
  224. synapse_sdk/plugins/categories/upload/actions/upload/steps/cleanup.py +62 -0
  225. synapse_sdk/plugins/categories/upload/actions/upload/steps/collection.py +63 -0
  226. synapse_sdk/plugins/categories/upload/actions/upload/steps/generate.py +84 -0
  227. synapse_sdk/plugins/categories/upload/actions/upload/steps/initialize.py +82 -0
  228. synapse_sdk/plugins/categories/upload/actions/upload/steps/metadata.py +235 -0
  229. synapse_sdk/plugins/categories/upload/actions/upload/steps/organize.py +203 -0
  230. synapse_sdk/plugins/categories/upload/actions/upload/steps/upload.py +97 -0
  231. synapse_sdk/plugins/categories/upload/actions/upload/steps/validate.py +71 -0
  232. synapse_sdk/plugins/categories/upload/actions/upload/strategies/__init__.py +1 -0
  233. synapse_sdk/plugins/categories/upload/actions/upload/strategies/base.py +82 -0
  234. synapse_sdk/plugins/categories/upload/actions/upload/strategies/data_unit/__init__.py +1 -0
  235. synapse_sdk/plugins/categories/upload/actions/upload/strategies/data_unit/batch.py +39 -0
  236. synapse_sdk/plugins/categories/upload/actions/upload/strategies/data_unit/single.py +29 -0
  237. synapse_sdk/plugins/categories/upload/actions/upload/strategies/file_discovery/__init__.py +1 -0
  238. synapse_sdk/plugins/categories/upload/actions/upload/strategies/file_discovery/flat.py +258 -0
  239. synapse_sdk/plugins/categories/upload/actions/upload/strategies/file_discovery/recursive.py +281 -0
  240. synapse_sdk/plugins/categories/upload/actions/upload/strategies/metadata/__init__.py +1 -0
  241. synapse_sdk/plugins/categories/upload/actions/upload/strategies/metadata/excel.py +174 -0
  242. synapse_sdk/plugins/categories/upload/actions/upload/strategies/metadata/none.py +16 -0
  243. synapse_sdk/plugins/categories/upload/actions/upload/strategies/upload/__init__.py +1 -0
  244. synapse_sdk/plugins/categories/upload/actions/upload/strategies/upload/sync.py +84 -0
  245. synapse_sdk/plugins/categories/upload/actions/upload/strategies/validation/__init__.py +1 -0
  246. synapse_sdk/plugins/categories/upload/actions/upload/strategies/validation/default.py +60 -0
  247. synapse_sdk/plugins/categories/upload/actions/upload/utils.py +250 -0
  248. synapse_sdk/plugins/categories/upload/templates/README.md +470 -0
  249. synapse_sdk/plugins/categories/upload/templates/config.yaml +29 -2
  250. synapse_sdk/plugins/categories/upload/templates/plugin/__init__.py +294 -0
  251. synapse_sdk/plugins/categories/upload/templates/plugin/upload.py +88 -30
  252. synapse_sdk/plugins/models.py +122 -16
  253. synapse_sdk/plugins/templates/plugin-config-schema.json +406 -0
  254. synapse_sdk/plugins/templates/schema.json +491 -0
  255. synapse_sdk/plugins/templates/synapse-{{cookiecutter.plugin_code}}-plugin/requirements.txt +1 -1
  256. synapse_sdk/plugins/utils/__init__.py +46 -0
  257. synapse_sdk/plugins/utils/actions.py +119 -0
  258. synapse_sdk/plugins/utils/config.py +203 -0
  259. synapse_sdk/plugins/{utils.py → utils/legacy.py} +26 -46
  260. synapse_sdk/plugins/utils/ray_gcs.py +66 -0
  261. synapse_sdk/plugins/utils/registry.py +58 -0
  262. synapse_sdk/shared/__init__.py +25 -0
  263. synapse_sdk/shared/enums.py +93 -0
  264. synapse_sdk/utils/converters/__init__.py +240 -0
  265. synapse_sdk/utils/converters/coco/__init__.py +0 -0
  266. synapse_sdk/utils/converters/coco/from_dm.py +322 -0
  267. synapse_sdk/utils/converters/coco/to_dm.py +215 -0
  268. synapse_sdk/utils/converters/dm/__init__.py +56 -0
  269. synapse_sdk/utils/converters/dm/from_v1.py +627 -0
  270. synapse_sdk/utils/converters/dm/to_v1.py +367 -0
  271. synapse_sdk/utils/converters/pascal/__init__.py +0 -0
  272. synapse_sdk/utils/converters/pascal/from_dm.py +244 -0
  273. synapse_sdk/utils/converters/pascal/to_dm.py +214 -0
  274. synapse_sdk/utils/converters/yolo/__init__.py +0 -0
  275. synapse_sdk/utils/converters/yolo/from_dm.py +384 -0
  276. synapse_sdk/utils/converters/yolo/to_dm.py +267 -0
  277. synapse_sdk/utils/dataset.py +46 -0
  278. synapse_sdk/utils/encryption.py +158 -0
  279. synapse_sdk/utils/file/__init__.py +39 -0
  280. synapse_sdk/utils/file/archive.py +32 -0
  281. synapse_sdk/utils/file/checksum.py +56 -0
  282. synapse_sdk/utils/file/chunking.py +31 -0
  283. synapse_sdk/utils/file/download.py +385 -0
  284. synapse_sdk/utils/file/encoding.py +40 -0
  285. synapse_sdk/utils/file/io.py +22 -0
  286. synapse_sdk/utils/file/video/__init__.py +29 -0
  287. synapse_sdk/utils/file/video/transcode.py +307 -0
  288. synapse_sdk/utils/{file.py → file.py.backup} +84 -2
  289. synapse_sdk/utils/http.py +138 -0
  290. synapse_sdk/utils/network.py +293 -0
  291. synapse_sdk/utils/storage/__init__.py +36 -2
  292. synapse_sdk/utils/storage/providers/__init__.py +141 -0
  293. synapse_sdk/utils/storage/providers/file_system.py +134 -0
  294. synapse_sdk/utils/storage/providers/http.py +190 -0
  295. synapse_sdk/utils/storage/providers/s3.py +54 -6
  296. synapse_sdk/utils/storage/providers/sftp.py +31 -0
  297. synapse_sdk/utils/storage/registry.py +6 -0
  298. synapse_sdk-2025.11.7.dist-info/METADATA +122 -0
  299. synapse_sdk-2025.11.7.dist-info/RECORD +386 -0
  300. {synapse_sdk-1.0.0a35.dist-info → synapse_sdk-2025.11.7.dist-info}/WHEEL +1 -1
  301. synapse_sdk/clients/backend/dataset.py +0 -102
  302. synapse_sdk/plugins/categories/upload/actions/upload.py +0 -293
  303. synapse_sdk-1.0.0a35.dist-info/METADATA +0 -47
  304. synapse_sdk-1.0.0a35.dist-info/RECORD +0 -137
  305. {synapse_sdk-1.0.0a35.dist-info → synapse_sdk-2025.11.7.dist-info}/entry_points.txt +0 -0
  306. {synapse_sdk-1.0.0a35.dist-info → synapse_sdk-2025.11.7.dist-info}/licenses/LICENSE +0 -0
  307. {synapse_sdk-1.0.0a35.dist-info → synapse_sdk-2025.11.7.dist-info}/top_level.txt +0 -0
@@ -0,0 +1,717 @@
1
+ ---
2
+ id: to-task-overview
3
+ title: ToTask 액션 - 사용자 가이드
4
+ sidebar_position: 2
5
+ ---
6
+
7
+ # ToTask 액션 - 사용자 가이드
8
+
9
+ `to_task` 액션은 파일 기반 및 AI 추론 기반 주석 방법을 모두 지원하며 포괄적인 검증 및 진행 추적 기능과 함께 자동화된 작업 주석 기능을 제공합니다.
10
+
11
+ ## 개요
12
+
13
+ ToTask 액션은 다음과 같은 방법으로 Synapse 프로젝트의 작업에 주석을 추가합니다:
14
+
15
+ - JSON 파일에서 주석 데이터 가져오기 (파일 기반 방법)
16
+ - 전처리기를 통한 모델 추론 실행 (추론 기반 방법)
17
+ - 자동으로 작업 데이터에 주석 적용
18
+ - 실시간으로 진행 및 메트릭 추적
19
+ - 자동 롤백으로 오류를 우아하게 처리
20
+
21
+ ## 사전 요구사항
22
+
23
+ ### 공통 요구사항
24
+
25
+ - 작업이 있는 유효한 Synapse 프로젝트
26
+ - 프로젝트에 연결된 데이터 컬렉션
27
+ - 적절한 권한이 있는 에이전트
28
+ - 필터 기준과 일치하는 작업
29
+
30
+ ### 파일 기반 방법 요구사항
31
+
32
+ - 데이터 유닛에 `target_specification_name`과 일치하는 파일이 있어야 함
33
+ - JSON 파일이 HTTP/HTTPS URL을 통해 접근 가능해야 함
34
+ - JSON 구조가 작업 객체 형식과 일치해야 함
35
+
36
+ ### 추론 기반 방법 요구사항
37
+
38
+ - 배포되고 활성화된 전처리기 플러그인
39
+ - 전처리기가 작업의 데이터 타입을 지원해야 함
40
+ - 작업에 주 이미지 또는 호환 가능한 입력 데이터가 있어야 함
41
+
42
+ ## 기본 사용법
43
+
44
+ ### 파일 기반 주석
45
+
46
+ 데이터 유닛에 저장된 파일 URL의 JSON 데이터를 사용하여 작업에 주석을 추가합니다.
47
+
48
+ ```python
49
+ from synapse_sdk.plugins.categories.pre_annotation.actions.to_task import ToTaskAction
50
+
51
+ # 구성
52
+ params = {
53
+ 'name': 'File_Based_Annotation',
54
+ 'description': 'Annotate tasks from JSON files',
55
+ 'project': 123,
56
+ 'agent': 1,
57
+ 'task_filters': {
58
+ 'status': 'pending',
59
+ 'data_collection': 456
60
+ },
61
+ 'method': 'file',
62
+ 'target_specification_name': 'annotation_data',
63
+ 'pre_processor_params': {}
64
+ }
65
+
66
+ # 실행
67
+ action = ToTaskAction(run=run_instance, params=params)
68
+ result = action.start()
69
+
70
+ # 결과 확인
71
+ if result['status'] == 'SUCCEEDED':
72
+ print(f"성공: {result['message']}")
73
+ else:
74
+ print(f"실패: {result['message']}")
75
+ ```
76
+
77
+ **작동 방식:**
78
+
79
+ 1. 시스템이 필터와 일치하는 작업을 찾음
80
+ 2. 각 작업에 대해 데이터 유닛을 가져옴
81
+ 3. 사양 이름이 `annotation_data`인 파일을 찾음
82
+ 4. 파일 URL에서 JSON 데이터를 다운로드
83
+ 5. JSON 데이터를 작업에 적용
84
+ 6. 각 작업의 성공/실패를 추적
85
+
86
+ ### 추론 기반 주석
87
+
88
+ 전처리기를 통한 AI 모델 추론을 사용하여 작업에 주석을 추가합니다.
89
+
90
+ ```python
91
+ params = {
92
+ 'name': 'Inference_Based_Annotation',
93
+ 'description': 'Auto-annotate using AI model',
94
+ 'project': 123,
95
+ 'agent': 1,
96
+ 'task_filters': {
97
+ 'status': 'pending',
98
+ 'assignee': None # 할당되지 않은 작업만
99
+ },
100
+ 'method': 'inference',
101
+ 'pre_processor': 789, # 전처리기 플러그인 릴리스 ID
102
+ 'pre_processor_params': {
103
+ 'confidence_threshold': 0.8,
104
+ 'model_config': {
105
+ 'batch_size': 16,
106
+ 'device': 'cuda'
107
+ }
108
+ }
109
+ }
110
+
111
+ action = ToTaskAction(run=run_instance, params=params)
112
+ result = action.start()
113
+ ```
114
+
115
+ **작동 방식:**
116
+
117
+ 1. 시스템이 전처리기가 활성화되어 있는지 검증
118
+ 2. 필터와 일치하는 작업을 찾음
119
+ 3. 각 작업에 대해 주 이미지 URL을 추출
120
+ 4. 이미지와 파라미터로 전처리기 API 호출
121
+ 5. 추론 결과를 작업 객체 형식으로 변환
122
+ 6. 생성된 주석으로 작업 업데이트
123
+
124
+ ## 파라미터 레퍼런스
125
+
126
+ ### 필수 파라미터
127
+
128
+ #### `name` (string)
129
+
130
+ - 액션 이름 식별자
131
+ - 공백을 포함해서는 안 됨
132
+ - 예: `"File_Annotation_Job"`
133
+
134
+ #### `project` (integer)
135
+
136
+ - Synapse 프로젝트 ID
137
+ - 유효하고 접근 가능한 프로젝트여야 함
138
+ - 예: `123`
139
+
140
+ #### `agent` (integer)
141
+
142
+ - 실행을 위한 에이전트 ID
143
+ - 에이전트가 프로젝트에 대한 권한이 있어야 함
144
+ - 예: `1`
145
+
146
+ #### `task_filters` (object)
147
+
148
+ - 작업 선택을 위한 필터 기준 딕셔너리
149
+ - 모든 작업 쿼리 파라미터 지원
150
+ - 예: `{"status": "pending", "data_collection": 456}`
151
+
152
+ #### `method` (string)
153
+
154
+ - 주석 방법 타입
155
+ - 값: `"file"` 또는 `"inference"`
156
+ - 사용할 주석 전략을 결정
157
+
158
+ ### 방법별 파라미터
159
+
160
+ #### 파일 기반 방법용
161
+
162
+ **`target_specification_name`** (string, 파일 방법에 필수)
163
+
164
+ - 주석 JSON을 포함하는 파일 사양 이름
165
+ - 프로젝트의 파일 사양에 존재해야 함
166
+ - 예: `"annotation_data"`
167
+
168
+ #### 추론 기반 방법용
169
+
170
+ **`pre_processor`** (integer, 추론 방법에 필수)
171
+
172
+ - 전처리기 플러그인 릴리스 ID
173
+ - 전처리기가 배포되고 활성화되어 있어야 함
174
+ - 예: `789`
175
+
176
+ **`pre_processor_params`** (object, 선택사항)
177
+
178
+ - 전처리기에 전달되는 구성 파라미터
179
+ - 구조는 전처리기 구현에 따라 다름
180
+ - 예:
181
+ ```python
182
+ {
183
+ 'confidence_threshold': 0.8,
184
+ 'model_config': {
185
+ 'batch_size': 16,
186
+ 'device': 'cuda',
187
+ 'use_fp16': True
188
+ },
189
+ 'post_processing': {
190
+ 'nms_threshold': 0.5,
191
+ 'min_size': 10
192
+ }
193
+ }
194
+ ```
195
+
196
+ ### 선택적 파라미터
197
+
198
+ #### `description` (string)
199
+
200
+ - 액션에 대한 사람이 읽을 수 있는 설명
201
+ - 예: `"Annotate all pending tasks with model v2 predictions"`
202
+
203
+ ## 작업 필터링
204
+
205
+ `task_filters` 파라미터는 다양한 필터링 옵션을 지원합니다:
206
+
207
+ ### 일반적인 필터 예제
208
+
209
+ ```python
210
+ # 상태별 필터링
211
+ task_filters = {'status': 'pending'}
212
+
213
+ # 데이터 컬렉션별 필터링
214
+ task_filters = {'data_collection': 456}
215
+
216
+ # 담당자별 필터링
217
+ task_filters = {'assignee': 12} # 특정 사용자
218
+ task_filters = {'assignee': None} # 할당되지 않은 작업
219
+
220
+ # 다중 필터 (AND 로직)
221
+ task_filters = {
222
+ 'status': 'pending',
223
+ 'data_collection': 456,
224
+ 'assignee': None
225
+ }
226
+
227
+ # 생성 날짜별 필터링
228
+ task_filters = {
229
+ 'created_at__gte': '2025-01-01',
230
+ 'created_at__lte': '2025-01-31'
231
+ }
232
+ ```
233
+
234
+ ### 고급 필터링
235
+
236
+ ```python
237
+ # 여러 기준 결합
238
+ task_filters = {
239
+ 'status__in': ['pending', 'in_progress'],
240
+ 'data_collection': 456,
241
+ 'created_at__gte': '2025-01-01'
242
+ }
243
+ ```
244
+
245
+ ## 진행 및 메트릭
246
+
247
+ ### 실시간 진행 업데이트
248
+
249
+ 액션은 지속적인 진행 업데이트를 제공합니다:
250
+
251
+ ```python
252
+ # 실행 중 진행이 자동으로 기록됩니다
253
+ # 로그 출력 예:
254
+ # [annotate_task_data] 진행: 25.0% (25/100)
255
+ # [annotate_task_data] 진행: 50.0% (50/100)
256
+ # [annotate_task_data] 진행: 100.0% (100/100)
257
+ ```
258
+
259
+ ### 메트릭 카테고리
260
+
261
+ **성공 메트릭:**
262
+
263
+ - 처리된 총 작업 수
264
+ - 성공적으로 주석이 추가된 수
265
+ - 주석 추가 실패 수
266
+ - 대기 중(아직 처리되지 않음) 수
267
+
268
+ **상태 메시지:**
269
+
270
+ ```python
271
+ # 메트릭 출력 예
272
+ {
273
+ 'total': 100,
274
+ 'success': 95,
275
+ 'failed': 5,
276
+ 'stand_by': 0
277
+ }
278
+ ```
279
+
280
+ ### 메트릭 접근
281
+
282
+ 메트릭은 실행 로거에 자동으로 기록되며 Synapse 플랫폼 UI 또는 API를 통해 접근할 수 있습니다.
283
+
284
+ ## 파일 기반 주석 세부사항
285
+
286
+ ### 예상 JSON 구조
287
+
288
+ JSON 파일은 작업 데이터 객체 형식을 따라야 합니다:
289
+
290
+ ```json
291
+ {
292
+ "objects": [
293
+ {
294
+ "id": "obj_001",
295
+ "class_id": 1,
296
+ "type": "bbox",
297
+ "coordinates": {
298
+ "x": 100,
299
+ "y": 150,
300
+ "width": 200,
301
+ "height": 180
302
+ },
303
+ "properties": {
304
+ "confidence": 0.95,
305
+ "label": "person"
306
+ }
307
+ }
308
+ ]
309
+ }
310
+ ```
311
+
312
+ ### 파일 사양 설정
313
+
314
+ 1. **파일 사양 정의** - 프로젝트에서 대상 이름으로 파일 사양 정의 (예: `annotation_data`)
315
+ 2. **주석 JSON 파일 업로드** - 이 사양으로 데이터 유닛에 업로드
316
+ 3. **파일 접근성 확인** - HTTP/HTTPS URL을 통해 접근 가능한지 확인
317
+ 4. **ToTask 액션 실행** - 사양과 일치하는 `target_specification_name`으로 실행
318
+
319
+ ### 예제 워크플로우
320
+
321
+ ```python
322
+ # 1단계: 데이터 준비
323
+ # - 데이터 컬렉션에 이미지 업로드
324
+ # - 사양 "annotations"로 주석 JSON 파일 업로드
325
+
326
+ # 2단계: 구성 및 실행
327
+ params = {
328
+ 'name': 'Apply_Pregenerated_Annotations',
329
+ 'project': 123,
330
+ 'agent': 1,
331
+ 'task_filters': {'status': 'pending'},
332
+ 'method': 'file',
333
+ 'target_specification_name': 'annotations'
334
+ }
335
+
336
+ action = ToTaskAction(run=run_instance, params=params)
337
+ result = action.start()
338
+ ```
339
+
340
+ ## 추론 기반 주석 세부사항
341
+
342
+ ### 전처리기 요구사항
343
+
344
+ 전처리기는 다음을 충족해야 합니다:
345
+
346
+ - 배포되어 `RUNNING` 상태여야 함
347
+ - 입력으로 이미지 URL을 받아야 함
348
+ - 작업 호환 형식으로 결과를 반환해야 함
349
+ - 작업의 데이터 타입을 지원해야 함
350
+
351
+ ### 전처리기 파라미터
352
+
353
+ `pre_processor_params`를 통해 추론 동작 구성:
354
+
355
+ ```python
356
+ pre_processor_params = {
357
+ # 모델 구성
358
+ 'model_config': {
359
+ 'batch_size': 16,
360
+ 'device': 'cuda',
361
+ 'use_fp16': True
362
+ },
363
+
364
+ # 추론 임계값
365
+ 'confidence_threshold': 0.8,
366
+ 'nms_threshold': 0.5,
367
+
368
+ # 후처리
369
+ 'min_object_size': 10,
370
+ 'max_objects': 100,
371
+
372
+ # 출력 형식
373
+ 'include_masks': True,
374
+ 'output_format': 'coco'
375
+ }
376
+ ```
377
+
378
+ ### 추론 워크플로우
379
+
380
+ ```python
381
+ # 1단계: 전처리기 배포
382
+ # (전처리기 플러그인 문서 참조)
383
+
384
+ # 2단계: 추론 주석 구성
385
+ params = {
386
+ 'name': 'AI_Auto_Annotation',
387
+ 'project': 123,
388
+ 'agent': 1,
389
+ 'task_filters': {
390
+ 'status': 'pending',
391
+ 'data_collection': 456
392
+ },
393
+ 'method': 'inference',
394
+ 'pre_processor': 789,
395
+ 'pre_processor_params': {
396
+ 'confidence_threshold': 0.85,
397
+ 'model_config': {
398
+ 'device': 'cuda'
399
+ }
400
+ }
401
+ }
402
+
403
+ # 3단계: 실행
404
+ action = ToTaskAction(run=run_instance, params=params)
405
+ result = action.start()
406
+
407
+ # 4단계: 결과 검토
408
+ # 메트릭에서 성공/실패 수 확인
409
+ # Synapse UI에서 주석이 추가된 작업 검토
410
+ ```
411
+
412
+ ### 전처리기 관리
413
+
414
+ 시스템은 자동으로:
415
+
416
+ - 전처리기가 실행 중인지 확인
417
+ - 필요시 전처리기 시작
418
+ - 전처리기가 준비될 때까지 대기
419
+ - 전처리기 오류를 우아하게 처리
420
+
421
+ ## 오류 처리
422
+
423
+ ### 작업 수준 오류
424
+
425
+ 개별 작업 실패는 워크플로우를 중지하지 않습니다:
426
+
427
+ ```python
428
+ # 예: 100개의 작업 처리
429
+ # - 95개 성공
430
+ # - 5개 실패 (예: 잘못된 JSON, 네트워크 오류)
431
+ # 결과: 작업 완료, success=95, failed=5
432
+ ```
433
+
434
+ 실패한 작업은 오류 세부정보와 함께 기록됩니다:
435
+
436
+ ```
437
+ [작업 123] 실패: 주석 파일의 JSON 형식이 잘못됨
438
+ [작업 456] 실패: 전처리기 추론 시간 초과
439
+ ```
440
+
441
+ ### 치명적 오류
442
+
443
+ 시스템 수준 오류는 즉시 롤백을 트리거합니다:
444
+
445
+ ```python
446
+ # 치명적 오류 예:
447
+ # - 프로젝트를 찾을 수 없음
448
+ # - 데이터 컬렉션이 연결되지 않음
449
+ # - 대상 사양이 존재하지 않음
450
+ # - 전처리기가 배포되지 않음
451
+
452
+ # 치명적 오류 발생 시:
453
+ # 1. 워크플로우 즉시 중지
454
+ # 2. 완료된 단계 롤백
455
+ # 3. 임시 파일 정리
456
+ # 4. 상세한 메시지와 함께 오류 발생
457
+ ```
458
+
459
+ ### 일반적인 오류 및 해결 방법
460
+
461
+ #### "Project has no data collection"
462
+
463
+ **해결 방법:** 실행 전 프로젝트에 데이터 컬렉션을 연결하세요.
464
+
465
+ #### "Target specification not found"
466
+
467
+ **해결 방법:** `target_specification_name`이 프로젝트 파일 사양에 존재하는지 확인하세요.
468
+
469
+ #### "Pre-processor not active"
470
+
471
+ **해결 방법:** 추론 주석을 실행하기 전에 전처리기를 배포하고 시작하세요.
472
+
473
+ #### "No tasks found matching filters"
474
+
475
+ **해결 방법:** `task_filters` 기준을 확인하고 작업이 존재하는지 확인하세요.
476
+
477
+ #### "Failed to download JSON from URL"
478
+
479
+ **해결 방법:** 주석 파일이 접근 가능하고 URL이 유효한지 확인하세요.
480
+
481
+ ## 모범 사례
482
+
483
+ ### 성능 최적화
484
+
485
+ 1. **추론을 위한 배치 크기**
486
+
487
+ ```python
488
+ pre_processor_params = {
489
+ 'model_config': {
490
+ 'batch_size': 32 # GPU 메모리에 따라 조정
491
+ }
492
+ }
493
+ ```
494
+
495
+ 2. **효과적인 작업 필터링**
496
+
497
+ ```python
498
+ # 좋음: 구체적인 필터
499
+ task_filters = {
500
+ 'status': 'pending',
501
+ 'data_collection': 456,
502
+ 'created_at__gte': '2025-01-01'
503
+ }
504
+
505
+ # 피할 것: 너무 광범위함
506
+ task_filters = {'status': 'pending'} # 수천 개 일치 가능
507
+ ```
508
+
509
+ 3. **적절한 신뢰도 임계값 사용**
510
+
511
+ ```python
512
+ # 높은 임계값 = 더 적은 거짓 양성
513
+ pre_processor_params = {
514
+ 'confidence_threshold': 0.9 # 엄격함
515
+ }
516
+
517
+ # 낮은 임계값 = 더 많은 탐지
518
+ pre_processor_params = {
519
+ 'confidence_threshold': 0.5 # 허용적
520
+ }
521
+ ```
522
+
523
+ ### 신뢰성
524
+
525
+ 1. **처리 전 데이터 검증**
526
+
527
+ - 작업에 필요한 데이터(이미지, 파일)가 있는지 확인
528
+ - 파일 사양이 존재하는지 확인
529
+ - 전처리기가 테스트되고 안정적인지 확인
530
+
531
+ 2. **진행 모니터링**
532
+
533
+ - 실행 중 진행 로그 검토
534
+ - 완료 후 메트릭 확인
535
+ - 실패한 작업 조사
536
+
537
+ 3. **부분 실패 처리**
538
+ ```python
539
+ # 실행 후 메트릭 확인
540
+ if result['status'] == 'SUCCEEDED':
541
+ # 모든 작업이 성공했는지 확인
542
+ # 실패 수 검토
543
+ # 필요시 실패한 작업에 대해 재실행
544
+ ```
545
+
546
+ ### 보안
547
+
548
+ 1. **파일 접근 검증**
549
+
550
+ - JSON 파일이 신뢰할 수 있는 소스에서 온 것인지 확인
551
+ - 업로드 전 파일 내용 검증
552
+ - 보안 HTTPS URL 사용
553
+
554
+ 2. **입력 검증**
555
+ - 전처리기 파라미터 검증
556
+ - 신뢰도 임계값이 합리적인지 확인
557
+ - 작업 필터가 민감한 데이터를 노출하지 않는지 확인
558
+
559
+ ## 완전한 예제
560
+
561
+ ### 예제 1: 대량 파일 기반 주석
562
+
563
+ ```python
564
+ """
565
+ 시나리오: 사전 생성된 주석 JSON 파일이 있는 1000개의 이미지가 있습니다.
566
+ 목표: 모든 주석을 대기 중인 작업에 적용합니다.
567
+ """
568
+
569
+ from synapse_sdk.plugins.categories.pre_annotation.actions.to_task import ToTaskAction
570
+
571
+ params = {
572
+ 'name': 'Bulk_File_Annotation_Jan2025',
573
+ 'description': 'Apply pre-generated annotations from external tool',
574
+ 'project': 123,
575
+ 'agent': 1,
576
+ 'task_filters': {
577
+ 'status': 'pending',
578
+ 'data_collection': 456,
579
+ 'created_at__gte': '2025-01-01'
580
+ },
581
+ 'method': 'file',
582
+ 'target_specification_name': 'external_annotations',
583
+ 'pre_processor_params': {}
584
+ }
585
+
586
+ action = ToTaskAction(run=run_instance, params=params)
587
+ result = action.start()
588
+
589
+ print(f"상태: {result['status']}")
590
+ print(f"메시지: {result['message']}")
591
+ ```
592
+
593
+ ### 예제 2: AI 기반 자동 주석
594
+
595
+ ```python
596
+ """
597
+ 시나리오: 전처리기로 배포된 학습된 객체 탐지 모델이 있습니다.
598
+ 목표: 높은 신뢰도 예측으로 할당되지 않은 모든 작업에 자동 주석을 추가합니다.
599
+ """
600
+
601
+ params = {
602
+ 'name': 'AI_Object_Detection_v2',
603
+ 'description': 'Auto-detect objects using YOLOv8 model',
604
+ 'project': 123,
605
+ 'agent': 1,
606
+ 'task_filters': {
607
+ 'status': 'pending',
608
+ 'assignee': None, # 할당되지 않은 작업만
609
+ 'data_collection': 789
610
+ },
611
+ 'method': 'inference',
612
+ 'pre_processor': 456,
613
+ 'pre_processor_params': {
614
+ 'confidence_threshold': 0.85,
615
+ 'nms_threshold': 0.5,
616
+ 'model_config': {
617
+ 'batch_size': 16,
618
+ 'device': 'cuda',
619
+ 'use_fp16': True
620
+ },
621
+ 'class_filter': [1, 2, 3], # 특정 클래스만 탐지
622
+ 'min_object_size': 20
623
+ }
624
+ }
625
+
626
+ action = ToTaskAction(run=run_instance, params=params)
627
+ result = action.start()
628
+
629
+ # 결과 확인
630
+ if result['status'] == 'SUCCEEDED':
631
+ print("자동 주석 성공적으로 완료")
632
+ # 품질 확인을 위해 Synapse UI에서 작업 검토
633
+ else:
634
+ print(f"실패: {result['message']}")
635
+ ```
636
+
637
+ ### 예제 3: 능동 학습 워크플로우
638
+
639
+ ```python
640
+ """
641
+ 시나리오: 능동 학습을 통한 반복적 모델 개선.
642
+ 목표: 모델로 자동 주석 추가, 불확실한 케이스는 수동 검토.
643
+ """
644
+
645
+ # 1단계: 높은 신뢰도로 자동 주석
646
+ params_high_confidence = {
647
+ 'name': 'Active_Learning_Round1_High',
648
+ 'project': 123,
649
+ 'agent': 1,
650
+ 'task_filters': {'status': 'pending'},
651
+ 'method': 'inference',
652
+ 'pre_processor': 789,
653
+ 'pre_processor_params': {
654
+ 'confidence_threshold': 0.9 # 높은 신뢰도만
655
+ }
656
+ }
657
+
658
+ action = ToTaskAction(run=run_instance, params=params_high_confidence)
659
+ result = action.start()
660
+
661
+ # 2단계: 낮은 신뢰도 케이스는 수동 검토로
662
+ # (사람 주석 작업자를 위해 대기 중으로 유지)
663
+
664
+ # 3단계: 수동 검토 후 모델 재학습 및 반복
665
+ ```
666
+
667
+ ## 문제 해결
668
+
669
+ ### 실패한 작업 디버깅
670
+
671
+ 1. **특정 오류에 대한 로그 확인**
672
+
673
+ ```
674
+ 다음과 같은 메시지 찾기:
675
+ [작업 123] 실패: <error_message>
676
+ ```
677
+
678
+ 2. **작업 데이터 구조 확인**
679
+
680
+ - 작업에 필요한 필드가 있는지 확인
681
+ - 데이터 유닛이 존재하는지 확인
682
+ - 파일 URL이 접근 가능한지 검증
683
+
684
+ 3. **먼저 소규모 배치로 테스트**
685
+ ```python
686
+ # 먼저 10개 작업으로 테스트
687
+ task_filters = {
688
+ 'status': 'pending',
689
+ 'limit': 10
690
+ }
691
+ ```
692
+
693
+ ### 성능 문제
694
+
695
+ 1. 시간 초과가 발생하면 **배치 크기 줄이기**
696
+ 2. 더 작은 그룹을 처리하기 위해 **작업을 더 좁게 필터링**
697
+ 3. 추론 방법의 경우 **전처리기 리소스 사용량 확인**
698
+
699
+ ### 검증 오류
700
+
701
+ 1. **"No tasks found"** - 필터와 작업 존재 확인
702
+ 2. **"Invalid project"** - 프로젝트 ID 및 권한 확인
703
+ 3. **"Target specification not found"** - 파일 사양 이름 확인
704
+ 4. **"Pre-processor not found"** - 전처리기 ID 및 상태 확인
705
+
706
+ ## 다음 단계
707
+
708
+ - **아키텍처 세부사항**: 기술 아키텍처는 [ToTask 액션 개발](./to-task-action-development.md)을 읽어보세요
709
+ - **커스텀 전략**: 커스텀 검증 및 주석 전략으로 ToTask 액션을 확장하는 방법을 배우세요
710
+ - **전처리기 가이드**: 모델 배포는 전처리기 플러그인 문서를 참조하세요
711
+
712
+ ## 관련 문서
713
+
714
+ - [Pre-annotation 플러그인 개요](./pre-annotation-plugin-overview.md)
715
+ - [업로드 플러그인](../upload-plugins/upload-plugin-overview.md)
716
+ - 플러그인 개발 가이드
717
+ - API 레퍼런스