amiraghhh commited on
Commit
ebfdd83
·
verified ·
1 Parent(s): 27e8632

Delete startup.py

Browse files
Files changed (1) hide show
  1. startup.py +0 -225
startup.py DELETED
@@ -1,225 +0,0 @@
1
- #!/usr/bin/env python3
2
- """
3
- Startup script for Medical RAG HuggingFace Space.
4
- Validates setup and initializes the application.
5
- """
6
-
7
- import os
8
- import sys
9
- import logging
10
- from pathlib import Path
11
-
12
- # Configure logging
13
- logging.basicConfig(
14
- level=logging.INFO,
15
- format='%(asctime)s - %(levelname)s - %(message)s'
16
- )
17
- logger = logging.getLogger(__name__)
18
-
19
-
20
- def check_python_version():
21
- """Verify Python version is 3.9 or higher."""
22
- version = sys.version_info
23
- if version.major < 3 or (version.major == 3 and version.minor < 9):
24
- logger.error(f"Python 3.9+ required, found {version.major}.{version.minor}")
25
- return False
26
- logger.info(f"✓ Python {version.major}.{version.minor}.{version.micro}")
27
- return True
28
-
29
-
30
- def check_dependencies():
31
- """Verify all required packages are installed."""
32
- required_packages = {
33
- 'gradio': 'Gradio (web UI)',
34
- 'torch': 'PyTorch (deep learning)',
35
- 'transformers': 'Transformers (models)',
36
- 'sentence_transformers': 'Sentence Transformers (embeddings)',
37
- 'chromadb': 'ChromaDB (vector database)',
38
- 'numpy': 'NumPy (numerical)',
39
- 'pandas': 'Pandas (data)',
40
- }
41
-
42
- logger.info("Checking dependencies...")
43
- missing = []
44
-
45
- for package, name in required_packages.items():
46
- try:
47
- __import__(package)
48
- logger.info(f" ✓ {name}")
49
- except ImportError:
50
- logger.warning(f" ✗ {name} (not installed)")
51
- missing.append(package)
52
-
53
- if missing:
54
- logger.error(f"\nMissing packages: {', '.join(missing)}")
55
- logger.error("Install with: pip install -r requirements.txt")
56
- return False
57
-
58
- return True
59
-
60
-
61
- def check_vector_database():
62
- """Verify vector database exists."""
63
- from config import VECTOR_DB_PATH
64
-
65
- logger.info(f"Checking vector database at: {VECTOR_DB_PATH}")
66
-
67
- if not os.path.exists(VECTOR_DB_PATH):
68
- logger.warning(f" ⚠ Vector database not found: {VECTOR_DB_PATH}")
69
- logger.info(" To setup:")
70
- logger.info(" 1. Download from HuggingFace Hub, OR")
71
- logger.info(" 2. Build using notebook's chunking code")
72
- return False
73
-
74
- # Check for actual DB files
75
- db_files = list(Path(VECTOR_DB_PATH).glob("*.db*"))
76
- if db_files:
77
- logger.info(f" ✓ Found {len(db_files)} database file(s)")
78
- return True
79
- else:
80
- logger.warning(" ⚠ No .db files found in directory")
81
- return False
82
-
83
-
84
- def check_model_accessibility():
85
- """Check if fine-tuned model is accessible."""
86
- from config import FINETUNED_MODEL_ID
87
-
88
- logger.info(f"Model ID configured: {FINETUNED_MODEL_ID}")
89
-
90
- if not FINETUNED_MODEL_ID:
91
- logger.error(" ✗ FINETUNED_MODEL_ID not set in config.py")
92
- return False
93
-
94
- logger.info(" ℹ Model will be downloaded on first use (requires internet)")
95
- return True
96
-
97
-
98
- def check_disk_space():
99
- """Check available disk space."""
100
- import shutil
101
-
102
- logger.info("Checking disk space...")
103
-
104
- # Check root directory
105
- stat = shutil.disk_usage("/")
106
- free_gb = stat.free / (1024**3)
107
-
108
- if free_gb < 20:
109
- logger.warning(f" ⚠ Only {free_gb:.1f}GB free (20GB+ recommended)")
110
- logger.warning(" Models may not download properly")
111
- return False
112
-
113
- logger.info(f" ✓ {free_gb:.1f}GB free")
114
- return True
115
-
116
-
117
- def check_memory():
118
- """Check available RAM."""
119
- import psutil
120
-
121
- logger.info("Checking system memory...")
122
-
123
- # Get memory info
124
- memory = psutil.virtual_memory()
125
- available_gb = memory.available / (1024**3)
126
- total_gb = memory.total / (1024**3)
127
-
128
- logger.info(f" Total: {total_gb:.1f}GB, Available: {available_gb:.1f}GB")
129
-
130
- if available_gb < 8:
131
- logger.warning(f" ⚠ Low available RAM ({available_gb:.1f}GB)")
132
- logger.warning(" May cause performance issues")
133
- elif available_gb < 4:
134
- logger.error(f" ✗ Insufficient RAM ({available_gb:.1f}GB < 4GB required)")
135
- return False
136
- else:
137
- logger.info(f" ✓ Sufficient RAM")
138
- return True
139
-
140
- return True
141
-
142
-
143
- def check_gpu():
144
- """Check GPU availability."""
145
- try:
146
- import torch
147
- if torch.cuda.is_available():
148
- logger.info(f"✓ GPU available: {torch.cuda.get_device_name(0)}")
149
- logger.info(f" VRAM: {torch.cuda.get_device_properties(0).total_memory / 1024**3:.1f}GB")
150
- return True
151
- else:
152
- logger.info("⚠ GPU not available (running on CPU)")
153
- return False
154
- except Exception as e:
155
- logger.warning(f"⚠ Could not check GPU: {e}")
156
- return False
157
-
158
-
159
- def validate_configuration():
160
- """Validate configuration file."""
161
- from config import validate_config
162
-
163
- logger.info("Validating configuration...")
164
- return validate_config()
165
-
166
-
167
- def main():
168
- """Run all startup checks."""
169
- logger.info("=" * 60)
170
- logger.info("MEDICAL RAG SYSTEM - STARTUP VALIDATION")
171
- logger.info("=" * 60)
172
-
173
- checks = [
174
- ("Python Version", check_python_version),
175
- ("Dependencies", check_dependencies),
176
- ("Vector Database", check_vector_database),
177
- ("Model Configuration", check_model_accessibility),
178
- ("Disk Space", check_disk_space),
179
- ("RAM", check_memory),
180
- ("GPU", check_gpu),
181
- ("Configuration", validate_configuration),
182
- ]
183
-
184
- results = {}
185
- critical_failed = False
186
-
187
- for name, check_func in checks:
188
- logger.info(f"\n[{name}]")
189
- try:
190
- result = check_func()
191
- results[name] = result
192
-
193
- # Determine if critical
194
- critical = name in ["Python Version", "Dependencies", "Configuration"]
195
- if not result and critical:
196
- critical_failed = True
197
- except Exception as e:
198
- logger.error(f"Error during check: {e}")
199
- results[name] = False
200
- critical_failed = True
201
-
202
- # Summary
203
- logger.info("\n" + "=" * 60)
204
- logger.info("SUMMARY")
205
- logger.info("=" * 60)
206
-
207
- for name, result in results.items():
208
- status = "✓ PASS" if result else "⚠ WARN"
209
- logger.info(f"{status:8} - {name}")
210
-
211
- logger.info("=" * 60)
212
-
213
- if critical_failed:
214
- logger.error("\n✗ CRITICAL ISSUES FOUND - CANNOT START")
215
- logger.error("Please fix the issues above before running the application.")
216
- return False
217
- else:
218
- logger.info("\n✓ All critical checks passed!")
219
- logger.info("You can now run: python app.py")
220
- return True
221
-
222
-
223
- if __name__ == "__main__":
224
- success = main()
225
- sys.exit(0 if success else 1)