isa-model 0.4.0__py3-none-any.whl → 0.4.4__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 (189) 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 +35 -80
  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/types.py +1 -0
  26. isa_model/deployment/__init__.py +5 -48
  27. isa_model/deployment/core/__init__.py +2 -31
  28. isa_model/deployment/core/deployment_manager.py +1278 -370
  29. isa_model/deployment/modal/__init__.py +8 -0
  30. isa_model/deployment/modal/config.py +136 -0
  31. isa_model/deployment/{services/auto_hf_modal_deployer.py → modal/deployer.py} +1 -1
  32. isa_model/deployment/modal/services/__init__.py +3 -0
  33. isa_model/deployment/modal/services/audio/__init__.py +1 -0
  34. isa_model/deployment/modal/services/embedding/__init__.py +1 -0
  35. isa_model/deployment/modal/services/llm/__init__.py +1 -0
  36. isa_model/deployment/modal/services/llm/isa_llm_service.py +424 -0
  37. isa_model/deployment/modal/services/video/__init__.py +1 -0
  38. isa_model/deployment/modal/services/vision/__init__.py +1 -0
  39. isa_model/deployment/models/org-org-acme-corp-tenant-a-service-llm-20250825-225822/tenant-a-service_modal_service.py +48 -0
  40. isa_model/deployment/models/org-test-org-123-prefix-test-service-llm-20250825-225822/prefix-test-service_modal_service.py +48 -0
  41. isa_model/deployment/models/test-llm-service-llm-20250825-204442/test-llm-service_modal_service.py +48 -0
  42. isa_model/deployment/models/test-monitoring-gpt2-llm-20250825-212906/test-monitoring-gpt2_modal_service.py +48 -0
  43. isa_model/deployment/models/test-monitoring-gpt2-llm-20250825-213009/test-monitoring-gpt2_modal_service.py +48 -0
  44. isa_model/deployment/storage/__init__.py +5 -0
  45. isa_model/deployment/storage/deployment_repository.py +824 -0
  46. isa_model/deployment/triton/__init__.py +10 -0
  47. isa_model/deployment/triton/config.py +196 -0
  48. isa_model/deployment/triton/configs/__init__.py +1 -0
  49. isa_model/deployment/triton/provider.py +512 -0
  50. isa_model/deployment/triton/scripts/__init__.py +1 -0
  51. isa_model/deployment/triton/templates/__init__.py +1 -0
  52. isa_model/inference/__init__.py +47 -1
  53. isa_model/inference/ai_factory.py +137 -10
  54. isa_model/inference/legacy_services/__init__.py +21 -0
  55. isa_model/inference/legacy_services/model_evaluation.py +637 -0
  56. isa_model/inference/legacy_services/model_service.py +573 -0
  57. isa_model/inference/legacy_services/model_serving.py +717 -0
  58. isa_model/inference/legacy_services/model_training.py +561 -0
  59. isa_model/inference/models/__init__.py +21 -0
  60. isa_model/inference/models/inference_config.py +551 -0
  61. isa_model/inference/models/inference_record.py +675 -0
  62. isa_model/inference/models/performance_models.py +714 -0
  63. isa_model/inference/repositories/__init__.py +9 -0
  64. isa_model/inference/repositories/inference_repository.py +828 -0
  65. isa_model/inference/services/audio/base_stt_service.py +184 -11
  66. isa_model/inference/services/audio/openai_stt_service.py +22 -6
  67. isa_model/inference/services/embedding/ollama_embed_service.py +15 -3
  68. isa_model/inference/services/embedding/resilient_embed_service.py +285 -0
  69. isa_model/inference/services/llm/__init__.py +10 -2
  70. isa_model/inference/services/llm/base_llm_service.py +335 -24
  71. isa_model/inference/services/llm/cerebras_llm_service.py +628 -0
  72. isa_model/inference/services/llm/helpers/llm_adapter.py +9 -4
  73. isa_model/inference/services/llm/helpers/llm_prompts.py +342 -0
  74. isa_model/inference/services/llm/helpers/llm_utils.py +321 -23
  75. isa_model/inference/services/llm/huggingface_llm_service.py +581 -0
  76. isa_model/inference/services/llm/ollama_llm_service.py +9 -2
  77. isa_model/inference/services/llm/openai_llm_service.py +33 -16
  78. isa_model/inference/services/llm/yyds_llm_service.py +8 -2
  79. isa_model/inference/services/vision/__init__.py +22 -1
  80. isa_model/inference/services/vision/helpers/image_utils.py +8 -5
  81. isa_model/inference/services/vision/isa_vision_service.py +65 -4
  82. isa_model/inference/services/vision/openai_vision_service.py +19 -10
  83. isa_model/inference/services/vision/vgg16_vision_service.py +257 -0
  84. isa_model/serving/api/cache_manager.py +245 -0
  85. isa_model/serving/api/dependencies/__init__.py +1 -0
  86. isa_model/serving/api/dependencies/auth.py +194 -0
  87. isa_model/serving/api/dependencies/database.py +139 -0
  88. isa_model/serving/api/error_handlers.py +284 -0
  89. isa_model/serving/api/fastapi_server.py +172 -22
  90. isa_model/serving/api/middleware/auth.py +8 -2
  91. isa_model/serving/api/middleware/security.py +23 -33
  92. isa_model/serving/api/middleware/tenant_context.py +414 -0
  93. isa_model/serving/api/routes/analytics.py +4 -1
  94. isa_model/serving/api/routes/config.py +645 -0
  95. isa_model/serving/api/routes/deployment_billing.py +315 -0
  96. isa_model/serving/api/routes/deployments.py +138 -2
  97. isa_model/serving/api/routes/gpu_gateway.py +440 -0
  98. isa_model/serving/api/routes/health.py +32 -12
  99. isa_model/serving/api/routes/inference_monitoring.py +486 -0
  100. isa_model/serving/api/routes/local_deployments.py +448 -0
  101. isa_model/serving/api/routes/tenants.py +575 -0
  102. isa_model/serving/api/routes/unified.py +680 -18
  103. isa_model/serving/api/routes/webhooks.py +479 -0
  104. isa_model/serving/api/startup.py +68 -54
  105. isa_model/utils/gpu_utils.py +311 -0
  106. {isa_model-0.4.0.dist-info → isa_model-0.4.4.dist-info}/METADATA +71 -24
  107. isa_model-0.4.4.dist-info/RECORD +180 -0
  108. isa_model/core/security/secrets.py +0 -358
  109. isa_model/core/storage/hf_storage.py +0 -419
  110. isa_model/core/storage/minio_storage.py +0 -0
  111. isa_model/deployment/cloud/__init__.py +0 -9
  112. isa_model/deployment/cloud/modal/__init__.py +0 -10
  113. isa_model/deployment/core/deployment_config.py +0 -356
  114. isa_model/deployment/core/isa_deployment_service.py +0 -401
  115. isa_model/deployment/gpu_int8_ds8/app/server.py +0 -66
  116. isa_model/deployment/gpu_int8_ds8/scripts/test_client.py +0 -43
  117. isa_model/deployment/gpu_int8_ds8/scripts/test_client_os.py +0 -35
  118. isa_model/deployment/runtime/deployed_service.py +0 -338
  119. isa_model/deployment/services/__init__.py +0 -9
  120. isa_model/deployment/services/auto_deploy_vision_service.py +0 -538
  121. isa_model/deployment/services/model_service.py +0 -332
  122. isa_model/deployment/services/service_monitor.py +0 -356
  123. isa_model/deployment/services/service_registry.py +0 -527
  124. isa_model/eval/__init__.py +0 -92
  125. isa_model/eval/benchmarks/__init__.py +0 -27
  126. isa_model/eval/benchmarks/multimodal_datasets.py +0 -460
  127. isa_model/eval/benchmarks.py +0 -701
  128. isa_model/eval/config/__init__.py +0 -10
  129. isa_model/eval/config/evaluation_config.py +0 -108
  130. isa_model/eval/evaluators/__init__.py +0 -24
  131. isa_model/eval/evaluators/audio_evaluator.py +0 -727
  132. isa_model/eval/evaluators/base_evaluator.py +0 -503
  133. isa_model/eval/evaluators/embedding_evaluator.py +0 -742
  134. isa_model/eval/evaluators/llm_evaluator.py +0 -472
  135. isa_model/eval/evaluators/vision_evaluator.py +0 -564
  136. isa_model/eval/example_evaluation.py +0 -395
  137. isa_model/eval/factory.py +0 -798
  138. isa_model/eval/infrastructure/__init__.py +0 -24
  139. isa_model/eval/infrastructure/experiment_tracker.py +0 -466
  140. isa_model/eval/isa_benchmarks.py +0 -700
  141. isa_model/eval/isa_integration.py +0 -582
  142. isa_model/eval/metrics.py +0 -951
  143. isa_model/eval/tests/unit/test_basic.py +0 -396
  144. isa_model/serving/api/routes/evaluations.py +0 -579
  145. isa_model/training/__init__.py +0 -168
  146. isa_model/training/annotation/annotation_schema.py +0 -47
  147. isa_model/training/annotation/processors/annotation_processor.py +0 -126
  148. isa_model/training/annotation/storage/dataset_manager.py +0 -131
  149. isa_model/training/annotation/storage/dataset_schema.py +0 -44
  150. isa_model/training/annotation/tests/test_annotation_flow.py +0 -109
  151. isa_model/training/annotation/tests/test_minio copy.py +0 -113
  152. isa_model/training/annotation/tests/test_minio_upload.py +0 -43
  153. isa_model/training/annotation/views/annotation_controller.py +0 -158
  154. isa_model/training/cloud/__init__.py +0 -22
  155. isa_model/training/cloud/job_orchestrator.py +0 -402
  156. isa_model/training/cloud/runpod_trainer.py +0 -454
  157. isa_model/training/cloud/storage_manager.py +0 -482
  158. isa_model/training/core/__init__.py +0 -26
  159. isa_model/training/core/config.py +0 -181
  160. isa_model/training/core/dataset.py +0 -222
  161. isa_model/training/core/trainer.py +0 -720
  162. isa_model/training/core/utils.py +0 -213
  163. isa_model/training/examples/intelligent_training_example.py +0 -281
  164. isa_model/training/factory.py +0 -424
  165. isa_model/training/intelligent/__init__.py +0 -25
  166. isa_model/training/intelligent/decision_engine.py +0 -643
  167. isa_model/training/intelligent/intelligent_factory.py +0 -888
  168. isa_model/training/intelligent/knowledge_base.py +0 -751
  169. isa_model/training/intelligent/resource_optimizer.py +0 -839
  170. isa_model/training/intelligent/task_classifier.py +0 -576
  171. isa_model/training/storage/__init__.py +0 -24
  172. isa_model/training/storage/core_integration.py +0 -439
  173. isa_model/training/storage/training_repository.py +0 -552
  174. isa_model/training/storage/training_storage.py +0 -628
  175. isa_model-0.4.0.dist-info/RECORD +0 -182
  176. /isa_model/deployment/{cloud/modal → modal/services/audio}/isa_audio_chatTTS_service.py +0 -0
  177. /isa_model/deployment/{cloud/modal → modal/services/audio}/isa_audio_fish_service.py +0 -0
  178. /isa_model/deployment/{cloud/modal → modal/services/audio}/isa_audio_openvoice_service.py +0 -0
  179. /isa_model/deployment/{cloud/modal → modal/services/audio}/isa_audio_service_v2.py +0 -0
  180. /isa_model/deployment/{cloud/modal → modal/services/embedding}/isa_embed_rerank_service.py +0 -0
  181. /isa_model/deployment/{cloud/modal → modal/services/video}/isa_video_hunyuan_service.py +0 -0
  182. /isa_model/deployment/{cloud/modal → modal/services/vision}/isa_vision_ocr_service.py +0 -0
  183. /isa_model/deployment/{cloud/modal → modal/services/vision}/isa_vision_qwen25_service.py +0 -0
  184. /isa_model/deployment/{cloud/modal → modal/services/vision}/isa_vision_table_service.py +0 -0
  185. /isa_model/deployment/{cloud/modal → modal/services/vision}/isa_vision_ui_service.py +0 -0
  186. /isa_model/deployment/{cloud/modal → modal/services/vision}/isa_vision_ui_service_optimized.py +0 -0
  187. /isa_model/deployment/{services → modal/services/vision}/simple_auto_deploy_vision_service.py +0 -0
  188. {isa_model-0.4.0.dist-info → isa_model-0.4.4.dist-info}/WHEEL +0 -0
  189. {isa_model-0.4.0.dist-info → isa_model-0.4.4.dist-info}/top_level.txt +0 -0
