[리뷰] NAVER AI NOW 2021
최근 몇가지 안 좋은 News로 말도 많고 탈도 많은 NAVER가 자신들의 AI 연구에 대해서 설명하기 위해 NAVER AI NOW라는 행사를 가졌다. 그들이 무슨 이야기를 하였는지 정리해 보았다.
NAVER AI Now의 여러 Session 중에 Keynote, 언어 모델, Infra 관련 내용에 대해 정리를 해본다.
PART 1. HyperCLOVA. 커다란 가능성을 열다.
Keynote 요약
CLOVA는 NAVER의 AI 연구 조직
- CLOVA는 자체적 AI 기술을 개발하여 제품에 접목하고 있음
- e.g., CLOVA Note, CLOVA Dubbing, CLOVA Clock, CLOVA lamp
AI 개발 방식의 변화
- 개별적인 AI 서비스를 만드는 방식에서 벗어나 Big Model를 개발하여 모든 AI 서비스에 사용함
- 모델의 일반화와 확장이 가능해짐
- 더 적은 시간과 리소스로 AI 서비스 개발 가능해짐
Big AI의 트렌드
- AI 모델의 파라미터가 커질수록 AI로 풀수 있는 문제들이 많아짐
- 더 큰 모델과 더 빠른 학습이 필요해짐
무한 경쟁 시대의 NAVER AI
- 글로벌 기업의 플랫폼에 종속되지 않기 위해, 공개기술로는 그들을 따라잡지 못한다는 판단을 내림
- 700 페타플롭스 이상의 슈퍼 컴퓨터 도입
- 한국어 초거대 언어모델 구축 중
HyperCLOVA
HyperCLOVA라는 새로운 AI 개발 방법론을 소개. HyperCLOVA는 크개 3개로 구성됨
- 1) Super Computer: 대규모 학습 Infra
- 2) Data: HyperCLOVA의 초거대 언어 모델(204B)은 GPT-3에 비해 6500 배 더 많은 한국어 데이터를 기반으로 함.
- 3) AI Specialist: HyperCLOVA를 이끌어가는 경쟁력임. 한국, 일본, 베트남, 북미, 유럽의 글로벌 AI 연구 생태계를 구축함
HyperCLOVA를 이용하여 AI 기술이 필요한 누구나 새롭고 차별화된 경험을 제공하겠다는 포부를 밝힘. 실제 10 개 이상의 서비스에 기술을 적용하여 곧 공개할 예정임
새로운 AI의 시작, HyperCLOVA
최초의 한국어 초거대 언어모델: HyperCLOVA
HyperCLOVA를 204B을 개발 중 → 기존 NAVER 언어모델 보다 600배 큼HyperCLOVA는 한국어 데이터 5,600억 Token을 학습 함
- GPT-3의 한국어 학습 데이터 대비 6,500배
- 기존 NAVER 언어모델 데이터 대비 3,000배
- 뉴스 50년치, 네이버 블로그 9년치 데이터
Big AI가 가능해진 이유
- Unsupervised Learning으로 대규모 데이터를 학습가능하게 됨
- 인공지능의 성능은 데이터의 양, 연산의 규모, 모델 파라미터의 수가 서로에게 병목이 되지 않을 때 그 성능이 무한히 향상될 수 있음 → 오히려 큰 모델이 경제적이고 효율적일 수 있음
- AI 모델이 커질수록 다양한 서비스에 적용하기 쉬워짐
HyperCLOVA 프로젝트 사례
01. 맥락을 이해하는 자연스러운 대화
바흐에 대한 질문
02.창작을 도와주는 글쓰기
네이버 쇼핑에 있는 상품의 이름과 속성, 설명을 읽고 매력적인 소개 글을 작성하도록 상품 소개 문구 생성. 스마트스토어에 적용 예정
03.정보요약
여러 문서에서 의견을 요약해서 빠르게 이해할 수 있도록 도와줌
04.데이터 생성
전화를 대신 받아주는 CLOVA AiCall 제품을 만들기 위해 사용자의 발화 의도마다 코퍼스를 구축해서 언어 이해 AI를 학습시키고 있음 → 비용과 시간을 비약적으로 줄일 수 있음. (대화 시나리오 구축 생산성 x10 배)
HyperCLOVA 플랫폼
Multi-Modality
한국어뿐만이 아니라 다양한 Modality(Text, Image, Voice, Video, Code, Music 등)로 확장 예정
HyperCLOVA Infra
Super Computer
대규모 AI 모델 학습에 슈퍼컴퓨터는 핵심 컴퓨팅 자원임. 이를 위해 700 peta flops 급 Super Computer 도입 → NVIDIA SuperPOD
- 140 computing node
- 1120 GPU
- 3800 Cables (Infini-band)
- 전력 소모량: 일반 서버 3000대
향후 Infra 확장 계획
- 더 큰 AI 모델을 위한 슈퍼컴퓨팅 클러스터 확장
- GPU 클러스터 OEM 서버, NPU, IPU, FPGA 등다양한 AI 가속 솔루션을 검토 중
NAVER CLOUD PLATFORM
HyperCLOVA는 네이버클라우드 플랫폼에서도 제공 예정임
PART2. HyperCLOVA 테크놀로지
HyperCLOVA의 한국어 모델
한국어 모델을 만든 이유
- 인터넷 언어분포: 영어(60.3%) > 한국어(0.6%)
- GPT-3 언어분포: 영어(92.7%) > 한국어(0.1%) → GPT-3는 사실상 다국어 모델이 아닌 영어 전용 모델임
- 자체 한국어 모델이 없으면 글로벌 기업의 제한적인 한국어 성능의 모델을 사용할 수 밖에 없음
- 이를 해결하기 위해 한국어에 특화된 큰 언어 모델을 착수함 (HyperCLOVA의 언어분포: 한국어 97%)
데이터처리 파이프라인
- 데이터셋: 560B Token (전체), 300B Token (학습) → GPT-3와 비슷한 규모
- 어휘 집합 학습: 한국어에 최적인 Tokenizing 방법 학습
- Corpus Mixer: 전처리 시 데이터 종류별 비율 자동 조절 → 뉴스는 구어체에 적합하지 않음. 품질이 낮은 데이터는 모델 성능을 낮추므로 비중을 조절할 필요가 있음
- Serializer: 모델이 읽을 수 있도록 Binary 형태로 Serializing 과정이 필요함 → 기존 방식을 하둡 스트리밍을 적용하여 7일에서 1시간으로 개선함 (약 170배 개선)
모델의 크기
- HyperCLOVA는 문장 생성에 특화된 아키텍처를 사용함
- 최근 모델 크기의 급격한 증가때문에 3중 병렬화 적용: 데이터/모델/파이프라인 병렬화
- 82B 모델까지 확보, 현재 204B 모델 학습 진행 중
- 작은 모델 학습: Representation Space가 작고 learning rate가 커서 초기에는 loss가 빠름. 하지만 capacity limit에 도달하여 그 이후 아무리 학습을 길게 해도 loss가 내려가지 않음
- 큰 모델 학습: 모델이 크면 loss가 초기에는 느리지만 종반부로 갈수록 Waterfall 구간에서 loss가 빨라 학습이 진행될수록 결국 더 뛰어난 성능을 보임
모델 크기에 따른 다운스트림 태스크 성능
- NSCM(네이버 영화리뷰 데이터셋): 82B 모델에서 약 90% 정도의 분류 정확도로 SOTA에 근접한 성능을 보임 → 204B 모델과 최근 활발하게 연구 중인 Prompt tuning 방법론을 이용하면 SOTA를 뛰어넘을 것이라고 예상
- KorQuAD: Machine Reading Comprehension 데이터셋 → 모델의 크기가 커짐에 따라 점점 증가하는 경향성
HyperCLOVA를 위한 서비스 기반 (Service Infrastructure)
Training
- 3중 병렬화 사용
Inference
- 큰 모델은 Single GPU에서 Inference가 불가능하므로 Multi-GPU Inference의 지원이 필수.
- half-precision 사용
모델 병합
- Serving 시 GPU Memory의 크기가 모두 다르므로 모델이 적절한 값으로 병합되어야 함
- 26GB 모델을 2개의 T4 GPU(16GB)에 올리는 경우, checkpoint를 2개로 병합해주는 작업이 필요함
- 허용가능한 Batch size, Single latency, Server Infra 상황도 고려해야 함
- 204B 모델의 경우, 대략 500GB의 VRAM 용량이 필요하므로 Single Node에서 Serving이 어려움 → Multi Node Serving도 고려해야 함
모델 업로드
- 경험적 GPU Memory 사용량: 파라미터의 2배(half-precision). 파라미터가 GPU Memory 사용량의 대부분을 차지
- 204B 기준 checkpoint당 0.5TB가 필요함
- 더 빠른 업로드를 위해 파일을 chunck 단위로 병렬고 업로드하도록 처리 → 빠르게 Serving 환경을 모델을 업로드하는 것이 가능함
- 사내 Nubes라는 Object Storage Platform 사용. 분산 스토리지라서 병렬 업로드를 지원함
모델 배포
모델 배포에는 아래와 같은 2가지 방법이 있음
- 1) 모델을 컨테이너 안에 넣어서 이미지화하여 배포
- 2) Inference 하는 이미지를 모델과 분리하여 동적으로 다운로드하거나 볼륨으로 마운트해서 사용하는 방법을 사용할 수 있음
하지만 모델이 크면 1) 방법을 사용하기 어려워 인퍼런스 도커와 모델 파라미터를 분리하여 업데이트가 가능하도록 처리함
- 모델을 병합하고 업로드 후에 이미지 빌드없이 롤링 업데이트를 통해 쉽게 신규 모델을 배포가능함
- Inference 코드 개선이 필요하면 이미지만 빌드한 후에 교체하는 것도 가능함
Dynamic Batching
- Inference를 할 때 하나의 요청을 처리하는 것보다 요청을 묶어 배치로 처리하는 것이 GPU 측면에서 더 효율적임
- 주어진 시간 내 요청을 얼마나 배치로 묶어서 Inference 할지를 결정 Batch Size와 Timeout 인자가 기본 제공됨
- HyperCLOVA는 동일한 파라미터로 요청된 것만 그룹으로 묶어서 배치 처리, 각 그룹별 Batch Inference가 가능하도록 구현
Gateway
- 모델 serving시 앞단에 L7 load balancing이 가능한 Gateway를 하나 두고 있음
- 이 Gateway는 여러 개의 모델 inference를 load balancing 해주고 인증 및 요청 쿼터를 제공
- Busy 체크를 통해 요청이 몰리지 않는 서버에 트래픽을 분배
- 모델 및 버전별 패스 & 도메인 라우팅 제공
Checkpoint별 자동배포
- HyperCLOVA는 학습 시간이 오래 걸리고 중간에 성능 확인을 서비스 레벨로 검증하고자 하는 Needs가 있음
- Checkpoint가 만들어지는 시점에 자동으로 배포되도록 파이프라인을 구성함
- 신규 checkpoint가 나오면, 모델 병합 및 업로드, 모델 배포가 이루어짐 → endpoint로 성능 검증
AB 테스트 및 쉐도잉
- 모델에 대한 불확정성 때문에 대표로 사용하는 모델 endpoint에서 여러개의 checkpoint로 backend traffic을 나누어서 보낼 수 있음
- Dynamic 설정으로 weight 조절이 가능함 → AB 및 Canary 배포가 가능함
- 동일한 모델을 사용하지만 Inference 구현체가 변경되는 경우, latency 성능을 올리기 위해 구현체를 변경 가능함 → 리얼 환경에서 동작 검증 가능함
HyperCLOVA App
- HyperCLOVA app은 백엔드에 다양한 파라미터 크기의 모델을 풀로 가지고 있음
- HyperCLOVA app에서 설정된 prompt와 hyper-parameter, 모델 크기에 따라 호출이 가능함. 각 prompt의 설정과 hyper-parameter는 독자적인 app으로 서비스가 가능함
- HyperCLOVA app에서 전달되고 나가는 입출력에 대해서 네이버 윤리규칙에 맞는 입출력만 허용되도록 통제함(*Really..?)
향후 계획
- Dynamic Batch 고도화
- Multi-Node Inference
- K8S(쿠버네티스) 기반의 Serving Operator 개발
- HyperCLOVA app을 플랫폼으로 개발
총평
- 자체 한국어 모델을 만든 시도 중. 지난 Google IO에서 MUM을 다국어로 학습하고 있는 것 처럼 다양한 정보 학습을 위해 로컬 언어에 대한 학습이 중요함. 따라서 자체 한국어 모델은 한국 기업인 NAVER에게 차별화가 될 수 있음
- NVIDIA SuperPOD을 도입하여 AI Infrastructure에도 나름 투자를 하고 있음. 하지만 MS Azure가 OpenAI 용으로 제공하는 AI Supercomputer (V100 10K)에는 아직 크게 못 미치는 수준
- 최근 포탈의 뉴스 편향성에 대해서 문제가 제기 되고 있는데 AI 윤리가 제대로 적용되지는 아직 의구심. AI는 중립적이지 않고 학습에 따라 얼마든지 편향성을 갖게 될 수 있음. AI의 편향성마저 사람이 판단하는데 판단을 하는 사람이 편향되었다면..?
- AI serving에 대한 레퍼런스가 없었는데 좋은 레퍼런스가 되었음
- 한국 기업 중에서 NAVER가 AI 논문도 많이 내고 AI에 많은 투자를 하고 있다는 느낌을 받았음