Add topology-aware qwen27b 0-8k tuning
This commit is contained in:
@@ -1279,6 +1279,104 @@ class CoreFlowTests(unittest.TestCase):
|
||||
validated = validate_proposal(proposal, study)
|
||||
self.assertEqual(validated.config_patch.flag_patch["tensor-parallel-size"], 2)
|
||||
|
||||
def test_validate_proposal_accepts_allowed_tp_dp_product_above_gpu_count(self) -> None:
|
||||
with tempfile.TemporaryDirectory() as tmp:
|
||||
tmp_path = Path(tmp)
|
||||
study_path = _write_study_assets(
|
||||
tmp_path,
|
||||
engine_overrides={
|
||||
"base_flags": {
|
||||
"host": "127.0.0.1",
|
||||
"port": 8000,
|
||||
"enable-expert-parallel": False,
|
||||
"tensor-parallel-size": 4,
|
||||
"data-parallel-size": 1,
|
||||
"expert-parallel-size": 1,
|
||||
},
|
||||
"tunable_flags": [
|
||||
"tensor-parallel-size",
|
||||
"data-parallel-size",
|
||||
"expert-parallel-size",
|
||||
],
|
||||
"topology_constraints": {
|
||||
"require_tp_dp_product_equals_gpu_count": False,
|
||||
"require_ep_size_leq_tp_dp_product": True,
|
||||
"require_ep_size_divides_tp_dp_product": True,
|
||||
"allowed_tp_dp_products": [1, 2, 4, 8],
|
||||
"allowed_tensor_parallel_sizes": [1, 2, 4, 8],
|
||||
"allowed_data_parallel_sizes": [1, 2, 4, 8],
|
||||
"allowed_expert_parallel_sizes": [1],
|
||||
},
|
||||
},
|
||||
)
|
||||
study = load_study_spec(study_path)
|
||||
proposal = Proposal.from_dict(
|
||||
{
|
||||
"observation": "Obs",
|
||||
"diagnosis": "Allow product 8",
|
||||
"config_patch": {
|
||||
"env_patch": {},
|
||||
"flag_patch": {
|
||||
"tensor-parallel-size": 4,
|
||||
"data-parallel-size": 2,
|
||||
"expert-parallel-size": 1,
|
||||
},
|
||||
},
|
||||
"expected_effects": ["explore larger topology"],
|
||||
}
|
||||
)
|
||||
validated = validate_proposal(proposal, study)
|
||||
self.assertEqual(validated.config_patch.flag_patch["data-parallel-size"], 2)
|
||||
|
||||
def test_validate_proposal_rejects_tp_dp_product_outside_allowed_set(self) -> None:
|
||||
with tempfile.TemporaryDirectory() as tmp:
|
||||
tmp_path = Path(tmp)
|
||||
study_path = _write_study_assets(
|
||||
tmp_path,
|
||||
engine_overrides={
|
||||
"base_flags": {
|
||||
"host": "127.0.0.1",
|
||||
"port": 8000,
|
||||
"enable-expert-parallel": False,
|
||||
"tensor-parallel-size": 4,
|
||||
"data-parallel-size": 1,
|
||||
"expert-parallel-size": 1,
|
||||
},
|
||||
"tunable_flags": [
|
||||
"tensor-parallel-size",
|
||||
"data-parallel-size",
|
||||
"expert-parallel-size",
|
||||
],
|
||||
"topology_constraints": {
|
||||
"require_tp_dp_product_equals_gpu_count": False,
|
||||
"require_ep_size_leq_tp_dp_product": True,
|
||||
"require_ep_size_divides_tp_dp_product": True,
|
||||
"allowed_tp_dp_products": [1, 2, 4, 8],
|
||||
"allowed_tensor_parallel_sizes": [1, 2, 3, 4, 8],
|
||||
"allowed_data_parallel_sizes": [1, 2, 3, 4, 8],
|
||||
"allowed_expert_parallel_sizes": [1],
|
||||
},
|
||||
},
|
||||
)
|
||||
study = load_study_spec(study_path)
|
||||
proposal = Proposal.from_dict(
|
||||
{
|
||||
"observation": "Obs",
|
||||
"diagnosis": "Invalid product",
|
||||
"config_patch": {
|
||||
"env_patch": {},
|
||||
"flag_patch": {
|
||||
"tensor-parallel-size": 3,
|
||||
"data-parallel-size": 2,
|
||||
"expert-parallel-size": 1,
|
||||
},
|
||||
},
|
||||
"expected_effects": ["explore invalid topology"],
|
||||
}
|
||||
)
|
||||
with self.assertRaisesRegex(SpecError, "not in \\[1, 2, 4, 8\\]"):
|
||||
validate_proposal(proposal, study)
|
||||
|
||||
def test_cli_tune_runs_multiple_manual_proposals(self) -> None:
|
||||
with tempfile.TemporaryDirectory() as tmp:
|
||||
tmp_path = Path(tmp)
|
||||
|
||||
Reference in New Issue
Block a user