isa-model 0.4.0__py3-none-any.whl → 0.4.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.
Files changed (199) hide show
  1. isa_model/client.py +466 -43
  2. isa_model/core/cache/redis_cache.py +12 -3
  3. isa_model/core/config/config_manager.py +230 -3
  4. isa_model/core/config.py +90 -0
  5. isa_model/core/database/direct_db_client.py +114 -0
  6. isa_model/core/database/migration_manager.py +563 -0
  7. isa_model/core/database/migrations.py +21 -1
  8. isa_model/core/database/supabase_client.py +154 -19
  9. isa_model/core/dependencies.py +316 -0
  10. isa_model/core/discovery/__init__.py +19 -0
  11. isa_model/core/discovery/consul_discovery.py +190 -0
  12. isa_model/core/logging/__init__.py +54 -0
  13. isa_model/core/logging/influx_logger.py +523 -0
  14. isa_model/core/logging/loki_logger.py +160 -0
  15. isa_model/core/models/__init__.py +27 -18
  16. isa_model/core/models/config_models.py +625 -0
  17. isa_model/core/models/deployment_billing_tracker.py +430 -0
  18. isa_model/core/models/model_manager.py +40 -17
  19. isa_model/core/models/model_metadata.py +690 -0
  20. isa_model/core/models/model_repo.py +174 -18
  21. isa_model/core/models/system_models.py +857 -0
  22. isa_model/core/repositories/__init__.py +9 -0
  23. isa_model/core/repositories/config_repository.py +912 -0
  24. isa_model/core/services/intelligent_model_selector.py +399 -21
  25. isa_model/core/storage/hf_storage.py +1 -1
  26. isa_model/core/types.py +1 -0
  27. isa_model/deployment/__init__.py +5 -48
  28. isa_model/deployment/core/__init__.py +2 -31
  29. isa_model/deployment/core/deployment_manager.py +1278 -370
  30. isa_model/deployment/local/__init__.py +31 -0
  31. isa_model/deployment/local/config.py +248 -0
  32. isa_model/deployment/local/gpu_gateway.py +607 -0
  33. isa_model/deployment/local/health_checker.py +428 -0
  34. isa_model/deployment/local/provider.py +586 -0
  35. isa_model/deployment/local/tensorrt_service.py +621 -0
  36. isa_model/deployment/local/transformers_service.py +644 -0
  37. isa_model/deployment/local/vllm_service.py +527 -0
  38. isa_model/deployment/modal/__init__.py +8 -0
  39. isa_model/deployment/modal/config.py +136 -0
  40. isa_model/deployment/{services/auto_hf_modal_deployer.py → modal/deployer.py} +1 -1
  41. isa_model/deployment/modal/services/__init__.py +3 -0
  42. isa_model/deployment/modal/services/audio/__init__.py +1 -0
  43. isa_model/deployment/modal/services/embedding/__init__.py +1 -0
  44. isa_model/deployment/modal/services/llm/__init__.py +1 -0
  45. isa_model/deployment/modal/services/llm/isa_llm_service.py +424 -0
  46. isa_model/deployment/modal/services/video/__init__.py +1 -0
  47. isa_model/deployment/modal/services/vision/__init__.py +1 -0
  48. isa_model/deployment/models/org-org-acme-corp-tenant-a-service-llm-20250825-225822/tenant-a-service_modal_service.py +48 -0
  49. isa_model/deployment/models/org-test-org-123-prefix-test-service-llm-20250825-225822/prefix-test-service_modal_service.py +48 -0
  50. isa_model/deployment/models/test-llm-service-llm-20250825-204442/test-llm-service_modal_service.py +48 -0
  51. isa_model/deployment/models/test-monitoring-gpt2-llm-20250825-212906/test-monitoring-gpt2_modal_service.py +48 -0
  52. isa_model/deployment/models/test-monitoring-gpt2-llm-20250825-213009/test-monitoring-gpt2_modal_service.py +48 -0
  53. isa_model/deployment/storage/__init__.py +5 -0
  54. isa_model/deployment/storage/deployment_repository.py +824 -0
  55. isa_model/deployment/triton/__init__.py +10 -0
  56. isa_model/deployment/triton/config.py +196 -0
  57. isa_model/deployment/triton/configs/__init__.py +1 -0
  58. isa_model/deployment/triton/provider.py +512 -0
  59. isa_model/deployment/triton/scripts/__init__.py +1 -0
  60. isa_model/deployment/triton/templates/__init__.py +1 -0
  61. isa_model/inference/__init__.py +47 -1
  62. isa_model/inference/ai_factory.py +137 -10
  63. isa_model/inference/legacy_services/__init__.py +21 -0
  64. isa_model/inference/legacy_services/model_evaluation.py +637 -0
  65. isa_model/inference/legacy_services/model_service.py +573 -0
  66. isa_model/inference/legacy_services/model_serving.py +717 -0
  67. isa_model/inference/legacy_services/model_training.py +561 -0
  68. isa_model/inference/models/__init__.py +21 -0
  69. isa_model/inference/models/inference_config.py +551 -0
  70. isa_model/inference/models/inference_record.py +675 -0
  71. isa_model/inference/models/performance_models.py +714 -0
  72. isa_model/inference/repositories/__init__.py +9 -0
  73. isa_model/inference/repositories/inference_repository.py +828 -0
  74. isa_model/inference/services/audio/base_stt_service.py +184 -11
  75. isa_model/inference/services/audio/openai_stt_service.py +22 -6
  76. isa_model/inference/services/custom_model_manager.py +277 -0
  77. isa_model/inference/services/embedding/ollama_embed_service.py +15 -3
  78. isa_model/inference/services/embedding/resilient_embed_service.py +285 -0
  79. isa_model/inference/services/llm/__init__.py +10 -2
  80. isa_model/inference/services/llm/base_llm_service.py +335 -24
  81. isa_model/inference/services/llm/cerebras_llm_service.py +628 -0
  82. isa_model/inference/services/llm/helpers/llm_adapter.py +9 -4
  83. isa_model/inference/services/llm/helpers/llm_prompts.py +342 -0
  84. isa_model/inference/services/llm/helpers/llm_utils.py +321 -23
  85. isa_model/inference/services/llm/huggingface_llm_service.py +581 -0
  86. isa_model/inference/services/llm/local_llm_service.py +747 -0
  87. isa_model/inference/services/llm/ollama_llm_service.py +9 -2
  88. isa_model/inference/services/llm/openai_llm_service.py +33 -16
  89. isa_model/inference/services/llm/yyds_llm_service.py +8 -2
  90. isa_model/inference/services/vision/__init__.py +22 -1
  91. isa_model/inference/services/vision/blip_vision_service.py +359 -0
  92. isa_model/inference/services/vision/helpers/image_utils.py +8 -5
  93. isa_model/inference/services/vision/isa_vision_service.py +65 -4
  94. isa_model/inference/services/vision/openai_vision_service.py +19 -10
  95. isa_model/inference/services/vision/vgg16_vision_service.py +257 -0
  96. isa_model/serving/api/cache_manager.py +245 -0
  97. isa_model/serving/api/dependencies/__init__.py +1 -0
  98. isa_model/serving/api/dependencies/auth.py +194 -0
  99. isa_model/serving/api/dependencies/database.py +139 -0
  100. isa_model/serving/api/error_handlers.py +284 -0
  101. isa_model/serving/api/fastapi_server.py +172 -22
  102. isa_model/serving/api/middleware/auth.py +8 -2
  103. isa_model/serving/api/middleware/security.py +23 -33
  104. isa_model/serving/api/middleware/tenant_context.py +414 -0
  105. isa_model/serving/api/routes/analytics.py +4 -1
  106. isa_model/serving/api/routes/config.py +645 -0
  107. isa_model/serving/api/routes/deployment_billing.py +315 -0
  108. isa_model/serving/api/routes/deployments.py +138 -2
  109. isa_model/serving/api/routes/gpu_gateway.py +440 -0
  110. isa_model/serving/api/routes/health.py +32 -12
  111. isa_model/serving/api/routes/inference_monitoring.py +486 -0
  112. isa_model/serving/api/routes/local_deployments.py +448 -0
  113. isa_model/serving/api/routes/tenants.py +575 -0
  114. isa_model/serving/api/routes/unified.py +680 -18
  115. isa_model/serving/api/routes/webhooks.py +479 -0
  116. isa_model/serving/api/startup.py +68 -54
  117. isa_model/utils/gpu_utils.py +311 -0
  118. {isa_model-0.4.0.dist-info → isa_model-0.4.3.dist-info}/METADATA +66 -24
  119. isa_model-0.4.3.dist-info/RECORD +193 -0
  120. isa_model/core/storage/minio_storage.py +0 -0
  121. isa_model/deployment/cloud/__init__.py +0 -9
  122. isa_model/deployment/cloud/modal/__init__.py +0 -10
  123. isa_model/deployment/core/deployment_config.py +0 -356
  124. isa_model/deployment/core/isa_deployment_service.py +0 -401
  125. isa_model/deployment/gpu_int8_ds8/app/server.py +0 -66
  126. isa_model/deployment/gpu_int8_ds8/scripts/test_client.py +0 -43
  127. isa_model/deployment/gpu_int8_ds8/scripts/test_client_os.py +0 -35
  128. isa_model/deployment/runtime/deployed_service.py +0 -338
  129. isa_model/deployment/services/__init__.py +0 -9
  130. isa_model/deployment/services/auto_deploy_vision_service.py +0 -538
  131. isa_model/deployment/services/model_service.py +0 -332
  132. isa_model/deployment/services/service_monitor.py +0 -356
  133. isa_model/deployment/services/service_registry.py +0 -527
  134. isa_model/eval/__init__.py +0 -92
  135. isa_model/eval/benchmarks/__init__.py +0 -27
  136. isa_model/eval/benchmarks/multimodal_datasets.py +0 -460
  137. isa_model/eval/benchmarks.py +0 -701
  138. isa_model/eval/config/__init__.py +0 -10
  139. isa_model/eval/config/evaluation_config.py +0 -108
  140. isa_model/eval/evaluators/__init__.py +0 -24
  141. isa_model/eval/evaluators/audio_evaluator.py +0 -727
  142. isa_model/eval/evaluators/base_evaluator.py +0 -503
  143. isa_model/eval/evaluators/embedding_evaluator.py +0 -742
  144. isa_model/eval/evaluators/llm_evaluator.py +0 -472
  145. isa_model/eval/evaluators/vision_evaluator.py +0 -564
  146. isa_model/eval/example_evaluation.py +0 -395
  147. isa_model/eval/factory.py +0 -798
  148. isa_model/eval/infrastructure/__init__.py +0 -24
  149. isa_model/eval/infrastructure/experiment_tracker.py +0 -466
  150. isa_model/eval/isa_benchmarks.py +0 -700
  151. isa_model/eval/isa_integration.py +0 -582
  152. isa_model/eval/metrics.py +0 -951
  153. isa_model/eval/tests/unit/test_basic.py +0 -396
  154. isa_model/serving/api/routes/evaluations.py +0 -579
  155. isa_model/training/__init__.py +0 -168
  156. isa_model/training/annotation/annotation_schema.py +0 -47
  157. isa_model/training/annotation/processors/annotation_processor.py +0 -126
  158. isa_model/training/annotation/storage/dataset_manager.py +0 -131
  159. isa_model/training/annotation/storage/dataset_schema.py +0 -44
  160. isa_model/training/annotation/tests/test_annotation_flow.py +0 -109
  161. isa_model/training/annotation/tests/test_minio copy.py +0 -113
  162. isa_model/training/annotation/tests/test_minio_upload.py +0 -43
  163. isa_model/training/annotation/views/annotation_controller.py +0 -158
  164. isa_model/training/cloud/__init__.py +0 -22
  165. isa_model/training/cloud/job_orchestrator.py +0 -402
  166. isa_model/training/cloud/runpod_trainer.py +0 -454
  167. isa_model/training/cloud/storage_manager.py +0 -482
  168. isa_model/training/core/__init__.py +0 -26
  169. isa_model/training/core/config.py +0 -181
  170. isa_model/training/core/dataset.py +0 -222
  171. isa_model/training/core/trainer.py +0 -720
  172. isa_model/training/core/utils.py +0 -213
  173. isa_model/training/examples/intelligent_training_example.py +0 -281
  174. isa_model/training/factory.py +0 -424
  175. isa_model/training/intelligent/__init__.py +0 -25
  176. isa_model/training/intelligent/decision_engine.py +0 -643
  177. isa_model/training/intelligent/intelligent_factory.py +0 -888
  178. isa_model/training/intelligent/knowledge_base.py +0 -751
  179. isa_model/training/intelligent/resource_optimizer.py +0 -839
  180. isa_model/training/intelligent/task_classifier.py +0 -576
  181. isa_model/training/storage/__init__.py +0 -24
  182. isa_model/training/storage/core_integration.py +0 -439
  183. isa_model/training/storage/training_repository.py +0 -552
  184. isa_model/training/storage/training_storage.py +0 -628
  185. isa_model-0.4.0.dist-info/RECORD +0 -182
  186. /isa_model/deployment/{cloud/modal → modal/services/audio}/isa_audio_chatTTS_service.py +0 -0
  187. /isa_model/deployment/{cloud/modal → modal/services/audio}/isa_audio_fish_service.py +0 -0
  188. /isa_model/deployment/{cloud/modal → modal/services/audio}/isa_audio_openvoice_service.py +0 -0
  189. /isa_model/deployment/{cloud/modal → modal/services/audio}/isa_audio_service_v2.py +0 -0
  190. /isa_model/deployment/{cloud/modal → modal/services/embedding}/isa_embed_rerank_service.py +0 -0
  191. /isa_model/deployment/{cloud/modal → modal/services/video}/isa_video_hunyuan_service.py +0 -0
  192. /isa_model/deployment/{cloud/modal → modal/services/vision}/isa_vision_ocr_service.py +0 -0
  193. /isa_model/deployment/{cloud/modal → modal/services/vision}/isa_vision_qwen25_service.py +0 -0
  194. /isa_model/deployment/{cloud/modal → modal/services/vision}/isa_vision_table_service.py +0 -0
  195. /isa_model/deployment/{cloud/modal → modal/services/vision}/isa_vision_ui_service.py +0 -0
  196. /isa_model/deployment/{cloud/modal → modal/services/vision}/isa_vision_ui_service_optimized.py +0 -0
  197. /isa_model/deployment/{services → modal/services/vision}/simple_auto_deploy_vision_service.py +0 -0
  198. {isa_model-0.4.0.dist-info → isa_model-0.4.3.dist-info}/WHEEL +0 -0
  199. {isa_model-0.4.0.dist-info → isa_model-0.4.3.dist-info}/top_level.txt +0 -0
