DeepSpeed가 모델 학습 개발자를 위한 0.20.0 버전을 공개했다. 같은 조건에서 결과를 재현하기 위한 실행 정책을 선택할 수 있게 됐고, 연산 흐름을 기록해 다시 실행하는 기능은 더 다양한 가속기로 넓어졌다. 학습 중 계산값을 보존하고 저장된 학습 상태를 복원하는 과정의 오류도 고쳤다.
1. 재현성은 선택 기능으로 도입됐다
이번 버전에는 사용자가 선택해 켜는 결정론적 실행 정책이 추가됐다. 결정론적 실행은 같은 조건에서 계산을 반복할 때 결과를 재현하려는 방식이다. 학습 결과를 비교하는 개발자에게는 실행 방식을 고르는 새 선택지가 생겼다.
학습 계산의 정확성과 관련된 수정도 포함됐다. 여러 하위 신경망을 전문가로 나눠 쓰는 모델에서, 기울기 크기를 제한하는 계산은 전문가별 값을 한 번씩만 세도록 고쳤다. 이때 크기의 기준이 되는 값은 32비트 부동소수점으로 계산한다.
전문가와 텐서를 나눠 처리하는 AutoEP와 AutoTP를 함께 결합하는 구성에서도 전문가별 기울기 조정 오류를 수정했다. 실행 정책의 추가와 함께 실제 학습 계산 경로도 손본 셈이다.
2. 그래프 캡처가 비-CUDA 가속기로 확장됐다
Hybrid Engine은 CUDA가 아닌 가속기에서도 그래프 캡처를 지원한다. 그래프 캡처는 매번 실행할 연산 흐름을 미리 기록해 반복해서 쓰는 방식이다. 이번 변경은 이 기능을 활용할 수 있는 하드웨어 범위를 넓힌다.
그래프 캡처에는 가속기별 명시적 활성화가 요구된다. 쿤룬신 XPU에도 그래프 캡처 지원을 추가했다. 따라서 적용을 검토할 때는 가속기별 지원 여부와 활성화 요건을 함께 살피는 것이 출발점이다.
메모리 관리도 실행 환경에 맞춰 바뀌었다. CPU 가속기가 인식하는 메모리 한도는 프로세스에 적용되는 자원 관리 한도로 제한한다. 시스템 전체의 메모리 용량과 개별 프로세스에 허용된 용량을 다르게 다루는 변경이다.
3. ZeRO의 기울기 보존과 메모리 처리를 바로잡았다
학습 상태를 나눠 관리하는 기능인 ZeRO의 1·2단계(ZeRO-1/2)는 요청 경계가 지나도 가중치를 갱신하는 시점까지 기울기를 보존한다. 기울기는 학습 과정에서 가중치를 어느 방향으로 바꿀지 계산한 값이다. 여러 요청의 계산 결과를 모아 한 번의 갱신에 쓰는 경로를 바로잡았다.
학습 상태를 CPU 쪽으로 옮겨 두는 구성에서는 그룹별 누적기를 하나씩 두고, 사용하지 않는 기울기를 0으로 만든다. ZeRO-2는 이 구성에서 요청 사이의 기울기를 분할 영역 안에 모아 누적하도록 바뀌었다. 이때 누적기는 그룹의 기울기를 모으는 CPU 저장 공간이고, 분할 영역은 나눠 관리하는 기울기 중 해당 몫을 보관하는 공간이다.
ZeRO-3는 장치 밖에 둔 갱신 기준 가중치를 고정 메모리 버퍼를 거쳐 장치로 복사한다. 가중치 분할이 이미 기준 가중치와 같은 자료형이면 별도 사본 대신 재사용한다. 장치로 데이터를 옮기는 경로와 사본을 관리하는 방식을 함께 손봤다.
4. 학습 상태 복원과 저장장치 오류도 고쳤다
여러 학습 구성에서 함께 읽는 저장 형식인 유니버설 체크포인트를 불러올 때 연산을 묶어 처리하는 융합형 및 그래프 캡처 대응 최적화기의 학습 단계 값을 올바른 위치에 복원하도록 고쳤다. 최적화기는 기울기를 이용해 가중치를 갱신하는 구성 요소다.
CPU에 둔 최적화기의 상태 중 원래 32비트 부동소수점인 상태는 저장된 상태를 읽은 뒤에도 같은 정밀도로 유지한다.
저장장치에 학습 상태를 두는 ZeRO-3 구성에서는 매개변수를 미리 가져올 때 장치 간 이동에 쓰는 임시 저장 공간인 교환용 버퍼가 이미 할당돼 있으면 발생하던 오류를 수정했다. DeepNVMe는 정렬되지 않은 버퍼에서 발생하던 입출력 실패를 고쳤다.
엔진과 ZeRO 최적화기에 있던 메모리 누수도 수정했다. 학습 계산 자체뿐 아니라 상태 복원, 데이터 이동, 메모리 관리까지 이번 수정의 범위에 들어간다.
5. 선택 설정의 유연성과 검증 부담
여러 요청의 기울기를 모아 한 번의 갱신에 쓰는 ZeRO-1/2 학습에서는 요청 경계 이후의 기울기 보존이 도입 판단의 기준이다. ZeRO-3에서는 가중치 분할과 기준 가중치의 자료형이 같은 구성이 별도 기준 가중치 사본 대신 기존 분할을 재사용하는 변경의 검토 대상이다.
프로세스에 자원 한도가 적용된 CPU 학습 환경에서는 시스템 전체 용량이 아니라 해당 프로세스에 허용된 메모리를 기준으로 구성을 검토해야 한다. CPU 가속기가 인식하는 메모리 한도에 이 제한을 반영하는 변경이 그런 환경과 직접 관련된다.
릴리스 노트에는 결정론적 실행 정책의 구체적인 활성화 방법과 적용 연산 범위가 설명돼 있지 않다.
이번 릴리스의 핵심은 재현성 선택지와 가속기 범위를 넓히는 동시에 ZeRO의 학습·메모리 경로를 안정화한 데 있다.
