projectdavid-orm 1.6.3__tar.gz → 1.8.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.
Files changed (26) hide show
  1. {projectdavid_orm-1.6.3 → projectdavid_orm-1.8.0}/CHANGELOG.md +14 -0
  2. {projectdavid_orm-1.6.3/src/projectdavid_orm.egg-info → projectdavid_orm-1.8.0}/PKG-INFO +1 -1
  3. {projectdavid_orm-1.6.3 → projectdavid_orm-1.8.0}/pyproject.toml +1 -1
  4. {projectdavid_orm-1.6.3 → projectdavid_orm-1.8.0}/src/projectdavid_orm/projectdavid_orm/models.py +91 -3
  5. {projectdavid_orm-1.6.3 → projectdavid_orm-1.8.0/src/projectdavid_orm.egg-info}/PKG-INFO +1 -1
  6. {projectdavid_orm-1.6.3 → projectdavid_orm-1.8.0}/LICENSE +0 -0
  7. {projectdavid_orm-1.6.3 → projectdavid_orm-1.8.0}/MANIFEST.in +0 -0
  8. {projectdavid_orm-1.6.3 → projectdavid_orm-1.8.0}/README.md +0 -0
  9. {projectdavid_orm-1.6.3 → projectdavid_orm-1.8.0}/setup.cfg +0 -0
  10. {projectdavid_orm-1.6.3 → projectdavid_orm-1.8.0}/src/projectdavid_common.egg-info/PKG-INFO +0 -0
  11. {projectdavid_orm-1.6.3 → projectdavid_orm-1.8.0}/src/projectdavid_common.egg-info/SOURCES.txt +0 -0
  12. {projectdavid_orm-1.6.3 → projectdavid_orm-1.8.0}/src/projectdavid_common.egg-info/dependency_links.txt +0 -0
  13. {projectdavid_orm-1.6.3 → projectdavid_orm-1.8.0}/src/projectdavid_common.egg-info/entry_points.txt +0 -0
  14. {projectdavid_orm-1.6.3 → projectdavid_orm-1.8.0}/src/projectdavid_common.egg-info/requires.txt +0 -0
  15. {projectdavid_orm-1.6.3 → projectdavid_orm-1.8.0}/src/projectdavid_common.egg-info/top_level.txt +0 -0
  16. {projectdavid_orm-1.6.3 → projectdavid_orm-1.8.0}/src/projectdavid_orm/__init__.py +0 -0
  17. {projectdavid_orm-1.6.3 → projectdavid_orm-1.8.0}/src/projectdavid_orm/constants/__init__.py +0 -0
  18. {projectdavid_orm-1.6.3 → projectdavid_orm-1.8.0}/src/projectdavid_orm/ormInterface.py +0 -0
  19. {projectdavid_orm-1.6.3 → projectdavid_orm-1.8.0}/src/projectdavid_orm/projectdavid_orm/__init__.py +0 -0
  20. {projectdavid_orm-1.6.3 → projectdavid_orm-1.8.0}/src/projectdavid_orm/projectdavid_orm/base.py +0 -0
  21. {projectdavid_orm-1.6.3 → projectdavid_orm-1.8.0}/src/projectdavid_orm/utilities/__init__.py +0 -0
  22. {projectdavid_orm-1.6.3 → projectdavid_orm-1.8.0}/src/projectdavid_orm.egg-info/SOURCES.txt +0 -0
  23. {projectdavid_orm-1.6.3 → projectdavid_orm-1.8.0}/src/projectdavid_orm.egg-info/dependency_links.txt +0 -0
  24. {projectdavid_orm-1.6.3 → projectdavid_orm-1.8.0}/src/projectdavid_orm.egg-info/requires.txt +0 -0
  25. {projectdavid_orm-1.6.3 → projectdavid_orm-1.8.0}/src/projectdavid_orm.egg-info/top_level.txt +0 -0
  26. {projectdavid_orm-1.6.3 → projectdavid_orm-1.8.0}/tests/test_clients.py +0 -0
