Buckets:
| 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.