@@ -1,222 +0,0 @@
1
- """
2
- Dataset Management
3
-
4
- Handles loading and preprocessing of datasets for training.
5
- """
6
-
7
- import json
8
- import logging
9
- from typing import Optional, Tuple, Dict, Any, List, Union
10
- from pathlib import Path
11
- from datasets import Dataset, load_dataset
12
-
13
- logger = logging.getLogger(__name__)
14
-
15
-
16
- class DatasetManager:
17
- """Manages dataset loading and preprocessing."""
18
-
19
- def __init__(self, tokenizer, max_length: int = 1024):
20
- """
21
- Initialize dataset manager.
22
-
23
- Args:
24
- tokenizer: HuggingFace tokenizer
25
- max_length: Maximum sequence length
26
- """
27
- self.tokenizer = tokenizer
28
- self.max_length = max_length
29
-
30
- def prepare_dataset(
31
- self,
32
- dataset_path: str,
33
- dataset_format: str = "alpaca",
34
- validation_split: float = 0.1
35
- ) -> Tuple[Dataset, Optional[Dataset]]:
36
- """
37
- Prepare training and validation datasets.
38
-
39
- Args:
40
- dataset_path: Path to dataset file or HuggingFace dataset name
41
- dataset_format: Format of the dataset (alpaca, sharegpt, custom)
42
- validation_split: Fraction of data to use for validation
43
-
44
- Returns:
45
- Tuple of (train_dataset, eval_dataset)
46
- """
47
- logger.info(f"Preparing dataset: {dataset_path}")
48
-
49
- # Load raw dataset
50
- raw_dataset = self._load_raw_dataset(dataset_path)
51
-
52
- # Convert to training format
53
- if dataset_format == "alpaca":
54
- processed_dataset = self._process_alpaca_format(raw_dataset)
55
- elif dataset_format == "sharegpt":
56
- processed_dataset = self._process_sharegpt_format(raw_dataset)
57
- else:
58
- processed_dataset = self._process_custom_format(raw_dataset)
59
-
60
- # Tokenize dataset
61
- tokenized_dataset = processed_dataset.map(
62
- self._tokenize_function,
63
- batched=True,
64
- remove_columns=processed_dataset.column_names
65
- )
66
-
67
- # Split into train/eval
68
- if validation_split > 0:
69
- split_dataset = tokenized_dataset.train_test_split(
70
- test_size=validation_split,
71
- seed=42
72
- )
73
- train_dataset = split_dataset["train"]
74
- eval_dataset = split_dataset["test"]
75
- else:
76
- train_dataset = tokenized_dataset
77
- eval_dataset = None
78
-
79
- logger.info(f"Dataset prepared: {len(train_dataset)} training samples")
80
- if eval_dataset:
81
- logger.info(f"Validation samples: {len(eval_dataset)}")
82
-
83
- return train_dataset, eval_dataset
84
-
85
- def _load_raw_dataset(self, dataset_path: str) -> Dataset:
86
- """Load raw dataset from file or HuggingFace."""
87
- try:
88
- # Check if it's a local file
89
- if Path(dataset_path).exists():
90
- logger.info(f"Loading local dataset: {dataset_path}")
91
-
92
- if dataset_path.endswith('.json'):
93
- with open(dataset_path, 'r') as f:
94
- data = json.load(f)
95
- return Dataset.from_list(data)
96
- elif dataset_path.endswith('.jsonl'):
97
- data = []
98
- with open(dataset_path, 'r') as f:
99
- for line in f:
100
- data.append(json.loads(line))
101
- return Dataset.from_list(data)
102
- else:
103
- raise ValueError(f"Unsupported file format: {dataset_path}")
104
-
105
- else:
106
- # Try loading from HuggingFace Hub
107
- logger.info(f"Loading HuggingFace dataset: {dataset_path}")
108
- dataset = load_dataset(dataset_path, split="train")
109
- return dataset
110
-
111
- except Exception as e:
112
- logger.error(f"Failed to load dataset: {e}")
113
- raise
114
-
115
- def _process_alpaca_format(self, dataset: Dataset) -> Dataset:
116
- """Process Alpaca format dataset."""
117
- def format_alpaca(example):
118
- instruction = example.get("instruction", "")
119
- input_text = example.get("input", "")
120
- output = example.get("output", "")
121
-
122
- # Format prompt
123
- if input_text:
124
- prompt = f"### Instruction:\n{instruction}\n\n### Input:\n{input_text}\n\n### Response:\n"
125
- else:
126
- prompt = f"### Instruction:\n{instruction}\n\n### Response:\n"
127
-
128
- # Combine prompt and response
129
- text = prompt + output
130
-
131
- return {"text": text}
132
-
133
- return dataset.map(format_alpaca)
134
-
135
- def _process_sharegpt_format(self, dataset: Dataset) -> Dataset:
136
- """Process ShareGPT format dataset."""
137
- def format_sharegpt(example):
138
- conversations = example.get("conversations", [])
139
-
140
- text = ""
141
- for conv in conversations:
142
- role = conv.get("from", "")
143
- content = conv.get("value", "")
144
-
145
- if role == "human":
146
- text += f"### Human:\n{content}\n\n"
147
- elif role == "gpt":
148
- text += f"### Assistant:\n{content}\n\n"
149
-
150
- return {"text": text.strip()}
151
-
152
- return dataset.map(format_sharegpt)
153
-
154
- def _process_custom_format(self, dataset: Dataset) -> Dataset:
155
- """Process custom format dataset."""
156
- # Assume the dataset already has a 'text' column
157
- if "text" not in dataset.column_names:
158
- raise ValueError("Custom format dataset must have a 'text' column")
159
-
160
- return dataset
161
-
162
- def _tokenize_function(self, examples):
163
- """Tokenize examples for training."""
164
- # Tokenize inputs
165
- tokenized = self.tokenizer(
166
- examples["text"],
167
- truncation=True,
168
- padding=False,
169
- max_length=self.max_length,
170
- return_tensors=None,
171
- )
172
-
173
- # For language modeling, labels are the same as input_ids
174
- tokenized["labels"] = tokenized["input_ids"].copy()
175
-
176
- return tokenized
177
-
178
- @staticmethod
179
- def convert_hf_dataset_to_alpaca(
180
- dataset_name: str,
181
- output_path: str,
182
- instruction_column: str = "instruction",
183
- input_column: str = "input",
184
- output_column: str = "output"
185
- ) -> str:
186
- """
187
- Convert a HuggingFace dataset to Alpaca format.
188
-
189
- Args:
190
- dataset_name: Name of the HuggingFace dataset
191
- output_path: Path to save the converted dataset
192
- instruction_column: Column name for instructions
193
- input_column: Column name for inputs
194
- output_column: Column name for outputs
195
-
196
- Returns:
197
- Path to the saved dataset
198
- """
199
- logger.info(f"Converting {dataset_name} to Alpaca format")
200
-
201
- # Load dataset
202
- dataset = load_dataset(dataset_name, split="train")
203
-
204
- # Convert to Alpaca format
205
- alpaca_data = []
206
- for example in dataset:
207
- alpaca_example = {
208
- "instruction": example.get(instruction_column, ""),
209
- "input": example.get(input_column, ""),
210
- "output": example.get(output_column, "")
211
- }
212
- alpaca_data.append(alpaca_example)
213
-
214
- # Save to file
215
- output_path = Path(output_path)
216
- output_path.parent.mkdir(parents=True, exist_ok=True)
217
-
218
- with open(output_path, 'w') as f:
219
- json.dump(alpaca_data, f, indent=2)
220
-
221
- logger.info(f"Dataset converted and saved to: {output_path}")
222
- return str(output_path)