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.
- synapse_sdk/__init__.py +24 -0
- synapse_sdk/cli/__init__.py +310 -5
- synapse_sdk/cli/alias/__init__.py +22 -0
- synapse_sdk/cli/alias/create.py +36 -0
- synapse_sdk/cli/alias/dataclass.py +31 -0
- synapse_sdk/cli/alias/default.py +16 -0
- synapse_sdk/cli/alias/delete.py +15 -0
- synapse_sdk/cli/alias/list.py +19 -0
- synapse_sdk/cli/alias/read.py +15 -0
- synapse_sdk/cli/alias/update.py +17 -0
- synapse_sdk/cli/alias/utils.py +61 -0
- synapse_sdk/cli/code_server.py +687 -0
- synapse_sdk/cli/config.py +440 -0
- synapse_sdk/cli/devtools.py +90 -0
- synapse_sdk/cli/plugin/__init__.py +33 -0
- synapse_sdk/cli/{create_plugin.py → plugin/create.py} +2 -2
- synapse_sdk/cli/plugin/publish.py +45 -0
- synapse_sdk/{plugins/cli → cli/plugin}/run.py +12 -5
- synapse_sdk/clients/agent/__init__.py +9 -3
- synapse_sdk/clients/agent/container.py +133 -0
- synapse_sdk/clients/agent/core.py +19 -0
- synapse_sdk/clients/agent/ray.py +298 -9
- synapse_sdk/clients/backend/__init__.py +41 -12
- synapse_sdk/clients/backend/annotation.py +13 -5
- synapse_sdk/clients/backend/core.py +59 -0
- synapse_sdk/clients/backend/data_collection.py +186 -0
- synapse_sdk/clients/backend/hitl.py +17 -0
- synapse_sdk/clients/backend/integration.py +19 -4
- synapse_sdk/clients/backend/ml.py +10 -7
- synapse_sdk/clients/backend/models.py +78 -0
- synapse_sdk/clients/base.py +381 -34
- synapse_sdk/clients/ray/serve.py +2 -0
- synapse_sdk/clients/validators/collections.py +31 -0
- synapse_sdk/devtools/config.py +94 -0
- synapse_sdk/devtools/docs/.gitignore +20 -0
- synapse_sdk/devtools/docs/README.md +41 -0
- synapse_sdk/devtools/docs/blog/2019-05-28-first-blog-post.md +12 -0
- synapse_sdk/devtools/docs/blog/2019-05-29-long-blog-post.md +44 -0
- synapse_sdk/devtools/docs/blog/2021-08-01-mdx-blog-post.mdx +24 -0
- synapse_sdk/devtools/docs/blog/2021-08-26-welcome/docusaurus-plushie-banner.jpeg +0 -0
- synapse_sdk/devtools/docs/blog/2021-08-26-welcome/index.md +29 -0
- synapse_sdk/devtools/docs/blog/authors.yml +25 -0
- synapse_sdk/devtools/docs/blog/tags.yml +19 -0
- synapse_sdk/devtools/docs/docs/api/clients/agent.md +43 -0
- synapse_sdk/devtools/docs/docs/api/clients/annotation-mixin.md +378 -0
- synapse_sdk/devtools/docs/docs/api/clients/backend.md +420 -0
- synapse_sdk/devtools/docs/docs/api/clients/base.md +257 -0
- synapse_sdk/devtools/docs/docs/api/clients/core-mixin.md +477 -0
- synapse_sdk/devtools/docs/docs/api/clients/data-collection-mixin.md +422 -0
- synapse_sdk/devtools/docs/docs/api/clients/hitl-mixin.md +554 -0
- synapse_sdk/devtools/docs/docs/api/clients/index.md +391 -0
- synapse_sdk/devtools/docs/docs/api/clients/integration-mixin.md +571 -0
- synapse_sdk/devtools/docs/docs/api/clients/ml-mixin.md +578 -0
- synapse_sdk/devtools/docs/docs/api/clients/ray.md +342 -0
- synapse_sdk/devtools/docs/docs/api/index.md +52 -0
- synapse_sdk/devtools/docs/docs/api/plugins/categories.md +43 -0
- synapse_sdk/devtools/docs/docs/api/plugins/models.md +114 -0
- synapse_sdk/devtools/docs/docs/api/plugins/utils.md +328 -0
- synapse_sdk/devtools/docs/docs/categories.md +0 -0
- synapse_sdk/devtools/docs/docs/cli-usage.md +280 -0
- synapse_sdk/devtools/docs/docs/concepts/index.md +38 -0
- synapse_sdk/devtools/docs/docs/configuration.md +83 -0
- synapse_sdk/devtools/docs/docs/contributing.md +306 -0
- synapse_sdk/devtools/docs/docs/examples/index.md +29 -0
- synapse_sdk/devtools/docs/docs/faq.md +179 -0
- synapse_sdk/devtools/docs/docs/features/converters/index.md +455 -0
- synapse_sdk/devtools/docs/docs/features/index.md +24 -0
- synapse_sdk/devtools/docs/docs/features/utils/file.md +415 -0
- synapse_sdk/devtools/docs/docs/features/utils/network.md +378 -0
- synapse_sdk/devtools/docs/docs/features/utils/storage.md +57 -0
- synapse_sdk/devtools/docs/docs/features/utils/types.md +51 -0
- synapse_sdk/devtools/docs/docs/installation.md +94 -0
- synapse_sdk/devtools/docs/docs/introduction.md +47 -0
- synapse_sdk/devtools/docs/docs/plugins/categories/neural-net-plugins/train-action-overview.md +814 -0
- synapse_sdk/devtools/docs/docs/plugins/categories/pre-annotation-plugins/pre-annotation-plugin-overview.md +198 -0
- synapse_sdk/devtools/docs/docs/plugins/categories/pre-annotation-plugins/to-task-action-development.md +1645 -0
- synapse_sdk/devtools/docs/docs/plugins/categories/pre-annotation-plugins/to-task-overview.md +717 -0
- synapse_sdk/devtools/docs/docs/plugins/categories/pre-annotation-plugins/to-task-template-development.md +1380 -0
- synapse_sdk/devtools/docs/docs/plugins/categories/upload-plugins/upload-plugin-action.md +948 -0
- synapse_sdk/devtools/docs/docs/plugins/categories/upload-plugins/upload-plugin-overview.md +544 -0
- synapse_sdk/devtools/docs/docs/plugins/categories/upload-plugins/upload-plugin-template.md +766 -0
- synapse_sdk/devtools/docs/docs/plugins/export-plugins.md +1092 -0
- synapse_sdk/devtools/docs/docs/plugins/plugins.md +852 -0
- synapse_sdk/devtools/docs/docs/quickstart.md +78 -0
- synapse_sdk/devtools/docs/docs/troubleshooting.md +519 -0
- synapse_sdk/devtools/docs/docs/tutorial-basics/_category_.json +8 -0
- synapse_sdk/devtools/docs/docs/tutorial-basics/congratulations.md +23 -0
- synapse_sdk/devtools/docs/docs/tutorial-basics/create-a-blog-post.md +34 -0
- synapse_sdk/devtools/docs/docs/tutorial-basics/create-a-document.md +57 -0
- synapse_sdk/devtools/docs/docs/tutorial-basics/create-a-page.md +43 -0
- synapse_sdk/devtools/docs/docs/tutorial-basics/deploy-your-site.md +31 -0
- synapse_sdk/devtools/docs/docs/tutorial-basics/markdown-features.mdx +152 -0
- synapse_sdk/devtools/docs/docs/tutorial-extras/_category_.json +7 -0
- synapse_sdk/devtools/docs/docs/tutorial-extras/img/docsVersionDropdown.png +0 -0
- synapse_sdk/devtools/docs/docs/tutorial-extras/img/localeDropdown.png +0 -0
- synapse_sdk/devtools/docs/docs/tutorial-extras/manage-docs-versions.md +55 -0
- synapse_sdk/devtools/docs/docs/tutorial-extras/translate-your-site.md +88 -0
- synapse_sdk/devtools/docs/docusaurus.config.ts +148 -0
- synapse_sdk/devtools/docs/i18n/ko/code.json +325 -0
- synapse_sdk/devtools/docs/i18n/ko/docusaurus-plugin-content-docs/current/api/clients/agent.md +43 -0
- synapse_sdk/devtools/docs/i18n/ko/docusaurus-plugin-content-docs/current/api/clients/annotation-mixin.md +289 -0
- synapse_sdk/devtools/docs/i18n/ko/docusaurus-plugin-content-docs/current/api/clients/backend.md +420 -0
- synapse_sdk/devtools/docs/i18n/ko/docusaurus-plugin-content-docs/current/api/clients/base.md +257 -0
- synapse_sdk/devtools/docs/i18n/ko/docusaurus-plugin-content-docs/current/api/clients/core-mixin.md +417 -0
- synapse_sdk/devtools/docs/i18n/ko/docusaurus-plugin-content-docs/current/api/clients/data-collection-mixin.md +356 -0
- synapse_sdk/devtools/docs/i18n/ko/docusaurus-plugin-content-docs/current/api/clients/hitl-mixin.md +192 -0
- synapse_sdk/devtools/docs/i18n/ko/docusaurus-plugin-content-docs/current/api/clients/index.md +391 -0
- synapse_sdk/devtools/docs/i18n/ko/docusaurus-plugin-content-docs/current/api/clients/integration-mixin.md +479 -0
- synapse_sdk/devtools/docs/i18n/ko/docusaurus-plugin-content-docs/current/api/clients/ml-mixin.md +284 -0
- synapse_sdk/devtools/docs/i18n/ko/docusaurus-plugin-content-docs/current/api/clients/ray.md +342 -0
- synapse_sdk/devtools/docs/i18n/ko/docusaurus-plugin-content-docs/current/api/index.md +52 -0
- synapse_sdk/devtools/docs/i18n/ko/docusaurus-plugin-content-docs/current/api/plugins/models.md +114 -0
- synapse_sdk/devtools/docs/i18n/ko/docusaurus-plugin-content-docs/current/categories.md +0 -0
- synapse_sdk/devtools/docs/i18n/ko/docusaurus-plugin-content-docs/current/cli-usage.md +280 -0
- synapse_sdk/devtools/docs/i18n/ko/docusaurus-plugin-content-docs/current/concepts/index.md +38 -0
- synapse_sdk/devtools/docs/i18n/ko/docusaurus-plugin-content-docs/current/configuration.md +83 -0
- synapse_sdk/devtools/docs/i18n/ko/docusaurus-plugin-content-docs/current/contributing.md +306 -0
- synapse_sdk/devtools/docs/i18n/ko/docusaurus-plugin-content-docs/current/examples/index.md +29 -0
- synapse_sdk/devtools/docs/i18n/ko/docusaurus-plugin-content-docs/current/faq.md +179 -0
- synapse_sdk/devtools/docs/i18n/ko/docusaurus-plugin-content-docs/current/features/converters/index.md +30 -0
- synapse_sdk/devtools/docs/i18n/ko/docusaurus-plugin-content-docs/current/features/index.md +24 -0
- synapse_sdk/devtools/docs/i18n/ko/docusaurus-plugin-content-docs/current/features/utils/file.md +415 -0
- synapse_sdk/devtools/docs/i18n/ko/docusaurus-plugin-content-docs/current/features/utils/network.md +378 -0
- synapse_sdk/devtools/docs/i18n/ko/docusaurus-plugin-content-docs/current/features/utils/storage.md +60 -0
- synapse_sdk/devtools/docs/i18n/ko/docusaurus-plugin-content-docs/current/features/utils/types.md +51 -0
- synapse_sdk/devtools/docs/i18n/ko/docusaurus-plugin-content-docs/current/installation.md +94 -0
- synapse_sdk/devtools/docs/i18n/ko/docusaurus-plugin-content-docs/current/introduction.md +47 -0
- synapse_sdk/devtools/docs/i18n/ko/docusaurus-plugin-content-docs/current/plugins/categories/neural-net-plugins/train-action-overview.md +815 -0
- synapse_sdk/devtools/docs/i18n/ko/docusaurus-plugin-content-docs/current/plugins/categories/pre-annotation-plugins/pre-annotation-plugin-overview.md +198 -0
- synapse_sdk/devtools/docs/i18n/ko/docusaurus-plugin-content-docs/current/plugins/categories/pre-annotation-plugins/to-task-action-development.md +1645 -0
- synapse_sdk/devtools/docs/i18n/ko/docusaurus-plugin-content-docs/current/plugins/categories/pre-annotation-plugins/to-task-overview.md +717 -0
- synapse_sdk/devtools/docs/i18n/ko/docusaurus-plugin-content-docs/current/plugins/categories/pre-annotation-plugins/to-task-template-development.md +1380 -0
- synapse_sdk/devtools/docs/i18n/ko/docusaurus-plugin-content-docs/current/plugins/categories/upload-plugins/upload-plugin-action.md +948 -0
- synapse_sdk/devtools/docs/i18n/ko/docusaurus-plugin-content-docs/current/plugins/categories/upload-plugins/upload-plugin-overview.md +544 -0
- synapse_sdk/devtools/docs/i18n/ko/docusaurus-plugin-content-docs/current/plugins/categories/upload-plugins/upload-plugin-template.md +766 -0
- synapse_sdk/devtools/docs/i18n/ko/docusaurus-plugin-content-docs/current/plugins/export-plugins.md +1092 -0
- synapse_sdk/devtools/docs/i18n/ko/docusaurus-plugin-content-docs/current/plugins/plugins.md +117 -0
- synapse_sdk/devtools/docs/i18n/ko/docusaurus-plugin-content-docs/current/quickstart.md +78 -0
- synapse_sdk/devtools/docs/i18n/ko/docusaurus-plugin-content-docs/current/troubleshooting.md +519 -0
- synapse_sdk/devtools/docs/i18n/ko/docusaurus-plugin-content-docs/current.json +34 -0
- synapse_sdk/devtools/docs/i18n/ko/docusaurus-theme-classic/footer.json +42 -0
- synapse_sdk/devtools/docs/i18n/ko/docusaurus-theme-classic/navbar.json +18 -0
- synapse_sdk/devtools/docs/package-lock.json +18784 -0
- synapse_sdk/devtools/docs/package.json +48 -0
- synapse_sdk/devtools/docs/sidebars.ts +122 -0
- synapse_sdk/devtools/docs/src/components/HomepageFeatures/index.tsx +71 -0
- synapse_sdk/devtools/docs/src/components/HomepageFeatures/styles.module.css +11 -0
- synapse_sdk/devtools/docs/src/css/custom.css +30 -0
- synapse_sdk/devtools/docs/src/pages/index.module.css +23 -0
- synapse_sdk/devtools/docs/src/pages/index.tsx +21 -0
- synapse_sdk/devtools/docs/src/pages/markdown-page.md +7 -0
- synapse_sdk/devtools/docs/static/.nojekyll +0 -0
- synapse_sdk/devtools/docs/static/img/docusaurus-social-card.jpg +0 -0
- synapse_sdk/devtools/docs/static/img/docusaurus.png +0 -0
- synapse_sdk/devtools/docs/static/img/favicon.ico +0 -0
- synapse_sdk/devtools/docs/static/img/logo.png +0 -0
- synapse_sdk/devtools/docs/static/img/undraw_docusaurus_mountain.svg +171 -0
- synapse_sdk/devtools/docs/static/img/undraw_docusaurus_react.svg +170 -0
- synapse_sdk/devtools/docs/static/img/undraw_docusaurus_tree.svg +40 -0
- synapse_sdk/devtools/docs/tsconfig.json +8 -0
- synapse_sdk/devtools/server.py +41 -0
- synapse_sdk/devtools/streamlit_app/__init__.py +5 -0
- synapse_sdk/devtools/streamlit_app/app.py +128 -0
- synapse_sdk/devtools/streamlit_app/services/__init__.py +11 -0
- synapse_sdk/devtools/streamlit_app/services/job_service.py +233 -0
- synapse_sdk/devtools/streamlit_app/services/plugin_service.py +236 -0
- synapse_sdk/devtools/streamlit_app/services/serve_service.py +95 -0
- synapse_sdk/devtools/streamlit_app/ui/__init__.py +15 -0
- synapse_sdk/devtools/streamlit_app/ui/config_tab.py +76 -0
- synapse_sdk/devtools/streamlit_app/ui/deployment_tab.py +66 -0
- synapse_sdk/devtools/streamlit_app/ui/http_tab.py +125 -0
- synapse_sdk/devtools/streamlit_app/ui/jobs_tab.py +573 -0
- synapse_sdk/devtools/streamlit_app/ui/serve_tab.py +346 -0
- synapse_sdk/devtools/streamlit_app/ui/status_bar.py +118 -0
- synapse_sdk/devtools/streamlit_app/utils/__init__.py +40 -0
- synapse_sdk/devtools/streamlit_app/utils/json_viewer.py +197 -0
- synapse_sdk/devtools/streamlit_app/utils/log_formatter.py +38 -0
- synapse_sdk/devtools/streamlit_app/utils/styles.py +241 -0
- synapse_sdk/devtools/streamlit_app/utils/ui_components.py +289 -0
- synapse_sdk/devtools/streamlit_app.py +10 -0
- synapse_sdk/loggers.py +74 -9
- synapse_sdk/plugins/README.md +1340 -0
- synapse_sdk/plugins/__init__.py +0 -13
- synapse_sdk/plugins/categories/base.py +145 -30
- synapse_sdk/plugins/categories/data_validation/actions/validation.py +72 -0
- synapse_sdk/plugins/categories/data_validation/templates/plugin/validation.py +33 -5
- synapse_sdk/plugins/categories/export/actions/__init__.py +3 -0
- synapse_sdk/plugins/categories/export/actions/export/__init__.py +28 -0
- synapse_sdk/plugins/categories/export/actions/export/action.py +165 -0
- synapse_sdk/plugins/categories/export/actions/export/enums.py +113 -0
- synapse_sdk/plugins/categories/export/actions/export/exceptions.py +53 -0
- synapse_sdk/plugins/categories/export/actions/export/models.py +74 -0
- synapse_sdk/plugins/categories/export/actions/export/run.py +195 -0
- synapse_sdk/plugins/categories/export/actions/export/utils.py +187 -0
- synapse_sdk/plugins/categories/export/templates/config.yaml +21 -0
- synapse_sdk/plugins/categories/export/templates/plugin/__init__.py +390 -0
- synapse_sdk/plugins/categories/export/templates/plugin/export.py +160 -0
- synapse_sdk/plugins/categories/neural_net/actions/deployment.py +29 -14
- synapse_sdk/plugins/categories/neural_net/actions/inference.py +13 -1
- synapse_sdk/plugins/categories/neural_net/actions/train.py +1084 -38
- synapse_sdk/plugins/categories/neural_net/actions/tune.py +534 -0
- synapse_sdk/plugins/categories/neural_net/base/__init__.py +0 -0
- synapse_sdk/plugins/categories/neural_net/base/inference.py +37 -0
- synapse_sdk/plugins/categories/neural_net/templates/config.yaml +30 -5
- synapse_sdk/plugins/categories/neural_net/templates/plugin/inference.py +26 -10
- synapse_sdk/plugins/categories/pre_annotation/actions/__init__.py +4 -0
- synapse_sdk/plugins/categories/pre_annotation/actions/pre_annotation/__init__.py +3 -0
- synapse_sdk/plugins/categories/{export/actions/export.py → pre_annotation/actions/pre_annotation/action.py} +4 -4
- synapse_sdk/plugins/categories/pre_annotation/actions/to_task/__init__.py +28 -0
- synapse_sdk/plugins/categories/pre_annotation/actions/to_task/action.py +145 -0
- synapse_sdk/plugins/categories/pre_annotation/actions/to_task/enums.py +269 -0
- synapse_sdk/plugins/categories/pre_annotation/actions/to_task/exceptions.py +14 -0
- synapse_sdk/plugins/categories/pre_annotation/actions/to_task/factory.py +76 -0
- synapse_sdk/plugins/categories/pre_annotation/actions/to_task/models.py +97 -0
- synapse_sdk/plugins/categories/pre_annotation/actions/to_task/orchestrator.py +250 -0
- synapse_sdk/plugins/categories/pre_annotation/actions/to_task/run.py +64 -0
- synapse_sdk/plugins/categories/pre_annotation/actions/to_task/strategies/__init__.py +17 -0
- synapse_sdk/plugins/categories/pre_annotation/actions/to_task/strategies/annotation.py +287 -0
- synapse_sdk/plugins/categories/pre_annotation/actions/to_task/strategies/base.py +170 -0
- synapse_sdk/plugins/categories/pre_annotation/actions/to_task/strategies/extraction.py +83 -0
- synapse_sdk/plugins/categories/pre_annotation/actions/to_task/strategies/metrics.py +87 -0
- synapse_sdk/plugins/categories/pre_annotation/actions/to_task/strategies/preprocessor.py +127 -0
- synapse_sdk/plugins/categories/pre_annotation/actions/to_task/strategies/validation.py +143 -0
- synapse_sdk/plugins/categories/pre_annotation/actions/to_task.py +966 -0
- synapse_sdk/plugins/categories/pre_annotation/templates/config.yaml +19 -0
- synapse_sdk/plugins/categories/pre_annotation/templates/plugin/to_task.py +40 -0
- synapse_sdk/plugins/categories/smart_tool/templates/config.yaml +5 -2
- synapse_sdk/plugins/categories/upload/__init__.py +0 -0
- synapse_sdk/plugins/categories/upload/actions/__init__.py +0 -0
- synapse_sdk/plugins/categories/upload/actions/upload/__init__.py +19 -0
- synapse_sdk/plugins/categories/upload/actions/upload/action.py +232 -0
- synapse_sdk/plugins/categories/upload/actions/upload/context.py +185 -0
- synapse_sdk/plugins/categories/upload/actions/upload/enums.py +471 -0
- synapse_sdk/plugins/categories/upload/actions/upload/exceptions.py +36 -0
- synapse_sdk/plugins/categories/upload/actions/upload/factory.py +138 -0
- synapse_sdk/plugins/categories/upload/actions/upload/models.py +203 -0
- synapse_sdk/plugins/categories/upload/actions/upload/orchestrator.py +183 -0
- synapse_sdk/plugins/categories/upload/actions/upload/registry.py +113 -0
- synapse_sdk/plugins/categories/upload/actions/upload/run.py +179 -0
- synapse_sdk/plugins/categories/upload/actions/upload/steps/__init__.py +1 -0
- synapse_sdk/plugins/categories/upload/actions/upload/steps/base.py +107 -0
- synapse_sdk/plugins/categories/upload/actions/upload/steps/cleanup.py +62 -0
- synapse_sdk/plugins/categories/upload/actions/upload/steps/collection.py +63 -0
- synapse_sdk/plugins/categories/upload/actions/upload/steps/generate.py +84 -0
- synapse_sdk/plugins/categories/upload/actions/upload/steps/initialize.py +82 -0
- synapse_sdk/plugins/categories/upload/actions/upload/steps/metadata.py +235 -0
- synapse_sdk/plugins/categories/upload/actions/upload/steps/organize.py +203 -0
- synapse_sdk/plugins/categories/upload/actions/upload/steps/upload.py +97 -0
- synapse_sdk/plugins/categories/upload/actions/upload/steps/validate.py +71 -0
- synapse_sdk/plugins/categories/upload/actions/upload/strategies/__init__.py +1 -0
- synapse_sdk/plugins/categories/upload/actions/upload/strategies/base.py +82 -0
- synapse_sdk/plugins/categories/upload/actions/upload/strategies/data_unit/__init__.py +1 -0
- synapse_sdk/plugins/categories/upload/actions/upload/strategies/data_unit/batch.py +39 -0
- synapse_sdk/plugins/categories/upload/actions/upload/strategies/data_unit/single.py +29 -0
- synapse_sdk/plugins/categories/upload/actions/upload/strategies/file_discovery/__init__.py +1 -0
- synapse_sdk/plugins/categories/upload/actions/upload/strategies/file_discovery/flat.py +258 -0
- synapse_sdk/plugins/categories/upload/actions/upload/strategies/file_discovery/recursive.py +281 -0
- synapse_sdk/plugins/categories/upload/actions/upload/strategies/metadata/__init__.py +1 -0
- synapse_sdk/plugins/categories/upload/actions/upload/strategies/metadata/excel.py +174 -0
- synapse_sdk/plugins/categories/upload/actions/upload/strategies/metadata/none.py +16 -0
- synapse_sdk/plugins/categories/upload/actions/upload/strategies/upload/__init__.py +1 -0
- synapse_sdk/plugins/categories/upload/actions/upload/strategies/upload/sync.py +84 -0
- synapse_sdk/plugins/categories/upload/actions/upload/strategies/validation/__init__.py +1 -0
- synapse_sdk/plugins/categories/upload/actions/upload/strategies/validation/default.py +60 -0
- synapse_sdk/plugins/categories/upload/actions/upload/utils.py +250 -0
- synapse_sdk/plugins/categories/upload/templates/README.md +470 -0
- synapse_sdk/plugins/categories/upload/templates/config.yaml +33 -0
- synapse_sdk/plugins/categories/upload/templates/plugin/__init__.py +294 -0
- synapse_sdk/plugins/categories/upload/templates/plugin/upload.py +102 -0
- synapse_sdk/plugins/enums.py +3 -1
- synapse_sdk/plugins/models.py +140 -16
- synapse_sdk/plugins/templates/plugin-config-schema.json +406 -0
- synapse_sdk/plugins/templates/schema.json +491 -0
- synapse_sdk/plugins/templates/synapse-{{cookiecutter.plugin_code}}-plugin/config.yaml +1 -0
- synapse_sdk/plugins/templates/synapse-{{cookiecutter.plugin_code}}-plugin/requirements.txt +1 -1
- synapse_sdk/plugins/utils/__init__.py +46 -0
- synapse_sdk/plugins/utils/actions.py +119 -0
- synapse_sdk/plugins/utils/config.py +203 -0
- synapse_sdk/plugins/utils/legacy.py +95 -0
- synapse_sdk/plugins/utils/ray_gcs.py +66 -0
- synapse_sdk/plugins/utils/registry.py +58 -0
- synapse_sdk/shared/__init__.py +25 -0
- synapse_sdk/shared/enums.py +93 -0
- synapse_sdk/types.py +19 -0
- synapse_sdk/utils/converters/__init__.py +240 -0
- synapse_sdk/utils/converters/coco/__init__.py +0 -0
- synapse_sdk/utils/converters/coco/from_dm.py +322 -0
- synapse_sdk/utils/converters/coco/to_dm.py +215 -0
- synapse_sdk/utils/converters/dm/__init__.py +56 -0
- synapse_sdk/utils/converters/dm/from_v1.py +627 -0
- synapse_sdk/utils/converters/dm/to_v1.py +367 -0
- synapse_sdk/utils/converters/pascal/__init__.py +0 -0
- synapse_sdk/utils/converters/pascal/from_dm.py +244 -0
- synapse_sdk/utils/converters/pascal/to_dm.py +214 -0
- synapse_sdk/utils/converters/yolo/__init__.py +0 -0
- synapse_sdk/utils/converters/yolo/from_dm.py +384 -0
- synapse_sdk/utils/converters/yolo/to_dm.py +267 -0
- synapse_sdk/utils/dataset.py +46 -0
- synapse_sdk/utils/encryption.py +158 -0
- synapse_sdk/utils/file/__init__.py +39 -0
- synapse_sdk/utils/file/archive.py +32 -0
- synapse_sdk/utils/file/checksum.py +56 -0
- synapse_sdk/utils/file/chunking.py +31 -0
- synapse_sdk/utils/file/download.py +385 -0
- synapse_sdk/utils/file/encoding.py +40 -0
- synapse_sdk/utils/file/io.py +22 -0
- synapse_sdk/utils/file/video/__init__.py +29 -0
- synapse_sdk/utils/file/video/transcode.py +307 -0
- synapse_sdk/utils/file.py.backup +301 -0
- synapse_sdk/utils/http.py +138 -0
- synapse_sdk/utils/network.py +309 -0
- synapse_sdk/utils/storage/__init__.py +72 -0
- synapse_sdk/utils/storage/providers/__init__.py +183 -0
- synapse_sdk/utils/storage/providers/file_system.py +134 -0
- synapse_sdk/utils/storage/providers/gcp.py +13 -0
- synapse_sdk/utils/storage/providers/http.py +190 -0
- synapse_sdk/utils/storage/providers/s3.py +91 -0
- synapse_sdk/utils/storage/providers/sftp.py +47 -0
- synapse_sdk/utils/storage/registry.py +17 -0
- synapse_sdk-2025.11.7.dist-info/METADATA +122 -0
- synapse_sdk-2025.11.7.dist-info/RECORD +386 -0
- {synapse_sdk-1.0.0a13.dist-info → synapse_sdk-2025.11.7.dist-info}/WHEEL +1 -1
- synapse_sdk/clients/backend/dataset.py +0 -51
- synapse_sdk/plugins/categories/import/actions/import.py +0 -10
- synapse_sdk/plugins/cli/__init__.py +0 -21
- synapse_sdk/plugins/cli/publish.py +0 -37
- synapse_sdk/plugins/templates/synapse-{{cookiecutter.plugin_code}}-plugin/.env +0 -24
- synapse_sdk/plugins/templates/synapse-{{cookiecutter.plugin_code}}-plugin/.env.dist +0 -24
- synapse_sdk/plugins/templates/synapse-{{cookiecutter.plugin_code}}-plugin/main.py +0 -4
- synapse_sdk/plugins/utils.py +0 -50
- synapse_sdk/utils/file.py +0 -87
- synapse_sdk/utils/storage.py +0 -91
- synapse_sdk-1.0.0a13.dist-info/METADATA +0 -43
- synapse_sdk-1.0.0a13.dist-info/RECORD +0 -111
- /synapse_sdk/{plugins/categories/import → clients/validators}/__init__.py +0 -0
- /synapse_sdk/{plugins/categories/import/actions → devtools}/__init__.py +0 -0
- {synapse_sdk-1.0.0a13.dist-info → synapse_sdk-2025.11.7.dist-info}/entry_points.txt +0 -0
- {synapse_sdk-1.0.0a13.dist-info → synapse_sdk-2025.11.7.dist-info/licenses}/LICENSE +0 -0
- {synapse_sdk-1.0.0a13.dist-info → synapse_sdk-2025.11.7.dist-info}/top_level.txt +0 -0
|
@@ -0,0 +1,117 @@
|
|
|
1
|
+
---
|
|
2
|
+
id: plugins
|
|
3
|
+
title: 플러그인 시스템
|
|
4
|
+
sidebar_position: 1
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
# 플러그인 시스템
|
|
8
|
+
|
|
9
|
+
Synapse SDK는 다양한 카테고리와 실행 방법에 걸쳐 ML 플러그인을 구축하고 관리하기 위한 포괄적인 플러그인 시스템을 제공합니다. 플러그인 시스템은 다양한 환경에서 배포되고 실행될 수 있는 모듈식, 재사용 가능한 컴포넌트를 가능하게 합니다.
|
|
10
|
+
|
|
11
|
+
## 개요
|
|
12
|
+
|
|
13
|
+
플러그인 시스템은 **액션** 개념을 중심으로 구축됩니다 - 패키징, 배포 및 다양한 컨텍스트에서 실행될 수 있는 개별 작업들입니다. 각 플러그인은 특정 카테고리에 속하며 여러 액션을 지원할 수 있습니다.
|
|
14
|
+
|
|
15
|
+
### 주요 기능
|
|
16
|
+
|
|
17
|
+
- **🔌 모듈식 아키텍처**: 플러그인은 자체 종속성과 구성을 가진 자체 포함형입니다
|
|
18
|
+
- **⚡ 다중 실행 방법**: Job, Task 및 REST API 엔드포인트 지원
|
|
19
|
+
- **📦 분산 실행**: 확장 가능한 분산 컴퓨팅을 위해 구축됨
|
|
20
|
+
- **🛠️ 템플릿 시스템**: 신속한 플러그인 개발을 위한 Cookiecutter 기반 스캐폴딩
|
|
21
|
+
- **📊 진행률 추적**: 내장된 로깅, 메트릭 및 진행률 모니터링
|
|
22
|
+
- **🔄 동적 로딩**: 런타임 플러그인 발견 및 등록
|
|
23
|
+
|
|
24
|
+
## 플러그인 카테고리
|
|
25
|
+
|
|
26
|
+
SDK는 플러그인을 특정 카테고리로 구성하며, 각각은 ML 워크플로우의 다양한 측면을 위해 설계되었습니다:
|
|
27
|
+
|
|
28
|
+
### 1. 신경망 (`neural_net`)
|
|
29
|
+
|
|
30
|
+
ML 모델 훈련, 추론 및 배포 작업들.
|
|
31
|
+
|
|
32
|
+
**사용 가능한 액션:**
|
|
33
|
+
|
|
34
|
+
- `deployment` - 모델을 프로덕션 환경에 배포
|
|
35
|
+
- `gradio` - 모델용 대화형 웹 인터페이스 생성
|
|
36
|
+
- `inference` - 데이터에 대한 모델 예측 실행
|
|
37
|
+
- `test` - 모델 성능과 정확도 검증
|
|
38
|
+
- `train` - 사용자 정의 데이터셋으로 ML 모델 훈련
|
|
39
|
+
- `tune` - 하이퍼파라미터 최적화 및 모델 튜닝
|
|
40
|
+
|
|
41
|
+
**사용 사례:**
|
|
42
|
+
|
|
43
|
+
- 컴퓨터 비전 모델 훈련
|
|
44
|
+
- 모델을 웹 서비스로 배포
|
|
45
|
+
- 데이터셋에 대한 배치 추론 실행
|
|
46
|
+
- 대화형 모델 데모 생성
|
|
47
|
+
|
|
48
|
+
### 2. Export (`export`)
|
|
49
|
+
|
|
50
|
+
Synapse 플랫폼에서 주석이 달린 데이터, 그라운드 트루스 데이터셋, 할당 및 작업을 내보내기 위한 데이터 내보내기 및 변환 작업.
|
|
51
|
+
|
|
52
|
+
**사용 가능한 액션:**
|
|
53
|
+
|
|
54
|
+
- `export` - 다양한 소스(할당, 그라운드 트루스, 작업)에서 사용자 정의 처리와 함께 데이터 내보내기
|
|
55
|
+
|
|
56
|
+
**사용 사례:**
|
|
57
|
+
|
|
58
|
+
- 훈련용 주석 데이터셋 내보내기
|
|
59
|
+
- 그라운드 트루스 데이터를 사용자 정의 형식으로 변환
|
|
60
|
+
- 배포용 데이터 패키지 생성
|
|
61
|
+
- 할당 결과의 배치 처리
|
|
62
|
+
- 외부 도구용 주석 데이터 변환
|
|
63
|
+
|
|
64
|
+
**지원되는 내보내기 대상:**
|
|
65
|
+
|
|
66
|
+
- `assignment` - 주석이 있는 할당 데이터 내보내기
|
|
67
|
+
- `ground_truth` - 그라운드 트루스 데이터셋 버전 내보내기
|
|
68
|
+
- `task` - 관련 주석이 있는 작업 데이터 내보내기
|
|
69
|
+
|
|
70
|
+
Export 플러그인에 대한 자세한 정보, BaseExporter 클래스 구조, 구현 예시 및 모범 사례는 [Export 플러그인](./export-plugins) 문서를 참조하세요.
|
|
71
|
+
|
|
72
|
+
## 플러그인 구성
|
|
73
|
+
|
|
74
|
+
플러그인은 YAML 구성 파일을 사용하여 구성되며, 이 파일은 메타데이터, 종속성, 패키지 관리 옵션 및 액션을 정의합니다.
|
|
75
|
+
|
|
76
|
+
### 패키지 관리
|
|
77
|
+
|
|
78
|
+
```yaml
|
|
79
|
+
# 플러그인 메타데이터 (필수)
|
|
80
|
+
name: "my-ml-plugin" # 필수: 플러그인 이름
|
|
81
|
+
version: "1.0.0" # 필수: 버전
|
|
82
|
+
category: "neural_net" # 필수: 카테고리
|
|
83
|
+
description: "사용자 정의 ML 플러그인" # 필수: 설명
|
|
84
|
+
|
|
85
|
+
# 패키지 관리 (선택사항)
|
|
86
|
+
package_manager: "pip" # 선택사항: "pip" 또는 "uv" (기본값: "pip")
|
|
87
|
+
|
|
88
|
+
# 패키지 매니저 옵션 (선택사항)
|
|
89
|
+
# uv만 지원 pip_install_options: 지원 예정
|
|
90
|
+
# uv의 경우 기본값은 ['--no-cache']입니다
|
|
91
|
+
package_manager_options: ["--no-cache", "--quiet"] # 선택사항: 설치 옵션
|
|
92
|
+
|
|
93
|
+
# 액션 정의 (필수)
|
|
94
|
+
actions: # 필수: 최소 하나의 액션 필요
|
|
95
|
+
train:
|
|
96
|
+
entrypoint: "plugin.train.TrainAction" # 필수
|
|
97
|
+
method: "job" # 필수: 실행 방법
|
|
98
|
+
```
|
|
99
|
+
|
|
100
|
+
**구성 옵션 설명:**
|
|
101
|
+
|
|
102
|
+
**필수 필드:**
|
|
103
|
+
- `name`: 플러그인 이름
|
|
104
|
+
- `version`: 플러그인 버전
|
|
105
|
+
- `category`: 플러그인 카테고리 (`neural_net`, `export` 등)
|
|
106
|
+
- `description`: 플러그인 설명
|
|
107
|
+
- `actions`: 플러그인 액션 정의 (최소 하나 필요)
|
|
108
|
+
- `entrypoint`: 액션의 진입점 클래스
|
|
109
|
+
- `method`: 실행 방법 (`job`, `task`, `serve` 등)
|
|
110
|
+
|
|
111
|
+
**선택사항 필드:**
|
|
112
|
+
- `package_manager`: 종속성에 사용할 패키지 매니저 (기본값: `"pip"`)
|
|
113
|
+
- 지원 값: `"pip"` 또는 `"uv"`
|
|
114
|
+
- `package_manager_options`: 패키지 설치 명령에 대한 사용자 제공 옵션
|
|
115
|
+
- 현재 Ray 2.44.1에서는 `uv`만 지원됩니다
|
|
116
|
+
- `uv`의 경우 기본값은 `["--no-cache"]`입니다
|
|
117
|
+
- 사용자 정의 옵션이 기본값과 병합됩니다
|
|
@@ -0,0 +1,78 @@
|
|
|
1
|
+
---
|
|
2
|
+
id: quickstart
|
|
3
|
+
title: 빠른 시작 가이드
|
|
4
|
+
sidebar_position: 3
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
# 빠른 시작 가이드
|
|
8
|
+
|
|
9
|
+
Synapse SDK를 몇 분 안에 시작하고 실행하세요.
|
|
10
|
+
|
|
11
|
+
## 대화형 CLI
|
|
12
|
+
|
|
13
|
+
모든 기능에 대화형 메뉴를 통해 접근하기 위해 Synapse CLI를 실행하세요:
|
|
14
|
+
|
|
15
|
+
```bash
|
|
16
|
+
synapse
|
|
17
|
+
```
|
|
18
|
+
|
|
19
|
+
다음 옵션들이 있는 메인 메뉴가 열립니다:
|
|
20
|
+
|
|
21
|
+
- 🌐 **개발 도구**: 에이전트 및 작업 관리를 위한 웹 기반 대시보드
|
|
22
|
+
- 💻 **Code-Server IDE**: 플러그인 개발을 위한 웹 기반 VS Code
|
|
23
|
+
- ⚙️ **설정**: 백엔드 연결 및 에이전트 설정
|
|
24
|
+
- 🔌 **플러그인 관리**: 플러그인 생성, 테스트 및 게시
|
|
25
|
+
|
|
26
|
+
## 빠른 명령어
|
|
27
|
+
|
|
28
|
+
특정 기능에 빠르게 접근하기 위해:
|
|
29
|
+
|
|
30
|
+
```bash
|
|
31
|
+
# 개발 도구 즉시 시작
|
|
32
|
+
synapse --dev-tools
|
|
33
|
+
|
|
34
|
+
# 백엔드 및 에이전트 구성
|
|
35
|
+
synapse config
|
|
36
|
+
|
|
37
|
+
# 코드 편집 환경 열기
|
|
38
|
+
synapse code-server
|
|
39
|
+
|
|
40
|
+
# 새 플러그인 생성
|
|
41
|
+
synapse plugin create
|
|
42
|
+
```
|
|
43
|
+
|
|
44
|
+
## 첫 번째 플러그인
|
|
45
|
+
|
|
46
|
+
1. **플러그인 생성**:
|
|
47
|
+
|
|
48
|
+
```bash
|
|
49
|
+
synapse
|
|
50
|
+
# "🔌 플러그인 관리" → "새 플러그인 생성" 선택
|
|
51
|
+
```
|
|
52
|
+
|
|
53
|
+
2. **Code-Server에서 편집**:
|
|
54
|
+
|
|
55
|
+
```bash
|
|
56
|
+
synapse
|
|
57
|
+
# "💻 Code-Server IDE 열기" 선택
|
|
58
|
+
```
|
|
59
|
+
|
|
60
|
+
3. **로컬에서 테스트**:
|
|
61
|
+
|
|
62
|
+
```bash
|
|
63
|
+
synapse plugin run my_action '{"param": "value"}' --run-by script
|
|
64
|
+
```
|
|
65
|
+
|
|
66
|
+
4. **백엔드에 게시**:
|
|
67
|
+
|
|
68
|
+
```bash
|
|
69
|
+
synapse
|
|
70
|
+
# "🔌 플러그인 관리" → "플러그인 게시" 선택
|
|
71
|
+
```
|
|
72
|
+
|
|
73
|
+
## 다음 단계
|
|
74
|
+
|
|
75
|
+
- 완전한 [CLI 사용 가이드](./cli-usage.md) 읽기
|
|
76
|
+
- [핵심 개념](./concepts/index.md)에 대해 학습하기
|
|
77
|
+
- [API 참조](./api/index.md) 탐색하기
|
|
78
|
+
- [자주 묻는 질문](./faq.md) 확인하기
|
|
@@ -0,0 +1,519 @@
|
|
|
1
|
+
---
|
|
2
|
+
id: troubleshooting
|
|
3
|
+
title: 문제 해결
|
|
4
|
+
sidebar_position: 10
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
# 문제 해결
|
|
8
|
+
|
|
9
|
+
Synapse SDK 사용 시 발생하는 일반적인 문제와 해결방법입니다.
|
|
10
|
+
|
|
11
|
+
## 설치 문제
|
|
12
|
+
|
|
13
|
+
## 인증 문제
|
|
14
|
+
|
|
15
|
+
### ClientError: 401 Unauthorized
|
|
16
|
+
|
|
17
|
+
**증상**: API 호출이 401 오류로 실패합니다.
|
|
18
|
+
|
|
19
|
+
**진단 단계**:
|
|
20
|
+
|
|
21
|
+
|
|
22
|
+
3. **CLI를 통한 토큰 확인**:
|
|
23
|
+
```bash
|
|
24
|
+
# 토큰을 확인하기 위한 대화형 설정 사용
|
|
25
|
+
synapse config
|
|
26
|
+
# "Show current configuration" 선택
|
|
27
|
+
# 토큰이 검증을 위해 평문으로 표시됩니다
|
|
28
|
+
```
|
|
29
|
+
|
|
30
|
+
4. **코드에서 토큰 확인**:
|
|
31
|
+
```python
|
|
32
|
+
from synapse_sdk.clients.backend import BackendClient
|
|
33
|
+
|
|
34
|
+
client = BackendClient(
|
|
35
|
+
base_url="https://api.synapse.sh",
|
|
36
|
+
api_token="your-token" # "Token " 접두사 없음
|
|
37
|
+
)
|
|
38
|
+
|
|
39
|
+
try:
|
|
40
|
+
user = client.get_current_user()
|
|
41
|
+
print(f"Authenticated as: {user.email}")
|
|
42
|
+
except Exception as e:
|
|
43
|
+
print(f"Auth failed: {e}")
|
|
44
|
+
```
|
|
45
|
+
|
|
46
|
+
**일반적인 해결방법**:
|
|
47
|
+
- 웹 인터페이스에서 토큰 재생성
|
|
48
|
+
- 토큰이 만료되지 않았는지 확인
|
|
49
|
+
- 올바른 백엔드 URL 확인
|
|
50
|
+
|
|
51
|
+
### Agent 인증 오류
|
|
52
|
+
|
|
53
|
+
**증상**: Agent 관련 작업이 실패합니다.
|
|
54
|
+
|
|
55
|
+
**해결방법**:
|
|
56
|
+
|
|
57
|
+
1. **Agent 설정 확인**:
|
|
58
|
+
```bash
|
|
59
|
+
synapse config
|
|
60
|
+
# "Show current configuration" 선택
|
|
61
|
+
# 백엔드와 Agent 토큰 모두 평문으로 표시됩니다
|
|
62
|
+
```
|
|
63
|
+
|
|
64
|
+
2. **Agent 토큰 확인**:
|
|
65
|
+
```python
|
|
66
|
+
from synapse_sdk.clients.agent import AgentClient
|
|
67
|
+
|
|
68
|
+
client = AgentClient(
|
|
69
|
+
base_url="https://api.synapse.sh",
|
|
70
|
+
agent_token="your-agent-token"
|
|
71
|
+
)
|
|
72
|
+
```
|
|
73
|
+
|
|
74
|
+
## 연결 문제
|
|
75
|
+
|
|
76
|
+
### 연결 시간 초과
|
|
77
|
+
|
|
78
|
+
**증상**: 요청이 시간 초과되거나 멈춤 상태가 됩니다.
|
|
79
|
+
|
|
80
|
+
**해결방법**:
|
|
81
|
+
|
|
82
|
+
1. **시간 초과 값 증가**:
|
|
83
|
+
```python
|
|
84
|
+
client = BackendClient(
|
|
85
|
+
base_url="https://api.synapse.sh",
|
|
86
|
+
api_token="your-token",
|
|
87
|
+
timeout={'connect': 30, 'read': 120}
|
|
88
|
+
)
|
|
89
|
+
```
|
|
90
|
+
|
|
91
|
+
2. **네트워크 연결 확인**:
|
|
92
|
+
```bash
|
|
93
|
+
# 기본 연결 테스트
|
|
94
|
+
ping api.synapse.sh
|
|
95
|
+
|
|
96
|
+
# HTTPS 접근 테스트
|
|
97
|
+
curl -I https://api.synapse.sh/health
|
|
98
|
+
```
|
|
99
|
+
|
|
100
|
+
3. **필요시 프록시 설정**:
|
|
101
|
+
```bash
|
|
102
|
+
export HTTP_PROXY="http://proxy.company.com:8080"
|
|
103
|
+
export HTTPS_PROXY="https://proxy.company.com:8080"
|
|
104
|
+
```
|
|
105
|
+
|
|
106
|
+
### DNS 해결 문제
|
|
107
|
+
|
|
108
|
+
**증상**: "Name or service not known" 오류가 발생합니다.
|
|
109
|
+
|
|
110
|
+
**해결방법**:
|
|
111
|
+
|
|
112
|
+
1. **DNS 설정 확인**:
|
|
113
|
+
```bash
|
|
114
|
+
nslookup api.synapse.sh
|
|
115
|
+
```
|
|
116
|
+
|
|
117
|
+
2. **대체 DNS 시도**:
|
|
118
|
+
```bash
|
|
119
|
+
# Google DNS 임시 사용
|
|
120
|
+
export SYNAPSE_BACKEND_HOST="$(dig @8.8.8.8 api.synapse.sh +short)"
|
|
121
|
+
```
|
|
122
|
+
|
|
123
|
+
3. **IP 주소 직접 사용** (임시):
|
|
124
|
+
```python
|
|
125
|
+
client = BackendClient(base_url="https://192.168.1.100:8000")
|
|
126
|
+
```
|
|
127
|
+
|
|
128
|
+
## 플러그인 개발 문제
|
|
129
|
+
|
|
130
|
+
### 플러그인 가져오기 오류
|
|
131
|
+
|
|
132
|
+
**증상**: 플러그인 로딩 또는 가져오기가 실패합니다.
|
|
133
|
+
|
|
134
|
+
**진단**:
|
|
135
|
+
```bash
|
|
136
|
+
# 플러그인 구문 테스트
|
|
137
|
+
python -m py_compile plugin/__init__.py
|
|
138
|
+
|
|
139
|
+
# 순환 가져오기 확인
|
|
140
|
+
python -c "import plugin; print('OK')"
|
|
141
|
+
```
|
|
142
|
+
|
|
143
|
+
**해결방법**:
|
|
144
|
+
|
|
145
|
+
1. **구문 오류 수정**:
|
|
146
|
+
```bash
|
|
147
|
+
# 린팅 사용
|
|
148
|
+
pip install ruff
|
|
149
|
+
ruff check plugin/
|
|
150
|
+
```
|
|
151
|
+
|
|
152
|
+
2. **가져오기 경로 확인**:
|
|
153
|
+
```python
|
|
154
|
+
# plugin/__init__.py에서
|
|
155
|
+
from synapse_sdk.plugins.categories.base import Action, register_action
|
|
156
|
+
# 아님: from synapse_sdk.plugins.base import Action
|
|
157
|
+
```
|
|
158
|
+
|
|
159
|
+
3. **플러그인 구조 확인**:
|
|
160
|
+
```
|
|
161
|
+
my-plugin/
|
|
162
|
+
├── config.yaml
|
|
163
|
+
├── plugin/
|
|
164
|
+
│ └── __init__.py
|
|
165
|
+
├── requirements.txt
|
|
166
|
+
└── README.md
|
|
167
|
+
```
|
|
168
|
+
|
|
169
|
+
### 플러그인 실행 실패
|
|
170
|
+
|
|
171
|
+
**증상**: 플러그인이 시작되지만 실행 중 실패합니다.
|
|
172
|
+
|
|
173
|
+
**디버깅 단계**:
|
|
174
|
+
|
|
175
|
+
1. **CLI를 통한 디버그 모드 활성화**:
|
|
176
|
+
```bash
|
|
177
|
+
synapse
|
|
178
|
+
# "Plugin Management" 선택
|
|
179
|
+
# "Run plugin locally" 선택
|
|
180
|
+
# 액션과 매개변수 입력
|
|
181
|
+
# 로컬 실행 시 디버그 모드가 기본적으로 활성화됩니다
|
|
182
|
+
```
|
|
183
|
+
|
|
184
|
+
2. **수동으로 디버그 모드 활성화**:
|
|
185
|
+
```bash
|
|
186
|
+
export SYNAPSE_DEBUG=true
|
|
187
|
+
synapse plugin run --path ./my-plugin --action test
|
|
188
|
+
```
|
|
189
|
+
|
|
190
|
+
2. **로그 확인**:
|
|
191
|
+
```python
|
|
192
|
+
def start(self):
|
|
193
|
+
try:
|
|
194
|
+
self.run.log("Starting plugin execution")
|
|
195
|
+
# 여기에 코드 작성
|
|
196
|
+
self.run.log("Plugin completed successfully")
|
|
197
|
+
except Exception as e:
|
|
198
|
+
self.run.log(f"Error: {str(e)}", level="ERROR")
|
|
199
|
+
raise
|
|
200
|
+
```
|
|
201
|
+
|
|
202
|
+
3. **매개변수 검증**:
|
|
203
|
+
```python
|
|
204
|
+
from pydantic import ValidationError
|
|
205
|
+
|
|
206
|
+
def start(self):
|
|
207
|
+
try:
|
|
208
|
+
# 매개변수 검증
|
|
209
|
+
params = self.params_model(**self.params)
|
|
210
|
+
except ValidationError as e:
|
|
211
|
+
self.run.log(f"Parameter validation failed: {e}")
|
|
212
|
+
raise
|
|
213
|
+
```
|
|
214
|
+
|
|
215
|
+
### 파일 처리 문제
|
|
216
|
+
|
|
217
|
+
**증상**: 플러그인에서 파일 작업이 실패합니다.
|
|
218
|
+
|
|
219
|
+
**일반적인 문제 & 해결방법**:
|
|
220
|
+
|
|
221
|
+
1. **FileField가 다운로드되지 않음**:
|
|
222
|
+
```python
|
|
223
|
+
# 파일 URL 형식 확인
|
|
224
|
+
class MyParams(BaseModel):
|
|
225
|
+
input_file: FileField # URL 형식 예상
|
|
226
|
+
|
|
227
|
+
def start(self):
|
|
228
|
+
file_path = self.params.input_file
|
|
229
|
+
if not os.path.exists(file_path):
|
|
230
|
+
raise FileNotFoundError(f"File not found: {file_path}")
|
|
231
|
+
```
|
|
232
|
+
|
|
233
|
+
2. **권한 오류**:
|
|
234
|
+
```python
|
|
235
|
+
import tempfile
|
|
236
|
+
import shutil
|
|
237
|
+
|
|
238
|
+
def start(self):
|
|
239
|
+
# 임시 디렉토리 사용
|
|
240
|
+
with tempfile.TemporaryDirectory() as temp_dir:
|
|
241
|
+
output_path = os.path.join(temp_dir, "result.csv")
|
|
242
|
+
# output_path에서 처리 및 저장
|
|
243
|
+
```
|
|
244
|
+
|
|
245
|
+
3. **대용량 파일 처리**:
|
|
246
|
+
```python
|
|
247
|
+
def start(self):
|
|
248
|
+
# 대용량 파일을 청크 단위로 처리
|
|
249
|
+
chunk_size = 1024 * 1024 # 1MB 청크
|
|
250
|
+
with open(self.params.input_file, 'rb') as f:
|
|
251
|
+
while True:
|
|
252
|
+
chunk = f.read(chunk_size)
|
|
253
|
+
if not chunk:
|
|
254
|
+
break
|
|
255
|
+
process_chunk(chunk)
|
|
256
|
+
```
|
|
257
|
+
|
|
258
|
+
## 분산 컴퓨팅 문제
|
|
259
|
+
|
|
260
|
+
### 클러스터 연결
|
|
261
|
+
|
|
262
|
+
**증상**: 컴퓨팅 클러스터에 연결할 수 없습니다.
|
|
263
|
+
|
|
264
|
+
**해결방법**:
|
|
265
|
+
|
|
266
|
+
1. **클러스터 상태 확인**:
|
|
267
|
+
```bash
|
|
268
|
+
synapse cluster status
|
|
269
|
+
# 클러스터 정보가 표시되어야 함
|
|
270
|
+
```
|
|
271
|
+
|
|
272
|
+
2. **로컬 클러스터 시작**:
|
|
273
|
+
```bash
|
|
274
|
+
synapse cluster start --dashboard-host=0.0.0.0
|
|
275
|
+
```
|
|
276
|
+
|
|
277
|
+
3. **원격 클러스터 연결**:
|
|
278
|
+
```bash
|
|
279
|
+
export SYNAPSE_CLUSTER_ADDRESS="cluster://remote-cluster:10001"
|
|
280
|
+
synapse cluster status # 원격 클러스터에 연결되어야 함
|
|
281
|
+
```
|
|
282
|
+
|
|
283
|
+
### 메모리 문제
|
|
284
|
+
|
|
285
|
+
**증상**: 실행 중 메모리 부족 오류가 발생합니다.
|
|
286
|
+
|
|
287
|
+
**해결방법**:
|
|
288
|
+
|
|
289
|
+
1. **메모리 할당 증가**:
|
|
290
|
+
```bash
|
|
291
|
+
synapse cluster start --memory=2000000000 # 2GB
|
|
292
|
+
```
|
|
293
|
+
|
|
294
|
+
2. **코드에서 설정**:
|
|
295
|
+
```python
|
|
296
|
+
from synapse_sdk.compute import init
|
|
297
|
+
init(memory=2000000000)
|
|
298
|
+
```
|
|
299
|
+
|
|
300
|
+
3. **데이터를 작은 청크로 처리**:
|
|
301
|
+
```python
|
|
302
|
+
def process_chunk(data_chunk):
|
|
303
|
+
return process(data_chunk)
|
|
304
|
+
|
|
305
|
+
# 대용량 데이터를 청크로 분할
|
|
306
|
+
chunks = split_data(large_data)
|
|
307
|
+
results = [process_chunk(chunk) for chunk in chunks]
|
|
308
|
+
```
|
|
309
|
+
|
|
310
|
+
### 작업 실패
|
|
311
|
+
|
|
312
|
+
**증상**: 작업이 시작되지 않거나 완료되지 않습니다.
|
|
313
|
+
|
|
314
|
+
**해결방법**:
|
|
315
|
+
|
|
316
|
+
1. **리소스 요구사항 확인**:
|
|
317
|
+
```python
|
|
318
|
+
def my_task(resources={'cpus': 2, 'memory': '1GB'}):
|
|
319
|
+
pass
|
|
320
|
+
```
|
|
321
|
+
|
|
322
|
+
2. **런타임 환경 확인**:
|
|
323
|
+
```yaml
|
|
324
|
+
# 플러그인 config.yaml에서
|
|
325
|
+
runtime_env:
|
|
326
|
+
pip:
|
|
327
|
+
packages: ["pandas", "numpy"]
|
|
328
|
+
```
|
|
329
|
+
|
|
330
|
+
## 개발 도구 문제
|
|
331
|
+
|
|
332
|
+
### 개발 도구가 시작되지 않음
|
|
333
|
+
|
|
334
|
+
**증상**: `synapse --dev-tools` 시작이 실패합니다.
|
|
335
|
+
|
|
336
|
+
**해결방법**:
|
|
337
|
+
|
|
338
|
+
1. **대시보드 의존성 설치**:
|
|
339
|
+
```bash
|
|
340
|
+
pip install synapse-sdk[dashboard]
|
|
341
|
+
```
|
|
342
|
+
|
|
343
|
+
2. **포트 사용 가능성 확인**:
|
|
344
|
+
```bash
|
|
345
|
+
# 포트 8080 사용 중인지 확인
|
|
346
|
+
lsof -i :8080
|
|
347
|
+
|
|
348
|
+
# 다른 포트 사용
|
|
349
|
+
synapse devtools --port 8081
|
|
350
|
+
```
|
|
351
|
+
|
|
352
|
+
3. **프론트엔드 수동 빌드**:
|
|
353
|
+
```bash
|
|
354
|
+
cd synapse_sdk/devtools/web
|
|
355
|
+
npm install
|
|
356
|
+
npm run build
|
|
357
|
+
```
|
|
358
|
+
|
|
359
|
+
### 프론트엔드 빌드 오류
|
|
360
|
+
|
|
361
|
+
**증상**: 프론트엔드 에셋 빌드가 실패합니다.
|
|
362
|
+
|
|
363
|
+
**해결방법**:
|
|
364
|
+
|
|
365
|
+
1. **Node.js 의존성 설치**:
|
|
366
|
+
```bash
|
|
367
|
+
# Node.js 설치 (설치되지 않은 경우)
|
|
368
|
+
curl -fsSL https://deb.nodesource.com/setup_18.x | sudo -E bash -
|
|
369
|
+
sudo apt-get install -y nodejs
|
|
370
|
+
|
|
371
|
+
# 또는 nvm 사용
|
|
372
|
+
nvm install 18
|
|
373
|
+
nvm use 18
|
|
374
|
+
```
|
|
375
|
+
|
|
376
|
+
2. **npm 캐시 정리**:
|
|
377
|
+
```bash
|
|
378
|
+
cd synapse_sdk/devtools/web
|
|
379
|
+
rm -rf node_modules package-lock.json
|
|
380
|
+
npm cache clean --force
|
|
381
|
+
npm install
|
|
382
|
+
```
|
|
383
|
+
|
|
384
|
+
## 성능 문제
|
|
385
|
+
|
|
386
|
+
### 플러그인 실행 속도 저하
|
|
387
|
+
|
|
388
|
+
**증상**: 플러그인 실행 시간이 너무 오래 걸립니다.
|
|
389
|
+
|
|
390
|
+
**최적화 전략**:
|
|
391
|
+
|
|
392
|
+
1. **코드 프로파일링**:
|
|
393
|
+
```python
|
|
394
|
+
import time
|
|
395
|
+
|
|
396
|
+
def start(self):
|
|
397
|
+
start_time = time.time()
|
|
398
|
+
# 여기에 코드 작성
|
|
399
|
+
self.run.log(f"Execution took {time.time() - start_time:.2f}s")
|
|
400
|
+
```
|
|
401
|
+
|
|
402
|
+
2. **병렬 처리 사용**:
|
|
403
|
+
```python
|
|
404
|
+
from concurrent.futures import ThreadPoolExecutor
|
|
405
|
+
|
|
406
|
+
def parallel_task(item):
|
|
407
|
+
return process_item(item)
|
|
408
|
+
|
|
409
|
+
def start(self):
|
|
410
|
+
# 병렬로 항목 처리
|
|
411
|
+
with ThreadPoolExecutor() as executor:
|
|
412
|
+
results = list(executor.map(parallel_task, items))
|
|
413
|
+
```
|
|
414
|
+
|
|
415
|
+
3. **데이터 로딩 최적화**:
|
|
416
|
+
```python
|
|
417
|
+
# 모든 것을 한 번에 로딩하는 대신
|
|
418
|
+
data = pd.read_csv(large_file)
|
|
419
|
+
|
|
420
|
+
# 청크 로딩 사용
|
|
421
|
+
for chunk in pd.read_csv(large_file, chunksize=1000):
|
|
422
|
+
process_chunk(chunk)
|
|
423
|
+
```
|
|
424
|
+
|
|
425
|
+
### 메모리 사용량 문제
|
|
426
|
+
|
|
427
|
+
**증상**: 높은 메모리 사용량 또는 메모리 부족 오류가 발생합니다.
|
|
428
|
+
|
|
429
|
+
**해결방법**:
|
|
430
|
+
|
|
431
|
+
1. **메모리 사용량 모니터링**:
|
|
432
|
+
```python
|
|
433
|
+
import psutil
|
|
434
|
+
|
|
435
|
+
def start(self):
|
|
436
|
+
process = psutil.Process()
|
|
437
|
+
self.run.log(f"Memory usage: {process.memory_info().rss / 1024 / 1024:.1f} MB")
|
|
438
|
+
```
|
|
439
|
+
|
|
440
|
+
2. **리스트 대신 제너레이터 사용**:
|
|
441
|
+
```python
|
|
442
|
+
# 대신
|
|
443
|
+
all_data = [process(item) for item in large_list]
|
|
444
|
+
|
|
445
|
+
# 제너레이터 사용
|
|
446
|
+
def process_items():
|
|
447
|
+
for item in large_list:
|
|
448
|
+
yield process(item)
|
|
449
|
+
```
|
|
450
|
+
|
|
451
|
+
3. **변수 명시적 정리**:
|
|
452
|
+
```python
|
|
453
|
+
def start(self):
|
|
454
|
+
large_data = load_data()
|
|
455
|
+
result = process(large_data)
|
|
456
|
+
del large_data # 메모리 명시적 해제
|
|
457
|
+
return result
|
|
458
|
+
```
|
|
459
|
+
|
|
460
|
+
## 로깅 및 디버깅
|
|
461
|
+
|
|
462
|
+
### 디버그 로깅 활성화
|
|
463
|
+
|
|
464
|
+
```bash
|
|
465
|
+
export SYNAPSE_DEBUG=true
|
|
466
|
+
export SYNAPSE_LOG_LEVEL=DEBUG
|
|
467
|
+
```
|
|
468
|
+
|
|
469
|
+
### 커스텀 로깅
|
|
470
|
+
|
|
471
|
+
```python
|
|
472
|
+
import logging
|
|
473
|
+
|
|
474
|
+
# 로깅 설정
|
|
475
|
+
logging.basicConfig(
|
|
476
|
+
level=logging.DEBUG,
|
|
477
|
+
format='%(asctime)s - %(name)s - %(levelname)s - %(message)s'
|
|
478
|
+
)
|
|
479
|
+
|
|
480
|
+
logger = logging.getLogger(__name__)
|
|
481
|
+
|
|
482
|
+
def start(self):
|
|
483
|
+
logger.debug("Starting plugin execution")
|
|
484
|
+
# 여기에 코드 작성
|
|
485
|
+
```
|
|
486
|
+
|
|
487
|
+
### 디버깅 팁
|
|
488
|
+
|
|
489
|
+
1. **print 문 사용** (로그에 표시됨):
|
|
490
|
+
```python
|
|
491
|
+
def start(self):
|
|
492
|
+
print(f"Parameters: {self.params}")
|
|
493
|
+
print(f"Working directory: {os.getcwd()}")
|
|
494
|
+
```
|
|
495
|
+
|
|
496
|
+
2. **파일 존재 확인**:
|
|
497
|
+
```python
|
|
498
|
+
def start(self):
|
|
499
|
+
file_path = self.params.input_file
|
|
500
|
+
print(f"File exists: {os.path.exists(file_path)}")
|
|
501
|
+
print(f"File size: {os.path.getsize(file_path)} bytes")
|
|
502
|
+
```
|
|
503
|
+
|
|
504
|
+
3. **데이터 타입 검증**:
|
|
505
|
+
```python
|
|
506
|
+
def start(self):
|
|
507
|
+
print(f"Parameter types: {type(self.params.input_data)}")
|
|
508
|
+
print(f"Parameter value: {repr(self.params.input_data)}")
|
|
509
|
+
```
|
|
510
|
+
|
|
511
|
+
## 도움 받기
|
|
512
|
+
|
|
513
|
+
문제를 해결할 수 없는 경우:
|
|
514
|
+
|
|
515
|
+
1. **로그 철저히 확인**
|
|
516
|
+
2. **GitHub issues 검색**: https://github.com/datamaker/synapse-sdk/issues
|
|
517
|
+
3. **최소한의 재현 케이스** 생성
|
|
518
|
+
4. **Discord 커뮤니티 참여**: https://discord.gg/synapse-sdk
|
|
519
|
+
5. 자세한 오류 정보와 함께 **지원팀 문의**
|