linvest21's picture
download
raw
1.82 kB
from __future__ import annotations
from pathlib import Path
import json
from n21.config import write_json
from observability.audit_log import AuditLogger, utc_now
from observability.heartbeat import heartbeat
from observability.progress import ProgressState
from orchestrator.provider_routing import get_provider
def deploy(run_dir: Path, *, run_id: str, infer_provider: str, env: str, model_candidate: str, live: bool = False) -> dict[str, object]:
logger = AuditLogger(run_dir / "logs" / "audit.jsonl")
run_manifest_path = run_dir / "manifests" / "run_manifest.json"
train_provider = "unknown"
if run_manifest_path.exists():
run_manifest = json.loads(run_manifest_path.read_text(encoding="utf-8"))
train_provider = run_manifest.get("execution", {}).get("train_provider", "unknown")
heartbeat(logger, ProgressState(run_id, 1, "deploy", "prepare_endpoint", 25, 25, 75, train_provider, infer_provider, model_candidate, next_action="create deployment manifest"))
provider = get_provider(infer_provider)
model_manifest = {"run_id": run_id, "model_id": f"linvest21-fin-fingpt-qa-{infer_provider}-core-v0.1.0"}
handle = provider.deploy_endpoint(model_manifest, env)
manifest = {
"deployment_id": handle["deployment_id"],
"run_id": run_id,
"env": env,
"infer_provider": infer_provider,
"status": handle["status"],
"endpoint_uri": handle["endpoint_uri"],
"dry_run": not live,
"created_at": utc_now(),
}
write_json(run_dir / "manifests" / "deployment_manifest.json", manifest)
heartbeat(logger, ProgressState(run_id, 1, "deploy", "deployment_manifest", 100, 100, 85, train_provider, infer_provider, model_candidate, status="planned", next_action="run promote or rollback"))
return manifest

Xet Storage Details

Size:
1.82 kB
·
Xet hash:
1bcf74b0aab4613789deb833f6fde2ecd5a8133ffcab8427709e96314cb93134

Xet efficiently stores files, intelligently splitting them into unique chunks and accelerating uploads and downloads. More info.