AI VIDEO BRIEFING
LLM 추론 최적화 연구 총정리: 희소 어텐션, 가속기 데이터 이동, 프리필·디코드 분리, 결정론적 추론
마이크로소프트 리서치 인도 학술 서밋의 시스템 세션 발표 다섯 건을 정리했다. 롱컨텍스트 어텐션 근사부터 가속기 데이터 이동 비용, ML 파이프라인의 조용한 오류, 프리필·디코드 분리 운영, 재생에너지 데이터센터까지 다룬다.

핵심 메시지
쉽게 이해하기
마이크로소프트 리서치 인도가 연 학술 서밋의 마지막 세션은 AI 시스템 최적화를 주제로 다섯 건의 발표를 묶었다. 인도 공과대학과 인도 과학원 등 여러 기관의 연구자와 마이크로소프트 인프라 그룹이 각각 다른 층위의 병목을 다루는데, 모아 놓고 보면 거대 언어모델을 실제로 싸게 돌리는 일이 얼마나 여러 겹의 문제인지가 드러난다.
첫 발표는 추론 시점의 컨텍스트 희소성을 다룬다. 발표자는 롱컨텍스트가 더 이상 특수 기능이 아니라고 짚는다. 질의응답과 장시간 대화, 코딩 보조에 더해 에이전트끼리 주고받는 상호작용이 늘고 있고, 시스템 프롬프트가 15만 토큰을 넘긴 사례나 같은 벤치마크에서도 생성 길이가 빠르게 길어진다는 관찰이 근거로 제시된다. 여기서 흔히 쓰이는 방법은 어텐션 점수가 높은 상위 몇 개만 골라 계산하는 것인데, 발표자는 긴 문맥에서 어텐션 분포가 넓게 퍼지면 이 방식이 적절하지 않다고 본다. 점수가 고르게 퍼져 있다는 것은 분산이 작다는 뜻이므로 무작위 표본으로 추정하는 편이 표본 효율이 좋다는 것이다. 제안된 방식은 상위 항목은 그대로 계산하고 나머지 잔차를 무작위 표본으로 근사하는데, 표본을 쓰는 덕분에 추정 오차를 가늠할 수 있고 원하는 정확도에 맞춰 표본 크기를 정할 수 있다.
두 번째 발표는 하드웨어 쪽으로 내려간다. 발표자는 학습에 드는 연산량이 2년마다 32배씩 늘어 공정 미세화가 주는 개선폭을 크게 웃돌고, 모델 파라미터 규모도 GPU가 제공하는 메모리 증가 곡선을 넘어섰다고 정리한다. 에너지도 마찬가지여서 지난해 기준 챗봇 질의 전체가 연간 310기가와트시, 미국 가정 3만 가구를 감당할 전력에 해당한다는 수치가 인용됐다. 다행히 AI 모델에는 활용할 만한 성질이 있다. 연산 종류가 유한하고, 중간 계산이 다소 틀려도 최종 판정이 유지되는 오차 내성이 있으며, 입력이 무엇이든 실행되는 연산 패턴이 같고, 희소성이 존재한다는 것이다. 이 발표에서 특히 눈에 띄는 지적은 데이터 이동 비용이다. 텐서를 메모리에 어떤 순서로 늘어놓느냐가 연산기마다 다르기 때문에 전치나 형태 변경이 끼어들 때마다 데이터를 재배치해야 하고, 개별 연산을 이미 최적화한 뒤에도 이 재배치가 종단 실행 시간의 약 60%를 차지한다고 한다.
세 번째 발표는 층위를 바꿔 프로그래밍 언어 문제를 제기한다. 문서에서 값을 뽑아내는 파이프라인에 문자 인식이나 분류 같은 ML 연산자가 섞이면, 이 연산자들은 아무런 경고 없이 틀린 값을 흘려보낸다. 미국 카드를 인도 카드로 잘못 분류하면 오류는 한참 뒤에야 드러난다. 연구진이 만든 프레임워크는 두 가지 추상을 제공한다. 하나는 각 연산자에 대안을 여러 개 등록해 두는 것이고, 다른 하나는 결과가 만족해야 할 조건을 어서션으로 선언하는 것이다. 어서션이 깨지면 시스템이 데이터 계보를 거슬러 올라가 문제의 행을 대안 결과로 바꾸고 그 변화를 앞으로 전파한다. 데이터플로 언어로 구성한 덕분에 되돌리기가 행 삭제와 삭제 전파로 끝나 부작용을 걱정할 필요가 없다. 실행 로그를 모아 어떤 조합이 빠르고 잘 통과하는지 학습하고 다음 배치의 실행 계획을 다시 짜는 최적화기도 함께 붙어 있다.
네 번째 발표는 서빙 운영을 다룬다. 언어모델 추론은 프롬프트를 한꺼번에 처리해 첫 토큰을 내는 프리필 단계와, 직전 토큰과 키·값 캐시를 읽어 다음 토큰을 하나씩 만드는 디코드 단계로 나뉜다. 두 단계는 성격이 전혀 다르다. GPU를 놀리지 않으려면 연산 시간이 메모리 전송 시간보다 길어야 하는데, 디코드는 캐시를 계속 읽어 와야 해서 메모리에 묶이기 쉽다. 그래서 두 단계를 서로 다른 GPU 묶음에 분리해 두는 구성이 쓰이는데, 발표자는 여기에 혼합 풀을 두어 한쪽에 요청이 몰릴 때 GPU를 잠시 옮겨 부하를 흡수하는 방식을 제시한다. 다만 디코드 쪽에는 캐시가 이미 올라와 있어 반대 방향 전환은 까다롭다. GPU를 각 역할에 몇 장씩 배정하고 어떤 병렬화를 쓸지는 모델과 하드웨어, 지연 목표를 입력으로 하는 최적화 문제로 풀어낸다.
마지막은 마이크로소프트 인프라 그룹이 여러 프로젝트를 훑는 발표다. 최적화는 몇 장의 GPU가 한 요청을 함께 처리하는 복제본 수준과, 수천 개 복제본을 굴리는 함대 수준으로 나뉜다. 함대 수준 과제로는 재생에너지원 옆에 모듈형 데이터센터를 붙이는 구상이 소개됐다. 전력망을 증설하고 먼 거리로 송전하는 비용이 크니 발전소 쪽으로 연산을 옮기자는 발상인데, 풍력은 출력이 들쭉날쭉해 여러 지점을 상호 보완적으로 묶어야 하고 발전량에 맞춰 GPU를 끄거나 클록을 낮추는 판단, 요청을 어느 지점으로 보낼지의 판단이 함께 필요하다. 또 다른 과제는 요청 길이에 따라 복제본을 나누는 것이다. 지연 목표가 빡빡하면 배치 크기를 줄여야 하는데 길이가 뒤섞인 배치는 GPU 활용도를 떨어뜨리기 때문이다.
같은 발표에서 소개된 결정론적 추론 프로젝트도 눈여겨볼 만하다. 무작위성 관련 설정을 모두 고정해도 같은 요청이 다른 답을 내놓는 일이 있는데, 원인은 부동소수점 덧셈이 결합법칙을 따르지 않아 합산 순서에 따라 결과가 달라지기 때문이다. 기존 해법은 순서를 고정한 커널을 새로 작성하는 것이었지만, 이 프로젝트는 추측 디코딩의 아이디어를 빌린다. 기존 커널도 대부분의 토큰에서는 같은 결과를 내므로, 그대로 초안을 만든 뒤 병렬 검증 단계에서 여러 실행 사이에 어긋나는 토큰만 골라 버리고 그 지점부터 다시 만드는 방식이다. 새 커널을 짜지 않아도 되고, 배치 전체가 아니라 필요한 요청에만 선택적으로 적용할 수 있다는 점이 이점으로 제시됐다.
주요 인사이트
- 어텐션 근사에서 '상위 몇 개만 고른다'는 직관은 문맥이 길어질수록 흔들린다. 점수가 퍼져 있을수록 표본 추정이 유리해지고, 표본을 쓰면 오차를 정량화해 정확도를 설계할 수 있다.
- 가속기 성능 논의는 연산량에 집중되지만, 실제 병목은 데이터를 어떤 순서로 늘어놓느냐에서 오는 재배치 비용인 경우가 많다.
- ML 연산자를 함수처럼 다루면 조용한 오류가 파이프라인 끝까지 흘러간다. 대안 등록과 어서션이라는 언어 차원의 장치가 이 문제를 다루는 한 가지 접근이다.
- 프리필과 디코드는 자원 성격이 달라 한 묶음으로 다루면 어느 한쪽이 놀게 된다. 다만 키·값 캐시가 GPU에 묶여 있어 역할 전환은 한쪽 방향으로만 쉽다.
- 결정론적 결과가 필요한 이유는 재현성과 감사 가능성이며, 이를 위해 커널을 새로 짜는 대신 어긋나는 토큰만 골라내 다시 만드는 우회로가 존재한다.
- 전력 제약이 커지면 데이터센터를 전력망에 맞추는 대신 발전원 옆으로 옮기는 선택지가 검토된다. 이때 간헐성은 여러 지점의 상호 보완으로 다뤄야 한다.
자주 묻는 질문
프리필과 디코드는 왜 나눠서 처리하나?
프리필은 프롬프트 전체를 한꺼번에 계산해 첫 토큰을 만드는 단계로 연산량이 많고, 디코드는 직전 토큰과 캐시를 읽어 토큰을 하나씩 만드는 단계로 메모리 접근에 묶이기 쉽다. 두 단계의 자원 성격이 달라 한 묶음에서 처리하면 GPU가 놀게 되므로 분리해 운영하는 구성이 쓰인다.
같은 요청에 같은 답이 나오지 않는 이유는?
부동소수점 덧셈이 결합법칙을 따르지 않기 때문이다. 합산 순서가 달라지면 결과도 미세하게 달라지고, 그 차이가 토큰 선택을 바꾼다. 무작위성 설정을 모두 고정해도 이 문제는 남는다.
AI 가속기에서 데이터 재배치가 왜 문제인가?
연산기는 텐서를 특정 순서로 늘어놓은 형태로 읽어들이는데, 전치나 형태 변경이 끼면 다음 연산이 요구하는 배열이 달라져 데이터를 다시 늘어놓아야 한다. 발표에 따르면 개별 연산을 최적화한 뒤에도 이 재배치가 종단 실행 시간의 약 60%를 차지한다.
원문과 출처
이 글은 원본 영상의 자막을 바탕으로 한국어 독자를 위해 요약했습니다. 전체 맥락과 최신 정보는 원문에서 확인하세요.
YouTube 원본 영상 보기 ↗