deploy: Gemma 4 31B llama-server running on M5 Max (192.168.110.201:8081)

This commit is contained in:
Warren
2026-05-06 17:13:32 +08:00
parent 2e29780d40
commit f65ac89e6a
4 changed files with 308 additions and 43 deletions

View File

@@ -7,8 +7,12 @@
],
"dominant_speaker": null,
"speaker_score": 0,
"binding": null,
"binding_stage": null
"binding": {
"name": "Stranger_001",
"source": "auto_temp",
"trace_count": 1
},
"binding_stage": "auto_temp"
},
{
"cluster_id": 1,
@@ -18,8 +22,12 @@
],
"dominant_speaker": null,
"speaker_score": 0,
"binding": null,
"binding_stage": null
"binding": {
"name": "Stranger_002",
"source": "auto_temp",
"trace_count": 1
},
"binding_stage": "auto_temp"
},
{
"cluster_id": 2,
@@ -29,8 +37,12 @@
],
"dominant_speaker": null,
"speaker_score": 0,
"binding": null,
"binding_stage": null
"binding": {
"name": "Stranger_003",
"source": "auto_temp",
"trace_count": 1
},
"binding_stage": "auto_temp"
},
{
"cluster_id": 3,
@@ -40,8 +52,12 @@
],
"dominant_speaker": null,
"speaker_score": 0,
"binding": null,
"binding_stage": null
"binding": {
"name": "Stranger_004",
"source": "auto_temp",
"trace_count": 1
},
"binding_stage": "auto_temp"
},
{
"cluster_id": 4,
@@ -51,8 +67,12 @@
],
"dominant_speaker": null,
"speaker_score": 0,
"binding": null,
"binding_stage": null
"binding": {
"name": "Stranger_005",
"source": "auto_temp",
"trace_count": 1
},
"binding_stage": "auto_temp"
},
{
"cluster_id": 5,
@@ -62,8 +82,12 @@
],
"dominant_speaker": null,
"speaker_score": 0,
"binding": null,
"binding_stage": null
"binding": {
"name": "Stranger_006",
"source": "auto_temp",
"trace_count": 1
},
"binding_stage": "auto_temp"
},
{
"cluster_id": 6,
@@ -73,8 +97,12 @@
],
"dominant_speaker": null,
"speaker_score": 0,
"binding": null,
"binding_stage": null
"binding": {
"name": "Stranger_007",
"source": "auto_temp",
"trace_count": 1
},
"binding_stage": "auto_temp"
},
{
"cluster_id": 7,
@@ -84,8 +112,12 @@
],
"dominant_speaker": null,
"speaker_score": 0,
"binding": null,
"binding_stage": null
"binding": {
"name": "Stranger_008",
"source": "auto_temp",
"trace_count": 1
},
"binding_stage": "auto_temp"
},
{
"cluster_id": 8,
@@ -95,8 +127,12 @@
],
"dominant_speaker": null,
"speaker_score": 0,
"binding": null,
"binding_stage": null
"binding": {
"name": "Stranger_009",
"source": "auto_temp",
"trace_count": 1
},
"binding_stage": "auto_temp"
},
{
"cluster_id": 9,
@@ -106,8 +142,12 @@
],
"dominant_speaker": null,
"speaker_score": 0,
"binding": null,
"binding_stage": null
"binding": {
"name": "Stranger_010",
"source": "auto_temp",
"trace_count": 1
},
"binding_stage": "auto_temp"
},
{
"cluster_id": 10,
@@ -117,8 +157,12 @@
],
"dominant_speaker": null,
"speaker_score": 0,
"binding": null,
"binding_stage": null
"binding": {
"name": "Stranger_011",
"source": "auto_temp",
"trace_count": 1
},
"binding_stage": "auto_temp"
},
{
"cluster_id": 11,
@@ -128,8 +172,12 @@
],
"dominant_speaker": null,
"speaker_score": 0,
"binding": null,
"binding_stage": null
"binding": {
"name": "Stranger_012",
"source": "auto_temp",
"trace_count": 1
},
"binding_stage": "auto_temp"
},
{
"cluster_id": 12,
@@ -139,8 +187,12 @@
],
"dominant_speaker": null,
"speaker_score": 0,
"binding": null,
"binding_stage": null
"binding": {
"name": "Stranger_013",
"source": "auto_temp",
"trace_count": 1
},
"binding_stage": "auto_temp"
},
{
"cluster_id": 13,
@@ -150,8 +202,12 @@
],
"dominant_speaker": null,
"speaker_score": 0,
"binding": null,
"binding_stage": null
"binding": {
"name": "Stranger_014",
"source": "auto_temp",
"trace_count": 1
},
"binding_stage": "auto_temp"
},
{
"cluster_id": 14,
@@ -161,8 +217,12 @@
],
"dominant_speaker": null,
"speaker_score": 0,
"binding": null,
"binding_stage": null
"binding": {
"name": "Stranger_015",
"source": "auto_temp",
"trace_count": 1
},
"binding_stage": "auto_temp"
},
{
"cluster_id": 15,
@@ -172,8 +232,12 @@
],
"dominant_speaker": null,
"speaker_score": 0,
"binding": null,
"binding_stage": null
"binding": {
"name": "Stranger_016",
"source": "auto_temp",
"trace_count": 1
},
"binding_stage": "auto_temp"
},
{
"cluster_id": 16,
@@ -183,8 +247,12 @@
],
"dominant_speaker": null,
"speaker_score": 0,
"binding": null,
"binding_stage": null
"binding": {
"name": "Stranger_017",
"source": "auto_temp",
"trace_count": 1
},
"binding_stage": "auto_temp"
},
{
"cluster_id": 17,
@@ -194,8 +262,12 @@
],
"dominant_speaker": null,
"speaker_score": 0,
"binding": null,
"binding_stage": null
"binding": {
"name": "Stranger_018",
"source": "auto_temp",
"trace_count": 1
},
"binding_stage": "auto_temp"
},
{
"cluster_id": 18,
@@ -205,8 +277,12 @@
],
"dominant_speaker": null,
"speaker_score": 0,
"binding": null,
"binding_stage": null
"binding": {
"name": "Stranger_019",
"source": "auto_temp",
"trace_count": 1
},
"binding_stage": "auto_temp"
},
{
"cluster_id": 19,
@@ -216,8 +292,12 @@
],
"dominant_speaker": null,
"speaker_score": 0,
"binding": null,
"binding_stage": null
"binding": {
"name": "Stranger_020",
"source": "auto_temp",
"trace_count": 1
},
"binding_stage": "auto_temp"
},
{
"cluster_id": 20,

View File

@@ -5,6 +5,6 @@
"stage2_clusters": 20,
"stage2_unbound_clustered": 20,
"total_clusters": 677,
"execution_time_s": 15.544250011444092,
"execution_time_s": 16.848892211914062,
"coverage": 1.0
}

