microsoft / DeepSpeed

DeepSpeed is a deep learning optimization library that makes distributed training and inference easy, efficient, and effective.
https://www.deepspeed.ai/
Apache License 2.0
35.3k stars 4.09k forks source link

[BUG] localhost: Permission denied, please try again. with single node and multi-gpus with --autotuning run #5709

Open Looong01 opened 4 months ago

Looong01 commented 4 months ago

Describe the bug When I want to use --autotuning run args to training on single node and 2 RTX 6000 Ada GPUs, it returns localhost: Permission denied, please try again..

To Reproduce Steps to reproduce the behavior:

  1. conda activate PyTorch
  2. $ deepspeed --autotuning run --num_gpus=2 --num_nodes=1 /data/01_Codes/Geneformer/examples/pretraining_new_model/pretrain_geneformer_w_deepspeed.py --deepspeed /data/01_Codes/Geneformer/examples/pretraining_new_model/ds_config.json
  3. See error
    localhost: Permission denied, please try again.
    localhost: Permission denied, please try again.
    localhost: jiaming@localhost: Permission denied (publickey,password).
    pdsh@jiaming-Precision-7960-Tower: localhost: ssh exited with exit code 255

Expected behavior Get into Training process

ds_report output

[2024-07-01 20:06:44,702] [INFO] [real_accelerator.py:203:get_accelerator] Setting ds_accelerator to cuda (auto detect)
 [WARNING]  async_io requires the dev libaio .so object and headers but these were not found.
 [WARNING]  async_io: please install the libaio-dev package with apt
 [WARNING]  If libaio is already installed (perhaps from source), try setting the CFLAGS and LDFLAGS environment variables to where it can be found.
 [WARNING]  Please specify the CUTLASS repo directory as environment variable $CUTLASS_PATH
 [WARNING]  sparse_attn requires a torch version >= 1.5 and < 2.0 but detected 2.1
 [WARNING]  using untested triton version (2.1.0), only 1.0.0 is known to be compatible
--------------------------------------------------
DeepSpeed C++/CUDA extension op report
--------------------------------------------------
NOTE: Ops not installed will be just-in-time (JIT) compiled at
      runtime if needed. Op compatibility means that your system
      meet the required dependencies to JIT install the op.
--------------------------------------------------
JIT compiled ops requires ninja
ninja .................. [OKAY]
--------------------------------------------------
op name ................ installed .. compatible
--------------------------------------------------
 [WARNING]  async_io requires the dev libaio .so object and headers but these were not found.
 [WARNING]  async_io: please install the libaio-dev package with apt
 [WARNING]  If libaio is already installed (perhaps from source), try setting the CFLAGS and LDFLAGS environment variables to where it can be found.
async_io ............... [NO] ....... [NO]
fused_adam ............. [NO] ....... [OKAY]
cpu_adam ............... [NO] ....... [OKAY]
cpu_adagrad ............ [NO] ....... [OKAY]
cpu_lion ............... [NO] ....... [OKAY]
 [WARNING]  Please specify the CUTLASS repo directory as environment variable $CUTLASS_PATH
evoformer_attn ......... [NO] ....... [NO]
fp_quantizer ........... [NO] ....... [OKAY]
fused_lamb ............. [NO] ....... [OKAY]
fused_lion ............. [NO] ....... [OKAY]
inference_core_ops ..... [NO] ....... [OKAY]
cutlass_ops ............ [NO] ....... [OKAY]
transformer_inference .. [NO] ....... [OKAY]
quantizer .............. [NO] ....... [OKAY]
ragged_device_ops ...... [NO] ....... [OKAY]
ragged_ops ............. [NO] ....... [OKAY]
random_ltd ............. [NO] ....... [OKAY]
 [WARNING]  sparse_attn requires a torch version >= 1.5 and < 2.0 but detected 2.1
 [WARNING]  using untested triton version (2.1.0), only 1.0.0 is known to be compatible
sparse_attn ............ [NO] ....... [NO]
spatial_inference ...... [NO] ....... [OKAY]
transformer ............ [NO] ....... [OKAY]
stochastic_transformer . [NO] ....... [OKAY]
--------------------------------------------------
DeepSpeed general environment info:
torch install path ............... ['/home/jiaming/miniconda3/envs/geneformer/lib/python3.10/site-packages/torch']
torch version .................... 2.1.1
deepspeed install path ........... ['/home/jiaming/miniconda3/envs/geneformer/lib/python3.10/site-packages/deepspeed']
deepspeed info ................... 0.14.4, unknown, unknown
torch cuda version ............... 12.1
torch hip version ................ None
nvcc version ..................... 12.5
deepspeed wheel compiled w. ...... torch 2.1, cuda 12.1
shared memory (/dev/shm) size .... 15.29 GB

System info (please complete the following information):

Launcher context $ deepspeed --autotuning run --num_gpus=2 --num_nodes=1 /data/01_Codes/Geneformer/examples/pretraining_new_model/pretrain_geneformer_w_deepspeed.py --deepspeed /data/01_Codes/Geneformer/examples/pretraining_new_model/ds_config.json

Additional context Full error messages:

