Initial public ModelForge release
This commit is contained in:
@@ -0,0 +1,249 @@
|
||||
from __future__ import annotations
|
||||
|
||||
import re
|
||||
import uuid
|
||||
from datetime import datetime
|
||||
from typing import Any, Literal
|
||||
|
||||
from pydantic import BaseModel, ConfigDict, Field, field_validator, model_validator
|
||||
|
||||
RuntimeAdapterName = Literal[
|
||||
"sentence_transformers",
|
||||
"qwen3_reranker",
|
||||
"transformers_trocr",
|
||||
"transformers_siglip2",
|
||||
"transformers_whisper",
|
||||
"transformers",
|
||||
"vllm",
|
||||
"llama_cpp",
|
||||
"diffusers",
|
||||
"custom",
|
||||
]
|
||||
CompatibilityStatus = Literal["compatible", "incompatible", "unknown", "requires_probe", "blocked"]
|
||||
ProbeStatus = Literal[
|
||||
"queued",
|
||||
"preparing",
|
||||
"loading",
|
||||
"healthchecking",
|
||||
"ready",
|
||||
"unloading",
|
||||
"completed",
|
||||
"failed",
|
||||
"cancelled",
|
||||
]
|
||||
|
||||
|
||||
class RuntimeModel(BaseModel):
|
||||
model_config = ConfigDict(extra="forbid", from_attributes=True)
|
||||
|
||||
|
||||
class RuntimeEnvironmentCreate(RuntimeModel):
|
||||
name: str = Field(min_length=1, max_length=255)
|
||||
adapter: RuntimeAdapterName
|
||||
runtime_version: str = Field(min_length=1, max_length=128)
|
||||
image_repository: str = Field(min_length=1, max_length=255)
|
||||
image_digest: str = Field(pattern=r"^sha256:[a-f0-9]{64}$")
|
||||
python_version: str = Field(min_length=1, max_length=64)
|
||||
cuda_runtime_version: str | None = Field(default=None, max_length=64)
|
||||
package_versions: dict[str, str] = Field(default_factory=dict)
|
||||
supported_model_types: list[str] = Field(default_factory=list)
|
||||
supported_formats: list[str] = Field(default_factory=list)
|
||||
supported_modalities: list[str] = Field(default_factory=list)
|
||||
network_policy: Literal["offline_control_plane_only"] = "offline_control_plane_only"
|
||||
|
||||
|
||||
class RuntimeEnvironmentResponse(RuntimeEnvironmentCreate):
|
||||
id: uuid.UUID
|
||||
fingerprint: str
|
||||
immutable_at: datetime
|
||||
created_at: datetime
|
||||
|
||||
|
||||
class RuntimeProfileCreate(RuntimeModel):
|
||||
name: str = Field(min_length=1, max_length=255)
|
||||
runtime_environment_id: uuid.UUID
|
||||
artifact_set_id: uuid.UUID
|
||||
dtype: Literal["float32", "float16", "bfloat16"] = "bfloat16"
|
||||
quantization: str | None = Field(default=None, max_length=64)
|
||||
modality: Literal[
|
||||
"embedding", "reranking", "text_generation", "vision", "document", "audio", "diffusion"
|
||||
]
|
||||
max_sequence_length: int = Field(default=128, ge=1, le=131072)
|
||||
batch_size: int = Field(default=1, ge=1, le=128)
|
||||
concurrency: int = Field(default=1, ge=1, le=128)
|
||||
device_policy: Literal["cuda_required", "cuda_preferred", "cpu_only"] = "cuda_required"
|
||||
gpu_memory_policy: dict[str, Any] = Field(default_factory=dict)
|
||||
launch_parameters: dict[str, Any] = Field(default_factory=dict)
|
||||
environment_variables: dict[str, str] = Field(default_factory=dict)
|
||||
trust_remote_code: Literal[False] = False
|
||||
network_egress: Literal[False] = False
|
||||
|
||||
@field_validator("environment_variables")
|
||||
@classmethod
|
||||
def reject_secrets(cls, value: dict[str, str]) -> dict[str, str]:
|
||||
forbidden = {"TOKEN", "SECRET", "PASSWORD", "KEY", "CREDENTIAL"}
|
||||
if any(
|
||||
forbidden.intersection(filter(None, re.split(r"[^A-Z0-9]+", key.upper())))
|
||||
for key in value
|
||||
):
|
||||
raise ValueError("runtime profile environment cannot contain secrets")
|
||||
return value
|
||||
|
||||
@model_validator(mode="after")
|
||||
def fixed_probe_shape(self) -> RuntimeProfileCreate:
|
||||
if self.modality == "embedding" and self.batch_size != 1:
|
||||
raise ValueError("M4 embedding probes require batch_size=1")
|
||||
return self
|
||||
|
||||
|
||||
class RuntimeProfileResponse(RuntimeProfileCreate):
|
||||
id: uuid.UUID
|
||||
adapter: str
|
||||
runtime_version: str
|
||||
image_digest: str
|
||||
version: int
|
||||
fingerprint: str
|
||||
health_contract: dict[str, Any]
|
||||
immutable_at: datetime
|
||||
created_at: datetime
|
||||
|
||||
|
||||
class CompatibilityAssessmentCreate(RuntimeModel):
|
||||
runtime_profile_id: uuid.UUID
|
||||
compute_node_id: uuid.UUID
|
||||
|
||||
|
||||
class CompatibilityAssessmentResponse(RuntimeModel):
|
||||
id: uuid.UUID
|
||||
artifact_set_id: uuid.UUID
|
||||
runtime_profile_id: uuid.UUID
|
||||
compute_node_id: uuid.UUID
|
||||
adapter: str
|
||||
runtime_version: str
|
||||
status: CompatibilityStatus
|
||||
static_result: dict[str, Any]
|
||||
evidence: dict[str, Any]
|
||||
blockers: list[str]
|
||||
warnings: list[str]
|
||||
required_approvals: list[str]
|
||||
hardware_facts: dict[str, Any]
|
||||
artifact_facts: dict[str, Any]
|
||||
environment_fingerprint: str
|
||||
stale: bool
|
||||
stale_reason: str | None
|
||||
created_at: datetime
|
||||
|
||||
|
||||
class ExecutionApprovalCreate(RuntimeModel):
|
||||
scope: Literal["lab_execution"] = "lab_execution"
|
||||
reason: str = Field(min_length=8, max_length=2000)
|
||||
approved_by: str = Field(min_length=1, max_length=255)
|
||||
expires_at: datetime | None = None
|
||||
|
||||
|
||||
class ExecutionApprovalResponse(RuntimeModel):
|
||||
id: uuid.UUID
|
||||
artifact_set_id: uuid.UUID
|
||||
scope: str
|
||||
status: str
|
||||
evidence_fingerprint: str
|
||||
reason: str
|
||||
approved_by: str
|
||||
approved_at: datetime
|
||||
expires_at: datetime | None
|
||||
revoked_at: datetime | None
|
||||
stale: bool
|
||||
|
||||
|
||||
class RuntimeProbeCreate(RuntimeModel):
|
||||
compatibility_assessment_id: uuid.UUID
|
||||
execution_approval_id: uuid.UUID
|
||||
input_text: Literal["ModelForge runtime compatibility probe"] = (
|
||||
"ModelForge runtime compatibility probe"
|
||||
)
|
||||
|
||||
|
||||
class RuntimeProbeResponse(RuntimeModel):
|
||||
id: uuid.UUID
|
||||
artifact_set_id: uuid.UUID
|
||||
runtime_profile_id: uuid.UUID
|
||||
compute_node_id: uuid.UUID
|
||||
compatibility_assessment_id: uuid.UUID
|
||||
execution_approval_id: uuid.UUID
|
||||
status: ProbeStatus
|
||||
phase: str | None
|
||||
attempt_count: int
|
||||
cancel_requested: bool
|
||||
load_result: dict[str, Any]
|
||||
health_result: dict[str, Any]
|
||||
inference_result: dict[str, Any]
|
||||
unload_result: dict[str, Any]
|
||||
measured_resources: dict[str, Any]
|
||||
runtime_facts: dict[str, Any]
|
||||
environment_fingerprint: str
|
||||
failure_code: str | None
|
||||
failure_message: str | None
|
||||
logs_reference: str | None
|
||||
started_at: datetime | None
|
||||
finished_at: datetime | None
|
||||
created_at: datetime
|
||||
updated_at: datetime
|
||||
|
||||
|
||||
class DeploymentCandidateResponse(RuntimeModel):
|
||||
id: uuid.UUID
|
||||
artifact_set_id: uuid.UUID
|
||||
runtime_profile_id: uuid.UUID
|
||||
compute_node_id: uuid.UUID
|
||||
compatibility_assessment_id: uuid.UUID
|
||||
runtime_probe_id: uuid.UUID
|
||||
channel: Literal["lab"]
|
||||
status: Literal["lab_ready"]
|
||||
production: Literal[False]
|
||||
health_contract: dict[str, Any]
|
||||
measured_resources: dict[str, Any]
|
||||
created_at: datetime
|
||||
|
||||
|
||||
class AgentRuntimeProbeLease(RuntimeModel):
|
||||
probe_id: uuid.UUID
|
||||
lease_token: str
|
||||
lease_expires_at: datetime
|
||||
artifact_set_id: uuid.UUID
|
||||
revision_sha: str = Field(pattern=r"^[a-f0-9]{40,64}$")
|
||||
artifact_root: str
|
||||
artifact_relative_path: str
|
||||
expected_manifest: dict[str, Any]
|
||||
runtime_profile: dict[str, Any]
|
||||
runtime_environment: dict[str, Any]
|
||||
probe_input: Literal["ModelForge runtime compatibility probe"]
|
||||
|
||||
|
||||
class AgentRuntimeProbeProgress(RuntimeModel):
|
||||
lease_token: str = Field(min_length=32, max_length=512)
|
||||
status: Literal["preparing", "loading", "healthchecking", "ready", "unloading"]
|
||||
details: dict[str, Any] = Field(default_factory=dict)
|
||||
|
||||
|
||||
class AgentRuntimeProbeControl(RuntimeModel):
|
||||
accepted: bool
|
||||
cancel_requested: bool
|
||||
lease_expires_at: datetime
|
||||
|
||||
|
||||
class AgentRuntimeProbeComplete(RuntimeModel):
|
||||
lease_token: str = Field(min_length=32, max_length=512)
|
||||
load_result: dict[str, Any]
|
||||
health_result: dict[str, Any]
|
||||
inference_result: dict[str, Any]
|
||||
unload_result: dict[str, Any]
|
||||
measured_resources: dict[str, Any]
|
||||
runtime_facts: dict[str, Any]
|
||||
environment_fingerprint: str = Field(pattern=r"^[a-f0-9]{64}$")
|
||||
|
||||
|
||||
class AgentRuntimeProbeFailure(RuntimeModel):
|
||||
lease_token: str = Field(min_length=32, max_length=512)
|
||||
failure_code: str = Field(min_length=1, max_length=64)
|
||||
failure_message: str = Field(min_length=1, max_length=2000)
|
||||
details: dict[str, Any] = Field(default_factory=dict)
|
||||
Reference in New Issue
Block a user