대용량 메모리 학습에 최적화된 Zion 플랫폼
페이스북의 딥 러닝 권장 모델
페이스북은 차세대 AI 딥 러닝 플랫폼 인 시온(Zion) 프로젝트를 발표했습니다. 가장 큰 특징은 CPU같은 딥 러닝 가속장치를 모듈화해, 시스템 구성이 유연하고 모듈 교체가 가능하다는 점입니다. 표준화 된 모듈로 프로세서 공급 업체의 의존도를 줄여 제조사 선택이 보다 쉬워지며, 모듈이 자유도를 가져 가속기 각각의 인터커넥트를 통해 상호 연결이 가능합니다.
페이스북의 Technical Lead인 Misha Smelyanskiy는 8월에 미국 스탠포드에서 열린 칩 컨퍼런스 Hot Chips 31에서 소프트웨어와 하드웨어 파트너 업체 사이에 공동 작업을 통해, 큰 변화를 이룬 시온 시스템을 개발했다고 설명했습니다. 시온은 컴퓨팅 뿐만 아니라 메모리 용량과 대역폭이 필요한 모델에 대응하는 딥 러닝 시스템을 만들어 냈습니다.
더 커진 학습 테이블
all-reduce와 all-to-all의 두 가지 통신 패턴
이 방법을 실현하려면 큰 메모리가 필요합니다. 페이스북은 대용량 DDR 메모리에 광대역 HBM을 조합해 가속합니다. 이로서 큰 용량과 넓은 대역폭을 동시에 만족시키겠다는게 페이스북의 목표입니다.
bfloat16 부동 소수점 포맷 사용
시온의 하드웨어는 bfloat16(Brain Floating Point 16) 데이터 수치 포맷을 지원합니다. CPU와 가속기 모두요다. bfloat16은신경망에 사용하는 걸 전제로 깔고 나온 새로운 부동 소수점 포맷입니다. 기존의 IEEE 754 부동 소수점은 FP32 (32-bit 단정밀도 부동 소수)가 부호 부분 (Sign) 1-bit, 지수 부분 (Exponent) 8-bit, 거짓수 부분 (Mantissa) 23-bit로 구성됐습니다. FP16 (16-bit 반 정밀도 부동 소수점)는 부호 부분 1-bit, 지수 부분 5-bit, 가수 부분 10-bit입니다. 반면 bfloat16는 부호 부분 1-bit, 지수 부분 8-bit, 거짓수 부분 7-bit입니다. FP32과 지수 부분이 같습니다. 참고로 거짓수 부분은 실제로 1비트 정도가 더 추가됩니다. bfloat16은 7비트라 표기하지만 실제로는 8비트 정확도를 가집니다.
부동 소수점 숫자의 지수는 기수의 제곱을 나타내는 부분으로, 지수가 클수록 표현할 수 있는 값의 동적 범위가 넓어집니다. 신경망은 데이터 정확도는 낮아도 되지만 넓은 범위가 필요합니다. 따라서 지수를 확장한 새로운 수치 포맷이 나왔습니다. bfloat16은 FP32과 같은 다이나믹 레인지(1e-38 ~ 3e38)에 7-bit (실제로는 8-bit 상당)의 작은 거짓수가 오가는 구조입니다.
구글이 bfloat16을 TPU에 채용하면서 화제가 됐는데, 페이스북도 이를 전면 도입합니다. 시온은 CPU와 가속기 모두 bfloat16을 지원하는 넓은 호환성을 갖췄습니다. 페이스북은 CPU와 딥 러닝 가속 장치를 모두 도입하는데, 시온에 나와있는 조건을 보면 2020년 상반기까지 인텔 쿠퍼레이크를 도입합니다. 인텔은 페이스북의 모듈 규격에 맞춰 딥 러닝 가속장치 NNP T (Spring Crest)도 발표했는데 역시 bfloat16을 지원합니다. 따라서 페이스북 시온은 쿠퍼레이크와 스프링 크레스트의 조합일 가능성이 높지만, 아직 구체적인 이름은 나오지 않았습니다.
1년에 3배씩 늘어나는 머신 러닝의 워크로드
페이스북은 머신 러닝의 데이터 용량과 컴퓨팅 용량이 1년에 3배씩 증가하고 있기에,
머신 러닝의 파이프 라인을 계속해서 강화해 나가야 한다고 설명합니다.
페이스북의 머신 러닝 목적은 순위와 사용자 추천 사진/영상의 인식 처리, 번역과 내용 파악 등입니다.
페이스북은 머신 러닝의 파이프라인 스토리지 서버에 Bryce Canyon, 딥 러닝에는 NVIDIA 테슬라 P100/V100를 8개 탑재하는 Big Basin과 인텔 스카이레이크 2소켓 서버인 Tioga Pass, 추론에는 인텔 제온 D-2100 서버 Twin Lakes에 가속기 카드 모듈 Glacier Point를 조합한 Yosemite V2를 사용합니다. 모두 국립 공원과 자연 풍경에서 따온 이름입니다.
NVIDIA Big Basin
학습에는 2 소켓 서버 CPU인 Tioga Pass
추론 시스템 Yosemite V2. 모듈러 구성
Yosemite에 내장된 Twin Lakes
CPU와 가속기를 모듈화
페이스북의 차세대 시스템, 시온은 학습 측의 성능을 크게 높인 8 CPU + 8 가속기 조합을 씁니다.
시온은 CPU와 가속기 칩의 숫자를 똑같이 맞췄을 뿐만 아니라, CPU에서도 bfloat16을 지원하 학습 성능을 크게 높일 수 있었습니다.
OCP Accelerator Module (OAM)
CPU는 듀얼 소켓 메인보드 모듈 4장으로 구성됩니다. 메인보드는 CPU 패브릭으로 서로 연결되며 8소켓 시스템입니다. 가속기는 OCP Accelerator Module (OAM)를 8개를 쓰는 독립된 모듈입니다.
CPU와 가속기는 패브릭으로 서로 연결됩니다.
CPU와 가속기 사이는 PCIe x16으로 연결되며, CPU는 NIC로 네트워크에 연결됩니다.
가속기 시스템은 4개의 PCIe 스위치 칩을 탑재, 각각의 스위치에 2개의 OAM 모듈이 PCIe x16에 연결됩니다. PCIe 스위치는 각각 2개의 CPU 메인보드가 모두 PCIe x16에 연결됩니다. PCIe 스위치도 PCIe x16으로 서로 연결합니다.
가속기는 패브릭을 통해 연결합니다. 저마다 다른 위상을 가진다는 건 해결해 나가야 할 과제입니다.
추론의 새로운 가속기
시온 시스템은 CPU에서 모든 작업을 처리, CPU가 임베디드 부분을 처리하고 가속기가 MLP를, 가속기가 대부분을 처리하는 방법이 있습니다. 다양한 방법을 지원한다는 점에서 소프트웨어적으로 유연합니다.
하드웨어는 8소켓 CPU에서 2소켓 모듈마다 스위치가 있습니다.
2개만 쓰고 6개는 해제하는 식으로 유연한 조합이 가능합니다.
추론 쪽도 시온에 맞춰 새로 업그레이드합니다. 추론에는 전용 가속장치를 사용하는데, 새로운 ASIC (Application Specific Integrated Circuit)인 킹스 캐년을 도입합니다. 추론 가속장치의 폼펙터는 M.2. 이런 소형 폼펙터를 사용하는 추세입니다.
GPU에서 딥 러닝 가속기로 향하는 페이스북
페이스북 시온은 대규모 데이터 센터에서 AI 시스템의 새로운 흐름을 보여줍니다. 딥 러닝 전용 가속기의 도입입니다. 페이스북은 2016년에 NVIDIA 테슬라 기반 Bigsur를 썼었고, 2017년에는 NVLink로 GPU를 연결하는 Big Basin을 도입했습니다. 2018년에는 Big Basin의 CPU를 텐서 코어 볼타 아키텍처 GPU로 교체했습니다. 하지만 시온은 신경망 전용 가속기로 대체합니다.
페이스북의 기존 시스템 Big Basin과 시온의 비교
데이터 센터가 GPU를 쓰는 이유는 GPU가 범용 병렬 프로세서라서입니다. 그래픽 전용 ASIC였던 GPU가 프로그래머블 쉐이더 프로세서를 탑재한 후, 범용으로 나아가 지금은 CPU에 버금가는 범용 프로세서가 됐습니다. GPU는 병렬 처리에 적합한 딥 러닝, 특히 학습 문야에 강력해 지금까지의 학습 작업은 GPU에서 수행했습니다. 알고리즘의 변화에 유연하게 대응할 수 있다는 게 GPU의 장점입니다.
그러나 딥 러닝 작업이 늘어나면서 더욱 높은 효율의 학습 성능을 필요로 하고 있습니다. 페이스북의 시온이 딥 러닝 가속 장치를 쓴 것도 이런 분위기를 보여주는 사례입니다. 물론 GPU도 이런 흐름에 대비하고 있습니다.
페이스북이 가속기를 OCP Accelerator Module (OAM)로 표준화하려는 건 하드웨어 변화에 유연하게 대응하기 위해서입니다. 지금은 가속기를 써도 나중에는 OAM 폼펙터 GPU를 쓸지도 모릅니다.
OAM의 핵심 스펙은 다음과 같습니다:
* 입력전압은 12V, 48V 지원
* 12V에서 350w, 48V에서 700w TDP 까지 커버
* 크기는 102mm x 165mm
* 8개의 PCIE x16 링크 (host + inter-module links)
- 호스트-모듈간 링크는 1개 또는 2개의 x16 연결을 사용 가능
- 모듈간 interconnect 링크는 최대 7개의 x16 연결을 사용가능
* 공랭으로 450W, 수냉으로 700W를 지원할 것으로 예상
* 시스템 관리 및 디버그 인터페이스 제공
* 시스템 당 최대 8개의 OAM 모듈 사용 가능
interconnect 장치/케이블, 세부 사진은 https://www.servethehome.com/facebook-zion-accelerator-platform-for-oam/ 를 참조하셔도 좋을 것 같습니다.
아직까지 갈길이 멀긴 할테고, 저 같은 일반인 수준으로 저 장비가 내려올 일은 당분간... 아니 영원히 없겠지만요. 암튼, 개인적으로는 장착할 때 비싼 토크드라이버를 가지고 설치지 않아도 된다는 것만으로도 저 폼팩터는 우월하다고 생각합니다..;;