synapse-sdk 1.0.0b24__py3-none-any.whl → 2025.9.3__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 (83) hide show
  1. synapse_sdk/clients/agent/ray.py +50 -0
  2. synapse_sdk/devtools/docs/docs/api/clients/annotation-mixin.md +378 -0
  3. synapse_sdk/devtools/docs/docs/api/clients/backend.md +368 -1
  4. synapse_sdk/devtools/docs/docs/api/clients/core-mixin.md +477 -0
  5. synapse_sdk/devtools/docs/docs/api/clients/data-collection-mixin.md +422 -0
  6. synapse_sdk/devtools/docs/docs/api/clients/hitl-mixin.md +554 -0
  7. synapse_sdk/devtools/docs/docs/api/clients/index.md +391 -0
  8. synapse_sdk/devtools/docs/docs/api/clients/integration-mixin.md +571 -0
  9. synapse_sdk/devtools/docs/docs/api/clients/ml-mixin.md +578 -0
  10. synapse_sdk/devtools/docs/docs/api/clients/ray.md +23 -2
  11. synapse_sdk/devtools/docs/docs/plugins/developing-upload-template.md +1463 -0
  12. synapse_sdk/devtools/docs/docs/plugins/export-plugins.md +161 -34
  13. synapse_sdk/devtools/docs/docs/plugins/upload-plugins.md +1497 -213
  14. synapse_sdk/devtools/docs/i18n/ko/docusaurus-plugin-content-docs/current/api/clients/annotation-mixin.md +289 -0
  15. synapse_sdk/devtools/docs/i18n/ko/docusaurus-plugin-content-docs/current/api/clients/backend.md +378 -11
  16. synapse_sdk/devtools/docs/i18n/ko/docusaurus-plugin-content-docs/current/api/clients/core-mixin.md +417 -0
  17. synapse_sdk/devtools/docs/i18n/ko/docusaurus-plugin-content-docs/current/api/clients/data-collection-mixin.md +356 -0
  18. synapse_sdk/devtools/docs/i18n/ko/docusaurus-plugin-content-docs/current/api/clients/hitl-mixin.md +192 -0
  19. synapse_sdk/devtools/docs/i18n/ko/docusaurus-plugin-content-docs/current/api/clients/index.md +391 -0
  20. synapse_sdk/devtools/docs/i18n/ko/docusaurus-plugin-content-docs/current/api/clients/integration-mixin.md +479 -0
  21. synapse_sdk/devtools/docs/i18n/ko/docusaurus-plugin-content-docs/current/api/clients/ml-mixin.md +284 -0
  22. synapse_sdk/devtools/docs/i18n/ko/docusaurus-plugin-content-docs/current/api/clients/ray.md +23 -2
  23. synapse_sdk/devtools/docs/i18n/ko/docusaurus-plugin-content-docs/current/plugins/developing-upload-template.md +1463 -0
  24. synapse_sdk/devtools/docs/i18n/ko/docusaurus-plugin-content-docs/current/plugins/export-plugins.md +161 -34
  25. synapse_sdk/devtools/docs/i18n/ko/docusaurus-plugin-content-docs/current/plugins/upload-plugins.md +1752 -572
  26. synapse_sdk/devtools/docs/sidebars.ts +7 -0
  27. synapse_sdk/plugins/README.md +1 -2
  28. synapse_sdk/plugins/categories/base.py +23 -0
  29. synapse_sdk/plugins/categories/export/actions/__init__.py +3 -0
  30. synapse_sdk/plugins/categories/export/actions/export/__init__.py +28 -0
  31. synapse_sdk/plugins/categories/export/actions/export/action.py +160 -0
  32. synapse_sdk/plugins/categories/export/actions/export/enums.py +113 -0
  33. synapse_sdk/plugins/categories/export/actions/export/exceptions.py +53 -0
  34. synapse_sdk/plugins/categories/export/actions/export/models.py +74 -0
  35. synapse_sdk/plugins/categories/export/actions/export/run.py +195 -0
  36. synapse_sdk/plugins/categories/export/actions/export/utils.py +187 -0
  37. synapse_sdk/plugins/categories/export/templates/plugin/__init__.py +1 -1
  38. synapse_sdk/plugins/categories/upload/actions/upload/__init__.py +1 -2
  39. synapse_sdk/plugins/categories/upload/actions/upload/action.py +154 -531
  40. synapse_sdk/plugins/categories/upload/actions/upload/context.py +185 -0
  41. synapse_sdk/plugins/categories/upload/actions/upload/factory.py +143 -0
  42. synapse_sdk/plugins/categories/upload/actions/upload/models.py +66 -29
  43. synapse_sdk/plugins/categories/upload/actions/upload/orchestrator.py +182 -0
  44. synapse_sdk/plugins/categories/upload/actions/upload/registry.py +113 -0
  45. synapse_sdk/plugins/categories/upload/actions/upload/steps/__init__.py +1 -0
  46. synapse_sdk/plugins/categories/upload/actions/upload/steps/base.py +106 -0
  47. synapse_sdk/plugins/categories/upload/actions/upload/steps/cleanup.py +62 -0
  48. synapse_sdk/plugins/categories/upload/actions/upload/steps/collection.py +62 -0
  49. synapse_sdk/plugins/categories/upload/actions/upload/steps/generate.py +80 -0
  50. synapse_sdk/plugins/categories/upload/actions/upload/steps/initialize.py +66 -0
  51. synapse_sdk/plugins/categories/upload/actions/upload/steps/metadata.py +101 -0
  52. synapse_sdk/plugins/categories/upload/actions/upload/steps/organize.py +89 -0
  53. synapse_sdk/plugins/categories/upload/actions/upload/steps/upload.py +96 -0
  54. synapse_sdk/plugins/categories/upload/actions/upload/steps/validate.py +61 -0
  55. synapse_sdk/plugins/categories/upload/actions/upload/strategies/__init__.py +1 -0
  56. synapse_sdk/plugins/categories/upload/actions/upload/strategies/base.py +86 -0
  57. synapse_sdk/plugins/categories/upload/actions/upload/strategies/data_unit/__init__.py +1 -0
  58. synapse_sdk/plugins/categories/upload/actions/upload/strategies/data_unit/batch.py +39 -0
  59. synapse_sdk/plugins/categories/upload/actions/upload/strategies/data_unit/single.py +34 -0
  60. synapse_sdk/plugins/categories/upload/actions/upload/strategies/file_discovery/__init__.py +1 -0
  61. synapse_sdk/plugins/categories/upload/actions/upload/strategies/file_discovery/flat.py +233 -0
  62. synapse_sdk/plugins/categories/upload/actions/upload/strategies/file_discovery/recursive.py +238 -0
  63. synapse_sdk/plugins/categories/upload/actions/upload/strategies/metadata/__init__.py +1 -0
  64. synapse_sdk/plugins/categories/upload/actions/upload/strategies/metadata/excel.py +174 -0
  65. synapse_sdk/plugins/categories/upload/actions/upload/strategies/metadata/none.py +16 -0
  66. synapse_sdk/plugins/categories/upload/actions/upload/strategies/upload/__init__.py +1 -0
  67. synapse_sdk/plugins/categories/upload/actions/upload/strategies/upload/async_upload.py +109 -0
  68. synapse_sdk/plugins/categories/upload/actions/upload/strategies/upload/sync.py +43 -0
  69. synapse_sdk/plugins/categories/upload/actions/upload/strategies/validation/__init__.py +1 -0
  70. synapse_sdk/plugins/categories/upload/actions/upload/strategies/validation/default.py +45 -0
  71. synapse_sdk/plugins/categories/upload/actions/upload/utils.py +194 -83
  72. synapse_sdk/plugins/categories/upload/templates/config.yaml +4 -0
  73. synapse_sdk/plugins/categories/upload/templates/plugin/__init__.py +269 -0
  74. synapse_sdk/plugins/categories/upload/templates/plugin/upload.py +71 -27
  75. synapse_sdk/plugins/models.py +5 -0
  76. {synapse_sdk-1.0.0b24.dist-info → synapse_sdk-2025.9.3.dist-info}/METADATA +3 -2
  77. {synapse_sdk-1.0.0b24.dist-info → synapse_sdk-2025.9.3.dist-info}/RECORD +81 -30
  78. synapse_sdk/plugins/categories/export/actions/export.py +0 -385
  79. synapse_sdk/plugins/categories/export/enums.py +0 -7
  80. {synapse_sdk-1.0.0b24.dist-info → synapse_sdk-2025.9.3.dist-info}/WHEEL +0 -0
  81. {synapse_sdk-1.0.0b24.dist-info → synapse_sdk-2025.9.3.dist-info}/entry_points.txt +0 -0
  82. {synapse_sdk-1.0.0b24.dist-info → synapse_sdk-2025.9.3.dist-info}/licenses/LICENSE +0 -0
  83. {synapse_sdk-1.0.0b24.dist-info → synapse_sdk-2025.9.3.dist-info}/top_level.txt +0 -0
