isa-model 0.1.0__py3-none-any.whl → 0.1.1__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.
- isa_model/__init__.py +1 -1
- isa_model/core/model_registry.py +273 -46
- isa_model/deployment/gpu_fp16_ds8/models/deepseek_r1/1/model.py +120 -0
- isa_model/deployment/gpu_fp16_ds8/scripts/download_model.py +18 -0
- isa_model/deployment/gpu_int8_ds8/app/server.py +66 -0
- isa_model/deployment/gpu_int8_ds8/scripts/test_client.py +43 -0
- isa_model/deployment/gpu_int8_ds8/scripts/test_client_os.py +35 -0
- isa_model/eval/__init__.py +56 -0
- isa_model/eval/benchmarks.py +469 -0
- isa_model/eval/factory.py +582 -0
- isa_model/eval/metrics.py +628 -0
- isa_model/inference/ai_factory.py +98 -93
- isa_model/inference/providers/openai_provider.py +21 -7
- isa_model/inference/providers/replicate_provider.py +18 -5
- isa_model/inference/providers/triton_provider.py +1 -1
- isa_model/inference/services/audio/base_stt_service.py +91 -0
- isa_model/inference/services/audio/base_tts_service.py +136 -0
- isa_model/inference/services/audio/{yyds_audio_service.py → openai_tts_service.py} +4 -4
- isa_model/inference/services/embedding/ollama_embed_service.py +48 -36
- isa_model/inference/services/llm/__init__.py +0 -4
- isa_model/inference/services/llm/base_llm_service.py +134 -0
- isa_model/inference/services/llm/ollama_llm_service.py +1 -10
- isa_model/inference/services/llm/openai_llm_service.py +70 -61
- isa_model/inference/services/vision/__init__.py +1 -1
- isa_model/inference/services/vision/ollama_vision_service.py +4 -4
- isa_model/inference/services/vision/{yyds_vision_service.py → openai_vision_service.py} +5 -5
- isa_model/inference/services/vision/replicate_image_gen_service.py +185 -0
- isa_model/training/__init__.py +44 -0
- isa_model/training/factory.py +393 -0
- isa_model-0.1.1.dist-info/METADATA +327 -0
- {isa_model-0.1.0.dist-info → isa_model-0.1.1.dist-info}/RECORD +35 -60
- isa_model/deployment/mlflow_gateway/__init__.py +0 -8
- isa_model/deployment/mlflow_gateway/start_gateway.py +0 -65
- isa_model/deployment/unified_multimodal_client.py +0 -341
- isa_model/inference/adapter/triton_adapter.py +0 -453
- isa_model/inference/backends/Pytorch/bge_embed_backend.py +0 -188
- isa_model/inference/backends/Pytorch/gemma_backend.py +0 -167
- isa_model/inference/backends/Pytorch/llama_backend.py +0 -166
- isa_model/inference/backends/Pytorch/whisper_backend.py +0 -194
- isa_model/inference/backends/__init__.py +0 -53
- isa_model/inference/backends/base_backend_client.py +0 -26
- isa_model/inference/backends/container_services.py +0 -104
- isa_model/inference/backends/local_services.py +0 -72
- isa_model/inference/backends/openai_client.py +0 -130
- isa_model/inference/backends/replicate_client.py +0 -197
- isa_model/inference/backends/third_party_services.py +0 -239
- isa_model/inference/backends/triton_client.py +0 -97
- isa_model/inference/client_sdk/client.py +0 -134
- isa_model/inference/client_sdk/client_data_std.py +0 -34
- isa_model/inference/client_sdk/client_sdk_schema.py +0 -16
- isa_model/inference/client_sdk/exceptions.py +0 -0
- isa_model/inference/engine/triton/model_repository/bge/1/model.py +0 -174
- isa_model/inference/engine/triton/model_repository/gemma/1/model.py +0 -250
- isa_model/inference/engine/triton/model_repository/llama/1/model.py +0 -76
- isa_model/inference/engine/triton/model_repository/whisper/1/model.py +0 -195
- isa_model/inference/providers/vllm_provider.py +0 -0
- isa_model/inference/providers/yyds_provider.py +0 -83
- isa_model/inference/services/audio/fish_speech/handler.py +0 -215
- isa_model/inference/services/audio/runpod_tts_fish_service.py +0 -212
- isa_model/inference/services/audio/triton_speech_service.py +0 -138
- isa_model/inference/services/audio/whisper_service.py +0 -186
- isa_model/inference/services/base_tts_service.py +0 -66
- isa_model/inference/services/embedding/bge_service.py +0 -183
- isa_model/inference/services/embedding/ollama_rerank_service.py +0 -118
- isa_model/inference/services/embedding/onnx_rerank_service.py +0 -73
- isa_model/inference/services/llm/gemma_service.py +0 -143
- isa_model/inference/services/llm/llama_service.py +0 -143
- isa_model/inference/services/llm/replicate_llm_service.py +0 -179
- isa_model/inference/services/llm/triton_llm_service.py +0 -230
- isa_model/inference/services/vision/replicate_vision_service.py +0 -241
- isa_model/inference/services/vision/triton_vision_service.py +0 -199
- isa_model-0.1.0.dist-info/METADATA +0 -116
- /isa_model/inference/{client_sdk/__init__.py → services/embedding/openai_embed_service.py} +0 -0
- {isa_model-0.1.0.dist-info → isa_model-0.1.1.dist-info}/WHEEL +0 -0
- {isa_model-0.1.0.dist-info → isa_model-0.1.1.dist-info}/licenses/LICENSE +0 -0
- {isa_model-0.1.0.dist-info → isa_model-0.1.1.dist-info}/top_level.txt +0 -0
@@ -0,0 +1,327 @@
|
|
1
|
+
Metadata-Version: 2.4
|
2
|
+
Name: isa-model
|
3
|
+
Version: 0.1.1
|
4
|
+
Summary: Unified AI model serving framework
|
5
|
+
Author-email: isA_Model Contributors <your.email@example.com>
|
6
|
+
License-Expression: MIT
|
7
|
+
Classifier: Development Status :: 3 - Alpha
|
8
|
+
Classifier: Intended Audience :: Developers
|
9
|
+
Classifier: Operating System :: OS Independent
|
10
|
+
Classifier: Programming Language :: Python :: 3
|
11
|
+
Requires-Python: >=3.8
|
12
|
+
Description-Content-Type: text/markdown
|
13
|
+
License-File: LICENSE
|
14
|
+
Requires-Dist: fastapi>=0.95.0
|
15
|
+
Requires-Dist: numpy>=1.20.0
|
16
|
+
Requires-Dist: httpx>=0.23.0
|
17
|
+
Requires-Dist: pydantic>=2.0.0
|
18
|
+
Requires-Dist: uvicorn>=0.22.0
|
19
|
+
Requires-Dist: requests>=2.28.0
|
20
|
+
Requires-Dist: aiohttp>=3.8.0
|
21
|
+
Requires-Dist: transformers>=4.30.0
|
22
|
+
Requires-Dist: langchain-core>=0.1.0
|
23
|
+
Requires-Dist: huggingface-hub>=0.16.0
|
24
|
+
Requires-Dist: kubernetes>=25.3.0
|
25
|
+
Requires-Dist: mlflow>=2.4.0
|
26
|
+
Requires-Dist: torch>=2.0.0
|
27
|
+
Requires-Dist: openai>=1.10.0
|
28
|
+
Requires-Dist: replicate>=0.23.0
|
29
|
+
Requires-Dist: python-dotenv>=1.0.0
|
30
|
+
Dynamic: license-file
|
31
|
+
|
32
|
+
# isA Model - Unified AI Model Serving Framework
|
33
|
+
|
34
|
+
A comprehensive Python framework for working with multiple AI providers and models through a unified interface. Support for OpenAI, Replicate, Ollama, and more.
|
35
|
+
|
36
|
+
## Installation
|
37
|
+
|
38
|
+
```bash
|
39
|
+
pip install isa-model
|
40
|
+
```
|
41
|
+
|
42
|
+
## Quick Start
|
43
|
+
|
44
|
+
The isa-model package supports three main usage patterns:
|
45
|
+
|
46
|
+
### 1. Pass API Keys Directly (Recommended)
|
47
|
+
|
48
|
+
This is the most flexible approach - no environment variables needed:
|
49
|
+
|
50
|
+
```python
|
51
|
+
from isa_model.inference.ai_factory import AIFactory
|
52
|
+
|
53
|
+
# Create factory instance
|
54
|
+
factory = AIFactory.get_instance()
|
55
|
+
|
56
|
+
# Use OpenAI with API key
|
57
|
+
llm = factory.get_llm(
|
58
|
+
model_name="gpt-4o-mini",
|
59
|
+
provider="openai",
|
60
|
+
api_key="your-openai-api-key-here"
|
61
|
+
)
|
62
|
+
|
63
|
+
# Use Replicate for image generation
|
64
|
+
image_gen = factory.get_vision_model(
|
65
|
+
model_name="stability-ai/sdxl",
|
66
|
+
provider="replicate",
|
67
|
+
api_key="your-replicate-token-here"
|
68
|
+
)
|
69
|
+
```
|
70
|
+
|
71
|
+
### 2. Use Environment Variables
|
72
|
+
|
73
|
+
Set your API keys as environment variables:
|
74
|
+
|
75
|
+
```bash
|
76
|
+
export OPENAI_API_KEY="your-openai-api-key"
|
77
|
+
export REPLICATE_API_TOKEN="your-replicate-token"
|
78
|
+
```
|
79
|
+
|
80
|
+
Then use without passing keys:
|
81
|
+
|
82
|
+
```python
|
83
|
+
from isa_model.inference.ai_factory import AIFactory
|
84
|
+
|
85
|
+
factory = AIFactory.get_instance()
|
86
|
+
|
87
|
+
# Will automatically use OPENAI_API_KEY from environment
|
88
|
+
llm = factory.get_llm(model_name="gpt-4o-mini", provider="openai")
|
89
|
+
|
90
|
+
# Will automatically use REPLICATE_API_TOKEN from environment
|
91
|
+
image_gen = factory.get_vision_model(model_name="stability-ai/sdxl", provider="replicate")
|
92
|
+
```
|
93
|
+
|
94
|
+
### 3. Use Local Models (No API Key Needed)
|
95
|
+
|
96
|
+
For local models like Ollama, no API keys are required:
|
97
|
+
|
98
|
+
```python
|
99
|
+
from isa_model.inference.ai_factory import AIFactory
|
100
|
+
|
101
|
+
factory = AIFactory.get_instance()
|
102
|
+
|
103
|
+
# Use local Ollama model (no API key needed)
|
104
|
+
llm = factory.get_llm(model_name="llama3.1", provider="ollama")
|
105
|
+
```
|
106
|
+
|
107
|
+
## Supported Services
|
108
|
+
|
109
|
+
### Language Models (LLM)
|
110
|
+
|
111
|
+
```python
|
112
|
+
# OpenAI models
|
113
|
+
llm = factory.get_llm("gpt-4o-mini", "openai", api_key="your-key")
|
114
|
+
llm = factory.get_llm("gpt-4o", "openai", api_key="your-key")
|
115
|
+
|
116
|
+
# Ollama models (local)
|
117
|
+
llm = factory.get_llm("llama3.1", "ollama")
|
118
|
+
llm = factory.get_llm("codellama", "ollama")
|
119
|
+
|
120
|
+
# Replicate models
|
121
|
+
llm = factory.get_llm("meta/llama-3-70b-instruct", "replicate", api_key="your-token")
|
122
|
+
```
|
123
|
+
|
124
|
+
### Vision Models
|
125
|
+
|
126
|
+
```python
|
127
|
+
# OpenAI vision
|
128
|
+
vision = factory.get_vision_model("gpt-4o", "openai", api_key="your-key")
|
129
|
+
|
130
|
+
# Replicate image generation
|
131
|
+
image_gen = factory.get_vision_model("stability-ai/sdxl", "replicate", api_key="your-token")
|
132
|
+
|
133
|
+
# Ollama vision (local)
|
134
|
+
vision = factory.get_vision_model("llava", "ollama")
|
135
|
+
```
|
136
|
+
|
137
|
+
### Embedding Models
|
138
|
+
|
139
|
+
```python
|
140
|
+
# OpenAI embeddings
|
141
|
+
embedder = factory.get_embedding("text-embedding-3-small", "openai", {"api_key": "your-key"})
|
142
|
+
|
143
|
+
# Ollama embeddings (local)
|
144
|
+
embedder = factory.get_embedding("bge-m3", "ollama")
|
145
|
+
```
|
146
|
+
|
147
|
+
## Base Service Classes
|
148
|
+
|
149
|
+
The framework provides comprehensive base classes for implementing new AI services:
|
150
|
+
|
151
|
+
### BaseLLMService
|
152
|
+
- `ainvoke()` - Universal invocation method
|
153
|
+
- `achat()` - Chat completion with messages
|
154
|
+
- `acompletion()` - Simple text completion
|
155
|
+
- `agenerate()` - Generate multiple completions
|
156
|
+
- `astream_chat()` - Streaming chat responses
|
157
|
+
- `get_token_usage()` - Token usage statistics
|
158
|
+
|
159
|
+
### BaseVisionService
|
160
|
+
- `analyze_image()` - Analyze and describe images
|
161
|
+
- `describe_image()` - Generate detailed descriptions
|
162
|
+
- `extract_text()` - OCR text extraction
|
163
|
+
- `detect_objects()` - Object detection
|
164
|
+
- `classify_image()` - Image classification
|
165
|
+
- `compare_images()` - Image similarity comparison
|
166
|
+
|
167
|
+
### BaseImageGenService
|
168
|
+
- `generate_image()` - Generate single image from text
|
169
|
+
- `generate_images()` - Generate multiple images
|
170
|
+
- `image_to_image()` - Transform existing images
|
171
|
+
- `get_supported_sizes()` - Get supported dimensions
|
172
|
+
|
173
|
+
### BaseEmbedService
|
174
|
+
- `create_text_embedding()` - Single text embedding
|
175
|
+
- `create_text_embeddings()` - Batch text embeddings
|
176
|
+
- `compute_similarity()` - Similarity calculation
|
177
|
+
- `find_similar_texts()` - Semantic search
|
178
|
+
|
179
|
+
### BaseSTTService (Speech-to-Text)
|
180
|
+
- `transcribe_audio()` - Audio transcription
|
181
|
+
- `transcribe_audio_batch()` - Batch transcription
|
182
|
+
- `detect_language()` - Language detection
|
183
|
+
|
184
|
+
### BaseTTSService (Text-to-Speech)
|
185
|
+
- `synthesize_speech()` - Text to speech conversion
|
186
|
+
- `synthesize_speech_to_file()` - Save speech to file
|
187
|
+
- `get_available_voices()` - List available voices
|
188
|
+
|
189
|
+
## Usage Examples
|
190
|
+
|
191
|
+
### Chat Completion
|
192
|
+
|
193
|
+
```python
|
194
|
+
import asyncio
|
195
|
+
from isa_model.inference.ai_factory import AIFactory
|
196
|
+
|
197
|
+
async def chat_example():
|
198
|
+
factory = AIFactory.get_instance()
|
199
|
+
llm = factory.get_llm("gpt-4o-mini", "openai", api_key="your-key")
|
200
|
+
|
201
|
+
messages = [
|
202
|
+
{"role": "user", "content": "Hello, how are you?"}
|
203
|
+
]
|
204
|
+
|
205
|
+
response = await llm.achat(messages)
|
206
|
+
print(response)
|
207
|
+
|
208
|
+
# Run the async function
|
209
|
+
asyncio.run(chat_example())
|
210
|
+
```
|
211
|
+
|
212
|
+
### Image Analysis
|
213
|
+
|
214
|
+
```python
|
215
|
+
import asyncio
|
216
|
+
from isa_model.inference.ai_factory import AIFactory
|
217
|
+
|
218
|
+
async def vision_example():
|
219
|
+
factory = AIFactory.get_instance()
|
220
|
+
vision = factory.get_vision_model("gpt-4o", "openai", api_key="your-key")
|
221
|
+
|
222
|
+
result = await vision.analyze_image(
|
223
|
+
image="path/to/your/image.jpg",
|
224
|
+
prompt="What do you see in this image?"
|
225
|
+
)
|
226
|
+
|
227
|
+
print(result["text"])
|
228
|
+
|
229
|
+
asyncio.run(vision_example())
|
230
|
+
```
|
231
|
+
|
232
|
+
### Image Generation
|
233
|
+
|
234
|
+
```python
|
235
|
+
import asyncio
|
236
|
+
from isa_model.inference.ai_factory import AIFactory
|
237
|
+
|
238
|
+
async def image_gen_example():
|
239
|
+
factory = AIFactory.get_instance()
|
240
|
+
image_gen = factory.get_vision_model(
|
241
|
+
"stability-ai/sdxl",
|
242
|
+
"replicate",
|
243
|
+
api_key="your-replicate-token"
|
244
|
+
)
|
245
|
+
|
246
|
+
result = await image_gen.generate_image(
|
247
|
+
prompt="A beautiful sunset over mountains",
|
248
|
+
width=1024,
|
249
|
+
height=1024
|
250
|
+
)
|
251
|
+
|
252
|
+
# Save the generated image
|
253
|
+
with open("generated_image.png", "wb") as f:
|
254
|
+
f.write(result["image_data"])
|
255
|
+
|
256
|
+
asyncio.run(image_gen_example())
|
257
|
+
```
|
258
|
+
|
259
|
+
## Configuration Options
|
260
|
+
|
261
|
+
You can pass additional configuration options:
|
262
|
+
|
263
|
+
```python
|
264
|
+
# Custom configuration
|
265
|
+
config = {
|
266
|
+
"temperature": 0.7,
|
267
|
+
"max_tokens": 1000,
|
268
|
+
"top_p": 0.9
|
269
|
+
}
|
270
|
+
|
271
|
+
llm = factory.get_llm(
|
272
|
+
model_name="gpt-4o-mini",
|
273
|
+
provider="openai",
|
274
|
+
config=config,
|
275
|
+
api_key="your-key"
|
276
|
+
)
|
277
|
+
```
|
278
|
+
|
279
|
+
## Error Handling
|
280
|
+
|
281
|
+
The framework provides informative error messages and graceful fallbacks:
|
282
|
+
|
283
|
+
```python
|
284
|
+
try:
|
285
|
+
llm = factory.get_llm("gpt-4o-mini", "openai", api_key="invalid-key")
|
286
|
+
response = await llm.achat([{"role": "user", "content": "Hello"}])
|
287
|
+
except Exception as e:
|
288
|
+
print(f"Error: {e}")
|
289
|
+
```
|
290
|
+
|
291
|
+
## Development
|
292
|
+
|
293
|
+
### Installing for Development
|
294
|
+
|
295
|
+
```bash
|
296
|
+
git clone <repository-url>
|
297
|
+
cd isA_Model
|
298
|
+
pip install -e .
|
299
|
+
```
|
300
|
+
|
301
|
+
### Running Tests
|
302
|
+
|
303
|
+
```bash
|
304
|
+
pytest tests/
|
305
|
+
```
|
306
|
+
|
307
|
+
### Building and Publishing
|
308
|
+
|
309
|
+
```bash
|
310
|
+
# Build the package
|
311
|
+
python -m build
|
312
|
+
|
313
|
+
# Upload to PyPI (requires PYPI_API_TOKEN in .env.local)
|
314
|
+
bash scripts/normal_update.sh
|
315
|
+
```
|
316
|
+
|
317
|
+
## License
|
318
|
+
|
319
|
+
MIT License - see LICENSE file for details.
|
320
|
+
|
321
|
+
## Contributing
|
322
|
+
|
323
|
+
Contributions are welcome! Please read our contributing guidelines and submit pull requests to our GitHub repository.
|
324
|
+
|
325
|
+
## Support
|
326
|
+
|
327
|
+
For questions and support, please open an issue on our GitHub repository.
|
@@ -1,6 +1,6 @@
|
|
1
|
-
isa_model/__init__.py,sha256=
|
1
|
+
isa_model/__init__.py,sha256=gr-wNN5AZw-rACDfAaQjU5yRHNvqAdimR4O7opDC7tE,87
|
2
2
|
isa_model/core/model_manager.py,sha256=eQp0MV0x5sghL1qliPUWkFX4sEKqInyGLoICfNkJnZM,5275
|
3
|
-
isa_model/core/model_registry.py,sha256=
|
3
|
+
isa_model/core/model_registry.py,sha256=gT8yFxi1gC-45Bolc9WX19ZvrjuV1xyBgQX6TFhz62k,14032
|
4
4
|
isa_model/core/model_router.py,sha256=WT45wP5Ta-c3QErPGUY86G9-IpWQXjLC5FG8cPI-qK0,8637
|
5
5
|
isa_model/core/model_storage.py,sha256=yMLapW87EY1EPXw6S7H8UQAZh3hJ1KxsEohjgjw-HrA,4507
|
6
6
|
isa_model/core/model_version.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
@@ -8,69 +8,42 @@ isa_model/core/resource_manager.py,sha256=jlrlhHqtCbq4sAFgfGEEhTWRcuftXtjfV6SjkZ
|
|
8
8
|
isa_model/core/storage/hf_storage.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
9
9
|
isa_model/core/storage/local_storage.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
10
10
|
isa_model/core/storage/minio_storage.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
11
|
-
isa_model/deployment/
|
12
|
-
isa_model/deployment/
|
13
|
-
isa_model/deployment/
|
11
|
+
isa_model/deployment/gpu_fp16_ds8/models/deepseek_r1/1/model.py,sha256=jCAN_r-22gNR1HURAjmIZVeuU1TNidcyXRzxQdi2jOs,4015
|
12
|
+
isa_model/deployment/gpu_fp16_ds8/scripts/download_model.py,sha256=E6iSAgBu3OGfK-HLIXbGWfYSAIGQSGzj6wMAy1JAugI,566
|
13
|
+
isa_model/deployment/gpu_int8_ds8/app/server.py,sha256=lwWxdnR2DNEd0vIGQyfabKtDSUzSHVQsy3Z_AJejpVg,2102
|
14
|
+
isa_model/deployment/gpu_int8_ds8/scripts/test_client.py,sha256=aCULgRYzEQj_ELUK1bmPgN99yvFgNR5C0O3gc8S32pg,1421
|
15
|
+
isa_model/deployment/gpu_int8_ds8/scripts/test_client_os.py,sha256=XXrneTCHUeh1LNRcu-YtZQ5B4pNawlrxC-cTWmJU2A8,936
|
16
|
+
isa_model/eval/__init__.py,sha256=3sM7qLSIL_RMKcsmkCYcjOjv9ozuk16r7pnl4F-XeNA,1197
|
17
|
+
isa_model/eval/benchmarks.py,sha256=_L4Vwj2hwf2yhqoleIASO9z5e3LRCClCVEVCQbGt0I8,16885
|
18
|
+
isa_model/eval/factory.py,sha256=JmGRLTYPtZLqKwy8o1Z9NHUHX6mkRDw13ac_Qin_VrE,19529
|
19
|
+
isa_model/eval/metrics.py,sha256=mYeGwSa9PkgY0p-vadAscvak-pLrVfCSrsmAodVpgNQ,22584
|
14
20
|
isa_model/inference/__init__.py,sha256=usfuQJ4zYY2RRtHkE-V6LuJ5aN7WJogtPUj9Qmy4Wvw,318
|
15
|
-
isa_model/inference/ai_factory.py,sha256=
|
21
|
+
isa_model/inference/ai_factory.py,sha256=mF-Pj8FUCsOvSG0IIg1OVMhDwXnpxIbZQJWVYWfjv2s,14660
|
16
22
|
isa_model/inference/base.py,sha256=qwOddnSGI0GUdD6qIdGBPQpkW7UjU3Y-zaZvu70B4WA,1278
|
17
|
-
isa_model/inference/adapter/triton_adapter.py,sha256=nmG1uNVXY28VxCdITDJw_p1FXVuBp9mtOutnHzv0cQ4,15120
|
18
23
|
isa_model/inference/adapter/unified_api.py,sha256=67_Ok8W20m6Otf6r9WyOEVpnxondP4UAxOASk9ozDk4,8668
|
19
|
-
isa_model/inference/backends/__init__.py,sha256=zNu9tlQlET5Jpr8kRGHV0vVW7XEyISeyNTxfkeEuYk4,1254
|
20
|
-
isa_model/inference/backends/base_backend_client.py,sha256=aDlHnStvpxD8whX9E1TZ-8yh2SBfxHD_uzBNj84p1dE,648
|
21
|
-
isa_model/inference/backends/container_services.py,sha256=BMa32QuFY19AOlhW4kFsPPrYDxiU5xbAPkf-l5cCCMo,4000
|
22
|
-
isa_model/inference/backends/local_services.py,sha256=hReD3NimF5-TfrRl2gibHRs_TNF8TQ70IeDAQU4Xw1Q,2625
|
23
|
-
isa_model/inference/backends/openai_client.py,sha256=gwB2VE-NfDtYaSM2ILh4uEp-i0X8SHf-fHPv1skF9WA,4703
|
24
|
-
isa_model/inference/backends/replicate_client.py,sha256=kmcTvhyv09TWb-mx8As8GsjIJezI9Hsc4MZMinVqQo0,7062
|
25
|
-
isa_model/inference/backends/third_party_services.py,sha256=jyvOoXulmIowcvbk5XzAUjUgUm2dn1ox3F1nPLI4fBQ,9471
|
26
|
-
isa_model/inference/backends/triton_client.py,sha256=HuZB_FY4PhI-u6vpZMOzMjALFO9Jds1Vzyw8PMaTuxg,3712
|
27
|
-
isa_model/inference/backends/Pytorch/bge_embed_backend.py,sha256=UNZbOYDzPvaxi8_8jRs881v-xpwGK1omB8uDWjL-N_s,5917
|
28
|
-
isa_model/inference/backends/Pytorch/gemma_backend.py,sha256=i8W58H4iVfDvEHc6m5VZymNPTgexVGPDZ1rDn5s4ae0,5410
|
29
|
-
isa_model/inference/backends/Pytorch/llama_backend.py,sha256=tRpAs9DdoqH1pjzDMg5T60sIYMOjtaSlLJ-Roxcl1aU,5248
|
30
|
-
isa_model/inference/backends/Pytorch/whisper_backend.py,sha256=oMJ3Fg6O7zaURDg21IdM3HCdnyJiF-iyxIvNOuFFc8k,6218
|
31
|
-
isa_model/inference/client_sdk/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
32
|
-
isa_model/inference/client_sdk/client.py,sha256=pvKNwnTGcPX-5Q3ACfiftXfghUaIksFfd-zqEi-ze0g,5049
|
33
|
-
isa_model/inference/client_sdk/client_data_std.py,sha256=tFBMb2F6pqNeq49fKkRSJW656qpO0BB1rs_wqYJGCS4,1817
|
34
|
-
isa_model/inference/client_sdk/client_sdk_schema.py,sha256=Kq5pKrvEzCs2ZYJ44PaMTimHyyCttI-fE1MES-qkGFc,544
|
35
|
-
isa_model/inference/client_sdk/exceptions.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
36
|
-
isa_model/inference/engine/triton/model_repository/bge/1/model.py,sha256=43MuLQ_nNl64VTRPLmxe7SzkRJl-cZ3A_wnlgQMl_B8,6004
|
37
|
-
isa_model/inference/engine/triton/model_repository/gemma/1/model.py,sha256=1aR7UG6W-Dv1PyOTRTmnKIerogricl2DI_4p__hfSt4,9481
|
38
|
-
isa_model/inference/engine/triton/model_repository/llama/1/model.py,sha256=4m9_IorEeAPMve-93AECo3pRjK6Swhs38RbCfCn3WKo,3744
|
39
|
-
isa_model/inference/engine/triton/model_repository/whisper/1/model.py,sha256=0hugV7MZYj4EwiF1JZzYjFSuj-HK7KVumwtPL2Dg8-w,7943
|
40
24
|
isa_model/inference/providers/__init__.py,sha256=a83q-LMFv8u47wf0XtxvqOw_mlVgA_90wtuwy02qdDE,581
|
41
25
|
isa_model/inference/providers/base_provider.py,sha256=btkSXE7o1IfOpv22hMM6_DNlm05tbLMszsP1J4T26KE,924
|
42
26
|
isa_model/inference/providers/model_cache_manager.py,sha256=dLRpx7OJweQ5LcSAkU7D0DQRfLtIhG6nGvg4W_gau80,15315
|
43
27
|
isa_model/inference/providers/ollama_provider.py,sha256=BLkWp4gmCw6Fwf1yNRY90VftMqwca9YOGOHf6DqVEKs,2692
|
44
|
-
isa_model/inference/providers/openai_provider.py,sha256=
|
45
|
-
isa_model/inference/providers/replicate_provider.py,sha256=
|
46
|
-
isa_model/inference/providers/triton_provider.py,sha256=
|
47
|
-
isa_model/inference/providers/vllm_provider.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
48
|
-
isa_model/inference/providers/yyds_provider.py,sha256=h0rAtEvsq4B1x94WAZkUY6hhbnQ1XycW1zV440Zio7w,3028
|
28
|
+
isa_model/inference/providers/openai_provider.py,sha256=8ywUsrvlvC7VY3LNOVJP1IcRwBMi1NvG0PoI0lYo4jM,3881
|
29
|
+
isa_model/inference/providers/replicate_provider.py,sha256=qXnK3Yzy5-gaduVJVY8asrIIi-97m4WGUkG963_4ifk,3948
|
30
|
+
isa_model/inference/providers/triton_provider.py,sha256=GKlth7cTOx6ERbsXXJ0gDNby3kVGQNULBDt098BXBSU,15258
|
49
31
|
isa_model/inference/services/__init__.py,sha256=p-UlEGMnadGUD6zzwfAjf367S2QQ-z1sD6TP-K4EjEM,353
|
50
32
|
isa_model/inference/services/base_service.py,sha256=PB6eZp-PynUdo9a0QofvHgrrJLUFYM_FSafTg7fvWrY,3083
|
51
|
-
isa_model/inference/services/
|
52
|
-
isa_model/inference/services/audio/
|
53
|
-
isa_model/inference/services/audio/
|
54
|
-
isa_model/inference/services/
|
55
|
-
isa_model/inference/services/
|
56
|
-
isa_model/inference/services/
|
57
|
-
isa_model/inference/services/
|
58
|
-
isa_model/inference/services/
|
59
|
-
isa_model/inference/services/
|
60
|
-
isa_model/inference/services/embedding/onnx_rerank_service.py,sha256=GPxezAyZoDpkAdaxuGZ_Fjx3EPpuvSd9b0cQMk_4_8w,2698
|
61
|
-
isa_model/inference/services/llm/__init__.py,sha256=hV0WaIb_-fbzzxPgqFihZN5-OcZYVpxYt3bhCJCZl3k,424
|
62
|
-
isa_model/inference/services/llm/gemma_service.py,sha256=P8zh-FEYxpiRQJIal3TtZeplxs_GUqMa6C8FvwkQgp8,4396
|
63
|
-
isa_model/inference/services/llm/llama_service.py,sha256=XlqVxG_THjNRrQ4cbSeLv3L-Mln5XVqp6gWQF0GtGlo,4396
|
64
|
-
isa_model/inference/services/llm/ollama_llm_service.py,sha256=H2_m83taVFQCgIXtiYGfBrCo9YOuKcikzwHmHSf-_HI,4290
|
65
|
-
isa_model/inference/services/llm/openai_llm_service.py,sha256=WE9YtjRJepZG756EoluJSr1NLtPTBjV1vqRs3EqufkM,4960
|
66
|
-
isa_model/inference/services/llm/replicate_llm_service.py,sha256=ZNAsGrIrTYvj6cguVmqAGtAhW9_FTO8aJj8Xh11kwrQ,6962
|
67
|
-
isa_model/inference/services/llm/triton_llm_service.py,sha256=V8XgJ1e9NLenX0SICvoJdGYsqAG7HnK2G_Pqqv5ON68,8102
|
33
|
+
isa_model/inference/services/audio/base_stt_service.py,sha256=tIfdRLEppcFEyTEmI8zi8OwMd7wVP423MQDN4iYDEcE,2800
|
34
|
+
isa_model/inference/services/audio/base_tts_service.py,sha256=BzZ3JrrLpm4COthNyNrIO2QgP7RZkXDNPEELEKHzIbA,4164
|
35
|
+
isa_model/inference/services/audio/openai_tts_service.py,sha256=0R3-AFSAU0sOCx9iXmRSLxgAh6Tm1n887mPK4_MGTgY,2560
|
36
|
+
isa_model/inference/services/embedding/ollama_embed_service.py,sha256=qspgGDcLPakG0yirdKDT0r7asgUkMO-soM2J1OaqE6g,3700
|
37
|
+
isa_model/inference/services/embedding/openai_embed_service.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
38
|
+
isa_model/inference/services/llm/__init__.py,sha256=Yf6zMjcHs-eGLzl9mRGRf75S_5oBuNxxpc2r3mDw-CE,269
|
39
|
+
isa_model/inference/services/llm/base_llm_service.py,sha256=HtlTArjeCywvkzlAp4R4iWkoaOEQg1RdltOZdbeRYFQ,3982
|
40
|
+
isa_model/inference/services/llm/ollama_llm_service.py,sha256=WYCuJG16x9RtQm0vFJNxQWSVKFtNnCk8kc3_HZB4UKs,3875
|
41
|
+
isa_model/inference/services/llm/openai_llm_service.py,sha256=EuduDfZ-10PEoFrjRr7KmZvxew2B-GQSYlvmqKQcVXA,5394
|
68
42
|
isa_model/inference/services/others/table_transformer_service.py,sha256=r74h6QUSwSj6jTt-gRProz9SgwBwKWDe50NR0uqW0ZI,2367
|
69
|
-
isa_model/inference/services/vision/__init__.py,sha256=
|
70
|
-
isa_model/inference/services/vision/ollama_vision_service.py,sha256=
|
71
|
-
isa_model/inference/services/vision/
|
72
|
-
isa_model/inference/services/vision/
|
73
|
-
isa_model/inference/services/vision/yyds_vision_service.py,sha256=hiBy_4s1L7k_4p6VX1Hu2GOgdTSheYf7ZgrRoy3Kpmc,2911
|
43
|
+
isa_model/inference/services/vision/__init__.py,sha256=t06-E1Fo89MTLJweHx3ai892HHbvnwh5G0ovj0Y-2wk,277
|
44
|
+
isa_model/inference/services/vision/ollama_vision_service.py,sha256=aGWMF11YZ-4-6kSkX5af0m1u704OYutO0wwmfWszhBE,2004
|
45
|
+
isa_model/inference/services/vision/openai_vision_service.py,sha256=5M182cV-wKCnV_U0CGWu4uFrggo--3YLD_0_FpNW9Ak,2920
|
46
|
+
isa_model/inference/services/vision/replicate_image_gen_service.py,sha256=03jhK31C_4p0Xj5V9GiCRlgF-UpNw7aHjCYiCCiqWNw,7826
|
74
47
|
isa_model/inference/services/vision/helpers/image_utils.py,sha256=hTZi4MLktETupPIbE-TXMSi1kix6h8UfLiyEIDt2rzA,1751
|
75
48
|
isa_model/inference/services/vision/helpers/text_splitter.py,sha256=6AbvcQ7H6MS54B9d9T1XBGg4GhvmKfZqp00lKp9pF-U,1635
|
76
49
|
isa_model/inference/utils/conversion/bge_rerank_convert.py,sha256=1dvtxe5-PPCe2Au6SO8F2XaD-xdIoeA4zDTcid2L9FU,2691
|
@@ -81,6 +54,8 @@ isa_model/scripts/mlflow_manager.py,sha256=7xMN0_wELr1jcALuTW9WeWirRkPZPlE2LlFfZ
|
|
81
54
|
isa_model/scripts/model_registry.py,sha256=7rycPkVk8WHUO3LJaHfdyy5Yq8qmd_4WkGk4wKan-2w,14279
|
82
55
|
isa_model/scripts/start_mlflow.py,sha256=3AGKBzByjzbZ56I8w0IOfYnp3V6EU2Lv9NtX9maSqL8,2571
|
83
56
|
isa_model/scripts/training_tracker.py,sha256=cnXPi8ip2OK76-aWAOgC-dKx90PqZLEnP6UbHso7Fwc,8080
|
57
|
+
isa_model/training/__init__.py,sha256=RQDQ0m8p9YXBXgyyFxADeRA_-m18-wgNyWpjJhJfudU,950
|
58
|
+
isa_model/training/factory.py,sha256=iX-OkKRud09F2VfGXKKKj3w9d26kh9Po4FKvxTqmFiI,12581
|
84
59
|
isa_model/training/engine/llama_factory/__init__.py,sha256=WCqmUHTidASN4owGDOPSnKeLdG1gbK1MXQrRAzjP0z4,969
|
85
60
|
isa_model/training/engine/llama_factory/config.py,sha256=3OvjuXs9IyfcY52pB1SpXSOe0VwmKZvsmy8VK9Ig6Ss,3178
|
86
61
|
isa_model/training/engine/llama_factory/data_adapter.py,sha256=krqLp6Jy-IFQ6_M8O3FCtU-qqzUFJ65aNHpVq9C4Zyk,8865
|
@@ -110,8 +85,8 @@ isa_model/training/llm_model/annotation/tests/test_annotation_flow.py,sha256=DXY
|
|
110
85
|
isa_model/training/llm_model/annotation/tests/test_minio copy.py,sha256=EI-PlH5xttAZF14Z_xn6LjgIJBkvP2qjLcvbX2hc0RM,3946
|
111
86
|
isa_model/training/llm_model/annotation/tests/test_minio_upload.py,sha256=fL1eMubwR6L9lYc3zEwlWU9yjJuTsIYi93i0l9QUjm0,1109
|
112
87
|
isa_model/training/llm_model/annotation/views/annotation_controller.py,sha256=3VzJ52yI-YIpcaAAXy2qac7sr4hTnFdtn-ZEKTt4IkM,5792
|
113
|
-
isa_model-0.1.
|
114
|
-
isa_model-0.1.
|
115
|
-
isa_model-0.1.
|
116
|
-
isa_model-0.1.
|
117
|
-
isa_model-0.1.
|
88
|
+
isa_model-0.1.1.dist-info/licenses/LICENSE,sha256=nNPdMBBVrQz3f7AgKFZuyQgdar9d90Vdw51es-P72Dw,1084
|
89
|
+
isa_model-0.1.1.dist-info/METADATA,sha256=hTYSsOkklHerhi4whQn44KV0TOrbrmmNLpqVnVf6Cz4,8105
|
90
|
+
isa_model-0.1.1.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
|
91
|
+
isa_model-0.1.1.dist-info/top_level.txt,sha256=eHSy_Xb3kNkh2kK11mi1mZh0Wz91AQ5b8k2KFYO-rE8,10
|
92
|
+
isa_model-0.1.1.dist-info/RECORD,,
|
@@ -1,65 +0,0 @@
|
|
1
|
-
#!/usr/bin/env python3
|
2
|
-
"""
|
3
|
-
MLflow Gateway starter script.
|
4
|
-
Replaces the custom adapter with industry-standard MLflow Gateway.
|
5
|
-
|
6
|
-
Usage:
|
7
|
-
python -m isa_model.deployment.mlflow_gateway.start_gateway
|
8
|
-
"""
|
9
|
-
|
10
|
-
import os
|
11
|
-
import sys
|
12
|
-
import logging
|
13
|
-
import subprocess
|
14
|
-
from pathlib import Path
|
15
|
-
|
16
|
-
# Configure logging
|
17
|
-
logging.basicConfig(
|
18
|
-
level=logging.INFO,
|
19
|
-
format='%(asctime)s - %(name)s - %(levelname)s - %(message)s'
|
20
|
-
)
|
21
|
-
logger = logging.getLogger(__name__)
|
22
|
-
|
23
|
-
|
24
|
-
def start_mlflow_gateway():
|
25
|
-
"""Start MLflow Gateway with our configuration."""
|
26
|
-
|
27
|
-
# Get the directory containing this script
|
28
|
-
script_dir = Path(__file__).parent
|
29
|
-
config_file = script_dir / "gateway_config.yaml"
|
30
|
-
|
31
|
-
if not config_file.exists():
|
32
|
-
logger.error(f"Gateway config file not found: {config_file}")
|
33
|
-
sys.exit(1)
|
34
|
-
|
35
|
-
# Set environment variables
|
36
|
-
os.environ["MLFLOW_GATEWAY_CONFIG_PATH"] = str(config_file)
|
37
|
-
|
38
|
-
# MLflow Gateway command
|
39
|
-
cmd = [
|
40
|
-
"mlflow", "gateway", "start",
|
41
|
-
"--config-path", str(config_file),
|
42
|
-
"--host", "0.0.0.0",
|
43
|
-
"--port", "8000"
|
44
|
-
]
|
45
|
-
|
46
|
-
logger.info("🚀 Starting MLflow Gateway...")
|
47
|
-
logger.info(f"📁 Config file: {config_file}")
|
48
|
-
logger.info(f"🌐 Server: http://localhost:8000")
|
49
|
-
logger.info(f"📚 Docs: http://localhost:8000/docs")
|
50
|
-
|
51
|
-
try:
|
52
|
-
# Start the gateway
|
53
|
-
subprocess.run(cmd, check=True)
|
54
|
-
except KeyboardInterrupt:
|
55
|
-
logger.info("MLflow Gateway stopped by user")
|
56
|
-
except subprocess.CalledProcessError as e:
|
57
|
-
logger.error(f"MLflow Gateway failed to start: {e}")
|
58
|
-
sys.exit(1)
|
59
|
-
except Exception as e:
|
60
|
-
logger.error(f"Unexpected error: {e}")
|
61
|
-
sys.exit(1)
|
62
|
-
|
63
|
-
|
64
|
-
if __name__ == "__main__":
|
65
|
-
start_mlflow_gateway()
|