自动任务按推理、量化因子、微调轮流生成并派发。
Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
+30
-6
@@ -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={
|
||||
|
||||
Reference in New Issue
Block a user