1717import logging
1818from typing import List , Optional , Union , cast
1919
20- from pydantic import Field , field_validator
20+ from pydantic import Field , ValidationInfo , field_validator
2121
2222from cloudai .core import DockerImage , GitRepo , Installable , PythonExecutable
2323from cloudai .models .workload import CmdArgs , TestDefinition
@@ -40,8 +40,8 @@ class MegatronBridgeCmdArgs(CmdArgs):
4040 detach : Optional [bool ] = Field (default = None )
4141
4242 # Model/task
43- model_name : str = Field (default = "" )
44- model_size : str = Field (default = "" )
43+ model_name : str = Field (min_length = 1 )
44+ model_size : str = Field (min_length = 1 )
4545 domain : str = Field (default = "llm" )
4646 task : str = Field (default = "pretrain" )
4747 compute_dtype : str = Field (default = "bf16" )
@@ -88,6 +88,14 @@ def validate_hf_token(cls, v: Optional[str]) -> Optional[str]:
8888 raise ValueError ("cmd_args.hf_token is required. Please set it to your literal HF token string." )
8989 return token
9090
91+ @field_validator ("model_name" , "model_size" , mode = "after" )
92+ @classmethod
93+ def validate_model_fields (cls , v : str , info : ValidationInfo ) -> str :
94+ s = v .strip ()
95+ if not s :
96+ raise ValueError (f"cmd_args.{ info .field_name } cannot be empty." )
97+ return s
98+
9199
92100class MegatronBridgeTestDefinition (TestDefinition ):
93101 """Megatron-Bridge test definition (CloudAI-managed install + Slurm submission via launcher)."""
0 commit comments