projectdavid-orm 1.6.2__tar.gz → 1.7.0__tar.gz
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.
- {projectdavid_orm-1.6.2 → projectdavid_orm-1.7.0}/CHANGELOG.md +14 -0
- {projectdavid_orm-1.6.2/src/projectdavid_orm.egg-info → projectdavid_orm-1.7.0}/PKG-INFO +1 -1
- {projectdavid_orm-1.6.2 → projectdavid_orm-1.7.0}/pyproject.toml +1 -1
- {projectdavid_orm-1.6.2 → projectdavid_orm-1.7.0}/src/projectdavid_orm/projectdavid_orm/models.py +76 -5
- {projectdavid_orm-1.6.2 → projectdavid_orm-1.7.0/src/projectdavid_orm.egg-info}/PKG-INFO +1 -1
- {projectdavid_orm-1.6.2 → projectdavid_orm-1.7.0}/LICENSE +0 -0
- {projectdavid_orm-1.6.2 → projectdavid_orm-1.7.0}/MANIFEST.in +0 -0
- {projectdavid_orm-1.6.2 → projectdavid_orm-1.7.0}/README.md +0 -0
- {projectdavid_orm-1.6.2 → projectdavid_orm-1.7.0}/setup.cfg +0 -0
- {projectdavid_orm-1.6.2 → projectdavid_orm-1.7.0}/src/projectdavid_common.egg-info/PKG-INFO +0 -0
- {projectdavid_orm-1.6.2 → projectdavid_orm-1.7.0}/src/projectdavid_common.egg-info/SOURCES.txt +0 -0
- {projectdavid_orm-1.6.2 → projectdavid_orm-1.7.0}/src/projectdavid_common.egg-info/dependency_links.txt +0 -0
- {projectdavid_orm-1.6.2 → projectdavid_orm-1.7.0}/src/projectdavid_common.egg-info/entry_points.txt +0 -0
- {projectdavid_orm-1.6.2 → projectdavid_orm-1.7.0}/src/projectdavid_common.egg-info/requires.txt +0 -0
- {projectdavid_orm-1.6.2 → projectdavid_orm-1.7.0}/src/projectdavid_common.egg-info/top_level.txt +0 -0
- {projectdavid_orm-1.6.2 → projectdavid_orm-1.7.0}/src/projectdavid_orm/__init__.py +0 -0
- {projectdavid_orm-1.6.2 → projectdavid_orm-1.7.0}/src/projectdavid_orm/constants/__init__.py +0 -0
- {projectdavid_orm-1.6.2 → projectdavid_orm-1.7.0}/src/projectdavid_orm/ormInterface.py +0 -0
- {projectdavid_orm-1.6.2 → projectdavid_orm-1.7.0}/src/projectdavid_orm/projectdavid_orm/__init__.py +0 -0
- {projectdavid_orm-1.6.2 → projectdavid_orm-1.7.0}/src/projectdavid_orm/projectdavid_orm/base.py +0 -0
- {projectdavid_orm-1.6.2 → projectdavid_orm-1.7.0}/src/projectdavid_orm/utilities/__init__.py +0 -0
- {projectdavid_orm-1.6.2 → projectdavid_orm-1.7.0}/src/projectdavid_orm.egg-info/SOURCES.txt +0 -0
- {projectdavid_orm-1.6.2 → projectdavid_orm-1.7.0}/src/projectdavid_orm.egg-info/dependency_links.txt +0 -0
- {projectdavid_orm-1.6.2 → projectdavid_orm-1.7.0}/src/projectdavid_orm.egg-info/requires.txt +0 -0
- {projectdavid_orm-1.6.2 → projectdavid_orm-1.7.0}/src/projectdavid_orm.egg-info/top_level.txt +0 -0
- {projectdavid_orm-1.6.2 → projectdavid_orm-1.7.0}/tests/test_clients.py +0 -0
|
@@ -1,3 +1,17 @@
|
|
|
1
|
+
# [1.7.0](https://github.com/project-david-ai/projectdavid-orm/compare/v1.6.3...v1.7.0) (2026-04-12)
|
|
2
|
+
|
|
3
|
+
|
|
4
|
+
### Features
|
|
5
|
+
|
|
6
|
+
* **inference_deployment:** add vLLM hyperparam columns ([6c6de67](https://github.com/project-david-ai/projectdavid-orm/commit/6c6de67eca69c7e71c9c3755765254fe1aeac25d))
|
|
7
|
+
|
|
8
|
+
## [1.6.3](https://github.com/project-david-ai/projectdavid-orm/compare/v1.6.2...v1.6.3) (2026-04-11)
|
|
9
|
+
|
|
10
|
+
|
|
11
|
+
### Bug Fixes
|
|
12
|
+
|
|
13
|
+
* **orm:** declare Base locally in models.py — remove dependency on projectdavid_common.projectdavid_orm.base ([0d43ad1](https://github.com/project-david-ai/projectdavid-orm/commit/0d43ad1984a72765d651b4080325cecbe35ca3ef))
|
|
14
|
+
|
|
1
15
|
## [1.6.2](https://github.com/project-david-ai/projectdavid-orm/compare/v1.6.1...v1.6.2) (2026-04-05)
|
|
2
16
|
|
|
3
17
|
|
{projectdavid_orm-1.6.2 → projectdavid_orm-1.7.0}/src/projectdavid_orm/projectdavid_orm/models.py
RENAMED
|
@@ -1,11 +1,9 @@
|
|
|
1
1
|
import secrets
|
|
2
2
|
import time
|
|
3
3
|
from datetime import datetime
|
|
4
|
-
from enum import Enum as PyEnum
|
|
5
4
|
|
|
6
5
|
from passlib.context import CryptContext
|
|
7
6
|
from projectdavid_common import ValidationInterface
|
|
8
|
-
from projectdavid_common.projectdavid_orm.base import Base
|
|
9
7
|
from projectdavid_common.schemas.enums import StatusEnum
|
|
10
8
|
from projectdavid_common.utilities.logging_service import LoggingUtility
|
|
11
9
|
from sqlalchemy import JSON, BigInteger, Boolean, Column, DateTime
|
|
@@ -23,6 +21,8 @@ from sqlalchemy import (
|
|
|
23
21
|
from sqlalchemy.ext.mutable import MutableDict
|
|
24
22
|
from sqlalchemy.orm import joinedload, relationship
|
|
25
23
|
|
|
24
|
+
from .base import Base
|
|
25
|
+
|
|
26
26
|
logger = LoggingUtility()
|
|
27
27
|
|
|
28
28
|
validation = ValidationInterface
|
|
@@ -886,22 +886,93 @@ class BaseModel(Base):
|
|
|
886
886
|
|
|
887
887
|
|
|
888
888
|
class InferenceDeployment(Base):
|
|
889
|
+
"""
|
|
890
|
+
Tracks a live vLLM deployment on Ray Serve.
|
|
891
|
+
|
|
892
|
+
Hyperparams stored here override environment-level defaults at deploy time.
|
|
893
|
+
The reconciler reads these fields and passes them directly to vLLM engine args.
|
|
894
|
+
None values fall back to the VLLM_DEFAULT_* env vars in inference_worker.py.
|
|
895
|
+
"""
|
|
896
|
+
|
|
889
897
|
__tablename__ = "inference_deployments"
|
|
890
|
-
id = Column(String(64), primary_key=True, index=True)
|
|
891
898
|
|
|
899
|
+
# --- Identity ---
|
|
900
|
+
id = Column(String(64), primary_key=True, index=True)
|
|
892
901
|
node_id = Column(String(128), nullable=True)
|
|
893
|
-
|
|
894
902
|
internal_hostname = Column(String(128), nullable=True)
|
|
903
|
+
|
|
904
|
+
# --- Foreign Keys ---
|
|
895
905
|
base_model_id = Column(String(128), ForeignKey("base_models.id"))
|
|
896
906
|
fine_tuned_model_id = Column(
|
|
897
907
|
String(64), ForeignKey("fine_tuned_models.id"), nullable=True
|
|
898
908
|
)
|
|
909
|
+
|
|
910
|
+
# --- Deployment State ---
|
|
899
911
|
port = Column(Integer, default=8000)
|
|
900
912
|
status = Column(SAEnum(StatusEnum), default=StatusEnum.active)
|
|
901
913
|
current_throughput = Column(Float, default=0.0)
|
|
902
914
|
last_seen = Column(BigInteger, default=lambda: int(time.time()))
|
|
903
915
|
|
|
904
|
-
|
|
916
|
+
# --- Parallelism ---
|
|
917
|
+
tensor_parallel_size = Column(
|
|
918
|
+
Integer,
|
|
919
|
+
nullable=False,
|
|
920
|
+
default=1,
|
|
921
|
+
comment="Number of GPUs for tensor parallelism. 1 = single GPU.",
|
|
922
|
+
)
|
|
923
|
+
|
|
924
|
+
# --- Memory & Context ---
|
|
925
|
+
gpu_memory_utilization = Column(
|
|
926
|
+
Float,
|
|
927
|
+
nullable=False,
|
|
928
|
+
default=0.90,
|
|
929
|
+
server_default="0.90",
|
|
930
|
+
comment="Fraction of GPU VRAM vLLM may allocate. Overrides VLLM_DEFAULT_GPU_MEM_UTIL.",
|
|
931
|
+
)
|
|
932
|
+
max_model_len = Column(
|
|
933
|
+
Integer,
|
|
934
|
+
nullable=True,
|
|
935
|
+
default=None,
|
|
936
|
+
comment="Max sequence length in tokens. Overrides VLLM_DEFAULT_MAX_MODEL_LEN. None = env default.",
|
|
937
|
+
)
|
|
938
|
+
max_num_seqs = Column(
|
|
939
|
+
Integer,
|
|
940
|
+
nullable=True,
|
|
941
|
+
default=None,
|
|
942
|
+
comment="Max concurrent sequences. Critical for vision — each image eats slots. None = vLLM default.",
|
|
943
|
+
)
|
|
944
|
+
|
|
945
|
+
# --- Quantization & Precision ---
|
|
946
|
+
quantization = Column(
|
|
947
|
+
String(32),
|
|
948
|
+
nullable=True,
|
|
949
|
+
default=None,
|
|
950
|
+
comment="Quantization scheme: 'awq', 'awq_marlin', 'gptq', 'bitsandbytes', or None for full precision.",
|
|
951
|
+
)
|
|
952
|
+
dtype = Column(
|
|
953
|
+
String(16),
|
|
954
|
+
nullable=True,
|
|
955
|
+
default=None,
|
|
956
|
+
comment="Compute dtype: 'float16', 'bfloat16', 'auto', or None to let vLLM decide.",
|
|
957
|
+
)
|
|
958
|
+
|
|
959
|
+
# --- Runtime Behaviour ---
|
|
960
|
+
enforce_eager = Column(
|
|
961
|
+
Boolean,
|
|
962
|
+
nullable=False,
|
|
963
|
+
default=False,
|
|
964
|
+
server_default="0",
|
|
965
|
+
comment="Disable CUDA graphs. Slower but useful for debugging OOM crashes.",
|
|
966
|
+
)
|
|
967
|
+
|
|
968
|
+
# --- Multimodal Limits ---
|
|
969
|
+
limit_mm_per_prompt = Column(
|
|
970
|
+
JSON,
|
|
971
|
+
nullable=True,
|
|
972
|
+
default=None,
|
|
973
|
+
comment='Per-modality token cap per request. e.g. {"image": 2, "video": 0}. None = vLLM default.',
|
|
974
|
+
)
|
|
905
975
|
|
|
976
|
+
# --- Relationships (always last) ---
|
|
906
977
|
base_model = relationship("BaseModel")
|
|
907
978
|
fine_tuned_model = relationship("FineTunedModel")
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{projectdavid_orm-1.6.2 → projectdavid_orm-1.7.0}/src/projectdavid_common.egg-info/SOURCES.txt
RENAMED
|
File without changes
|
|
File without changes
|
{projectdavid_orm-1.6.2 → projectdavid_orm-1.7.0}/src/projectdavid_common.egg-info/entry_points.txt
RENAMED
|
File without changes
|
{projectdavid_orm-1.6.2 → projectdavid_orm-1.7.0}/src/projectdavid_common.egg-info/requires.txt
RENAMED
|
File without changes
|
{projectdavid_orm-1.6.2 → projectdavid_orm-1.7.0}/src/projectdavid_common.egg-info/top_level.txt
RENAMED
|
File without changes
|
|
File without changes
|
{projectdavid_orm-1.6.2 → projectdavid_orm-1.7.0}/src/projectdavid_orm/constants/__init__.py
RENAMED
|
File without changes
|
|
File without changes
|
{projectdavid_orm-1.6.2 → projectdavid_orm-1.7.0}/src/projectdavid_orm/projectdavid_orm/__init__.py
RENAMED
|
File without changes
|
{projectdavid_orm-1.6.2 → projectdavid_orm-1.7.0}/src/projectdavid_orm/projectdavid_orm/base.py
RENAMED
|
File without changes
|
{projectdavid_orm-1.6.2 → projectdavid_orm-1.7.0}/src/projectdavid_orm/utilities/__init__.py
RENAMED
|
File without changes
|
|
File without changes
|
{projectdavid_orm-1.6.2 → projectdavid_orm-1.7.0}/src/projectdavid_orm.egg-info/dependency_links.txt
RENAMED
|
File without changes
|
{projectdavid_orm-1.6.2 → projectdavid_orm-1.7.0}/src/projectdavid_orm.egg-info/requires.txt
RENAMED
|
File without changes
|
{projectdavid_orm-1.6.2 → projectdavid_orm-1.7.0}/src/projectdavid_orm.egg-info/top_level.txt
RENAMED
|
File without changes
|
|
File without changes
|