@@ -0,0 +1,284 @@
1
+ ---
2
+ id: ml-mixin
3
+ title: MLClientMixin
4
+ sidebar_position: 16
5
+ ---
6
+
7
+ # MLClientMixin
8
+
9
+ Synapse 백엔드를 위한 머신러닝 모델 관리 및 정답 데이터 작업을 제공합니다.
10
+
11
+ ## 개요
12
+
13
+ `MLClientMixin`은 머신러닝 모델, 정답 데이터셋, 모델 평가 워크플로와 관련된 모든 작업을 처리합니다. 이 믹스인은 `BackendClient`에 자동으로 포함되며 ML 파이프라인 통합을 위한 메서드를 제공합니다.
14
+
15
+ ## 모델 관리
16
+
17
+ ### `list_models(params=None)`
18
+
19
+ 필터링 옵션과 함께 사용 가능한 머신러닝 모델을 나열합니다.
20
+
21
+ ```python
22
+ # 모든 모델 나열
23
+ models = client.list_models()
24
+ for model in models[0]:
25
+ print(f"모델: {model['name']} (ID: {model['id']})")
26
+
27
+ # 특정 프로젝트의 모델 나열
28
+ project_models = client.list_models(params={'project': 123})
29
+
30
+ # 유형별 모델 나열
31
+ classification_models = client.list_models(params={'model_type': 'classification'})
32
+
33
+ # 활성 모델만 나열
34
+ active_models = client.list_models(params={'is_active': True})
35
+ ```
36
+
37
+ **매개변수:**
38
+
39
+ - `params` (dict, 선택사항): 필터링 매개변수
40
+
41
+ **일반적인 필터링 params:**
42
+
43
+ - `project`: 프로젝트 ID로 필터링
44
+ - `model_type`: 모델 유형으로 필터링 (`classification`, `detection`, `segmentation`)
45
+ - `is_active`: 모델 상태로 필터링
46
+ - `created_after`: 생성 날짜로 필터링
47
+ - `search`: 모델 이름 및 설명에서 텍스트 검색
48
+
49
+ **반환값:**
50
+
51
+ - `tuple`: (models_list, total_count)
52
+
53
+ ### `get_model(pk, params=None, url_conversion=None)`
54
+
55
+ 특정 모델에 대한 상세 정보를 가져옵니다.
56
+
57
+ ```python
58
+ # 기본 모델 정보 가져오기
59
+ model = client.get_model(456)
60
+ print(f"모델: {model['name']}")
61
+ print(f"유형: {model['model_type']}")
62
+ print(f"정확도: {model['metrics']['accuracy']}")
63
+
64
+ # 확장된 메트릭과 함께 모델 가져오기
65
+ model = client.get_model(456, params={'expand': 'metrics'})
66
+
67
+ # 파일에 대한 사용자 정의 URL 변환과 함께 모델 가져오기
68
+ model = client.get_model(
69
+ 456,
70
+ url_conversion={'file': lambda url: f"https://cdn.example.com{url}"}
71
+ )
72
+ ```
73
+
74
+ **매개변수:**
75
+
76
+ - `pk` (int): 모델 ID
77
+ - `params` (dict, 선택사항): 쿼리 매개변수
78
+ - `url_conversion` (dict, 선택사항): 파일 필드에 대한 사용자 정의 URL 변환
79
+
80
+ **일반적인 params:**
81
+
82
+ - `expand`: 추가 데이터 포함 (`metrics`, `evaluations`, `versions`)
83
+ - `include_file`: 모델 파일 정보 포함 여부
84
+
85
+ **반환값:**
86
+
87
+ - `dict`: 메타데이터와 메트릭을 포함한 완전한 모델 정보
88
+
89
+ **모델 구조:**
90
+
91
+ - `id`: 모델 ID
92
+ - `name`: 모델 이름
93
+ - `description`: 모델 설명
94
+ - `model_type`: 모델 유형
95
+ - `file`: 모델 파일 참조
96
+ - `metrics`: 성능 메트릭
97
+ - `project`: 연관된 프로젝트 ID
98
+ - `is_active`: 모델이 현재 활성 상태인지 여부
99
+ - `created_at`: 생성 타임스탬프
100
+
101
+ ### `create_model(data)`
102
+
103
+ 파일 업로드와 함께 새로운 머신러닝 모델을 생성합니다.
104
+
105
+ ```python
106
+ # 파일 업로드와 함께 모델 생성
107
+ model_data = {
108
+ 'name': 'Object Detection Model v2',
109
+ 'description': '향상된 정확도를 가진 개선된 객체 탐지 모델',
110
+ 'model_type': 'detection',
111
+ 'project': 123,
112
+ 'metrics': {
113
+ 'accuracy': 0.92,
114
+ 'precision': 0.89,
115
+ 'recall': 0.94,
116
+ 'f1_score': 0.91
117
+ },
118
+ 'configuration': {
119
+ 'input_size': [640, 640],
120
+ 'num_classes': 10,
121
+ 'framework': 'pytorch'
122
+ },
123
+ 'file': '/path/to/model.pkl' # 청크 업로드를 통해 업로드됨
124
+ }
125
+
126
+ new_model = client.create_model(model_data)
127
+ print(f"ID {new_model['id']}로 모델 생성됨")
128
+ ```
129
+
130
+ **매개변수:**
131
+
132
+ - `data` (dict): 모델 구성 및 메타데이터
133
+
134
+ **모델 데이터 구조:**
135
+
136
+ - `name` (str, 필수): 모델 이름
137
+ - `description` (str): 모델 설명
138
+ - `model_type` (str, 필수): 모델 유형
139
+ - `project` (int, 필수): 프로젝트 ID
140
+ - `file` (str, 필수): 모델 파일 경로
141
+ - `metrics` (dict): 성능 메트릭
142
+ - `configuration` (dict): 모델 구성
143
+ - `is_active` (bool): 모델이 활성 상태여야 하는지 여부
144
+
145
+ **반환값:**
146
+
147
+ - `dict`: 생성된 ID가 포함된 생성된 모델
148
+
149
+ **참고:** 모델 파일은 최적 성능을 위해 청크 업로드를 사용하여 자동으로 업로드됩니다.
150
+
151
+ ## 정답 데이터 작업
152
+
153
+ ### `list_ground_truth_events(params=None, url_conversion=None, list_all=False)`
154
+
155
+ 포괄적인 필터링 옵션과 함께 정답 이벤트를 나열합니다.
156
+
157
+ ```python
158
+ # 데이터셋 버전의 정답 이벤트 나열
159
+ events = client.list_ground_truth_events(params={
160
+ 'ground_truth_dataset_versions': [123]
161
+ })
162
+
163
+ # 모든 이벤트 나열 (페이지네이션 자동 처리)
164
+ all_events = client.list_ground_truth_events(list_all=True)
165
+
166
+ # 날짜 필터링과 함께 이벤트 나열
167
+ from datetime import datetime, timedelta
168
+ recent_date = (datetime.now() - timedelta(days=30)).isoformat()
169
+ recent_events = client.list_ground_truth_events(params={
170
+ 'created_after': recent_date,
171
+ 'ground_truth_dataset_versions': [123]
172
+ })
173
+
174
+ # 사용자 정의 URL 변환과 함께 이벤트 나열
175
+ events = client.list_ground_truth_events(
176
+ params={'ground_truth_dataset_versions': [123]},
177
+ url_conversion={'files': lambda url: f"https://cdn.example.com{url}"}
178
+ )
179
+ ```
180
+
181
+ **매개변수:**
182
+
183
+ - `params` (dict, 선택사항): 필터링 매개변수
184
+ - `url_conversion` (dict, 선택사항): 파일 필드에 대한 사용자 정의 URL 변환
185
+ - `list_all` (bool): True인 경우, 페이지네이션을 자동 처리
186
+
187
+ **일반적인 필터링 params:**
188
+
189
+ - `ground_truth_dataset_versions`: 데이터셋 버전 ID 목록
190
+ - `project`: 프로젝트 ID로 필터링
191
+ - `created_after`: 생성 날짜로 필터링
192
+ - `data_type`: 데이터 유형으로 필터링
193
+ - `search`: 이벤트 데이터에서 텍스트 검색
194
+
195
+ **반환값:**
196
+
197
+ - `tuple`: `list_all=False`인 경우 (events_list, total_count)
198
+ - `list`: `list_all=True`인 경우 모든 이벤트
199
+
200
+ **정답 이벤트 구조:**
201
+
202
+ - `id`: 이벤트 ID
203
+ - `data`: 어노테이션/정답 데이터
204
+ - `data_unit`: 연관된 데이터 유닛 정보
205
+ - `ground_truth_dataset_version`: 데이터셋 버전 ID
206
+ - `created_at`: 생성 타임스탬프
207
+ - `metadata`: 추가 이벤트 메타데이터
208
+
209
+ ### `get_ground_truth_version(pk)`
210
+
211
+ 정답 데이터셋 버전에 대한 상세 정보를 가져옵니다.
212
+
213
+ ```python
214
+ version = client.get_ground_truth_version(123)
215
+ print(f"데이터셋 버전: {version['version']}")
216
+ print(f"데이터셋: {version['ground_truth_dataset']['name']}")
217
+ print(f"총 이벤트: {version['event_count']}")
218
+ print(f"생성됨: {version['created_at']}")
219
+ ```
220
+
221
+ **매개변수:**
222
+
223
+ - `pk` (int): 정답 데이터셋 버전 ID
224
+
225
+ **반환값:**
226
+
227
+ - `dict`: 완전한 데이터셋 버전 정보
228
+
229
+ **데이터셋 버전 구조:**
230
+
231
+ - `id`: 버전 ID
232
+ - `version`: 버전 번호/이름
233
+ - `ground_truth_dataset`: 부모 데이터셋 정보
234
+ - `event_count`: 이 버전의 이벤트 수
235
+ - `description`: 버전 설명
236
+ - `is_active`: 버전이 현재 활성 상태인지 여부
237
+ - `created_at`: 생성 타임스탬프
238
+ - `statistics`: 버전 통계 및 메트릭
239
+
240
+ ## 오류 처리
241
+
242
+ ```python
243
+ from synapse_sdk.clients.exceptions import ClientError
244
+
245
+ def robust_model_operations():
246
+ """오류 처리가 있는 안정적인 모델 작업 예제."""
247
+
248
+ try:
249
+ # 모델 가져오기 시도
250
+ model = client.get_model(999)
251
+ except ClientError as e:
252
+ if e.status_code == 404:
253
+ print("모델을 찾을 수 없음")
254
+ return None
255
+ else:
256
+ print(f"모델 가져오기 오류: {e}")
257
+ raise
258
+
259
+ try:
260
+ # 모델 생성 시도
261
+ model_data = {
262
+ 'name': 'Test Model',
263
+ 'model_type': 'classification',
264
+ 'project': 123,
265
+ 'file': '/path/to/model.pkl'
266
+ }
267
+ new_model = client.create_model(model_data)
268
+ except ClientError as e:
269
+ if e.status_code == 400:
270
+ print(f"잘못된 모델 데이터: {e.response}")
271
+ elif e.status_code == 413:
272
+ print("모델 파일이 너무 큼")
273
+ else:
274
+ print(f"모델 생성 오류: {e}")
275
+ return None
276
+
277
+ return new_model
278
+ ```
279
+
280
+ ## 참고
281
+
282
+ - [BackendClient](./backend.md) - 메인 백엔드 클라이언트
283
+ - [DataCollectionClientMixin](./data-collection-mixin.md) - 데이터 관리 작업
284
+ - [IntegrationClientMixin](./integration-mixin.md) - 플러그인 및 작업 관리
@@ -14,7 +14,7 @@ Apache Ray 클러스터 관리 및 모니터링 기능을 위한 클라이언트
14
14
 
