自动任务按推理、量化因子、微调轮流生成并派发。

Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
dekun
2026-10-11 09:15:36 +08:00
parent 29551a260a
commit 8f562d00a0
4 changed files with 198 additions and 51 deletions
+30 -6
View File
@@ -791,16 +791,24 @@ class CoreFlowTest(unittest.TestCase):
for task in first:
self.assertIsNone(task.node_id)
self.assertEqual(task.status, TaskStatus.PENDING)
self.assertEqual(task.task_type, "alpha_mining")
self.assertIsInstance(task.payload["seed"], int)
self.assertTrue(task.payload["operators"])
self.assertTrue(task.payload["symbol"])
self.assertEqual(task.task_type, "llm_inference")
self.assertEqual(task.payload["model"], "qwen2.5-3b-instruct-q4_k_m")
self.assertTrue(task.payload["prompt"])
self.assertEqual(task.payload["max_tokens"], 256)
self.assertGreaterEqual(len(task.payload["nonce"]), 8)
quiet = maybe_generate_alpha_batch(session, now=start + timedelta(hours=1))
self.assertEqual(quiet, [])
later = maybe_generate_alpha_batch(session, now=start + timedelta(hours=2))
session.commit()
self.assertEqual(len(later), 3)
self.assertEqual({task.task_type for task in later}, {"alpha_mining"})
self.assertTrue(all(task.payload["operators"] and task.payload["symbol"] for task in later))
finetune = maybe_generate_alpha_batch(session, now=start + timedelta(hours=4))
session.commit()
self.assertEqual(len(finetune), 3)
self.assertEqual({task.task_type for task in finetune}, {"lora_training"})
self.assertEqual({task.payload["rank"] for task in finetune}, {8, 16, 32})
self.assertTrue(all(task.payload["base_model"] == "qwen2.5-3b" and task.payload["steps"] == 100 for task in finetune))
self.assertNotEqual(later[0].payload["batch_id"], first[0].payload["batch_id"])
queued = session.get(ComputeTask, first[0].id)
queued.deadline_at = start - timedelta(minutes=1)
@@ -819,7 +827,7 @@ class CoreFlowTest(unittest.TestCase):
assigned = beat.json()["assigned_task"]
self.assertIsNotNone(assigned)
self.assertEqual(assigned["status"], "processing")
self.assertEqual(assigned["task_type"], "alpha_mining")
self.assertEqual(assigned["task_type"], "llm_inference")
again = self.client.post("/api/v1/node/heartbeat", json={"sn": "NODE-ALPHA"})
self.assertIsNone(again.json()["assigned_task"])
with SessionLocal() as session:
@@ -827,12 +835,28 @@ class CoreFlowTest(unittest.TestCase):
holding = session.scalars(
select(ComputeTask).where(
ComputeTask.node_id == node.id,
ComputeTask.task_type == "alpha_mining",
ComputeTask.task_type == "llm_inference",
ComputeTask.status == TaskStatus.PROCESSING,
)
).all()
self.assertEqual(len(holding), 1)
while assigned["task_type"] != "alpha_mining":
finished = self.client.post(
"/api/v1/node/task/report",
json={
"sn": "NODE-ALPHA",
"task_id": assigned["task_id"],
"success": True,
"nonce": assigned["payload"]["nonce"],
"result": {"output": "inference finished", "summary": "inference finished"},
},
)
self.assertEqual(finished.status_code, 200, finished.text)
stepped = self.client.post("/api/v1/node/heartbeat", json={"sn": "NODE-ALPHA"})
assigned = stepped.json()["assigned_task"]
self.assertIsNotNone(assigned)
high = self.client.post(
"/api/v1/node/task/report",
json={