@@ -1,419 +0,0 @@
1
- """
2
- HuggingFace Hub Storage Implementation
3
-
4
- Provides storage capabilities using HuggingFace Hub as the backend.
5
- Supports uploading trained models, managing versions, and metadata.
6
- """
7
-
8
- import os
9
- import json
10
- import logging
11
- from typing import Optional, Dict, Any, List
12
- from pathlib import Path
13
- import tempfile
14
- import shutil
15
- from datetime import datetime
16
-
17
- try:
18
- from huggingface_hub import HfApi, create_repo, upload_folder, snapshot_download
19
- from huggingface_hub.errors import HfHubHTTPError
20
- HF_HUB_AVAILABLE = True
21
- except ImportError:
22
- HF_HUB_AVAILABLE = False
23
-
24
- from ..models.model_storage import ModelStorage
25
-
26
- logger = logging.getLogger(__name__)
27
-
28
-
29
- class HuggingFaceStorage(ModelStorage):
30
- """
31
- HuggingFace Hub storage implementation for model management.
32
-
33
- This storage backend uploads models to HuggingFace Hub and manages
34
- them using the repository system. Perfect for sharing trained models
35
- and maintaining versions.
36
-
37
- Example:
38
- ```python
39
- from isa_model.core.storage import HuggingFaceStorage
40
-
41
- storage = HuggingFaceStorage(
42
- username="xenobordom",
43
- token="your_hf_token"
44
- )
45
-
46
- # Save a trained model to HuggingFace Hub
47
- await storage.save_model(
48
- model_id="gemma-4b-alpaca-v1",
49
- model_path="./trained_models/gemma-4b",
50
- metadata={
51
- "base_model": "google/gemma-2-4b-it",
52
- "dataset": "tatsu-lab/alpaca",
53
- "training_method": "LoRA + Unsloth"
54
- }
55
- )
56
- ```
57
- """
58
-
59
- def __init__(self,
60
- username: str = "xenobordom",
61
- token: Optional[str] = None,
62
- private: bool = False,
63
- local_cache_dir: str = "./models/hf_cache"):
64
- """
65
- Initialize HuggingFace storage.
66
-
67
- Args:
68
- username: HuggingFace username (default: xenobordom)
69
- token: HuggingFace API token (from env if not provided)
70
- private: Whether to create private repositories
71
- local_cache_dir: Local cache directory for downloaded models
72
- """
73
- if not HF_HUB_AVAILABLE:
74
- raise ImportError("huggingface_hub is required. Install with: pip install huggingface_hub")
75
-
76
- self.username = username
77
- self.token = token or os.getenv("HF_TOKEN")
78
- self.private = private
79
- self.local_cache_dir = Path(local_cache_dir)
80
- self.local_cache_dir.mkdir(parents=True, exist_ok=True)
81
-
82
- if not self.token:
83
- raise ValueError("HuggingFace token is required. Set HF_TOKEN environment variable or pass token parameter.")
84
-
85
- # Initialize HF API
86
- self.api = HfApi(token=self.token)
87
-
88
- # Local metadata storage
89
- self.metadata_file = self.local_cache_dir / "hf_models_metadata.json"
90
- self._load_metadata()
91
-
92
- logger.info(f"HuggingFace storage initialized for user: {self.username}")
93
- logger.info(f"Local cache directory: {self.local_cache_dir}")
94
-
95
- def _load_metadata(self):
96
- """Load local metadata cache"""
97
- if self.metadata_file.exists():
98
- with open(self.metadata_file, 'r') as f:
99
- self.metadata = json.load(f)
100
- else:
101
- self.metadata = {}
102
- self._save_metadata()
103
-
104
- def _save_metadata(self):
105
- """Save local metadata cache"""
106
- with open(self.metadata_file, 'w') as f:
107
- json.dump(self.metadata, f, indent=2)
108
-
109
- def _get_repo_id(self, model_id: str) -> str:
110
- """Get full repository ID for a model"""
111
- return f"{self.username}/{model_id}"
112
-
113
- async def save_model(self, model_id: str, model_path: str, metadata: Dict[str, Any]) -> bool:
114
- """
115
- Save model to HuggingFace Hub.
116
-
117
- Args:
118
- model_id: Unique identifier for the model (will be repo name)
119
- model_path: Local path to model files
120
- metadata: Model metadata to include
121
-
122
- Returns:
123
- True if successful, False otherwise
124
- """
125
- try:
126
- repo_id = self._get_repo_id(model_id)
127
- source_path = Path(model_path)
128
-
129
- logger.info(f"Uploading model {model_id} to HuggingFace Hub: {repo_id}")
130
-
131
- # Create repository if it doesn't exist
132
- try:
133
- create_repo(
134
- repo_id=repo_id,
135
- token=self.token,
136
- private=self.private,
137
- exist_ok=True
138
- )
139
- logger.info(f"Repository created/verified: {repo_id}")
140
- except Exception as e:
141
- logger.warning(f"Repository creation warning: {e}")
142
-
143
- # Prepare metadata for README
144
- readme_content = self._generate_model_card(model_id, metadata)
145
-
146
- # Create temporary directory for upload preparation
147
- with tempfile.TemporaryDirectory() as temp_dir:
148
- temp_path = Path(temp_dir)
149
-
150
- # Copy model files
151
- if source_path.is_file():
152
- shutil.copy2(source_path, temp_path / source_path.name)
153
- else:
154
- # Copy entire directory
155
- for item in source_path.rglob("*"):
156
- if item.is_file():
157
- relative_path = item.relative_to(source_path)
158
- dest_path = temp_path / relative_path
159
- dest_path.parent.mkdir(parents=True, exist_ok=True)
160
- shutil.copy2(item, dest_path)
161
-
162
- # Add README.md
163
- with open(temp_path / "README.md", 'w') as f:
164
- f.write(readme_content)
165
-
166
- # Add metadata.json
167
- enhanced_metadata = {
168
- **metadata,
169
- "model_id": model_id,
170
- "repo_id": repo_id,
171
- "uploaded_at": datetime.now().isoformat(),
172
- "uploaded_by": self.username,
173
- "storage_backend": "huggingface_hub"
174
- }
175
-
176
- with open(temp_path / "metadata.json", 'w') as f:
177
- json.dump(enhanced_metadata, f, indent=2)
178
-
179
- # Upload to HuggingFace Hub
180
- upload_folder(
181
- folder_path=str(temp_path),
182
- repo_id=repo_id,
183
- token=self.token,
184
- commit_message=f"Upload {model_id} - {metadata.get('description', 'Model upload')}"
185
- )
186
-
187
- # Update local metadata
188
- self.metadata[model_id] = {
189
- **enhanced_metadata,
190
- "local_cache_path": str(self.local_cache_dir / model_id),
191
- "repo_url": f"https://huggingface.co/{repo_id}"
192
- }
193
- self._save_metadata()
194
-
195
- logger.info(f"Model {model_id} uploaded successfully to {repo_id}")
196
- return True
197
-
198
- except Exception as e:
199
- logger.error(f"Failed to save model {model_id} to HuggingFace Hub: {e}")
200
- return False
201
-
202
- async def load_model(self, model_id: str) -> Optional[Path]:
203
- """
204
- Load model from HuggingFace Hub.
205
-
206
- Args:
207
- model_id: Model identifier
208
-
209
- Returns:
210
- Path to local model files
211
- """
212
- try:
213
- repo_id = self._get_repo_id(model_id)
214
- local_path = self.local_cache_dir / model_id
215
-
216
- # Check if already cached
217
- if local_path.exists() and model_id in self.metadata:
218
- logger.info(f"Using cached model {model_id}")
219
- return local_path
220
-
221
- logger.info(f"Downloading model {model_id} from HuggingFace Hub: {repo_id}")
222
-
223
- # Download from HuggingFace Hub
224
- snapshot_download(
225
- repo_id=repo_id,
226
- local_dir=str(local_path),
227
- token=self.token,
228
- local_dir_use_symlinks=False
229
- )
230
-
231
- # Load metadata if available
232
- metadata_file = local_path / "metadata.json"
233
- if metadata_file.exists():
234
- with open(metadata_file, 'r') as f:
235
- metadata = json.load(f)
236
-
237
- self.metadata[model_id] = {
238
- **metadata,
239
- "local_cache_path": str(local_path),
240
- "last_downloaded": datetime.now().isoformat()
241
- }
242
- self._save_metadata()
243
-
244
- logger.info(f"Model {model_id} downloaded successfully")
245
- return local_path
246
-
247
- except HfHubHTTPError as e:
248
- if e.response.status_code == 404:
249
- logger.error(f"Model {model_id} not found on HuggingFace Hub")
250
- else:
251
- logger.error(f"Failed to load model {model_id}: {e}")
252
- return None
253
- except Exception as e:
254
- logger.error(f"Failed to load model {model_id}: {e}")
255
- return None
256
-
257
- async def delete_model(self, model_id: str) -> bool:
258
- """
259
- Delete model from HuggingFace Hub and local cache.
260
-
261
- Args:
262
- model_id: Model identifier
263
-
264
- Returns:
265
- True if successful, False otherwise
266
- """
267
- try:
268
- repo_id = self._get_repo_id(model_id)
269
-
270
- # Delete from HuggingFace Hub
271
- try:
272
- self.api.delete_repo(repo_id=repo_id, token=self.token)
273
- logger.info(f"Deleted repository {repo_id} from HuggingFace Hub")
274
- except Exception as e:
275
- logger.warning(f"Failed to delete repository {repo_id}: {e}")
276
-
277
- # Delete local cache
278
- local_path = self.local_cache_dir / model_id
279
- if local_path.exists():
280
- shutil.rmtree(local_path)
281
- logger.info(f"Deleted local cache for {model_id}")
282
-
283
- # Remove from metadata
284
- if model_id in self.metadata:
285
- del self.metadata[model_id]
286
- self._save_metadata()
287
-
288
- return True
289
-
290
- except Exception as e:
291
- logger.error(f"Failed to delete model {model_id}: {e}")
292
- return False
293
-
294
- async def get_metadata(self, model_id: str) -> Optional[Dict[str, Any]]:
295
- """Get model metadata"""
296
- return self.metadata.get(model_id)
297
-
298
- async def list_models(self) -> Dict[str, Dict[str, Any]]:
299
- """List all models managed by this storage"""
300
- return self.metadata.copy()
301
-
302
- def _generate_model_card(self, model_id: str, metadata: Dict[str, Any]) -> str:
303
- """Generate a model card for HuggingFace Hub"""
304
- base_model = metadata.get("base_model", "Unknown")
305
- dataset = metadata.get("dataset", "Unknown")
306
- training_method = metadata.get("training_method", "Unknown")
307
- description = metadata.get("description", f"Fine-tuned {base_model}")
308
-
309
- model_card = f"""---
310
- license: apache-2.0
311
- base_model: {base_model}
312
- tags:
313
- - generated_from_trainer
314
- - isa-model
315
- - {training_method.lower().replace(' ', '-')}
316
- datasets:
317
- - {dataset}
318
- language:
319
- - en
320
- pipeline_tag: text-generation
321
- ---
322
-
323
- # {model_id}
324
-
325
- {description}
326
-
327
- ## Model Details
328
-
329
- - **Base Model**: {base_model}
330
- - **Training Dataset**: {dataset}
331
- - **Training Method**: {training_method}
332
- - **Uploaded by**: {self.username}
333
- - **Framework**: ISA Model SDK
334
-
335
- ## Training Details
336
-
337
- """
338
-
339
- # Add training configuration if available
340
- if "config" in metadata:
341
- config = metadata["config"]
342
- model_card += f"""
343
- ### Training Configuration
344
-
345
- - **Epochs**: {config.get('num_epochs', 'Unknown')}
346
- - **Batch Size**: {config.get('batch_size', 'Unknown')}
347
- - **Learning Rate**: {config.get('learning_rate', 'Unknown')}
348
- - **LoRA**: {'Yes' if config.get('use_lora', False) else 'No'}
349
- """
350
-
351
- if config.get('use_lora', False):
352
- lora_config = config.get('lora_config', {})
353
- model_card += f"""
354
- ### LoRA Configuration
355
-
356
- - **LoRA Rank**: {lora_config.get('lora_rank', 'Unknown')}
357
- - **LoRA Alpha**: {lora_config.get('lora_alpha', 'Unknown')}
358
- - **LoRA Dropout**: {lora_config.get('lora_dropout', 'Unknown')}
359
- """
360
-
361
- model_card += f"""
362
-
363
- ## Usage
364
-
365
- ```python
366
- from transformers import AutoTokenizer, AutoModelForCausalLM
367
-
368
- tokenizer = AutoTokenizer.from_pretrained("{self._get_repo_id(model_id)}")
369
- model = AutoModelForCausalLM.from_pretrained("{self._get_repo_id(model_id)}")
370
-
371
- # For inference
372
- inputs = tokenizer("Your prompt here", return_tensors="pt")
373
- outputs = model.generate(**inputs, max_length=100)
374
- response = tokenizer.decode(outputs[0], skip_special_tokens=True)
375
- print(response)
376
- ```
377
-
378
- ## ISA Model SDK
379
-
380
- This model was trained using the [ISA Model SDK](https://github.com/your-repo/isA_Model),
381
- a comprehensive framework for training and deploying AI models.
382
-
383
- """
384
-
385
- return model_card
386
-
387
- def get_public_url(self, model_id: str) -> str:
388
- """Get public URL for a model on HuggingFace Hub"""
389
- return f"https://huggingface.co/{self._get_repo_id(model_id)}"
390
-
391
- async def update_model_metadata(self, model_id: str, new_metadata: Dict[str, Any]) -> bool:
392
- """Update model metadata on HuggingFace Hub"""
393
- try:
394
- if model_id not in self.metadata:
395
- logger.error(f"Model {model_id} not found in metadata")
396
- return False
397
-
398
- # Update local metadata
399
- self.metadata[model_id].update(new_metadata)
400
- self._save_metadata()
401
-
402
- # Update README on HuggingFace Hub
403
- repo_id = self._get_repo_id(model_id)
404
- readme_content = self._generate_model_card(model_id, self.metadata[model_id])
405
-
406
- self.api.upload_file(
407
- path_or_fileobj=readme_content.encode('utf-8'),
408
- path_in_repo="README.md",
409
- repo_id=repo_id,
410
- token=self.token,
411
- commit_message=f"Update metadata for {model_id}"
412
- )
413
-
414
- logger.info(f"Updated metadata for model {model_id}")
415
- return True
416
-
417
- except Exception as e:
418
- logger.error(f"Failed to update metadata for {model_id}: {e}")
419
- return False
File without changes
@@ -1,9 +0,0 @@
1
- """
2
- Cloud Deployment Module
3
-
4
- Support for various cloud platforms
5
- """
6
-
7
- from .modal import ModalDeployment
8
-
9
- __all__ = ["ModalDeployment"]
@@ -1,10 +0,0 @@
1
- """
2
- Modal Deployment Module
3
-
4
- Modal.com cloud deployment for ISA Model services
5
- """
6
-
7
- from .ui_analysis_service import UIAnalysisService as UIAnalysisModalService
8
- from .deployment_manager import ModalDeployment
9
-
10
- __all__ = ["UIAnalysisModalService", "ModalDeployment"]