@@ -1,3 +1,17 @@
1
+ # [1.8.0](https://github.com/project-david-ai/projectdavid-orm/compare/v1.7.0...v1.8.0) (2026-04-12)
2
+
3
+
4
+ ### Features
5
+
6
+ * **inference_deployment:** add mm_processor_kwargs column ([ae55b96](https://github.com/project-david-ai/projectdavid-orm/commit/ae55b96acf0696b27b27afa24d9ab515bb35481c))
7
+
8
+ # [1.7.0](https://github.com/project-david-ai/projectdavid-orm/compare/v1.6.3...v1.7.0) (2026-04-12)
9
+
10
+
11
+ ### Features
12
+
13
+ * **inference_deployment:** add vLLM hyperparam columns ([6c6de67](https://github.com/project-david-ai/projectdavid-orm/commit/6c6de67eca69c7e71c9c3755765254fe1aeac25d))
14
+
1
15
  ## [1.6.3](https://github.com/project-david-ai/projectdavid-orm/compare/v1.6.2...v1.6.3) (2026-04-11)
2
16
 
3
17
 
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: projectdavid-orm
3
- Version: 1.6.3
3
+ Version: 1.8.0
4
4
  Summary: Shared SQLAlchemy ORM models for ProjectDavid services
5
5
  Author-email: "Francis N." <engineering@projectdavid.co.uk>
6
6
  License: PolyForm Noncommercial License 1.0.0
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
4
4
 
5
5
  [project]
6
6
  name = "projectdavid-orm"
7
- version = "1.6.3"
7
+ version = "1.8.0"
8
8
  description = "Shared SQLAlchemy ORM models for ProjectDavid services"
9
9
  readme = "README.md"
10
10
  authors = [
@@ -886,22 +886,110 @@ 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
+ Vision kwargs resolution priority:
897
+ 1. mm_processor_kwargs DB column — set via activation API
898
+ 2. _VISION_FAMILY_CONFIGS registry — inference_worker.py family defaults
899
+ 3. vLLM built-in defaults — no kwargs injected for unknown families
900
+ """
901
+
889
902
  __tablename__ = "inference_deployments"
890
- id = Column(String(64), primary_key=True, index=True)
891
903
 
904
+ # --- Identity ---
905
+ id = Column(String(64), primary_key=True, index=True)
892
906
  node_id = Column(String(128), nullable=True)
893
-
894
907
  internal_hostname = Column(String(128), nullable=True)
908
+
909
+ # --- Foreign Keys ---
895
910
  base_model_id = Column(String(128), ForeignKey("base_models.id"))
896
911
  fine_tuned_model_id = Column(
897
912
  String(64), ForeignKey("fine_tuned_models.id"), nullable=True
898
913
  )
914
+
915
+ # --- Deployment State ---
899
916
  port = Column(Integer, default=8000)
900
917
  status = Column(SAEnum(StatusEnum), default=StatusEnum.active)
901
918
  current_throughput = Column(Float, default=0.0)
902
919
  last_seen = Column(BigInteger, default=lambda: int(time.time()))
903
920
 
904
- tensor_parallel_size = Column(Integer, nullable=False, default=1)
921
+ # --- Parallelism ---
922
+ tensor_parallel_size = Column(
923
+ Integer,
924
+ nullable=False,
925
+ default=1,
926
+ comment="Number of GPUs for tensor parallelism. 1 = single GPU.",
927
+ )
928
+
929
+ # --- Memory & Context ---
930
+ gpu_memory_utilization = Column(
931
+ Float,
932
+ nullable=False,
933
+ default=0.90,
934
+ server_default="0.90",
935
+ comment="Fraction of GPU VRAM vLLM may allocate. Overrides VLLM_DEFAULT_GPU_MEM_UTIL.",
936
+ )
937
+ max_model_len = Column(
938
+ Integer,
939
+ nullable=True,
940
+ default=None,
941
+ comment="Max sequence length in tokens. Overrides VLLM_DEFAULT_MAX_MODEL_LEN. None = env default.",
942
+ )
943
+ max_num_seqs = Column(
944
+ Integer,
945
+ nullable=True,
946
+ default=None,
947
+ comment="Max concurrent sequences. Critical for vision — each image eats slots. None = vLLM default.",
948
+ )
949
+
950
+ # --- Quantization & Precision ---
951
+ quantization = Column(
952
+ String(32),
953
+ nullable=True,
954
+ default=None,
955
+ comment="Quantization scheme: 'awq', 'awq_marlin', 'gptq', 'bitsandbytes', or None for full precision.",
956
+ )
957
+ dtype = Column(
958
+ String(16),
959
+ nullable=True,
960
+ default=None,
961
+ comment="Compute dtype: 'float16', 'bfloat16', 'auto', or None to let vLLM decide.",
962
+ )
963
+
964
+ # --- Runtime Behaviour ---
965
+ enforce_eager = Column(
966
+ Boolean,
967
+ nullable=False,
968
+ default=False,
969
+ server_default="0",
970
+ comment="Disable CUDA graphs. Slower but useful for debugging OOM crashes.",
971
+ )
972
+
973
+ # --- Multimodal Limits ---
974
+ limit_mm_per_prompt = Column(
975
+ JSON,
976
+ nullable=True,
977
+ default=None,
978
+ comment='Per-modality token cap per request. e.g. {"image": 2, "video": 0}. None = family registry default.',
979
+ )
980
+ mm_processor_kwargs = Column(
981
+ JSON,
982
+ nullable=True,
983
+ default=None,
984
+ comment=(
985
+ "Processor-level kwargs passed to vLLM multimodal processor at engine init. "
986
+ "Overrides family registry defaults (_VISION_FAMILY_CONFIGS) when set. "
987
+ 'Examples: {"min_pixels": 784, "max_pixels": 50176} for Qwen2.5-VL, '
988
+ '{"num_crops": 4} for Phi-3.5-Vision. '
989
+ "None = fall back to inference_worker.py family registry defaults."
990
+ ),
991
+ )
905
992
 
993
+ # --- Relationships (always last) ---
906
994
  base_model = relationship("BaseModel")
907
995
  fine_tuned_model = relationship("FineTunedModel")
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: projectdavid-orm
3
- Version: 1.6.3
3
+ Version: 1.8.0
4
4
  Summary: Shared SQLAlchemy ORM models for ProjectDavid services
5
5
  Author-email: "Francis N." <engineering@projectdavid.co.uk>
6
6
  License: PolyForm Noncommercial License 1.0.0