|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
""" |
|
verify parsing and handover of command line arguments |
|
""" |
|
import pytest |
|
import sys |
|
from unittest.mock import patch |
|
|
|
from ..common import get_root_directory, get_config_directory, get_configs_with_path |
|
|
|
|
|
@pytest.mark.cpu |
|
def test_neoxargs_consume_deepy_args_with_config_dir(): |
|
""" |
|
verify consume_deepy_args processes command line arguments without config dir |
|
""" |
|
|
|
from megatron.neox_arguments import NeoXArgs |
|
|
|
|
|
with patch( |
|
"sys.argv", |
|
[str(get_root_directory() / "deepy.py"), "train.py"] |
|
+ get_configs_with_path(["125M.yml", "local_setup.yml"]), |
|
): |
|
args_loaded_consume = NeoXArgs.consume_deepy_args() |
|
|
|
|
|
args_loaded_yamls = NeoXArgs.from_ymls( |
|
get_configs_with_path(["125M.yml", "local_setup.yml"]) |
|
) |
|
|
|
|
|
args_loaded_yamls.update_value("user_script", "train.py") |
|
args_loaded_yamls.wandb_group = args_loaded_consume.wandb_group |
|
|
|
assert args_loaded_yamls == args_loaded_consume |
|
|
|
|
|
@pytest.mark.cpu |
|
def test_neoxargs_consume_deepy_args_without_yml_suffix(): |
|
""" |
|
verify consume_deepy_args processes command line arguments without yaml suffix |
|
""" |
|
|
|
from megatron.neox_arguments import NeoXArgs |
|
|
|
|
|
with patch( |
|
"sys.argv", |
|
[str(get_root_directory() / "deepy.py"), "train.py"] |
|
+ get_configs_with_path(["125M", "local_setup", "cpu_mock_config.yml"]), |
|
): |
|
args_loaded_consume = NeoXArgs.consume_deepy_args() |
|
|
|
|
|
args_loaded_yamls = NeoXArgs.from_ymls( |
|
get_configs_with_path(["125M.yml", "local_setup.yml", "cpu_mock_config.yml"]) |
|
) |
|
|
|
|
|
args_loaded_yamls.update_value("user_script", "train.py") |
|
args_loaded_yamls.wandb_group = args_loaded_consume.wandb_group |
|
|
|
assert args_loaded_yamls == args_loaded_consume |
|
|
|
|
|
@pytest.mark.cpu |
|
def test_neoxargs_consume_deepy_args_with_hostfile_param(): |
|
""" |
|
Verify consume_deepy_args processes command line arguments without yaml suffix. |
|
Also test the hostfile CLI arg |
|
""" |
|
|
|
from megatron.neox_arguments import NeoXArgs |
|
|
|
|
|
with patch( |
|
"sys.argv", |
|
[str(get_root_directory() / "deepy.py"), "train.py"] |
|
+ get_configs_with_path(["125M", "local_setup", "cpu_mock_config.yml"]) |
|
+ ["--hostfile=/mock_path"], |
|
): |
|
args_loaded_consume = NeoXArgs.consume_deepy_args() |
|
|
|
|
|
args_loaded_yamls = NeoXArgs.from_ymls( |
|
get_configs_with_path(["125M.yml", "local_setup.yml", "cpu_mock_config.yml"]) |
|
) |
|
|
|
|
|
args_loaded_yamls.update_value("user_script", "train.py") |
|
args_loaded_yamls.wandb_group = args_loaded_consume.wandb_group |
|
|
|
assert args_loaded_yamls == args_loaded_consume |
|
|
|
|
|
@pytest.mark.cpu |
|
def test_neoxargs_consume_deepy_args_with_config_dir(): |
|
""" |
|
verify consume_deepy_args processes command line arguments including config dir |
|
""" |
|
|
|
from megatron.neox_arguments import NeoXArgs |
|
|
|
|
|
with patch( |
|
"sys.argv", |
|
[ |
|
str(get_root_directory() / "deepy.py"), |
|
"train.py", |
|
"-d", |
|
str(get_config_directory()), |
|
] |
|
+ ["125M.yml", "local_setup.yml", "cpu_mock_config.yml"], |
|
): |
|
args_loaded_consume = NeoXArgs.consume_deepy_args() |
|
|
|
|
|
args_loaded_yamls = NeoXArgs.from_ymls( |
|
get_configs_with_path(["125M.yml", "local_setup.yml", "cpu_mock_config.yml"]) |
|
) |
|
|
|
|
|
args_loaded_yamls.update_value("user_script", "train.py") |
|
args_loaded_yamls.wandb_group = args_loaded_consume.wandb_group |
|
|
|
assert args_loaded_yamls == args_loaded_consume |
|
|
|
|
|
@pytest.mark.cpu |
|
def test_neoxargs_consume_neox_args(): |
|
""" |
|
verify megatron args are correctly consumed after sending via deepspeed |
|
""" |
|
from megatron.neox_arguments import NeoXArgs |
|
|
|
|
|
yaml_list = get_configs_with_path( |
|
["125M.yml", "local_setup.yml", "cpu_mock_config.yml"] |
|
) |
|
args_baseline = NeoXArgs.from_ymls(yaml_list) |
|
args_baseline.update_value("user_script", str(get_root_directory() / "train.py")) |
|
deepspeed_main_args = args_baseline.get_deepspeed_main_args() |
|
|
|
|
|
with patch("sys.argv", deepspeed_main_args): |
|
args_loaded = NeoXArgs.consume_neox_args() |
|
|
|
|
|
args_loaded.wandb_group = args_baseline.wandb_group |
|
assert args_baseline.megatron_config == args_loaded.megatron_config |
|
|