15
15
  ## 주요 기능
16
16
 
17
- - **Job 라이프사이클 관리**: Ray 작업 생성, 모니터링관리
17
+ - **Job 라이프사이클 관리**: Ray 작업 생성, 모니터링, 관리 중지
18
18
  - **실시간 로그 스트리밍**: WebSocket 및 HTTP 기반 로그 테일링
19
19
  - **노드 및 태스크 모니터링**: 클러스터 리소스 및 태스크 실행 모니터링
20
20
  - **Ray Serve 통합**: Ray Serve 애플리케이션 배포 및 관리
@@ -52,6 +52,11 @@ jobs = client.list_jobs()
52
52
  # 특정 작업 세부정보 가져오기
53
53
  job = client.get_job('job-12345')
54
54
 
55
+ # 필요한 경우 실행 중인 작업 중지
56
+ if job['status'] == 'RUNNING':
57
+ result = client.stop_job('job-12345')
58
+ print(f"작업 중지 시작: {result['status']}")
59
+
55
60
  # 실시간으로 로그 스트리밍
56
61
  for log_line in client.tail_job_logs('job-12345'):
57
62
  print(log_line.strip())
@@ -86,6 +91,22 @@ for job in jobs['results']:
86
91
  logs = client.list_job_logs('job-12345')
