분산 훈련과 연산 최적화: 실제 환경에서의 스케일링
AI에 최적화된 연산 환경: 하드웨어와 추론 전략
딥러닝에서 말하는 스케일링(scaling)이란, 인공지능 모델의 크기와 복잡성을 조절해서 성능을 높이는 과정을 뜻합니다. 쉽게 말하면, 인공지능이 더 똑똑하게 문제를 해결할 수 있도록 모델의 크기를 키우거나 더 복잡하게 만들어가는 방법입니다. 하지만 스케일링이란 단지 크기만 커지면 좋다는 뜻이 아닙니다. 마치 건물을 지을 때 무작정 높게만 지으면 좋은 건물이 아니라, 높이와 튼튼함, 내부 구조를 잘 조화시켜야 좋은 건물이 되는 것처럼, 인공지능 모델도 어떤 방향으로 얼마나 커져야 효율적이고 실용적인 모델이 되는지를 잘 고민해야 하는 것입니다.
초기의 인공지능 발전은 주로 새로운 알고리즘이나 아이디어가 등장할 때마다 큰 성장을 이루는 경우가 많았습니다. 예를 들어 앞에서 이야기한 알렉스넷처럼, 새로운 구조가 나타나면 인공지능의 성능이 크게 좋아졌던 것이죠. 하지만 최근 몇 년 사이에는 상황이 조금 바뀌었습니다. 이제는 완전히 새로운 알고리즘보다는 모델의 크기를 얼마나 더 크게 키우고, 더 많은 데이터를 얼마나 충분히 학습시킬 수 있는지가 성능 향상에 더 큰 영향을 미치게 되었습니다.
왜 이런 변화가 생겼을까요? 최근 연구자들은 일정량 이상의 충분한 데이터를 모으고, 이를 처리할 수 있는 충분한 컴퓨터 성능만 있다면, 모델의 크기를 점점 더 키우는 것만으로도 성능이 계속 좋아진다는 사실을 발견했습니다. 즉, 무언가 특별한 알고리즘을 추가하지 않아도 모델을 더 크고 복잡하게 만들면 만들수록 점점 똑똑해질 수 있다는 것이죠.
이러한 현상을 연구자들은 ’스케일링 가설(scaling hypothesis)’이라고 부릅니다. 이 가설은 “모델을 계속해서 크게 만들고, 데이터를 많이 제공하면 인공지능이 끝없이 더 좋아질 수 있다”는 주장입니다. 마치 시험 공부를 할 때 기본적인 방법은 그대로라도 공부 시간을 더 늘리고 문제를 더 많이 풀수록 시험 점수가 올라가는 것과 비슷한 원리입니다. 물론 무작정 공부 시간만 늘리기보다는 집중력 있게 공부하는 방법이 필요하듯이, 인공지능도 모델을 키우는 방향과 방법을 적절히 잘 설계하는 것이 중요합니다.
실제로 최근 인공지능 분야에서는 GPT-3나 비전 트랜스포머(Vision Transformer, ViT) 같은 아주 큰 규모의 모델들이 등장했습니다. GPT-3는 수백억 개의 문장을 읽고 학습한 언어 모델이고, 비전 트랜스포머는 이미지 수백만 장을 보고 학습한 이미지 인식 모델입니다. 이 모델들은 단순히 기존 모델보다 훨씬 큰 크기로 확장된 덕분에 이전 모델들이 할 수 없었던 훨씬 더 뛰어난 성능을 보여주었습니다. 예를 들어 GPT-3는 글쓰기를 비롯해 사람과 비슷한 수준의 자연스러운 대화를 가능하게 했고, 비전 트랜스포머는 사진 속 사물을 더 정확히 찾아내고 분류할 수 있게 되었습니다.
이처럼 모델을 스케일링한다는 것은 크기를 단순히 키우는 것을 넘어서, 인공지능이 더 실용적이고 효율적으로 발전할 수 있도록 신중하게 고민하는 과정입니다. 앞으로 인공지능이 얼마나 더 발전할 수 있을지 예측할 때도 이 ‘스케일링’이란 개념을 빼놓고 생각할 수 없게 되었습니다.
모델을 키우는 다섯 가지 방향
인공지능 모델을 키운다고 하면 단순히 크기를 무조건 늘리는 것처럼 느껴질 수 있지만, 사실 모델을 키우는 데는 여러 가지 방법이 있습니다. 지금부터 대표적인 다섯 가지 방법을 하나씩 천천히 살펴보겠습니다.
첫 번째 방법은 모델의 깊이(depth)를 늘리는 것입니다. 깊이를 늘린다는 것은 신경망의 층을 더 많이 쌓는다는 뜻입니다. 마치 학교에서 공부할 때 처음에는 간단한 개념을 배우고, 그다음에는 조금 더 어려운 개념을 배우면서 점점 더 복잡한 내용을 이해하는 것처럼, 인공지능 모델도 층이 많을수록 더 복잡한 패턴과 구조를 단계적으로 배울 수 있습니다. 예를 들어, 처음 층에서는 사진에서 가장 간단한 특징(선이나 색깔 등)을 배우고, 뒤로 갈수록 더 복잡한 특징(사람 얼굴이나 특정 물체의 모양 등)을 인식할 수 있게 됩니다. 이렇게 하면 복잡한 구조나 관계를 더 잘 찾아낼 수 있는 장점이 있습니다.
두 번째 방법은 모델의 너비(width)를 키우는 것입니다. 너비를 키운다는 것은 각 층 안에 있는 뉴런(Neuron, 사람의 뇌세포와 비슷한 역할을 하는 작은 계산 단위)의 개수를 늘리는 것을 말합니다. 쉽게 말하면, 좁은 도로보다 넓은 도로에서 차들이 더 많이 지나갈 수 있는 것처럼, 각 층의 너비를 넓히면 더 많은 정보를 동시에 빠르게 처리할 수 있게 됩니다. 이 방식은 특히 컴퓨터 성능이 뛰어난 환경에서 효율적으로 사용됩니다.
세 번째 방법은 입력 해상도(input resolution)를 높이는 것입니다. 해상도를 높인다는 것은 인공지능 모델이 더 큰 이미지나 더 긴 문장을 처리하도록 만드는 것입니다. 예를 들어, 같은 사진이라도 더 크고 화질이 좋은 사진을 보면 작은 글씨나 물체까지 더 잘 볼 수 있듯이, 인공지능 모델도 입력되는 정보가 많아질수록 더 세부적인 정보를 정확히 파악할 수 있습니다.
네 번째 방법은 전체 파라미터 수(parameter count)를 늘리는 것입니다. 여기서 말하는 파라미터란 모델이 학습하는 과정에서 스스로 찾아내는 값으로, 모델이 가진 지식의 양을 나타냅니다. 마치 사람의 머릿속에 있는 지식이나 기억의 양과 비슷합니다. 앞서 설명한 깊이와 너비, 입력 해상도를 적절히 조합해서, 모델 전체의 지식 용량을 크게 늘리는 방식입니다. 최근 인공지능에서 자주 언급되는 GPT-3 같은 초대형 모델들이 바로 이 방식을 적극적으로 사용한 대표적인 사례입니다.
마지막 다섯 번째 방법은 추론 단계에서 계산량(test-time compute)을 늘리는 것입니다. 이 방법은 모델이 학습을 끝낸 후, 실제로 문제를 해결할 때 더 꼼꼼하게 계산하는 방식을 의미합니다. 예를 들어 시험을 볼 때 한 문제를 여러 번 풀어보고 답을 비교하면서 가장 정확한 답을 찾는 것과 비슷합니다. 이미 만들어진 모델을 바꾸지 않고, 답을 내기 위해 더 신중하게 여러 가지 계산을 반복하거나 다양한 방법으로 비교해보는 방식입니다. 이렇게 하면 좀 더 정밀하고 정확한 답을 얻을 수 있습니다.
하지만 이렇게 다양한 방식으로 모델을 키우는 것이 무조건 좋은 결과로 이어지는 것은 아닙니다. 만약 모델이 지나치게 깊어지거나, 너무 복잡해지면 오히려 학습이 잘 되지 않는 문제나, 과적합(overfitting)이라고 해서 학습한 문제는 잘 맞히지만 처음 보는 새로운 문제는 잘 해결하지 못하는 문제가 생기기도 합니다. 게다가 모델이 너무 크고 복잡해지면 계산하는 데 너무 많은 시간이 걸리고 비용도 커집니다.
그래서 연구자들은 단순히 크기를 늘리는 데 그치지 않고, 모델의 구조를 더 정교하고 효율적으로 설계해서 같은 크기나 자원을 가지고도 최대한 좋은 성능을 낼 수 있는 방법을 꾸준히 고민하고 있습니다.
깊게, 더 깊게: VGG에서 DenseNet까지
모델을 더 깊게 만드는 시도는 주로 합성곱 신경망(Convolutional Neural Network, CNN)이라는 구조에서 활발히 진행되었습니다. 합성곱 신경망이란 쉽게 말하면 사람의 눈이 사물을 볼 때, 작은 부분부터 전체 모양까지 차례차례 인식하는 것처럼 이미지를 분석하는 방식입니다.
이 중 초기에 유명해진 모델 중 하나가 바로 VGGNet입니다. VGG는 3×3 크기의 아주 작은 필터를 계속 반복해서 쌓아 올리는 방식으로 신경망을 매우 깊게 만들었습니다. 여기서 필터란 이미지의 특정 부분을 조금씩 분석하는 도구로, 마치 돋보기를 사용해서 이미지 속 작은 부분을 꼼꼼히 관찰하는 것과 비슷합니다. 이렇게 작은 필터들을 여러 개 쌓으면 이미지를 더 정밀하게 분석할 수 있어서 성능이 매우 좋아졌습니다. 하지만 VGG의 문제점은 모델이 너무 깊어지고 복잡해지면서, 기억해야 할 값(파라미터)이 엄청나게 많아져서 메모리 사용량과 계산 시간이 크게 늘어난다는 것이었습니다.
이 문제를 해결하기 위해 등장한 것이 ResNet(Residual Network)이라는 신경망입니다. ResNet은 ’잔차 연결(skip connection)’이라는 특별한 아이디어를 사용했습니다. 잔차 연결은 마치 고속도로에서 중간에 정체된 구간을 건너뛰고 빠르게 지나갈 수 있도록 만든 우회 도로와 비슷합니다. 신경망에서는 정보가 층과 층 사이를 지나가면서 점점 약해지거나 사라지는 현상이 생길 수 있는데, 잔차 연결은 층을 뛰어넘어서 정보가 사라지지 않고 바로 다음 층으로 전달될 수 있게 만들어줍니다. 덕분에 ResNet은 100층이 넘는 매우 깊은 신경망도 안정적으로 학습할 수 있었고, 성능 또한 뛰어나게 향상되었습니다. 이 방법은 이후 등장한 대부분의 모델들이 기본으로 채택할 정도로 중요한 개념이 되었습니다.
또 다른 유명한 모델은 GoogLeNet이라는 이름으로도 알려진 Inception입니다. Inception은 신경망을 단지 깊게만 쌓는 대신, 한 층 안에서 서로 다른 크기의 필터를 여러 개 동시에 사용하는 방식을 도입했습니다. 예를 들어, 한 층에서 돋보기, 망원경, 현미경을 동시에 사용하는 것과 비슷하다고 생각하면 됩니다. 각 도구가 작은 물체부터 큰 물체까지 다양한 크기의 사물을 동시에 볼 수 있도록 한 것이죠. 이런 방식을 통해 한 번의 분석으로 더 많은 정보를 얻을 수 있게 되었고, 같은 성능을 내면서도 계산량과 속도를 효율적으로 유지할 수 있었습니다.
마지막으로 DenseNet이라는 구조도 주목할 만합니다. DenseNet은 이전 층에서 얻은 정보를 다음 층뿐만 아니라 그 뒤에 나오는 모든 층들과 직접 연결하는 독특한 방식을 사용했습니다. 쉽게 말하면, 친구들끼리 정보를 전달할 때 한 명씩 차례대로 전달하는 방식이 아니라, 모든 친구들이 서로에게 직접 정보를 알려주는 방식입니다. 이런 방식 덕분에 앞서 나온 층에서의 중요한 정보들이 손실되지 않고 잘 전달될 수 있었습니다. 이 방법은 모델이 가진 정보의 양은 늘리면서도, 기억해야 할 파라미터 수는 오히려 줄여서 효율성을 높이는 데 큰 도움을 주었습니다.
이처럼 모델을 깊게 만든다는 것은 단순히 층을 무조건 많이 쌓는 것으로 끝나지 않습니다. 층을 깊게 만들 때 정보가 얼마나 효과적으로 전달되는지, 모델이 얼마나 다양한 정보를 표현할 수 있는지, 그리고 계산 속도가 느려지지 않는지 같은 여러 요소를 모두 고려해야 하는 아주 정교한 설계 과정입니다.
균형 잡힌 확장 전략: EfficientNet과 RegNet
인공지능 모델을 키울 때 가장 흔히 마주치는 고민은, 정확히 어떤 부분을 얼마나 키워야 가장 좋은 성능을 낼 수 있는가 하는 문제입니다. 예를 들어, 신경망의 깊이만 계속 늘리면 정보가 끝까지 잘 전달되지 않고 중간에 사라지는 문제가 생길 수 있습니다. 너비만 늘리면 너무 많은 정보가 동시에 들어와 계산이 복잡해져 시간이 오래 걸리고, 입력 해상도만 높이면 메모리를 너무 많이 사용해서 컴퓨터가 버티지 못할 수도 있습니다.
이런 문제를 해결하기 위해 깊이, 너비, 해상도를 서로 균형 있게 함께 키우는 방식이 주목받기 시작했습니다. 이런 방식을 ’균형 잡힌 스케일링(compound scaling)’이라고 합니다. 비유하자면, 건물을 지을 때 무작정 높게만 짓는 것이 아니라, 높이와 너비, 내부 시설까지 잘 조화시켜서 가장 튼튼하고 쓸모 있게 만드는 것과 비슷합니다.
이러한 균형 잡힌 방식의 대표적인 사례가 EfficientNet이라는 모델입니다. EfficientNet은 먼저 NAS(Neural Architecture Search)라는 기술을 사용해서 가장 효율적인 작은 기본 모델인 EfficientNet-B0을 찾아냈습니다. NAS란 인공지능이 스스로 수많은 모델 구조를 시험하면서 가장 성능이 좋은 구조를 찾아내는 기술입니다. 이렇게 찾아낸 작은 기본 모델을 출발점으로 해서, 깊이, 너비, 입력 해상도를 동시에 조금씩 균형 있게 확장해 EfficientNet-B1부터 B7까지 점점 더 성능이 좋은 모델들을 만들어냈습니다.
EfficientNet은 각 요소를 얼마나 늘릴지를 미리 정해진 수학적 비율에 따라 결정했고, 전체 계산량도 적절한 수준으로 유지했습니다. 예를 들어, 깊이를 약간만 늘리고 너비를 조금 더 늘린 다음, 입력 해상도도 약간씩만 높이는 식으로 균형 있게 조합한 것입니다. 그 결과 EfficientNet은 다른 유명한 모델들보다 훨씬 적은 계산량과 적은 파라미터 수로도 더 높은 정확도를 얻을 수 있었습니다. 쉽게 말하면 더 작고 가벼운 모델로 더 좋은 성능을 낸 것이죠.
또 다른 균형 잡힌 모델의 예시로는 RegNet이 있습니다. RegNet은 EfficientNet과는 조금 다르게 NAS처럼 자동으로 구조를 찾는 대신, 사람이 직접 규칙을 정해서 그 규칙에 따라 모델을 키워 나가는 방식을 사용했습니다. RegNet의 핵심 아이디어는 좋은 성능을 보이는 모델은 층이 깊어질수록 너비(즉, 각 층의 뉴런이나 채널의 수)가 일정한 규칙을 따라 점진적으로 증가한다는 것입니다. 예를 들어 건물을 지을 때 매 층마다 일정한 비율로 방이나 시설을 늘리는 것처럼, 모델을 확장할 때도 규칙을 정하고 그 규칙을 지키는 것이 성능에 좋다는 것이죠.
이러한 규칙을 활용하면 복잡한 자동 탐색 과정 없이도 계산량과 성능의 균형을 세밀하게 조절할 수 있게 됩니다. 따라서 RegNet은 비교적 간단하면서도 매우 효율적이고 실용적인 모델로 평가받고 있습니다.
EfficientNet과 RegNet의 공통점은 단지 무조건 크기만 키우는 것이 아니라, 어떻게 해야 적은 자원을 써서 최고의 성능을 낼 수 있을지 아주 세심하게 고민했다는 점입니다.
트랜스포머의 스케일링과 초거대 언어 모델
모델을 키우는 흐름에서 가장 극적인 변화는 언어를 다루는 인공지능, 즉 자연어 처리(Natural Language Processing, NLP) 분야에서 일어났습니다. 특히, 트랜스포머(Transformer)라는 구조가 등장하면서 언어 모델은 빠르게 커지기 시작했습니다.
트랜스포머가 왜 모델을 키우기에 좋은 구조인지 잠시 살펴볼까요? 트랜스포머는 비교적 간단한 구조를 가지고 있고, 층을 자유롭게 더 많이 쌓을 수 있으며, 동시에 여러 가지 계산을 빠르게 처리할 수 있다는 장점이 있습니다. 쉽게 말해, 책을 읽을 때 한 페이지씩 천천히 읽는 게 아니라 한꺼번에 여러 페이지를 빠르게 보는 것처럼, 많은 정보를 동시에 처리할 수 있는 구조를 가지고 있는 것입니다. 이런 특성 덕분에, 트랜스포머는 수십억 개 이상의 파라미터를 가진 거대한 모델로 확장하는 데 매우 적합했습니다.
초기에 등장한 BERT나 GPT 같은 모델들은 파라미터(Parameter, 모델이 학습 과정에서 스스로 조정하며 배우는 값)의 수가 수억 개 정도였습니다. 하지만 시간이 흐르면서 모델의 크기는 점점 커졌습니다. 예를 들어, GPT-2는 약 15억 개, 이후 등장한 GPT-3는 무려 1,750억 개라는 엄청난 수의 파라미터를 가지게 되었습니다. 이렇게 크기가 엄청나게 늘어난 GPT-3 같은 모델들은 단지 크기만으로도 번역, 질문 응답, 글쓰기 등 다양한 언어 과제에서 이전 모델들보다 월등히 뛰어난 성능을 보여주었습니다. 다시 말해, 모델의 크기 자체가 인공지능의 능력을 결정하는 중요한 요소가 된 것입니다.
하지만 그렇다고 해서 파라미터의 숫자를 무조건 많이 늘리는 게 항상 좋은 방법은 아닙니다. 2022년에 딥마인드(DeepMind)라는 회사는 ’친칠라(Chinchilla)’라는 연구를 통해 매우 중요한 사실을 발견했습니다. 이 연구는 모델의 크기만큼이나 중요한 것이 바로 데이터의 양이라는 점을 강조했습니다. 예를 들어 GPT-3는 모델 자체는 엄청나게 컸지만, 실제로 학습한 데이터의 양은 그 크기에 비해 충분하지 않아서 성능이 최대로 발휘되지 못했던 것입니다. 쉽게 비유하자면, 아주 똑똑한 학생이지만 읽은 책이 많지 않아 충분히 실력을 발휘하지 못한 경우와 비슷한 것입니다.
반면에 친칠라 모델은 GPT-3보다 크기는 더 작았지만, 훨씬 더 많은 데이터를 이용해 꼼꼼하게 학습했습니다. 마치 책을 더 많이 읽고 더 꼼꼼하게 공부한 학생이 그렇지 않은 학생보다 더 좋은 성적을 받는 것처럼, 친칠라는 더 작은 크기에도 불구하고 성능 면에서 훨씬 뛰어난 결과를 얻었습니다.
이후의 연구들은 단순히 모델의 크기만 늘리는 것이 아니라, 모델 크기와 데이터의 양, 그리고 학습 횟수와 계산량을 모두 잘 균형 잡아야 좋은 성능을 낼 수 있다는 방향으로 바뀌었습니다. 최근 발표된 LLaMA, PaLM, Claude 같은 최신 대규모 언어 모델들도 이 균형 잡힌 전략을 기반으로 만들어졌습니다. 즉, 이제는 단순히 모델을 크게 만드는 ‘크기 경쟁’에서 벗어나, 같은 크기로도 더 효율적이고 효과적으로 작동하는 ‘효율 경쟁’의 시대로 넘어가고 있습니다.
앞으로 우리가 만나는 인공지능 모델들은 단지 커다란 크기만이 아니라, 크기와 데이터, 효율성을 함께 잘 조합한 똑똑하고 효율적인 모델들이 될 것입니다.
생각을 더 오래, 더 깊게: Test-Time Compute
지금까지 우리는 인공지능 모델을 어떻게 하면 더 크게, 그리고 더 효율적으로 만들 수 있는지 살펴봤습니다. 그런데 모델이 공부를 마치고 실제로 문제를 푸는 단계에서도 계산 방식을 조금만 바꿔주면 더 좋은 결과를 얻을 수 있습니다. 이런 방법을 ’추론 단계 계산 확장(test-time compute)’이라고 부릅니다.
전통적인 방식에서는 인공지능에 질문을 던지면 곧바로 하나의 답을 내놓는 것이 일반적이었습니다. 예를 들어 “서울에서 부산까지 어떻게 가나요?“라고 물으면, 곧바로 가장 일반적인 한 가지 경로만을 알려주는 것이죠. 하지만 최근에는 이렇게 곧바로 하나의 답만 내놓는 대신, 답을 더 정확하고 믿을 수 있게 만들기 위한 다양한 방법이 시도되고 있습니다.
그 중 하나는 질문 하나에 대해 여러 개의 답을 만들어낸 뒤, 그중에서 가장 일관성이 있고 신뢰할 수 있는 답을 골라내는 방식입니다. 마치 여러 친구에게 고민 상담을 한 뒤, 그중 가장 믿음직스럽고 좋은 조언을 골라서 따르는 것과 비슷합니다.
또 다른 방법은 문제를 해결할 때 그 과정에서의 생각 흐름을 먼저 보여준 다음, 최종 답을 내놓는 것입니다. 앞에서 살펴봤던 ‘생각의 사슬(Chain-of-Thought)’ 방식이 바로 이것과 관련이 있습니다. 예를 들어 수학 문제를 풀 때 그냥 답만 “정답은 30입니다”라고 말하는 것이 아니라, “먼저 10에 2를 곱해서 20을 만들고, 여기에 다시 10을 더하면 30이 됩니다”처럼 풀이 과정을 자세히 설명한 뒤 최종 답을 내놓는 것이죠. 이렇게 하면 중간에 실수가 생겼을 때도 쉽게 찾아내고 더 정확한 답을 얻을 수 있습니다.
복잡한 문제를 만났을 때, 단 한 번의 답을 바로 내는 대신 여러 번의 과정을 거쳐 답을 점점 더 정확하게 만드는 방식도 있습니다. 이것은 사람이 시험 문제를 풀 때 처음 나온 답을 바로 제출하지 않고 다시 한번 검토하거나 계산을 여러 번 해보면서 점점 정확한 답을 찾는 것과 비슷합니다. 이를 ‘자기 반성(self-refinement)’ 구조라고도 부르며, 인공지능이 사람처럼 한 번 더 고민하고 자신의 답을 다시 확인하는 과정이 가능하도록 설계된 방식입니다.
이런 방식은 이미 강화학습을 사용하는 시스템에서도 널리 활용되었습니다. 예를 들어 유명한 인공지능 바둑 프로그램인 알파고(AlphaGo)는 다음 수를 결정할 때, 수천 번의 가상 게임을 스스로 반복하며 가장 이길 확률이 높은 수를 선택했습니다. 이것은 마치 바둑 고수가 머릿속으로 다음 수를 두기 전에 가능한 여러 수를 미리 생각해보고 가장 좋은 수를 결정하는 것과 같습니다. 이렇게 계산을 여러 번 더 반복하고 더 꼼꼼하게 고민하는 과정이 결과를 훨씬 더 좋게 만드는 중요한 방법이 될 수 있다는 것입니다.
즉, 모델 자체를 다시 학습시키지 않고도, 이미 학습된 모델에서 추론 단계의 계산 방식을 좀 더 세밀하게 설계하는 것만으로도 성능을 높일 수 있는 길이 열리는 것입니다. 특히 모델을 더 크게 만들기 어렵거나, 사용할 수 있는 자원이 제한되어 있는 환경에서는 이렇게 ‘추론 단계 계산 확장’ 전략이 매우 유용한 대안이 될 수 있습니다.
안정적인 학습을 위한 정규화 기법의 역할
딥러닝 모델이 점점 더 깊어지고 복잡해지면서 새로운 문제가 나타났습니다. 층이 깊어질수록, 각 층에서 만들어지는 값들이 일정하게 유지되지 않고 점점 커지거나 작아져 학습에 어려움을 주기 시작한 것입니다. 쉽게 말하자면, 선생님이 수업을 할 때 처음에는 적당한 수준으로 시작했지만, 점점 수업이 진행될수록 난이도가 너무 높아지거나 너무 쉬워져서 학생들이 수업 내용을 제대로 따라가지 못하는 상황이 생긴 것과 비슷합니다.
이렇게 값들의 크기가 불안정하면 인공지능 모델의 학습 속도가 느려지거나, 심지어 전혀 학습하지 못하는 경우도 생기게 됩니다. 이런 문제를 해결하기 위해 등장한 개념이 바로 정규화(normalization)입니다.
정규화는 모델의 각 층에서 나오는 값들이 너무 커지거나 작아지지 않고 적당한 수준에서 유지되도록 도와주는 방법입니다. 선생님이 수업 난이도를 학생들이 이해할 수 있는 적당한 수준으로 일정하게 맞춰주는 것과 같은 역할을 한다고 생각하면 이해하기 쉽습니다.
정규화 방식 중 가장 널리 사용되는 방법 중 하나는 배치 정규화(Batch Normalization)입니다. 배치 정규화는 한 번에 여러 데이터를 묶어서 처리하는 작은 그룹인 미니배치(mini-batch) 단위로 이루어집니다. 미니배치 안에서 나온 뉴런의 출력 값들을 평균이 0이고 분산이 1인 형태로 조정하는 것입니다. 다시 학교로 비유하면, 한 반의 학생들이 시험을 봤는데 학생마다 점수가 너무 달라 수업을 진행하기 어려운 경우에 선생님이 반 평균을 기준으로 점수를 다시 조정해서 모두 비슷한 범위로 맞추는 것과 비슷합니다.
하지만 이렇게 모든 값을 너무 비슷하게 맞추면, 원래 데이터의 고유한 특징이 사라질 수 있습니다. 그래서 배치 정규화에서는 두 가지 추가적인 학습 가능한 파라미터를 이용해, 모델이 스스로 조금씩 값을 다시 조정할 수 있도록 합니다. 마치 반 학생들의 점수를 비슷하게 맞춘 뒤에도, 학생들의 개인적인 노력이나 특성을 조금씩 더해서 개인의 개성을 유지하는 것과 같습니다.
이렇게 하면 각 층의 출력 값이 일정한 범위 내에 유지되면서 모델이 안정적으로 학습을 진행할 수 있게 됩니다. 그 덕분에 더 빠르게 학습이 이루어지고, 심지어 과적합(overfitting) 현상, 즉 특정 학습 데이터에만 지나치게 맞춰져서 새로운 데이터를 잘 다루지 못하는 문제도 어느 정도 완화할 수 있습니다.
하지만 배치 정규화에도 단점이 있습니다. 미니배치의 크기가 너무 작으면 오히려 효과가 떨어지거나, 학습이 불안정하게 될 수도 있습니다. 그래서 이런 단점을 보완하기 위해 다른 정규화 방법들도 제안되었습니다.
그 중 대표적인 방법이 레이어 정규화(Layer Normalization)입니다. 레이어 정규화는 미니배치 대신, 각 층의 모든 뉴런에서 나온 값 전체를 동시에 정규화하는 방법입니다. 그 외에도 층의 값을 여러 그룹으로 나누어 정규화하는 그룹 정규화(Group Normalization), 뉴런 하나하나마다 개별적으로 정규화하는 인스턴스 정규화(Instance Normalization) 등 다양한 방법들이 있습니다.
특히 최근 많이 사용되는 트랜스포머(Transformer) 구조에서는 배치 간의 정보를 공유하기 어렵다는 특성 때문에 레이어 정규화를 주로 사용하고 있습니다. 이렇게 모델의 구조나 특성에 따라 적합한 정규화 방법을 선택해서 사용하는 것입니다.
물론 최근에는 정규화 없이도 안정적인 학습이 가능하게 만드는 새로운 방법들도 연구되고 있습니다. 그러나 대부분의 딥러닝 모델에서 정규화는 여전히 매우 중요한 역할을 합니다. 모델이 깊어지고 복잡해질수록, 정규화는 더욱 중요한 역할을 맡아서 안정적인 학습을 돕는 핵심 요소로 자리 잡고 있습니다.
더 적은 연산으로 더 큰 표현력: 효율적인 레이어 설계
인공지능 모델을 무조건 크게 만드는 것이 항상 최선의 방법은 아닙니다. 특히 스마트폰이나 스마트워치처럼 크기가 작고 성능이 제한된 기기에서는 크고 복잡한 모델을 사용하기 어렵습니다. 이런 상황에서는 같은 성능을 유지하면서도 더 적은 계산만으로 좋은 결과를 낼 수 있는 효율적인 모델을 만드는 것이 중요합니다.
이런 이유로 최근에는 ’깊이 분리 합성곱(depthwise separable convolution)’이라는 기술이 널리 사용되고 있습니다. 이 기술을 이해하기 위해 먼저 기존의 합성곱(convolution)이 어떤 방식인지 간단히 살펴보겠습니다.
일반적인 합성곱 연산은 한 번에 이미지의 모든 채널(channel)을 동시에 처리하는 방식입니다. 채널이란 이미지가 가지고 있는 정보의 층을 말합니다. 예를 들어 컬러 사진은 보통 빨간색, 초록색, 파란색 이렇게 세 가지 색깔의 정보로 이루어져 있는데, 일반 합성곱은 이 세 가지 정보를 동시에 모두 다 계산합니다. 이 방식은 정확한 결과를 얻을 수 있지만, 계산량이 너무 많아 스마트폰이나 작은 기기에서는 효율이 떨어질 수 있습니다.
반면 깊이 분리 합성곱은 이 계산 과정을 두 단계로 나누어서 진행합니다. 먼저 첫 번째 단계에서는 각 채널을 독립적으로 따로따로 처리합니다. 쉽게 말해, 빨간색, 초록색, 파란색 채널을 각각 따로 분석하는 것입니다. 마치 문제를 풀 때 한꺼번에 여러 문제를 동시에 생각하는 대신, 각 문제를 따로따로 차례로 푸는 것과 비슷한 방식입니다. 그리고 두 번째 단계에서는 이렇게 따로 처리한 결과를 모아, 한 번에 다시 정리해주는 ‘1×1 합성곱’을 진행합니다. 이것은 마치 각 문제를 따로 푼 후, 마지막에 종합 정리하여 전체 답을 한꺼번에 내놓는 것과 같습니다.
이렇게 두 단계로 나누어 계산하면, 한꺼번에 모든 채널을 계산하는 방식보다 훨씬 적은 계산량만으로도 비슷한 수준의 결과를 얻을 수 있습니다. 실제로 이 방법을 성공적으로 사용한 사례가 MobileNet이라는 모델입니다. MobileNet은 스마트폰이나 작은 기기에서도 인공지능이 잘 작동할 수 있도록 만든 모델로, 계산 효율이 뛰어나 여러 앱이나 기기에서 실제로 사용되고 있습니다.
이 외에도 효율성을 높이는 다양한 방법이 있습니다. 그중 하나가 ’그룹 합성곱(group convolution)’이라는 방식입니다. 이것은 입력된 채널을 몇 개의 작은 그룹으로 나누고, 각 그룹 안에서만 따로 계산을 수행하는 방식입니다. 쉽게 말하면, 반 전체가 같은 문제를 한 번에 푸는 대신, 작은 그룹별로 문제를 나눠서 각자 해결하는 방식입니다. 이렇게 하면 계산량을 줄이면서도 효율적으로 처리할 수 있습니다.
또 하나의 방식으로는 ’채널 셔플(channel shuffle)’이라는 방법이 있습니다. 이 방법은 각각의 그룹에서 계산한 정보를 서로 다른 그룹끼리 한번씩 섞어서 나누어주는 방식입니다. 예를 들어, 그룹으로 나눠서 공부한 뒤, 각 그룹의 학생들이 다시 한 번 섞여 다른 그룹의 학생들에게 자신들이 공부한 내용을 설명하고 공유하는 것과 비슷합니다. 이 과정을 통해 정보가 골고루 전달되어 성능이 더 좋아질 수 있습니다.
스마트폰처럼 계산 자원이 제한된 환경에는 무조건 모델을 작게 만드는 것이 아니라, 같은 성능을 내면서도 더 적은 계산만으로도 가능하도록 효율적인 구조를 만드는 것이 중요합니다.
분산 훈련과 연산 최적화: 실제 환경에서의 스케일링
최근 등장하는 인공지능 모델들은 크기가 엄청나게 커져서, 수억 개에서 심지어 수십억 개의 파라미터(parameter, 모델이 배우는 값)를 가지게 되었습니다. 이렇게 큰 모델은 하나의 컴퓨터나 GPU 하나로는 학습 자체가 어려워졌습니다. 마치 혼자서 수백 권의 책을 동시에 읽는 게 불가능하듯, 단 하나의 장비만으로는 모든 계산을 감당할 수 없기 때문입니다. 그래서 오늘날 대부분의 대형 딥러닝 학습은 여러 컴퓨터와 GPU를 연결해 함께 사용하는 ‘분산 훈련(distributed training)’ 방식으로 이루어지고 있습니다.
분산 훈련에서 가장 널리 사용되는 방식은 데이터 병렬화(data parallelism)입니다. 데이터 병렬화는 여러 개의 GPU가 똑같은 모델을 각각 가지고, 각자 다른 데이터들을 나누어 학습하는 방식입니다. 이것을 쉽게 말하면, 여러 명의 학생이 같은 시험 공부를 할 때 각자 다른 문제집을 풀고, 나중에 함께 모여서 정답을 비교하고 정보를 공유하는 것과 비슷합니다. 각 GPU가 계산한 결과(기울기, gradient)를 모아서 평균을 낸 후, 이를 바탕으로 모델을 업데이트합니다. 이 방식은 구조가 단순하고 여러 개의 GPU를 쉽게 추가할 수 있기 때문에 가장 널리 사용됩니다.
하지만 모델이 너무 커지면, GPU 하나에 모델 전체를 담을 수 없을 때도 생깁니다. 이때 필요한 것이 모델 병렬화(model parallelism)입니다. 모델 병렬화는 커다란 신경망을 여러 개의 부분으로 나누어 서로 다른 GPU에 저장하는 방식입니다. 마치 매우 두꺼운 책 한 권을 여러 권으로 나눠 각각 다른 사람에게 주고, 각자 맡은 부분만 집중해서 읽는 방식과 비슷합니다. 이 방법은 큰 모델을 효율적으로 학습할 수 있지만, 각각의 GPU 간의 계산을 맞추고 데이터를 주고받는 과정이 복잡하기 때문에, 서로 간의 조정과 통신이 잘 이루어지도록 세심한 관리가 필요합니다.
이런 복잡한 과정을 더 쉽게 도와주기 위한 도구들도 개발되고 있습니다. 대표적으로 DeepSpeed, Megatron-LM, FSDP(Fully Sharded Data Parallel)와 같은 기술들이 있습니다. 이 도구들은 커다란 모델을 여러 개의 작은 조각으로 잘게 나누어 각 장비에 분산 저장하고, 꼭 필요할 때만 정보를 교환하게 만들어 메모리를 효율적으로 관리합니다. 덕분에 큰 모델도 여러 장비에서 무리 없이 학습할 수 있도록 돕습니다.
한편, 모델이 학습을 끝낸 뒤 실제 환경에서 사용할 때는 학습할 때와는 또 다른 문제가 발생합니다. 스마트폰이나 웹서비스 같은 실제 환경에서는 추론(inference, 학습된 모델이 결과를 내놓는 과정)의 속도가 빠르고 메모리 사용이 적어야만 실용적이기 때문입니다. 이를 위해 다양한 연산 최적화 기법들이 사용되고 있습니다.
대표적으로 양자화(quantization)는 인공지능이 계산할 때 사용하는 숫자들을 간단하게 만들어 계산량과 메모리 사용량을 줄이는 방식입니다. 마치 소수점이 많이 붙은 복잡한 숫자 대신 간단히 정수로 계산하는 방식과 비슷합니다. 연산 단순화(operator fusion)는 여러 단계를 거쳐야 하는 복잡한 계산 과정을 하나의 간단한 단계로 묶어서 처리하는 방식입니다. 지연 계산(lazy execution)은 필요한 계산을 미리 모두 하지 않고, 꼭 필요한 순간이 될 때까지 기다렸다가 한번에 처리하는 방식입니다.
이러한 기법들은 이미 만들어진 모델의 구조를 크게 바꾸지 않으면서도 효율성을 높여줍니다. 덕분에 큰 모델도 모바일 기기나 클라우드 서비스에서 훨씬 빠르게 실행될 수 있습니다.
모델 확장의 그림자: 환경적 비용과 최적화의 필요성
딥러닝 모델의 크기가 점점 커지고 학습량도 많아지면서, 눈에 잘 보이지 않던 또 다른 문제가 점차 주목받기 시작했습니다. 바로 계산 자원의 과도한 소모와 그로 인한 환경적 부담입니다. 초대형 모델 하나를 학습하는 데 수십만 개에 이르는 GPU 시간이 소요되고, 이 과정에서 막대한 전기가 사용됩니다. 일부 연구에 따르면, 대규모 언어 모델을 한 번 학습시키는 데 소비되는 전력은 자동차 수십 대가 수년간 운행하면서 내뿜는 탄소 배출량과 맞먹는 수준이라고도 합니다.
이처럼 고성능 모델을 개발하는 데에는 상당한 자원이 필요하며, 이 자원은 환경적인 측면에서도, 비용적인 측면에서도 점차 큰 제약 요소가 되고 있습니다. 따라서 모델의 정확도를 높이는 것만큼이나, 동일한 성능을 더 적은 계산으로 달성할 수 있는 방법, 즉 효율적인 학습과 추론 전략이 무엇보다 중요해지고 있습니다. 학술적으로는 이러한 개념을 ‘계산 효율성(computational efficiency)’이라고 부르며, 최근에는 논문이나 연구 성과를 평가할 때 성능만큼이나 효율성도 중요한 기준으로 여겨지고 있습니다.
모델의 구조를 더욱 간결하게 설계하거나, 학습 방법을 개선하고, 불필요한 계산을 줄이는 알고리즘을 적용하는 모든 시도가 이러한 효율화를 위한 방향에서 이루어지고 있다고 볼 수 있습니다. 이제는 인공지능이 단지 정답을 잘 맞히는 기술을 넘어, 환경과 자원의 제약 속에서도 지속 가능하게 발전할 수 있는 길을 함께 고민해야 하는 시대로 접어들고 있습니다. 인공지능 개발자에게도 더 이상 성능만으로 모델을 평가하는 시대는 끝났다고 해도 과언이 아닙니다.
AI에 최적화된 연산 환경: 하드웨어와 추론 전략
지금까지 우리는 인공지능이 점점 더 크고 복잡한 모델을 만들어 성능을 높이는 방향으로 발전해 왔습니다. 하지만 이렇게 크고 복잡한 모델이 많아지면서 이전에는 잘 보이지 않던 새로운 문제가 점점 더 크게 주목받기 시작했습니다. 바로 엄청난 양의 계산과 전기 사용으로 인한 환경 문제입니다.
최근 등장한 초거대 모델들은 수십만 시간에 달하는 GPU 사용 시간이 필요합니다. GPU는 인공지능 모델이 계산을 할 때 사용하는 그래픽 처리 장치인데, 이런 GPU를 아주 오랜 시간 수백 개, 수천 개씩 사용하면 매우 많은 전기가 필요합니다. 일부 연구에 따르면 GPT-3와 같은 초대형 언어 모델을 딱 한 번 학습시키는 데 사용되는 전력은 자동차 수십 대가 몇 년 동안 운전하면서 배출하는 탄소의 양과 맞먹는다고 합니다. 쉽게 말해, 커다란 인공지능 모델 하나를 만드는 과정에서 환경에 주는 부담이 매우 크다는 것입니다.
이러한 고성능 인공지능 모델을 만들기 위해서는 엄청난 자원이 필요하고, 이렇게 사용된 자원은 환경적인 측면뿐 아니라 경제적인 비용 측면에서도 점점 더 큰 부담으로 작용하고 있습니다. 예를 들어 인공지능 모델을 학습시키기 위해 수천 대의 컴퓨터를 돌릴 때, 그 과정에서 발생하는 전기 요금과 탄소 배출 같은 문제가 점점 더 심각하게 인식되는 것이죠.
그래서 요즘은 단지 모델의 성능과 정확도를 높이는 것만큼이나 중요한 목표가 바로 효율성입니다. 효율성이란 똑같은 성능을 유지하면서도 훨씬 적은 자원과 계산만으로 인공지능 모델을 만들고 사용할 수 있는 능력을 말합니다. 학문적으로는 이것을 ‘계산 효율성(computational efficiency)’이라고 부르며, 최근에는 연구나 논문의 결과를 평가할 때 단순한 성능만큼이나 효율성을 함께 평가하는 경향이 뚜렷해지고 있습니다.
이러한 효율성을 높이기 위해 다양한 노력들이 진행되고 있습니다. 예를 들어 모델의 구조를 더 간단하고 작게 설계하거나, 학습 방법 자체를 개선하거나, 필요하지 않은 계산들을 최소화하는 알고리즘을 연구하는 것들이 바로 이런 노력들입니다. 쉽게 말하자면, 우리가 학교에서 공부할 때 무작정 많은 시간을 쓰기보다는, 같은 시간 안에 더 효율적이고 집중력 있게 공부해서 좋은 성적을 얻는 방법을 찾는 것과 비슷한 원리입니다.
이제 인공지능은 단순히 문제의 정답을 잘 맞히는 것뿐 아니라, 환경을 보호하면서 자원도 절약하는 방향으로 발전해야 하는 중요한 시점에 와 있습니다. 앞으로의 인공지능 개발자들은 단지 얼마나 뛰어난 성능을 내는 모델을 만드느냐가 아니라, 얼마나 환경 친화적이고 지속 가능한 방식으로 모델을 만들었는지에 대해서도 함께 고민해야 할 것입니다. 성능과 효율성이라는 두 가지 기준을 모두 만족시키는 인공지능을 만드는 것이 이제 우리가 풀어야 할 새로운 숙제가 된 것입니다.
계산 자원과 효율성의 균형 위에 선 인공지능
지금까지 이 장에서는 인공지능 모델을 어떻게 더 크고 강력하게 확장할 수 있는지, 또 그렇게 확장된 모델을 어떻게 현실에서 효율적으로 활용할 수 있는지 다양한 방향에서 살펴보았습니다. 모델의 깊이, 너비, 입력되는 데이터의 해상도, 계산량 같은 요소들은 이제 단순히 성능을 높이는 수단이 아니라, 실제 사용 환경에서의 자원과 시간, 데이터의 양, 환경적 영향까지도 함께 고민하면서 균형을 맞춰야 하는 대상이 되었습니다.
이러한 균형을 맞추기 위한 노력 속에서 여러 가지 중요한 기술들이 등장했습니다. EfficientNet이나 RegNet 같은 모델들은 크기와 정확성 사이에서 적절한 균형을 찾으며, 너무 복잡하지 않으면서도 뛰어난 성능을 달성했습니다. MobileNet이나 깊이 분리 합성곱(depthwise separable convolution)과 같은 기술들은 특히 스마트폰이나 소형 기기처럼 자원이 제한된 환경에서도 효과적으로 작동할 수 있는 가벼운 모델을 만드는 데 큰 도움을 주었습니다.
한편, 모델이 아주 커져 단 하나의 컴퓨터나 GPU만으로는 학습이 불가능해졌을 때는 분산 훈련(distributed training) 기술이 큰 역할을 했습니다. 여러 개의 컴퓨터나 GPU를 연결해 동시에 학습함으로써, 엄청나게 크고 복잡한 모델들도 학습할 수 있게 되었습니다. 그리고 모델을 실제로 사용할 때 필요한 빠른 실행 속도와 효율적인 메모리 사용을 위해 양자화(quantization), 연산 단순화(operator fusion) 같은 추론 최적화 기법들도 사용되기 시작했습니다. 덕분에 큰 모델이라도 스마트폰이나 인터넷 서비스와 같은 환경에서도 무리 없이 사용될 수 있게 되었습니다.
무엇보다 중요한 것은, 이 모든 기술들이 단지 인공지능 모델의 크기만 키우는 데 그치지 않았다는 점입니다. 같은 성능을 내더라도 더 빠르게, 더 적은 에너지와 비용으로, 더 안정적으로 작동하게 만들기 위한 노력들이 꾸준히 이어졌습니다. 이런 노력들이 하나의 큰 흐름으로 연결되면서, 지금 우리가 사용하는 인공지능 시스템의 핵심 원리를 만들어가고 있습니다.
앞으로의 인공지능 모델들은 분명 지금보다 더 크고, 더 뛰어난 성능을 갖게 될 것입니다. 하지만 동시에, 더 적은 자원으로 더 많은 일을 수행하고, 더 다양한 환경에서 쉽게 적용되며, 더 안전하고 환경을 생각하는 지속 가능한 방식으로 발전해야 할 것입니다.
결국 인공지능 모델의 스케일링(scaling)이란 단순히 크기를 키우는 기술이 아닙니다. 그것은 기술적인 발전뿐 아니라, 우리가 가진 자원과 환경, 사회적 영향까지 모두 고려하여 균형을 잡는 일입니다. 다시 말해, 인공지능이 기술과 사회 사이에서 어떤 균형을 추구할 것인가 하는 중요한 질문과 연결되어 있다고 할 수 있습니다.
[저작권자ⓒ META-X. 무단전재-재배포 금지]