synapse-sdk 1.0.0a13__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 (339) hide show
  1. synapse_sdk/__init__.py +24 -0
  2. synapse_sdk/cli/__init__.py +310 -5
  3. synapse_sdk/cli/alias/__init__.py +22 -0
  4. synapse_sdk/cli/alias/create.py +36 -0
  5. synapse_sdk/cli/alias/dataclass.py +31 -0
  6. synapse_sdk/cli/alias/default.py +16 -0
  7. synapse_sdk/cli/alias/delete.py +15 -0
  8. synapse_sdk/cli/alias/list.py +19 -0
  9. synapse_sdk/cli/alias/read.py +15 -0
  10. synapse_sdk/cli/alias/update.py +17 -0
  11. synapse_sdk/cli/alias/utils.py +61 -0
  12. synapse_sdk/cli/code_server.py +687 -0
  13. synapse_sdk/cli/config.py +440 -0
  14. synapse_sdk/cli/devtools.py +90 -0
  15. synapse_sdk/cli/plugin/__init__.py +33 -0
  16. synapse_sdk/cli/{create_plugin.py → plugin/create.py} +2 -2
  17. synapse_sdk/cli/plugin/publish.py +45 -0
  18. synapse_sdk/{plugins/cli → cli/plugin}/run.py +12 -5
  19. synapse_sdk/clients/agent/__init__.py +9 -3
  20. synapse_sdk/clients/agent/container.py +133 -0
  21. synapse_sdk/clients/agent/core.py +19 -0
  22. synapse_sdk/clients/agent/ray.py +298 -9
  23. synapse_sdk/clients/backend/__init__.py +41 -12
  24. synapse_sdk/clients/backend/annotation.py +13 -5
  25. synapse_sdk/clients/backend/core.py +59 -0
  26. synapse_sdk/clients/backend/data_collection.py +186 -0
  27. synapse_sdk/clients/backend/hitl.py +17 -0
  28. synapse_sdk/clients/backend/integration.py +19 -4
  29. synapse_sdk/clients/backend/ml.py +10 -7
  30. synapse_sdk/clients/backend/models.py +78 -0
  31. synapse_sdk/clients/base.py +381 -34
  32. synapse_sdk/clients/ray/serve.py +2 -0
  33. synapse_sdk/clients/validators/collections.py +31 -0
  34. synapse_sdk/devtools/config.py +94 -0
  35. synapse_sdk/devtools/docs/.gitignore +20 -0
  36. synapse_sdk/devtools/docs/README.md +41 -0
  37. synapse_sdk/devtools/docs/blog/2019-05-28-first-blog-post.md +12 -0
  38. synapse_sdk/devtools/docs/blog/2019-05-29-long-blog-post.md +44 -0
  39. synapse_sdk/devtools/docs/blog/2021-08-01-mdx-blog-post.mdx +24 -0
  40. synapse_sdk/devtools/docs/blog/2021-08-26-welcome/docusaurus-plushie-banner.jpeg +0 -0
  41. synapse_sdk/devtools/docs/blog/2021-08-26-welcome/index.md +29 -0
  42. synapse_sdk/devtools/docs/blog/authors.yml +25 -0
  43. synapse_sdk/devtools/docs/blog/tags.yml +19 -0
  44. synapse_sdk/devtools/docs/docs/api/clients/agent.md +43 -0
  45. synapse_sdk/devtools/docs/docs/api/clients/annotation-mixin.md +378 -0
  46. synapse_sdk/devtools/docs/docs/api/clients/backend.md +420 -0
  47. synapse_sdk/devtools/docs/docs/api/clients/base.md +257 -0
  48. synapse_sdk/devtools/docs/docs/api/clients/core-mixin.md +477 -0
  49. synapse_sdk/devtools/docs/docs/api/clients/data-collection-mixin.md +422 -0
  50. synapse_sdk/devtools/docs/docs/api/clients/hitl-mixin.md +554 -0
  51. synapse_sdk/devtools/docs/docs/api/clients/index.md +391 -0
  52. synapse_sdk/devtools/docs/docs/api/clients/integration-mixin.md +571 -0
  53. synapse_sdk/devtools/docs/docs/api/clients/ml-mixin.md +578 -0
  54. synapse_sdk/devtools/docs/docs/api/clients/ray.md +342 -0
  55. synapse_sdk/devtools/docs/docs/api/index.md +52 -0
  56. synapse_sdk/devtools/docs/docs/api/plugins/categories.md +43 -0
  57. synapse_sdk/devtools/docs/docs/api/plugins/models.md +114 -0
  58. synapse_sdk/devtools/docs/docs/api/plugins/utils.md +328 -0
  59. synapse_sdk/devtools/docs/docs/categories.md +0 -0
  60. synapse_sdk/devtools/docs/docs/cli-usage.md +280 -0
  61. synapse_sdk/devtools/docs/docs/concepts/index.md +38 -0
  62. synapse_sdk/devtools/docs/docs/configuration.md +83 -0
  63. synapse_sdk/devtools/docs/docs/contributing.md +306 -0
  64. synapse_sdk/devtools/docs/docs/examples/index.md +29 -0
  65. synapse_sdk/devtools/docs/docs/faq.md +179 -0
  66. synapse_sdk/devtools/docs/docs/features/converters/index.md +455 -0
  67. synapse_sdk/devtools/docs/docs/features/index.md +24 -0
  68. synapse_sdk/devtools/docs/docs/features/utils/file.md +415 -0
  69. synapse_sdk/devtools/docs/docs/features/utils/network.md +378 -0
  70. synapse_sdk/devtools/docs/docs/features/utils/storage.md +57 -0
  71. synapse_sdk/devtools/docs/docs/features/utils/types.md +51 -0
  72. synapse_sdk/devtools/docs/docs/installation.md +94 -0
  73. synapse_sdk/devtools/docs/docs/introduction.md +47 -0
  74. synapse_sdk/devtools/docs/docs/plugins/categories/neural-net-plugins/train-action-overview.md +814 -0
  75. synapse_sdk/devtools/docs/docs/plugins/categories/pre-annotation-plugins/pre-annotation-plugin-overview.md +198 -0
  76. synapse_sdk/devtools/docs/docs/plugins/categories/pre-annotation-plugins/to-task-action-development.md +1645 -0
  77. synapse_sdk/devtools/docs/docs/plugins/categories/pre-annotation-plugins/to-task-overview.md +717 -0
  78. synapse_sdk/devtools/docs/docs/plugins/categories/pre-annotation-plugins/to-task-template-development.md +1380 -0
  79. synapse_sdk/devtools/docs/docs/plugins/categories/upload-plugins/upload-plugin-action.md +948 -0
  80. synapse_sdk/devtools/docs/docs/plugins/categories/upload-plugins/upload-plugin-overview.md +544 -0
  81. synapse_sdk/devtools/docs/docs/plugins/categories/upload-plugins/upload-plugin-template.md +766 -0
  82. synapse_sdk/devtools/docs/docs/plugins/export-plugins.md +1092 -0
  83. synapse_sdk/devtools/docs/docs/plugins/plugins.md +852 -0
  84. synapse_sdk/devtools/docs/docs/quickstart.md +78 -0
  85. synapse_sdk/devtools/docs/docs/troubleshooting.md +519 -0
  86. synapse_sdk/devtools/docs/docs/tutorial-basics/_category_.json +8 -0
  87. synapse_sdk/devtools/docs/docs/tutorial-basics/congratulations.md +23 -0
  88. synapse_sdk/devtools/docs/docs/tutorial-basics/create-a-blog-post.md +34 -0
  89. synapse_sdk/devtools/docs/docs/tutorial-basics/create-a-document.md +57 -0
  90. synapse_sdk/devtools/docs/docs/tutorial-basics/create-a-page.md +43 -0
  91. synapse_sdk/devtools/docs/docs/tutorial-basics/deploy-your-site.md +31 -0
  92. synapse_sdk/devtools/docs/docs/tutorial-basics/markdown-features.mdx +152 -0
  93. synapse_sdk/devtools/docs/docs/tutorial-extras/_category_.json +7 -0
  94. synapse_sdk/devtools/docs/docs/tutorial-extras/img/docsVersionDropdown.png +0 -0
  95. synapse_sdk/devtools/docs/docs/tutorial-extras/img/localeDropdown.png +0 -0
  96. synapse_sdk/devtools/docs/docs/tutorial-extras/manage-docs-versions.md +55 -0
  97. synapse_sdk/devtools/docs/docs/tutorial-extras/translate-your-site.md +88 -0
  98. synapse_sdk/devtools/docs/docusaurus.config.ts +148 -0
  99. synapse_sdk/devtools/docs/i18n/ko/code.json +325 -0
  100. synapse_sdk/devtools/docs/i18n/ko/docusaurus-plugin-content-docs/current/api/clients/agent.md +43 -0
  101. synapse_sdk/devtools/docs/i18n/ko/docusaurus-plugin-content-docs/current/api/clients/annotation-mixin.md +289 -0
  102. synapse_sdk/devtools/docs/i18n/ko/docusaurus-plugin-content-docs/current/api/clients/backend.md +420 -0
  103. synapse_sdk/devtools/docs/i18n/ko/docusaurus-plugin-content-docs/current/api/clients/base.md +257 -0
  104. synapse_sdk/devtools/docs/i18n/ko/docusaurus-plugin-content-docs/current/api/clients/core-mixin.md +417 -0
  105. synapse_sdk/devtools/docs/i18n/ko/docusaurus-plugin-content-docs/current/api/clients/data-collection-mixin.md +356 -0
  106. synapse_sdk/devtools/docs/i18n/ko/docusaurus-plugin-content-docs/current/api/clients/hitl-mixin.md +192 -0
  107. synapse_sdk/devtools/docs/i18n/ko/docusaurus-plugin-content-docs/current/api/clients/index.md +391 -0
  108. synapse_sdk/devtools/docs/i18n/ko/docusaurus-plugin-content-docs/current/api/clients/integration-mixin.md +479 -0
  109. synapse_sdk/devtools/docs/i18n/ko/docusaurus-plugin-content-docs/current/api/clients/ml-mixin.md +284 -0
  110. synapse_sdk/devtools/docs/i18n/ko/docusaurus-plugin-content-docs/current/api/clients/ray.md +342 -0
  111. synapse_sdk/devtools/docs/i18n/ko/docusaurus-plugin-content-docs/current/api/index.md +52 -0
  112. synapse_sdk/devtools/docs/i18n/ko/docusaurus-plugin-content-docs/current/api/plugins/models.md +114 -0
  113. synapse_sdk/devtools/docs/i18n/ko/docusaurus-plugin-content-docs/current/categories.md +0 -0
  114. synapse_sdk/devtools/docs/i18n/ko/docusaurus-plugin-content-docs/current/cli-usage.md +280 -0
  115. synapse_sdk/devtools/docs/i18n/ko/docusaurus-plugin-content-docs/current/concepts/index.md +38 -0
  116. synapse_sdk/devtools/docs/i18n/ko/docusaurus-plugin-content-docs/current/configuration.md +83 -0
  117. synapse_sdk/devtools/docs/i18n/ko/docusaurus-plugin-content-docs/current/contributing.md +306 -0
  118. synapse_sdk/devtools/docs/i18n/ko/docusaurus-plugin-content-docs/current/examples/index.md +29 -0
  119. synapse_sdk/devtools/docs/i18n/ko/docusaurus-plugin-content-docs/current/faq.md +179 -0
  120. synapse_sdk/devtools/docs/i18n/ko/docusaurus-plugin-content-docs/current/features/converters/index.md +30 -0
  121. synapse_sdk/devtools/docs/i18n/ko/docusaurus-plugin-content-docs/current/features/index.md +24 -0
  122. synapse_sdk/devtools/docs/i18n/ko/docusaurus-plugin-content-docs/current/features/utils/file.md +415 -0
  123. synapse_sdk/devtools/docs/i18n/ko/docusaurus-plugin-content-docs/current/features/utils/network.md +378 -0
  124. synapse_sdk/devtools/docs/i18n/ko/docusaurus-plugin-content-docs/current/features/utils/storage.md +60 -0
  125. synapse_sdk/devtools/docs/i18n/ko/docusaurus-plugin-content-docs/current/features/utils/types.md +51 -0
  126. synapse_sdk/devtools/docs/i18n/ko/docusaurus-plugin-content-docs/current/installation.md +94 -0
  127. synapse_sdk/devtools/docs/i18n/ko/docusaurus-plugin-content-docs/current/introduction.md +47 -0
  128. synapse_sdk/devtools/docs/i18n/ko/docusaurus-plugin-content-docs/current/plugins/categories/neural-net-plugins/train-action-overview.md +815 -0
  129. synapse_sdk/devtools/docs/i18n/ko/docusaurus-plugin-content-docs/current/plugins/categories/pre-annotation-plugins/pre-annotation-plugin-overview.md +198 -0
  130. synapse_sdk/devtools/docs/i18n/ko/docusaurus-plugin-content-docs/current/plugins/categories/pre-annotation-plugins/to-task-action-development.md +1645 -0
  131. synapse_sdk/devtools/docs/i18n/ko/docusaurus-plugin-content-docs/current/plugins/categories/pre-annotation-plugins/to-task-overview.md +717 -0
  132. synapse_sdk/devtools/docs/i18n/ko/docusaurus-plugin-content-docs/current/plugins/categories/pre-annotation-plugins/to-task-template-development.md +1380 -0
  133. synapse_sdk/devtools/docs/i18n/ko/docusaurus-plugin-content-docs/current/plugins/categories/upload-plugins/upload-plugin-action.md +948 -0
  134. synapse_sdk/devtools/docs/i18n/ko/docusaurus-plugin-content-docs/current/plugins/categories/upload-plugins/upload-plugin-overview.md +544 -0
  135. synapse_sdk/devtools/docs/i18n/ko/docusaurus-plugin-content-docs/current/plugins/categories/upload-plugins/upload-plugin-template.md +766 -0
  136. synapse_sdk/devtools/docs/i18n/ko/docusaurus-plugin-content-docs/current/plugins/export-plugins.md +1092 -0
  137. synapse_sdk/devtools/docs/i18n/ko/docusaurus-plugin-content-docs/current/plugins/plugins.md +117 -0
  138. synapse_sdk/devtools/docs/i18n/ko/docusaurus-plugin-content-docs/current/quickstart.md +78 -0
  139. synapse_sdk/devtools/docs/i18n/ko/docusaurus-plugin-content-docs/current/troubleshooting.md +519 -0
  140. synapse_sdk/devtools/docs/i18n/ko/docusaurus-plugin-content-docs/current.json +34 -0
  141. synapse_sdk/devtools/docs/i18n/ko/docusaurus-theme-classic/footer.json +42 -0
  142. synapse_sdk/devtools/docs/i18n/ko/docusaurus-theme-classic/navbar.json +18 -0
  143. synapse_sdk/devtools/docs/package-lock.json +18784 -0
  144. synapse_sdk/devtools/docs/package.json +48 -0
  145. synapse_sdk/devtools/docs/sidebars.ts +122 -0
  146. synapse_sdk/devtools/docs/src/components/HomepageFeatures/index.tsx +71 -0
  147. synapse_sdk/devtools/docs/src/components/HomepageFeatures/styles.module.css +11 -0
  148. synapse_sdk/devtools/docs/src/css/custom.css +30 -0
  149. synapse_sdk/devtools/docs/src/pages/index.module.css +23 -0
  150. synapse_sdk/devtools/docs/src/pages/index.tsx +21 -0
  151. synapse_sdk/devtools/docs/src/pages/markdown-page.md +7 -0
  152. synapse_sdk/devtools/docs/static/.nojekyll +0 -0
  153. synapse_sdk/devtools/docs/static/img/docusaurus-social-card.jpg +0 -0
  154. synapse_sdk/devtools/docs/static/img/docusaurus.png +0 -0
  155. synapse_sdk/devtools/docs/static/img/favicon.ico +0 -0
  156. synapse_sdk/devtools/docs/static/img/logo.png +0 -0
  157. synapse_sdk/devtools/docs/static/img/undraw_docusaurus_mountain.svg +171 -0
  158. synapse_sdk/devtools/docs/static/img/undraw_docusaurus_react.svg +170 -0
  159. synapse_sdk/devtools/docs/static/img/undraw_docusaurus_tree.svg +40 -0
  160. synapse_sdk/devtools/docs/tsconfig.json +8 -0
  161. synapse_sdk/devtools/server.py +41 -0
  162. synapse_sdk/devtools/streamlit_app/__init__.py +5 -0
  163. synapse_sdk/devtools/streamlit_app/app.py +128 -0
  164. synapse_sdk/devtools/streamlit_app/services/__init__.py +11 -0
  165. synapse_sdk/devtools/streamlit_app/services/job_service.py +233 -0
  166. synapse_sdk/devtools/streamlit_app/services/plugin_service.py +236 -0
  167. synapse_sdk/devtools/streamlit_app/services/serve_service.py +95 -0
  168. synapse_sdk/devtools/streamlit_app/ui/__init__.py +15 -0
  169. synapse_sdk/devtools/streamlit_app/ui/config_tab.py +76 -0
  170. synapse_sdk/devtools/streamlit_app/ui/deployment_tab.py +66 -0
  171. synapse_sdk/devtools/streamlit_app/ui/http_tab.py +125 -0
  172. synapse_sdk/devtools/streamlit_app/ui/jobs_tab.py +573 -0
  173. synapse_sdk/devtools/streamlit_app/ui/serve_tab.py +346 -0
  174. synapse_sdk/devtools/streamlit_app/ui/status_bar.py +118 -0
  175. synapse_sdk/devtools/streamlit_app/utils/__init__.py +40 -0
  176. synapse_sdk/devtools/streamlit_app/utils/json_viewer.py +197 -0
  177. synapse_sdk/devtools/streamlit_app/utils/log_formatter.py +38 -0
  178. synapse_sdk/devtools/streamlit_app/utils/styles.py +241 -0
  179. synapse_sdk/devtools/streamlit_app/utils/ui_components.py +289 -0
  180. synapse_sdk/devtools/streamlit_app.py +10 -0
  181. synapse_sdk/loggers.py +74 -9
  182. synapse_sdk/plugins/README.md +1340 -0
  183. synapse_sdk/plugins/__init__.py +0 -13
  184. synapse_sdk/plugins/categories/base.py +145 -30
  185. synapse_sdk/plugins/categories/data_validation/actions/validation.py +72 -0
  186. synapse_sdk/plugins/categories/data_validation/templates/plugin/validation.py +33 -5
  187. synapse_sdk/plugins/categories/export/actions/__init__.py +3 -0
  188. synapse_sdk/plugins/categories/export/actions/export/__init__.py +28 -0
  189. synapse_sdk/plugins/categories/export/actions/export/action.py +165 -0
  190. synapse_sdk/plugins/categories/export/actions/export/enums.py +113 -0
  191. synapse_sdk/plugins/categories/export/actions/export/exceptions.py +53 -0
  192. synapse_sdk/plugins/categories/export/actions/export/models.py +74 -0
  193. synapse_sdk/plugins/categories/export/actions/export/run.py +195 -0
  194. synapse_sdk/plugins/categories/export/actions/export/utils.py +187 -0
  195. synapse_sdk/plugins/categories/export/templates/config.yaml +21 -0
  196. synapse_sdk/plugins/categories/export/templates/plugin/__init__.py +390 -0
  197. synapse_sdk/plugins/categories/export/templates/plugin/export.py +160 -0
  198. synapse_sdk/plugins/categories/neural_net/actions/deployment.py +29 -14
  199. synapse_sdk/plugins/categories/neural_net/actions/inference.py +13 -1
  200. synapse_sdk/plugins/categories/neural_net/actions/train.py +1084 -38
  201. synapse_sdk/plugins/categories/neural_net/actions/tune.py +534 -0
  202. synapse_sdk/plugins/categories/neural_net/base/__init__.py +0 -0
  203. synapse_sdk/plugins/categories/neural_net/base/inference.py +37 -0
  204. synapse_sdk/plugins/categories/neural_net/templates/config.yaml +30 -5
  205. synapse_sdk/plugins/categories/neural_net/templates/plugin/inference.py +26 -10
  206. synapse_sdk/plugins/categories/pre_annotation/actions/__init__.py +4 -0
  207. synapse_sdk/plugins/categories/pre_annotation/actions/pre_annotation/__init__.py +3 -0
  208. synapse_sdk/plugins/categories/{export/actions/export.py → pre_annotation/actions/pre_annotation/action.py} +4 -4
  209. synapse_sdk/plugins/categories/pre_annotation/actions/to_task/__init__.py +28 -0
  210. synapse_sdk/plugins/categories/pre_annotation/actions/to_task/action.py +145 -0
  211. synapse_sdk/plugins/categories/pre_annotation/actions/to_task/enums.py +269 -0
  212. synapse_sdk/plugins/categories/pre_annotation/actions/to_task/exceptions.py +14 -0
  213. synapse_sdk/plugins/categories/pre_annotation/actions/to_task/factory.py +76 -0
  214. synapse_sdk/plugins/categories/pre_annotation/actions/to_task/models.py +97 -0
  215. synapse_sdk/plugins/categories/pre_annotation/actions/to_task/orchestrator.py +250 -0
  216. synapse_sdk/plugins/categories/pre_annotation/actions/to_task/run.py +64 -0
  217. synapse_sdk/plugins/categories/pre_annotation/actions/to_task/strategies/__init__.py +17 -0
  218. synapse_sdk/plugins/categories/pre_annotation/actions/to_task/strategies/annotation.py +287 -0
  219. synapse_sdk/plugins/categories/pre_annotation/actions/to_task/strategies/base.py +170 -0
  220. synapse_sdk/plugins/categories/pre_annotation/actions/to_task/strategies/extraction.py +83 -0
  221. synapse_sdk/plugins/categories/pre_annotation/actions/to_task/strategies/metrics.py +87 -0
  222. synapse_sdk/plugins/categories/pre_annotation/actions/to_task/strategies/preprocessor.py +127 -0
  223. synapse_sdk/plugins/categories/pre_annotation/actions/to_task/strategies/validation.py +143 -0
  224. synapse_sdk/plugins/categories/pre_annotation/actions/to_task.py +966 -0
  225. synapse_sdk/plugins/categories/pre_annotation/templates/config.yaml +19 -0
  226. synapse_sdk/plugins/categories/pre_annotation/templates/plugin/to_task.py +40 -0
  227. synapse_sdk/plugins/categories/smart_tool/templates/config.yaml +5 -2
  228. synapse_sdk/plugins/categories/upload/__init__.py +0 -0
  229. synapse_sdk/plugins/categories/upload/actions/__init__.py +0 -0
  230. synapse_sdk/plugins/categories/upload/actions/upload/__init__.py +19 -0
  231. synapse_sdk/plugins/categories/upload/actions/upload/action.py +232 -0
  232. synapse_sdk/plugins/categories/upload/actions/upload/context.py +185 -0
  233. synapse_sdk/plugins/categories/upload/actions/upload/enums.py +471 -0
  234. synapse_sdk/plugins/categories/upload/actions/upload/exceptions.py +36 -0
  235. synapse_sdk/plugins/categories/upload/actions/upload/factory.py +138 -0
  236. synapse_sdk/plugins/categories/upload/actions/upload/models.py +203 -0
  237. synapse_sdk/plugins/categories/upload/actions/upload/orchestrator.py +183 -0
  238. synapse_sdk/plugins/categories/upload/actions/upload/registry.py +113 -0
  239. synapse_sdk/plugins/categories/upload/actions/upload/run.py +179 -0
  240. synapse_sdk/plugins/categories/upload/actions/upload/steps/__init__.py +1 -0
  241. synapse_sdk/plugins/categories/upload/actions/upload/steps/base.py +107 -0
  242. synapse_sdk/plugins/categories/upload/actions/upload/steps/cleanup.py +62 -0
  243. synapse_sdk/plugins/categories/upload/actions/upload/steps/collection.py +63 -0
  244. synapse_sdk/plugins/categories/upload/actions/upload/steps/generate.py +84 -0
  245. synapse_sdk/plugins/categories/upload/actions/upload/steps/initialize.py +82 -0
  246. synapse_sdk/plugins/categories/upload/actions/upload/steps/metadata.py +235 -0
  247. synapse_sdk/plugins/categories/upload/actions/upload/steps/organize.py +203 -0
  248. synapse_sdk/plugins/categories/upload/actions/upload/steps/upload.py +97 -0
  249. synapse_sdk/plugins/categories/upload/actions/upload/steps/validate.py +71 -0
  250. synapse_sdk/plugins/categories/upload/actions/upload/strategies/__init__.py +1 -0
  251. synapse_sdk/plugins/categories/upload/actions/upload/strategies/base.py +82 -0
  252. synapse_sdk/plugins/categories/upload/actions/upload/strategies/data_unit/__init__.py +1 -0
  253. synapse_sdk/plugins/categories/upload/actions/upload/strategies/data_unit/batch.py +39 -0
  254. synapse_sdk/plugins/categories/upload/actions/upload/strategies/data_unit/single.py +29 -0
  255. synapse_sdk/plugins/categories/upload/actions/upload/strategies/file_discovery/__init__.py +1 -0
  256. synapse_sdk/plugins/categories/upload/actions/upload/strategies/file_discovery/flat.py +258 -0
  257. synapse_sdk/plugins/categories/upload/actions/upload/strategies/file_discovery/recursive.py +281 -0
  258. synapse_sdk/plugins/categories/upload/actions/upload/strategies/metadata/__init__.py +1 -0
  259. synapse_sdk/plugins/categories/upload/actions/upload/strategies/metadata/excel.py +174 -0
  260. synapse_sdk/plugins/categories/upload/actions/upload/strategies/metadata/none.py +16 -0
  261. synapse_sdk/plugins/categories/upload/actions/upload/strategies/upload/__init__.py +1 -0
  262. synapse_sdk/plugins/categories/upload/actions/upload/strategies/upload/sync.py +84 -0
  263. synapse_sdk/plugins/categories/upload/actions/upload/strategies/validation/__init__.py +1 -0
  264. synapse_sdk/plugins/categories/upload/actions/upload/strategies/validation/default.py +60 -0
  265. synapse_sdk/plugins/categories/upload/actions/upload/utils.py +250 -0
  266. synapse_sdk/plugins/categories/upload/templates/README.md +470 -0
  267. synapse_sdk/plugins/categories/upload/templates/config.yaml +33 -0
  268. synapse_sdk/plugins/categories/upload/templates/plugin/__init__.py +294 -0
  269. synapse_sdk/plugins/categories/upload/templates/plugin/upload.py +102 -0
  270. synapse_sdk/plugins/enums.py +3 -1
  271. synapse_sdk/plugins/models.py +140 -16
  272. synapse_sdk/plugins/templates/plugin-config-schema.json +406 -0
  273. synapse_sdk/plugins/templates/schema.json +491 -0
  274. synapse_sdk/plugins/templates/synapse-{{cookiecutter.plugin_code}}-plugin/config.yaml +1 -0
  275. synapse_sdk/plugins/templates/synapse-{{cookiecutter.plugin_code}}-plugin/requirements.txt +1 -1
  276. synapse_sdk/plugins/utils/__init__.py +46 -0
  277. synapse_sdk/plugins/utils/actions.py +119 -0
  278. synapse_sdk/plugins/utils/config.py +203 -0
  279. synapse_sdk/plugins/utils/legacy.py +95 -0
  280. synapse_sdk/plugins/utils/ray_gcs.py +66 -0
  281. synapse_sdk/plugins/utils/registry.py +58 -0
  282. synapse_sdk/shared/__init__.py +25 -0
  283. synapse_sdk/shared/enums.py +93 -0
  284. synapse_sdk/types.py +19 -0
  285. synapse_sdk/utils/converters/__init__.py +240 -0
  286. synapse_sdk/utils/converters/coco/__init__.py +0 -0
  287. synapse_sdk/utils/converters/coco/from_dm.py +322 -0
  288. synapse_sdk/utils/converters/coco/to_dm.py +215 -0
  289. synapse_sdk/utils/converters/dm/__init__.py +56 -0
  290. synapse_sdk/utils/converters/dm/from_v1.py +627 -0
  291. synapse_sdk/utils/converters/dm/to_v1.py +367 -0
  292. synapse_sdk/utils/converters/pascal/__init__.py +0 -0
  293. synapse_sdk/utils/converters/pascal/from_dm.py +244 -0
  294. synapse_sdk/utils/converters/pascal/to_dm.py +214 -0
  295. synapse_sdk/utils/converters/yolo/__init__.py +0 -0
  296. synapse_sdk/utils/converters/yolo/from_dm.py +384 -0
  297. synapse_sdk/utils/converters/yolo/to_dm.py +267 -0
  298. synapse_sdk/utils/dataset.py +46 -0
  299. synapse_sdk/utils/encryption.py +158 -0
  300. synapse_sdk/utils/file/__init__.py +39 -0
  301. synapse_sdk/utils/file/archive.py +32 -0
  302. synapse_sdk/utils/file/checksum.py +56 -0
  303. synapse_sdk/utils/file/chunking.py +31 -0
  304. synapse_sdk/utils/file/download.py +385 -0
  305. synapse_sdk/utils/file/encoding.py +40 -0
  306. synapse_sdk/utils/file/io.py +22 -0
  307. synapse_sdk/utils/file/video/__init__.py +29 -0
  308. synapse_sdk/utils/file/video/transcode.py +307 -0
  309. synapse_sdk/utils/file.py.backup +301 -0
  310. synapse_sdk/utils/http.py +138 -0
  311. synapse_sdk/utils/network.py +309 -0
  312. synapse_sdk/utils/storage/__init__.py +72 -0
  313. synapse_sdk/utils/storage/providers/__init__.py +183 -0
  314. synapse_sdk/utils/storage/providers/file_system.py +134 -0
  315. synapse_sdk/utils/storage/providers/gcp.py +13 -0
  316. synapse_sdk/utils/storage/providers/http.py +190 -0
  317. synapse_sdk/utils/storage/providers/s3.py +91 -0
  318. synapse_sdk/utils/storage/providers/sftp.py +47 -0
  319. synapse_sdk/utils/storage/registry.py +17 -0
  320. synapse_sdk-2025.11.7.dist-info/METADATA +122 -0
  321. synapse_sdk-2025.11.7.dist-info/RECORD +386 -0
  322. {synapse_sdk-1.0.0a13.dist-info → synapse_sdk-2025.11.7.dist-info}/WHEEL +1 -1
  323. synapse_sdk/clients/backend/dataset.py +0 -51
  324. synapse_sdk/plugins/categories/import/actions/import.py +0 -10
  325. synapse_sdk/plugins/cli/__init__.py +0 -21
  326. synapse_sdk/plugins/cli/publish.py +0 -37
  327. synapse_sdk/plugins/templates/synapse-{{cookiecutter.plugin_code}}-plugin/.env +0 -24
  328. synapse_sdk/plugins/templates/synapse-{{cookiecutter.plugin_code}}-plugin/.env.dist +0 -24
  329. synapse_sdk/plugins/templates/synapse-{{cookiecutter.plugin_code}}-plugin/main.py +0 -4
  330. synapse_sdk/plugins/utils.py +0 -50
  331. synapse_sdk/utils/file.py +0 -87
  332. synapse_sdk/utils/storage.py +0 -91
  333. synapse_sdk-1.0.0a13.dist-info/METADATA +0 -43
  334. synapse_sdk-1.0.0a13.dist-info/RECORD +0 -111
  335. /synapse_sdk/{plugins/categories/import → clients/validators}/__init__.py +0 -0
  336. /synapse_sdk/{plugins/categories/import/actions → devtools}/__init__.py +0 -0
  337. {synapse_sdk-1.0.0a13.dist-info → synapse_sdk-2025.11.7.dist-info}/entry_points.txt +0 -0
  338. {synapse_sdk-1.0.0a13.dist-info → synapse_sdk-2025.11.7.dist-info/licenses}/LICENSE +0 -0
  339. {synapse_sdk-1.0.0a13.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 레퍼런스