87
92
  ```
88
93
 
94
+ ### `stop_job(pk)`
95
+
96
+ Ray의 stop_job() API를 사용하여 실행 중인 작업을 정상적으로 중지합니다.
97
+
98
+ ```python
99
+ # 실행 중인 작업 중지
100
+ result = client.stop_job('job-12345')
101
+ print(f"중지 상태: {result['status']}")
102
+
103
+ # 중지 오류 처리
104
+ try:
105
+ client.stop_job('job-12345')
106
+ except ClientError as e:
107
+ print(f"중지 실패: {e}")
108
+ ```
109
+
89
110
  ## 실시간 로그 스트리밍
90
111
 
91
112
  ### `tail_job_logs(pk, stream_timeout=10, protocol='stream')`
@@ -221,7 +242,7 @@ except ClientError as e:
221
242
 
222
243
  ### 일반적인 오류 코드
223
244
 
224
- - **400**: 잘못된 매개변수 (job ID, timeout, protocol)
245
+ - **400**: 잘못된 매개변수 (job ID, timeout, protocol) 또는 이미 종료 상태인 작업
225
246
  - **404**: 리소스를 찾을 수 없음 (job, node, task, application)
226
247
  - **408**: 연결 또는 읽기 timeout
227
248
  - **429**: 스트림 제한 초과