$ deepspeed --autotuning run --num_gpus=2 --num_nodes=1 /data/01_Codes/Geneformer/examples/pretraining_new_model/pretrain_geneformer_w_deepspeed.py --deepspeed /data/01_Codes/Geneformer/examples/pretraining_new_model/ds_config.json
[2024-06-29 10:07:00,007] [INFO] [real_accelerator.py:203:get_accelerator] Setting ds_accelerator to cuda (auto detect)
[2024-06-29 10:07:01,020] [WARNING] [runner.py:202:fetch_hostfile] Unable to find hostfile, will proceed with training with local resources only.
[2024-06-29 10:07:01,020] [INFO] [autotuner.py:71:__init__] Created autotuning experiments directory: autotuning_exps
[2024-06-29 10:07:01,021] [INFO] [autotuner.py:84:__init__] Created autotuning results directory: autotuning_exps
[2024-06-29 10:07:01,021] [INFO] [autotuner.py:200:_get_resource_manager] active_resources = OrderedDict([('localhost', [0, 1])])
[2024-06-29 10:07:01,021] [INFO] [runner.py:361:run_autotuning] [Start] Running autotuning
[2024-06-29 10:07:01,021] [INFO] [autotuner.py:413:tune] Fast mode is enabled. Tuning micro batch size only.
[2024-06-29 10:07:01,021] [INFO] [autotuner.py:669:model_info_profile_run] Starting model info profile run.
  0%|                                                                                                                                                                                      | 0/1 [00:00<?, ?it/s][2024-06-29 10:07:01,091] [INFO] [scheduler.py:346:run_experiment] Scheduler wrote ds_config to autotuning_results/profile_model_info/ds_config.json, /data/01_Codes/Geneformer/examples/pretraining_new_model/autotuning_results/profile_model_info/ds_config.json
[2024-06-29 10:07:01,124] [INFO] [scheduler.py:353:run_experiment] Scheduler wrote exp to autotuning_results/profile_model_info/exp.json, /data/01_Codes/Geneformer/examples/pretraining_new_model/autotuning_results/profile_model_info/exp.json
[2024-06-29 10:07:01,157] [INFO] [scheduler.py:380:run_experiment] Launching exp_id = 0, exp_name = profile_model_info, with resource = localhost:0,1, and ds_config = /data/01_Codes/Geneformer/examples/pretraining_new_model/autotuning_results/profile_model_info/ds_config.json
localhost: Permission denied, please try again.
localhost: Permission denied, please try again.
localhost: jiaming@localhost: Permission denied (publickey,password).
pdsh@jiaming-Precision-7960-Tower: localhost: ssh exited with exit code 255
[2024-06-30 11:42:50,375] [INFO] [scheduler.py:432:clean_up] Done cleaning up exp_id = 0 on the following workers: localhost
[2024-06-30 11:42:50,376] [INFO] [scheduler.py:395:run_experiment] Done running exp_id = 0, exp_name = profile_model_info, with resource = localhost:0,1

 [WARNING]  async_io requires the dev libaio .so object and headers but these were not found.
 [WARNING]  async_io: please install the libaio-dev package with apt
 [WARNING]  If libaio is already installed (perhaps from source), try setting the CFLAGS and LDFLAGS environment variables to where it can be found.
 [WARNING]  Please specify the CUTLASS repo directory as environment variable $CUTLASS_PATH
 [WARNING]  sparse_attn requires a torch version >= 1.5 and < 2.0 but detected 2.1
 [WARNING]  using untested triton version (2.1.0), only 1.0.0 is known to be compatible

The ds configuration file:

{
    "autotuning": {
      "enabled": true,
      "arg_mappings": {
        "train_micro_batch_size_per_gpu": "--per_device_train_batch_size",
        "gradient_accumulation_steps ": "--gradient_accumulation_steps"
      }
    },
    "train_batch_size": "auto",
    "train_micro_batch_size_per_gpu": "auto",
    "gradient_accumulation_steps": "auto",
    "gradient_clipping": 1,
    "fp16": {
      "enabled": "auto"
    },
    "optimizer": {
      "type": "AdamW",
      "params": {
        "lr": "auto",
        "betas": "auto",
        "eps": "auto",
        "weight_decay": "auto"
      }
    },
    "scheduler": {
      "type": "WarmupLR",
      "params": {
        "warmup_min_lr": "auto",
        "warmup_max_lr": "auto",
        "warmup_num_steps": "auto"
      }
    },
    "zero_optimization": {
      "stage": 2,
      "allgather_partitions": true,
      "allgather_bucket_size": 2e8,
      "overlap_comm": true,
      "reduce_scatter": true,
      "reduce_bucket_size": 2e8,
      "contiguous_gradients": true
    },
    "steps_per_print": 1000,
    "activation_checkpointing": {
      "partition_activations": true,
      "cpu_checkpointing": true,
      "contiguous_memory_optimization": false,
      "synchronize_checkpoint_boundary": false
    }
}
tjruwase commented 3 months ago

@Looong01, it seems your localhost is not configured for password-less ssh, which is a requirement for DeepSpeed. Please see https://www.deepspeed.ai/getting-started/#resource-configuration-multi-node

Although you are using a single-node, --autotuning option operates as if each rank is on a different host. You could try configuring the hostfile to hostnames that works with password-less ssh.