모델 저장 이슈
안녕하세요.
올려주신 코드로 모델을 학습하고 저장하던 도중,
저장 관련 문의가 있어 이슈 남깁니다.
저는 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개의 모델을 저장하는 방식은 아닌것 같아서요.
해당 부분에서 정상적으로 파일을 저장하려면 어떻게 해야하는지 문의드립니다.
감사합니다.
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.
추가로 타임아웃 에러도 발생하여 해당부분을 처리하고 있는 중입니다.
안녕하세요, 혹시 실행시 python main.py로 하셨나요? distributed run시에는 torchrun main.py ~로 실행해주셔야 합니다.
혹시 torchrun 실행시에도 동일하다면 실행하신 명령어를 첨부해주세요.
안녕하세요, 실행 명령어는 아래와 같습니다. 감사합니다.
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' \
안녕하세요. 혹시 모델 8개로 저장되는 것 해결하셨는지요. 저도 173.3MB 짜리 모델 8개가 저장이 되어서 여쭙습니다.
안녕하세요.
타임아웃 오류가 발생합니다. 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시간으로 늘려도 타임아웃이 발생합니다.