iT邦幫忙

0

PyTorch單機多GPU訓練疑問...

  • 分享至 

  • xImage

各位大大好@@
小弟第一次使用PyTorch進行多卡訓練....
目前手上有四張卡但是實際執行起來只有一張在動...其餘待機
使用的是 https://github.com/tianrun-chen/SAM-Adapter-PyTorch 中的 Train指令
其中只有針對 config中的檔案路徑做了修改....

git提供的指令 :
CUDA_VISIBLE_DEVICES=0,1,2,3 python -m torch.distributed.launch train.py --nnodes 1 --nproc_per_node 4 --config [CONFIG_PATH]
(我只是將config_path換成修改後的config.yaml的位置)

查閱了torch的official documents也沒頭緒怎麼解決...

圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

1 個回答

0
iT邦新手 4 級 ‧ 2023-07-12 20:19:00

似乎是因為 train.py內的 device_ids預設值被設定成 -1的關係

    model = torch.nn.parallel.DistributedDataParallel(
        model,
        device_ids=[args.local_rank],
        output_device=args.local_rank,
        find_unused_parameters=True,
        broadcast_buffers=False
    )

train.py最底下有

    parser.add_argument("--local_rank", type=int, default=-1, help="")

這行把args.local_rank設定成default=-1,但根據DistributedDataParallel官方文件device_ids的說明,要使用到全部 GPU 必須設定成None才行(這段可能有錯,不太理解multi-device modules and CPU modules是什麼意思),或是你要為train.py加上--local_rank參數,使其為一個清單才行,我猜可能的值為--local_rank '0,1,2,3',不過這樣也要把output_device的值改掉才可以

我沒多個GPU,以上只是看原始碼猜的,還要麻煩你試驗了

我要發表回答

立即登入回答