easy-lm-trainer icon indicating copy to clipboard operation
easy-lm-trainer copied to clipboard

모델 저장 이슈

Open park1200656 opened this issue 2 years ago • 5 comments

안녕하세요.

올려주신 코드로 모델을 학습하고 저장하던 도중,

저장 관련 문의가 있어 이슈 남깁니다.

저는 A100 40gb 8장을 사용하고, 그에 아래처럼 num_proc를 8로 셋팅을 하였습니다. tokenized_datasets = datasets.map( tokenize_function, batched=True, num_proc=8, remove_columns=[args.data_text_column], ) print(tokenized_datasets)

if args.group_text:
    lm_datasets = tokenized_datasets.map(
        group_texts,
        batched=True,
        num_proc=8,
    )

후에, 학습을 진행해보고 저장을 했는데,

if local_rank == 0:
    print("do save")
    if args.save_as_fp16:
        model.half().save_pretrained(SAVE_PATH)
    else:
        model.save_pretrained(SAVE_PATH)
    tokenizer.save_pretrained(SAVE_PATH)
    print("model saved to ", SAVE_PATH)

해당 부분에서 save를 하지 않고 넘어가는 것을 확인해보았습니다.

if local_rank=0:을 주석처리하고 저장해보니, 8개의 모델이 저장한 것은 확인하였으나, 이렇게 8개의 모델을 저장하는 방식은 아닌것 같아서요.

해당 부분에서 정상적으로 파일을 저장하려면 어떻게 해야하는지 문의드립니다.

감사합니다.

park1200656 avatar May 11 '23 05:05 park1200656

RuntimeError: NCCL communicator was aborted on rank 0. Original reason for failure was: [Rank 0] Watchdog caught collective operation timeout: WorkNCCL(SeqNum=4428, OpType=ALLGATHER, Timeout(ms)=1800000) ran for 1805357 milliseconds before timing out.

추가로 타임아웃 에러도 발생하여 해당부분을 처리하고 있는 중입니다.

park1200656 avatar May 11 '23 05:05 park1200656

안녕하세요, 혹시 실행시 python main.py로 하셨나요? distributed run시에는 torchrun main.py ~로 실행해주셔야 합니다.

혹시 torchrun 실행시에도 동일하다면 실행하신 명령어를 첨부해주세요.

Beomi avatar May 11 '23 05:05 Beomi

안녕하세요, 실행 명령어는 아래와 같습니다. 감사합니다.

torchrun --nproc_per_node=8 --master_port=34321 main.py
--model_name='EleutherAI/polyglot-ko-1.3b'
--train_file_path='data/text_ko_alpaca_data_small.jsonl'
--num_train_epochs=1
--data_text_column='text'
--block_size=512
--batch_size=2
--fp16=True
--deepspeed=ds_zero3.json # --fsdp_transformer_layer_cls_to_wrap='GPTNeoXLayer' \

park1200656 avatar May 11 '23 05:05 park1200656

안녕하세요. 혹시 모델 8개로 저장되는 것 해결하셨는지요. 저도 173.3MB 짜리 모델 8개가 저장이 되어서 여쭙습니다.

pdpjojo avatar May 23 '23 02:05 pdpjojo

안녕하세요.

타임아웃 오류가 발생합니다. RuntimeError: NCCL communicator was aborted on rank 0. Original reason for failure was: [Rank 0] Watchdog caught collective operation timeout: WorkNCCL(SeqNum=5382528, OpType=ALLGATHER, Timeout(ms)=1800000) ran for 1803903 milliseconds before timing out.

RTX-8000 48G * 4개 입니다. 학습 데이터를 20개로 줄여서 해도 모델 저장시 타임아웃이 발생하네요.

torchrun --nproc_per_node=4 --master_port=34321 main.py
--model_name='EleutherAI/polyglot-ko-5.8b'
--train_file_path='data/text_ko_alpaca_data_sample.jsonl'
--num_train_epochs=1
--data_text_column='text'
--block_size=256
--batch_size=1
--fp16=True
--fsdp='auto_wrap'
--fsdp_config=fsdp_config.json
--deepspeed=ds_zero3.json

타임아웃을 5시간으로 늘려도 타임아웃이 발생합니다.

woohaeng avatar May 30 '23 01:05 woohaeng