if WORKER_ROLE == "chief":
# 최종 모델 저장
final_model_path = "./final_model.h5"
model.save(final_model_path, save_format="h5")
print(f"최종 모델이 '{final_model_path}'에 저장되었습니다.")
위 코드에서
model.save(final_model_path, save_format="h5")
이거는 실행됨 (하드에 파일이 생성되었으므로)
그런데
print(f"최종 모델이 '{final_model_path}'에 저장되었습니다.")
이게 안 나옴
이게 안 나오면서 생성된 파일 크기가 1KB 밖에 안됨
작업이 안 끝났는지 모델 파일이 삭제도 안됨
어떤 환경인지 어떤 프레임워크를 썼는지 알아야 원인을 알고 답을 해주지 저걸론 절대 못함
저거 같은 if문에 들어가있는데 실행 안된거면 걍 model.save 호출하는 도중에 코드 종료되는거같은데... try함 써봐. 아니면 진짜로 모델 아직 생성중일 수도 있음. 그리고 분산학습할때 데드락 조심해야돼, 나도 5에포크마다 시각화하게끔 해서 돌렸더니, 시각화 쓰레드 돌리는 도중에 걍 그대로 멈춰버리더라.
이게 도대체 무슨 코드임?? 정상이라면 distributed checkpoint (dcp) 를 써야할텐데
정상 비정상이 어딨음. dcp는 대용량 모델 아니면 딱히 안써도 됨. 걍 rank0에서 저장해도됨. dcp 안쓴다고 무조건 오류나는건 아니야
ㄹㅇ gpu 128개짜리 학습코드 그냥 rank0에서 잘만 저장해서 쓰는중
그리고 쟤가 ddp로 분산학습돌린건지, fsdp로 한건지는 몰것다. fsdp로 돌린거면 dcp 필수긴해, 모델이 샤딩되어있거든. 근데 ddp면 어차피 모든 rank가 동일한 파라미터를 가지고 있어서 걍 rank0 저장때리면 됨. 오히려 ddp는 dcp 쓸 필요가 없음. 이점이 없거든
그냥 코드를 다 가져다가 제미니, 그록, 챗지피티에게 물어보는게 나을거임
댓글들 고맙고 내 생각엔 중간에 저장하는 체크 포인트가 원인 같아