{"id":"IL-0429","org":"Tsinghua University","date":"2022-05-07","docs":[],"title":{"en":"GLM-130B training on 96 nodes kept stopping on node failures, and a Lustre error left the 2.3T corpus unreadable","ko":"GLM-130B 사전 학습이 노드 고장으로 거듭 중단됐고 Lustre 오류로 2.3T 말뭉치를 읽지 못했다"},"domain":["ai-infra"],"impact":{"scope":"The GLM-130B pretraining run on 96 nodes was restarted from checkpoints after ten interruptions between 2022-05-07 and 2022-06-26 (node breakdowns, a lost connection, missing GPUs, a CPU error, an unexpected termination suspected to be a network communication problem and an NVLink error), and waited a few days for the 2.3T corpus to be copied back after the Lustre error","users":"unknown","region":"unknown"},"review":{"written_by":"session","reviewed_at":null,"reviewed_by":null},"lessons":null,"related":[],"sources":[{"url":"https://github.com/THUDM/GLM-130B/blob/main/logs/main-log-en.md","kind":"github","archived":"https://web.archive.org/web/20240503012237/https://github.com/THUDM/GLM-130B/blob/main/logs/main-log-en.md"}],"summary":{"en":"GLM-130B is a 130B model with 70 layers, trained with MP = 4, PP = 8 and a global batch size of 4224 on 96 nodes, using PyTorch 1.11, CUDA 11.3 and DeepSpeed 0.6.1. Training started on 2022-05-06. From 2022-05-07 to 2022-06-26 the training notes record ten interruptions from the hardware and the network: nodes that broke down, a node that lost connection, a node that reported missing GPUs, a CPU error, an unexpected termination suspected to be a network communication problem and an NVLink error. After the first failure, when n30041 and n30157 broke down and training restarted from step 4000, the team cut the checkpoint interval from 500 steps to 100 steps because 500 was too long. After n30066 failed on 2022-05-20 the team moved the job to another node pool and restarted from step 15600, and on 2022-05-21 removed the replacement node n30076 when the training flop dropped to 127T, without effect.\n\nOn 2022-05-30 the team restarted from global_step23200 after fixing the warmup steps for the embedding gradient shrink, and the restart hung while loading data. The Lustre file system had an error that made the 2.3T text corpora unreadable. The engineer could not recover the data, so it was copied back from a backup disk to the file system, which took a few days. After a cluster maintenance upgrade on 2022-06-06 the team saw a large improvement in file system read speed, with a checkpoint loading in 1 minute.","ko":"GLM-130B 는 70층, hidden 12288 의 130B 모델이고, 96개 노드에서 MP 4, PP 8, 전역 배치 4224 로 학습했다. 환경은 PyTorch 1.11, CUDA 11.3, DeepSpeed 0.6.1 이었다. 학습은 2022-05-06 04:00 에 시작했다.\n\n2022-05-07 에 n30041 과 n30157 이 고장 나자 팀은 4000 step 에서 다시 시작했고, 체크포인트 저장 간격을 500 step 에서 100 step 으로 줄였다. 그 뒤로도 노드 고장, 연결 끊김, GPU 누락, CPU 오류, NVLink 오류가 날 때마다 체크포인트에서 다시 시작했다. 2022-05-20 에는 n30066 이 고장 난 뒤 다른 노드 풀로 옮겨 15600 step 에서 다시 시작했다. 2022-05-21 에는 처리량이 127T 로 떨어져 교체 노드 n30076 을 뺐지만 달라지지 않았다.\n\n2022-05-30 에는 global_step23200 에서 다시 시작하자 데이터 로딩에서 멈췄다. Lustre 파일 시스템 오류로 2.3T 텍스트 말뭉치를 읽을 수 없었고 엔지니어도 데이터를 복구하지 못해, 팀은 백업 디스크에서 파일 시스템으로 데이터를 다시 복사했다. 복사에는 며칠이 걸렸다. 2022-06-06 에는 노드 클러스터를 업그레이드하는 점검이 있었고, 그 뒤 파일 시스템 읽기 속도가 크게 좋아져 체크포인트를 1분 만에 읽었다."},"trigger":{"en":"Individual nodes of the 96-node allocation failed during training, through breakdowns, a lost connection, missing GPUs, a CPU error and an NVLink error, and on 2022-05-30 the Lustre file system that held the training corpus failed.","ko":"학습 중에 계산 노드가 고장 나거나 연결이 끊기거나 GPU 를 잃었고, 2022-05-30 재시작 때는 Lustre 파일 시스템 오류가 났다."},"severity":"unknown","symptoms":["training-job-failed","node-not-ready","gpu-unavailable","storage-disconnected","throughput-degraded"],"timeline":{"detected_after":null,"resolved_after":null},"date_kind":"incident","detection":{"en":"The Lustre error was found when a restart from global_step23200 stayed stuck in data loading.","ko":"처리량 저하는 학습 flops 가 127T 로 전보다 낮은 것을 보고 알아챘다. Lustre 파일 시스템 오류는 재시작이 데이터 로딩에서 멈춘 것을 보고 찾아냈다. n30039 는 GPU 가 없다고 스스로 보고했다."},"components":["gpu-hardware","shared-filesystem"],"root_cause":"hardware-failure","remediation":[{"text":{"en":"Restarted the training from the last saved step after each node failure","ko":"노드가 고장 날 때마다 마지막으로 저장한 step 에서 학습을 다시 시작했다."}},{"text":{"en":"Changed the checkpoint saving interval from 500 steps to 100 steps","ko":"체크포인트 저장 간격을 500 step 에서 100 step 으로 줄였다. 500 step 은 너무 길었다."}},{"text":{"en":"Switched the job to another node pool and restarted from step 15600","ko":"다른 노드 풀로 옮겨 15600 step 에서 다시 시작했다."}},{"text":{"en":"Removed the suspected replacement node n30076 from step 16600, which did not change the speed","ko":"교체해 넣은 n30076 에 알 수 없는 오류가 있다고 보고 16600 step 부터 이 노드를 뺐지만, 처리량은 달라지지 않았다."}},{"text":{"en":"Copied the 2.3T text corpora from a backup disk back to the Lustre file system, which took a few days","ko":"2.3T 텍스트 말뭉치를 백업 디스크에서 파일 시스템으로 다시 복사했고, 며칠이 걸렸다."}}],"action_items":[],"contributing":[],"recurrence_of":null,"symptoms_text":{"en":"The GLM-130B pretraining run on 96 nodes, started on 2022-05-06 at 04:00, was interrupted again and again by single nodes that broke down, lost connection or reported missing GPUs, and each time training had to be restarted from a saved step. On 2022-05-30 a restart got stuck in data loading because of a Lustre file system error, and the 2.3T text corpora could no longer be read.\n\nThe training notes record each interruption. On 2022-05-07 at 20:14 nodes n30041 and n30157 broke down. On 2022-05-11 at 12:13 n30115 broke down, and on 2022-05-20 at 00:03 n30066 broke down. On 2022-05-22 at 19:27 n30126 lost connection, and on 2022-05-26 at 04:30 n30039 reported missing GPUs. On 2022-06-02 n30145 had a CPU error, on 2022-06-08 at 08:00 another node failed, and on 2022-06-09 at 13:30 the training terminated unexpectedly, which the team suspected was a network communication problem. On 2022-06-19 at 00:10 n30085 broke down, and on 2022-06-26 at 16:00 a node failed with \"Unexpected NVLink Error\".\n\nOn 2022-05-21 the training flop was only 127T, lower than before; the speed test before the run had measured 134TFLOPS at 88.5s/iter for a batch of 4224. The team suspected that the replacement node n30076 had an unknown fault and removed it from step 16600, but the speed did not change.\n\nOn 2022-05-30 at 14:00 the team restarted from global_step23200 and found the restart stuck in data loading. The cause was an error of the Lustre file system: the 2.3T text corpora could not be read, the engineer could not recover the data, and the data had to be copied from a backup disk to the file system again, which took a few days.","ko":"96개 노드에서 돌던 GLM-130B 사전 학습이 2022년 5월과 6월 내내 노드 고장, GPU 누락, 연결 끊김으로 여러 번 멈췄다. 2022-05-30 에는 재시작이 데이터 로딩에서 멈춰 더 나아가지 않았다.\n\n학습 기록에 남은 하드웨어 문제는 이랬다. 2022-05-07 20:14 에 n30041 과 n30157 이 고장 났다. 2022-05-11 12:13 에 n30115, 2022-05-20 00:03 에 n30066, 2022-06-19 00:10 에 n30085 가 고장 났다. 2022-05-22 19:27 에 n30126 의 연결이 끊겼고, 2022-05-26 04:30 에 n30039 가 GPU 가 없다고 보고했다. 2022-06-02 12:00 에 n30145 에서 CPU 오류가 났고, 2022-06-08 08:00 에 또 노드가 고장 났다. 2022-06-26 16:00 에는 예기치 않은 NVLink 오류가 났다.\n\n2022-06-09 13:30 에는 학습이 예기치 않게 끝났고, 팀은 네트워크 통신 문제를 의심했다.\n\n2022-05-21 12:40 에는 학습 처리량이 127T flops 로 전보다 낮았다. 학습 전 속도 시험에서는 134TFLOPS 와 141TFLOPS 가 나왔다. 팀은 교체해 넣은 n30076 에 알 수 없는 오류가 있다고 의심해 이 노드를 뺐지만 아무것도 달라지지 않았다.\n\n2022-05-30 에 global_step23200 에서 다시 시작하자 학습이 데이터 로딩에서 멈췄다. 원인은 Lustre 파일 시스템 오류였고, 2.3T 텍스트 말뭉치를 읽을 수 없었다. 엔지니어도 데이터를 복구하지 못했다."},"updated_at":"2026-11-14T12:34:07.914232Z","url":"https://benchlet.com/incidentlib/app/cases/IL-0429","org_slug":"tsinghua-university"}