View File

@@ -406,6 +406,31 @@ def run_experiment(config: dict) -> dict:
"dominant_speaker": next(iter(speaker_overlaps.get(t["trace_id"], {}).keys()), None) if t["trace_id"] in speaker_overlaps else None,
})
# --- Temp Identity: assign names to unbound clusters ---
temp_count = 0
for label in all_labels:
if label.get("binding") is not None:
continue # already has known identity
tids = label.get("trace_ids", [])
if len(tids) < 1:
continue
# Create temp identity for all unbound clusters (even singletons as "strangers")
if len(tids) >= 1:
temp_count += 1
if len(tids) >= 2:
temp_name = f"Person_{temp_count:03d}"
else:
temp_name = f"Stranger_{temp_count:03d}"
label["binding"] = {
"name": temp_name,
"source": "auto_temp",
"trace_count": len(tids),
}
label["binding_stage"] = "auto_temp"
if temp_count > 0:
print(f" Temp identities created: {temp_count}")
# Metrics
metrics = {
"total_traces": len(traces),
@@ -438,9 +463,10 @@ def run_experiment(config: dict) -> dict:
if row:
identity_id = row[0]
else:
source = binding.get("source", "auto")
cur2.execute(
f"INSERT INTO {SCHEMA}.identities (name, identity_type, source, status) VALUES (%s,'people','auto','pending') RETURNING id",
(identity_name,))
f"INSERT INTO {SCHEMA}.identities (name, identity_type, source, status) VALUES (%s,'people',%s,'pending') RETURNING id",
(identity_name, source))
identity_id = cur2.fetchone()[0]
# Bind all faces in each trace to the identity