LLM·트랜스포머

LLM / 31번째 글

오픈 웨이트 도전자들: Mistral, Qwen, DeepSeek

가중치를 열어 프런티어를 쫓은 세 팀을 한자리에 놓는다. 슬라이딩 윈도우와 MLA가 어텐션 비용을 깎는 방식, MoE가 46.7B와 671B에서 되풀이하는 같은 셈, DeepSeek-R1이 정답 여부라는 보상 하나로 추론을 얻은 과정을 숫자로 따라간다.

PALDYN Team42 MIN READ

지난 글에서 Meta의 LLaMA가 가중치 파일을 내놓는 것만으로 생태계 하나를 통째로 열어젖히는 것을 봤다. 그 문으로 들어온 팀이 셋이다. 프랑스의 Mistral AI, 알리바바 클라우드의 Qwen, 그리고 헤지펀드에서 갈라져 나온 DeepSeek이다.

셋을 한 편에 묶는 이유가 있다. 세 팀이 하는 이야기가 사실상 하나이기 때문이다 — 프런티어 모델을 가진 미국 기업보다 자금도 칩도 적은 쪽이, 가중치를 열어 배포하면서 아키텍처 효율로 격차를 메운다는 이야기다. 전략이 같으니 도구도 겹친다. Mixtral과 DeepSeek-V3는 둘 다 전문가 혼합을 쓰고, Mistral 7B와 Qwen의 작은 모델들은 둘 다 「같은 성능을 더 적은 파라미터로」를 노린다. 따로 읽으면 창업 연혁 셋을 세 번 읽게 되지만, 겹쳐 놓으면 같은 문제에 대한 세 벌의 답이 된다.

그래서 이 글은 팀별로 나누지 않는다. 어텐션을 깎는 자리, 파라미터를 나눠 켜는 자리, 강화학습으로 추론을 얻는 자리로 나누고, 그 안에서 세 팀이 무엇을 다르게 했는지 본다. GPT·Claude·Gemini·LLaMA를 이미 봤다면 여기서 대비가 가장 선명하다 — 앞의 넷은 「모델을 어떻게 크게 만드는가」의 이야기였고, 이 셋은 「같은 것을 얼마나 싸게 만드는가」의 이야기다.

개발사 배경

Mistral AI

Mistral AI는 2023년 4월, Arthur Mensch(Google DeepMind 연구원), Guillaume Lample, Timothée Lacroix(Meta AI 연구원) 세 명이 공동 창업했다. 창업하고 몇 주 만에 시드로 1억 500만 유로를 받아 유럽 초기 투자로는 역사상 최대 규모를 기록했다. 그때 이 회사에는 아직 내놓은 모델이 하나도 없었다. 회사 이름은 프랑스 남부를 가로지르는 강풍 「미스트랄」에서 따왔고, 창업자들의 주장은 처음부터 한 줄이었다. AI는 소수 미국 기업의 독점이 아니라 누구나 접근할 수 있는 것이어야 한다.

첫 제품은 논문도 블로그 포스트도 아니었다. 2023년 9월, Arthur Mensch가 「Torrent of Mistral 7B」라는 제목으로 매그넷 링크 하나를 올렸다. 설명도 벤치마크 표도 없이 가중치 파일만 있었다.

이 방식이 무엇을 뜻하는지는 당시의 관행과 견줘 보면 보인다. 그때 모델을 낸다는 것은 보통 논문과 데모 페이지, 그리고 대기자 명단을 뜻했다. 성능 주장을 검증하려면 회사가 열어 주는 창구를 통과해야 했다. 매그넷 링크는 그 창구를 통째로 없앤다 — 받은 사람이 그날 밤에 자기 벤치마크를 돌려 확인할 수 있고, 회사가 나중에 말을 바꿀 수도 없다. 여기서 오픈 웨이트(open weight)라는 말이 자리를 잡았다. 학습 코드와 데이터까지 공개하는 완전한 오픈소스와 달리, 학습이 끝난 가중치 파일만 내려받아 쓸 수 있게 여는 방식이다. 이 글의 세 팀이 모두 이 자리에 있다.

Qwen

Qwen(通义千问, 통의천문)은 2023년 알리바바 클라우드가 공개한 LLM 시리즈다. 「통의」는 알리바바의 AI 브랜드이고 「천문」은 천 가지 질문을 뜻한다.

Qwen의 출발점은 중국어와 영어를 함께 다루는 능력이다. 대부분의 서구 모델은 영어 데이터로 사전학습한 뒤 중국어를 뒤에 얹지만, Qwen은 중국어 데이터를 사전학습 단계에서부터 방대하게 넣었다. 이것은 아키텍처가 아니라 데이터 구성의 결과이고, 그래서 나중에 파인튜닝으로 따라잡기가 어렵다. 언어의 분포는 사전학습에서 정해지고 그 뒤 단계는 그 위에 얹히는 얇은 층이기 때문이다.

만드는 쪽이 클라우드 사업자라는 점도 모델의 성격을 정한다. Mistral과 DeepSeek에게 모델은 팔아야 하는 제품이지만, 알리바바 클라우드에게 모델은 클라우드 사용량을 만드는 미끼에 가깝다. 그래서 Qwen은 크기를 촘촘하게 나눠 내놓는 데 거리낌이 없다 — 어느 크기를 고르든 결국 자기네 GPU 위에서 돌면 되기 때문이다. 뒤에서 볼 Qwen의 크기 사다리가 그 사정에서 나온다.

DeepSeek

DeepSeek은 중국 최대 양적 헤지펀드 중 하나인 High-Flyer Quant의 AI 연구 부문이 2023년 독립해 세운 회사다. 금융 알고리즘을 최적화하며 쌓은 수학적 감각을 그대로 모델 학습에 가져왔다.

목표는 처음부터 좁게 잡혀 있었다. 제한된 GPU로 최고 성능을 낸다는 것이다. 미국의 반도체 수출 규제로 H100이나 A100 같은 최상위 가속기를 확보하기 어려운 상황에서, 알고리즘으로 컴퓨팅 효율을 끌어올리는 것이 선택이 아니라 생존 조건이었다.

여기서 세 팀이 겹치는 자리가 드러난다. 제약이 설계를 정한다. Mistral은 자금이 적어 작은 모델로 큰 모델을 이겨야 했고, DeepSeek은 칩이 적어 같은 결과를 더 적은 연산으로 내야 했다. 출발점이 달랐는데 손댄 부품이 같다 — 어텐션의 메모리와 파라미터의 활성 비율이다. 아래 두 절이 정확히 그 두 부품 이야기다.

세 팀의 제약과 대응

어텐션 최적화

세 팀이 처음 손댄 곳이 어텐션인 데는 이유가 있다. Transformer에서 컨텍스트 길이에 대해 제곱으로 자라는 부품은 셀프 어텐션 하나뿐이다. 나머지는 전부 길이에 비례해 늘 뿐이라, 컨텍스트를 늘리려는 순간 비용의 대부분이 이 한 자리에 몰린다.

슬라이딩 윈도우 어텐션

Sliding Window Attention(SWA)은 각 토큰이 바라보는 범위를 고정 크기의 윈도우로 자르는 방식이다. 표준 셀프 어텐션은 모든 이전 토큰을 봐야 하므로 O(n2)O(n^2) 이지만, 윈도우 크기를 ww 로 제한하면 O(n×w)O(n \times w) 가 된다. Mistral 7B는 w=4096w = 4096 을 썼다.

숫자를 넣어 보면 차이가 어디서 나는지 보인다. 시퀀스가 32,000 토큰이면 전체 어텐션이 다뤄야 하는 쌍은 대략 10억 개이고, 윈도우 4096으로 자르면 1억 3천만 개다 — 약 8분의 1이다. 그리고 이 비율은 시퀀스가 길어질수록 벌어진다. 윈도우는 고정이니 비용이 길이에 비례해서만 자라는 반면, 전체 어텐션은 제곱으로 자라기 때문이다.

Sliding Window Attention vs Full Attention

여기서 흔한 오해를 하나 짚어야 한다. 윈도우 밖의 토큰을 영원히 못 보는 것이 아니다. 층을 하나 지날 때마다 각 위치는 자기 윈도우 안의 토큰들을 흡수하고, 그 토큰들은 이미 자기 윈도우 안의 정보를 담고 있다. 그래서 유효 시야는 층을 쌓을수록 넓어진다 — 층이 32개고 윈도우가 4096이면 이론상 13만 토큰 앞의 정보까지 여러 홉을 거쳐 전달될 수 있다. 정보가 여러 층을 거치며 희석되므로 직접 보는 것과 같지는 않지만, 「4096자 넘으면 못 읽는다」는 이해는 틀렸다.

GQA

두 번째 손잡이는 Grouped Query Attention(GQA)이다. Multi-Head Attention에서는 헤드마다 독립적인 Key와 Value를 갖는다. GQA는 여러 쿼리 헤드가 하나의 Key-Value 쌍을 공유하게 묶는다. 쿼리 헤드가 32개인데 KV 그룹을 8개로 두면 저장할 KV가 4분의 1로 준다.

무엇이 줄어드는지 정확히 보려면 KV 캐시를 알아야 한다. 자기회귀 생성은 토큰을 하나씩 만들고, 매 스텝마다 앞의 모든 토큰에 어텐션한다. 앞 토큰들의 Key와 Value는 이미 계산해 둔 값이라 다시 만들 이유가 없으니 메모리에 들고 있는데, 그 메모리가 KV 캐시다(KV 캐시에서 따로 다뤘다).

이것이 왜 그대로 속도가 되는지가 중요하다. 토큰을 하나 만드는 디코딩 스텝은 연산이 아니라 메모리 대역폭에 묶여 있다. GPU는 곱셈을 할 힘이 남아도는데 가중치와 캐시를 메모리에서 읽어 오느라 기다린다. 캐시가 4분의 1로 줄면 스텝마다 읽어 올 바이트가 그만큼 줄고, 그 절감이 지연 시간에 거의 그대로 반영된다. 같은 GPU에 더 많은 요청을 동시에 물릴 수 있다는 뜻이기도 하다.

이 두 기법의 조합으로 Mistral 7B는 놀라운 결과를 냈다. 70억 파라미터 모델이 LLaMA 2 13B를 평가한 모든 벤치마크에서 앞질렀고, 추론·수학·코드 생성에서는 다섯 배 가까이 큰 LLaMA 1 34B까지 앞섰다. 라이선스는 Apache 2.0이라 상업적으로도 완전히 자유로웠다.

MLA

DeepSeek은 같은 문제를 다른 손잡이로 잡았다. MLA(Multi-head Latent Attention)는 2024년 5월의 DeepSeek-V2에서 나온 기법으로, Key와 Value를 그대로 저장하는 대신 저차원 잠재 벡터로 압축해 저장하고 쓸 때 복원한다. 논문은 앞 세대인 DeepSeek 67B와 견줘 KV 캐시 메모리가 93.3% 줄었다고 적었다.

GQA와 MLA를 나란히 놓으면 손잡이가 다른 것이 보인다. GQA는 KV의 개수를 줄이고, MLA는 KV 하나의 크기를 줄인다. 목표는 같지만 잃는 것이 다르다 — GQA는 헤드마다 달랐던 표현을 묶어 버리는 반면, MLA는 표현은 헤드별로 남기되 그것을 압축해 두었다가 편다.

DeepSeek이 여기에 공을 들인 이유는 API 가격표에 있다. 캐시가 작아지면 같은 GPU 메모리에 훨씬 많은 요청을 동시에 올릴 수 있고, GPU 한 장이 처리하는 요청 수가 늘면 요청당 원가가 그만큼 내려간다. DeepSeek-V2는 236B 파라미터 MoE 구조지만 추론 시 21B만 활성화되고, 위와 같은 비교에서 학습 비용은 42.5% 줄고 최대 생성 처리량은 5.76배가 됐다. 그 절감이 그대로 가격표로 내려왔다 — 그리고 절감의 상당 부분이 이 절과 다음 절의 두 기법에서 나왔다.

MoE

라우터와 전문가

2023년 12월, Mistral은 다시 한 번 예고 없이 모델을 공개했다. 이번엔 Mixtral 8x7B, 가중치가 열린 Sparse Mixture of Experts로는 사실상 처음인 모델이었다.

MoE(Mixture of Experts)는 하나의 거대한 Feed-Forward 층 대신 여러 개의 작은 전문가 네트워크를 두고, 토큰마다 그중 일부만 켜는 구조다. 어느 전문가를 켤지는 라우터가 정한다 — 토큰 하나마다 전문가별 점수를 매기고 상위 몇 개를 골라 그 출력을 가중합한다. Mixtral은 전문가가 8개이고 토큰마다 2개를 켠다.

Mistral 패밀리 모델 맵과 MoE 원리

숫자가 재미있는 지점이 있다. 8 곱하기 7B면 56B일 것 같은데 실제 총 파라미터는 46.7B다. 어텐션 층과 임베딩은 전문가마다 복제되지 않고 전체가 공유하기 때문이다. 나뉘는 것은 Feed-Forward 부분뿐이다. 추론 시 활성화되는 파라미터는 약 12.9B이고, 그래서 성능은 70B급인데 속도는 13B급이라는 조합이 나온다. Mistral의 발표대로라면 대부분의 벤치마크에서 LLaMA 2 70B를 앞서면서 추론은 6배 빨랐고, 표준 벤치마크 대부분에서 GPT-3.5와 동등하거나 그 이상이었다. 영어·프랑스어·이탈리아어·독일어·스페인어에서 고르게 잘했고 컨텍스트는 32K였다. 구조 자체는 MoE에서 더 파고들었다.

총 파라미터와 활성 파라미터

DeepSeek은 같은 셈을 훨씬 큰 눈금에서 되풀이했다. 2024년 12월의 DeepSeek-V3는 총 671B 파라미터 MoE 모델이고 추론 시 37B가 활성화된다.

모델 총 파라미터 활성 파라미터 비율
Mixtral 8x7B 46.7B 12.9B 3.6배
DeepSeek-V2 236B 21B 11배
DeepSeek-V3 671B 37B 18배

비율이 커질수록 무엇이 좋아지고 무엇이 나빠지는지가 이 표의 요점이다. 좋아지는 것은 연산이다 — 671B짜리 지식을 담고도 토큰 하나를 만드는 데 드는 곱셈은 37B 모델 수준이다. 나빠지는 것은 메모리다. 어느 전문가가 호출될지 미리 모르므로 671B 전부를 메모리에 올려 두어야 하고, 절반 정밀도로만 담아도 1테라바이트를 훌쩍 넘는다.

그래서 MoE는 연산을 메모리와 바꾸는 거래다. 이 거래가 이득인 쪽은 GPU를 여러 장 묶어 두고 요청을 많이 받는 서버이고, 손해인 쪽은 GPU 한두 장으로 자기 모델을 돌리려는 개인이다. 오픈 웨이트라는 말이 곧 「누구나 자기 노트북에서 돌릴 수 있다」는 뜻은 아니라는 것을 이 자리에서 알아 둬야 한다. DeepSeek-V3의 가중치는 실제로 누구나 내려받을 수 있지만, 그것을 돌릴 수 있는 사람은 그렇게 많지 않다.

훈련 비용

DeepSeek-V3에서 가장 많이 인용된 숫자는 성능이 아니라 훈련 비용이다. 논문은 전체 학습에 든 시간을 278만 8천 H800 GPU시간으로 적고, 비용을 약 557만 달러로 적었다.

이 값이 어떻게 나오는지 한 번 따라가 볼 만하다. 논문이 GPU 임대료를 시간당 2달러로 가정하고 그 시간을 곱한 값이다 — 278만 8천에 2를 곱하면 557만 6천이다. 그 시간의 대부분인 266만 4천 시간이 14.8조 토큰 사전학습에 들어갔고, 나머지는 컨텍스트 확장 11만 9천 시간과 사후 학습 5천 시간이다. 학습에 쓴 클러스터는 H800 2,048장이었고, 1조 토큰마다 18만 GPU시간이 드니 그 클러스터로 1조당 3.7일 — 사전학습 전체가 두 달이 채 안 되는 기간이었다.

여기서 조심할 것이 있다. 이 숫자는 마지막 한 번의 학습만 센 값이고, 그 앞의 실패한 실험, 데이터 수집과 정제, 연구 인건비는 들어 있지 않다. 논문 자체도 그렇게 밝혀 두었다. 그러니 「LLM을 557만 달러로 만들 수 있다」로 읽으면 틀린다. 맞게 읽으면 이렇다 — 무엇을 학습시킬지 이미 알고 있을 때, 그 학습 자체는 사람들이 생각하던 것보다 훨씬 쌌다. 그리고 그것만으로도 충분히 큰 소식이었다. 논문의 비교표에서 DeepSeek-V3는 같은 시기의 Claude 3.5 Sonnet이나 GPT-4o와 견줘 코딩·수학·추론 벤치마크에서 동급 이상을 보였다.

가문별 모델 목록

Mistral의 목록

Mistral의 목록은 여는 쪽과 닫는 쪽이 뚜렷하게 갈린다.

  • Mistral 7B(2023.09) — Apache 2.0으로 열었다. SWA와 GQA로 13B급을 넘어선 출발점이다.
  • Mixtral 8x7B(2023.12) — Apache 2.0으로 열었다. 오픈 웨이트로 나온 첫 Sparse MoE로 꼽힌다.
  • Mistral Large(2024.02) — 가중치를 공개하지 않는 API 전용 모델이다. 발표 당시 회사는 이 모델을 「API로 쓸 수 있는 모델 중 GPT-4 다음」이라고 자평했고, 영어·프랑스어·스페인어·독일어·이탈리아어에 유창하다고 밝혔다. La Plateforme이라는 자체 API 콘솔로 제공한다.
  • Le Chat — ChatGPT와 Claude에 대응하는 소비자용 대화 서비스다.
  • Codestral(2024.05) — 22B 코딩 특화 모델이다. 80개 이상의 프로그래밍 언어로 학습했고 Fill-in-the-Middle(FIM)을 지원한다. 앞뒤 코드를 모두 주고 가운데를 채우게 하는 방식이라, 커서 자리를 메우는 에디터 자동완성과 모양이 정확히 맞는다. 다만 가중치는 Apache 2.0이 아니라 비상업 라이선스로 나왔다 — 여기서 선이 한 번 더 갈린다.
  • Mistral NeMo 12B(2024.07) — NVIDIA와 함께 만들었고 Apache 2.0으로 열었다. 컨텍스트 창이 128K 토큰이라 당시 오픈 웨이트 12B급에서 가장 길었고, NVIDIA NeMo 프레임워크와 붙어 엔터프라이즈 환경에서 파인튜닝과 배포가 쉬웠다.

목록을 위에서 아래로 훑으면 선이 하나 보인다. 작은 모델은 Apache 2.0으로 열고, 가장 좋은 모델은 API 뒤에 둔다. 여는 것이 이념이 아니라 유통 전략이라는 뜻이다 — 작은 모델이 개발자의 손에 먼저 들어가 신뢰를 만들고, 그 신뢰가 큰 모델의 유료 호출로 이어진다.

Qwen의 크기 사다리

Qwen은 같은 선을 다른 자리에 그었다. 크기를 촘촘하게 나누는 쪽이다.

  • Qwen 1(2023) — 8월에 7B로 열고 9월에 14B, 11월에 72B를 차례로 더했다. 중국어 벤치마크에서 당시 최고 성능을 냈고 영어도 경쟁력 있는 수준이었다.
  • Qwen 1.5(2024.02부터) — 0.5B·1.8B·4B·7B·14B·32B·72B·110B 여덟 개 크기까지 벌렸다. 「갤럭시 모델」이라 불릴 만큼 스케일이 촘촘해 엣지 디바이스부터 서버까지 덮었다.
  • Qwen 2(2024.06) — 영어·중국어 말고도 27개 언어의 데이터로 학습해 스물아홉 개 언어를 덮었다. 아랍어·러시아어·한국어처럼 영어도 중국어도 아닌 언어에서 크게 올랐다.
  • Qwen 2.5(2024.09) — 72B 모델이 다섯 배 넘게 큰 LLaMA 3.1 405B와 겨루는 성능을 냈다고 발표했다. 코딩·수학·지시 따르기가 모두 올랐고 Coder와 Math 특화판이 함께 나왔다. 다만 이 세대에서 3B와 72B만 Apache 2.0이 아닌 자체 라이선스로 나왔다.
  • Qwen 3(2025) — 여러 크기와 MoE 버전을 함께 제공하며 상위권 벤치마크에서 경쟁력을 유지했다.

크기의 사다리가 왜 값을 갖는지는 개발 과정을 떠올려 보면 분명하다. 같은 데이터와 같은 레시피로 만든 여러 크기가 한 가문 안에 있으면, 프로토타입은 0.5B로 빠르게 돌려 보고 운영은 32B로 옮기는 일이 프롬프트를 다시 쓰지 않고도 된다. 채팅 템플릿이 같고 토크나이저가 같고 지시를 따르는 버릇이 비슷하기 때문이다. 다른 가문으로 옮기면 그 셋이 전부 달라진다. 가문을 고른다는 것은 사실 이 사다리를 고르는 일이다.

곁가지도 넓다. Qwen-VL이 이미지를 받고 Qwen-Audio가 소리를 받는다. 배포 경로는 둘인데, 오픈 웨이트는 HuggingFace와 ModelScope에서 내려받고 상업 API는 DashScope로 부른다. ModelScope는 알리바바가 운영하는 중국판 HuggingFace라 보면 되고, 중국 안에서는 이쪽이 훨씬 빠르다. API 쪽 이름은 가중치 목록과 다르게 붙는다는 점만 알아 두면 된다 — qwen-max·qwen-plus·qwen-turbo처럼 파라미터 수가 아니라 등급으로 갈라 부르므로, 사다리를 오르내리는 감각이 오픈 웨이트 쪽과 다르다.

코딩·수학 특화 모델

세 가문이 특화 모델을 만든 방향이 신기하게 같다. Mistral은 Codestral, Qwen은 Qwen2.5-Coder와 Qwen2.5-Math, DeepSeek은 DeepSeek-Coder와 수학 특화 모델을 냈다. 하필 코드와 수학인 데는 이유가 있다.

채점이 자동으로 되는 도메인이기 때문이다. 코드는 돌려서 테스트를 통과하는지 보면 되고, 수학 문제는 답이 하나로 정해진다. 에세이의 품질이나 상담 답변의 적절함은 사람이 읽어야 알지만 이 둘은 기계가 판정한다. 채점기가 있으면 두 가지가 따라온다. 첫째, 모델이 만든 답 중 맞은 것만 골라 학습 데이터로 되먹일 수 있다. 둘째, 맞고 틀림을 보상으로 삼아 강화학습을 붙일 수 있다.

두 번째가 다음 절의 이야기다. DeepSeek-R1은 이 자리에서 나왔다.

DeepSeek-R1

정답 기반 보상

2025년 1월에 공개된 DeepSeek-R1은 업계 전체를 흔들었다. OpenAI의 o1처럼 답하기 전에 「생각하는」 추론 모델인데, 흔든 것은 성능보다 만든 방법이었다.

Chain-of-Thought는 답만 내놓는 대신 중간 풀이를 토큰으로 적어 가며 푸는 방식이다. 그때까지 모델에게 이것을 가르치는 표준적인 길은 사람이 잘 쓴 풀이를 대량으로 모아 지도학습하는 것이었다. 논문이 먼저 보인 DeepSeek-R1-Zero는 그 데이터를 한 건도 쓰지 않았다. 사전학습된 DeepSeek-V3에 지도학습을 한 단계도 거치지 않고 강화학습만 걸었더니 추론이 창발했다.

보상 신호가 놀랄 만큼 단순하다. 수학 문제는 답이 맞으면 +1, 틀리면 0이다. 정해진 형식을 지키면 약간의 추가 보상이 붙는다. 사람의 피드백은 한 줄도 들어가지 않는다. 학습 알고리즘으로는 GRPO를 썼는데, 같은 문제에 대해 여러 답을 뽑아 그 묶음 안에서 상대적으로 좋은 답에 더 큰 가중치를 주는 방식이다(GRPO에서 따로 다뤘다).

이 방식이 큰 이유는 규모의 한계가 달라지기 때문이다. RLHF는 사람이 답 쌍을 비교해 선호를 매겨야 하므로 데이터의 양이 결국 사람 수와 시간에 묶인다. 채점 가능한 문제에서는 채점기가 그 자리를 대신하고, 그러면 학습 신호를 원하는 만큼 뽑아낼 수 있다. 앞 절에서 세 가문이 모두 코드와 수학으로 갈라진 것이 우연이 아니었다는 말이다.

생각 태그

결과가 재미있다. 모델은 스스로 생각하는 방법을 찾아냈다. <think>와 </think> 사이에 수백에서 수천 토큰의 내부 추론을 적고, 그 뒤에 최종 답을 내놓는다. 「1부터 100까지 홀수의 합」을 물으면 태그 안에서 홀수가 50개라는 것을 세고 등차수열 합 공식을 떠올려 계산한 뒤, 밖으로는 2500이라는 답만 내보내는 식이다. 아무도 그 형식을 가르치지 않았는데 정답률을 올리는 방향으로 밀다 보니 저절로 생겨났다.

DeepSeek-R1 추론 학습 파이프라인

뼈대는 세 단계다. 먼저 DeepSeek-V3라는 사전학습 모델이 있고, 거기에 GRPO 강화학습을 걸어 추론을 창발시키고, 마지막으로 거부 샘플링과 지도학습을 얹어 다듬는다. 거부 샘플링은 모델이 만든 답을 여러 개 뽑아 채점을 통과한 것만 골라 학습 데이터로 되먹이는 방식이다. 두 번째 단계에서 나온 것이 R1-Zero인데, 추론은 잘하지만 언어가 섞이거나 읽기 나쁜 문제가 있었고 세 번째 단계가 그것을 정리한다. 실제로 배포된 R1은 여기에 손을 더 댔다 — 긴 사고 과정 예시를 소량 먹여 시작점을 잡는 콜드 스타트 단계가 강화학습 앞에 붙고, 다듬은 뒤 한 번 더 강화학습이 온다. 창발이 일어난 자리를 보려면 위의 세 단계면 충분하다.

API에서도 이 구조가 그대로 보인다. 사고 과정과 최종 답이 다른 필드로 나뉘어 온다.

from openai import OpenAI

client = OpenAI(api_key="YOUR_DEEPSEEK_API_KEY",
                base_url="https://api.deepseek.com")

resp = client.chat.completions.create(
    model="deepseek-reasoner",
    messages=[{"role": "user", "content": "밀러-라빈 소수판별법의 원리를 설명해줘."}],
)

print(resp.choices[0].message.reasoning_content)   # 태그 안쪽 — 사고 과정
print(resp.choices[0].message.content)             # 태그 바깥 — 최종 답변

둘이 갈려 오는 것은 화면 설계에 그대로 영향을 준다. 사고 과정은 접어 두고 최종 답만 보이다가 사용자가 펼치면 보여 주는 식이 되고, 토큰 과금도 두 몫이 함께 나간다. 추론 모델 전반의 사정은 추론 모델에서 정리했다.

벤치마크와 시장 반응

성능 숫자가 반응을 만들었다. AIME 2024에서 pass@1 79.8%를 받아 o1-1217의 79.2%와 동급이었다. AIME는 미국 고등학생 대상 수학 경시로, 답이 정수 하나라 채점이 명확한 대신 문제가 매우 어렵다. SWE-bench Verified에서는 49.2%로 역시 o1-1217의 48.9%를 근소하게 앞섰다. 이쪽은 실제 GitHub 이슈를 주고 저장소를 고쳐 테스트를 통과시키게 하는 벤치마크다. 다만 같은 표에서 Claude 3.5 Sonnet이 50.8%로 더 높았다는 것도 함께 봐야 한다 — R1이 모든 자리에서 앞선 것은 아니다. 그리고 라이선스가 MIT였다 — 가중치를 받아 상업적으로 쓰는 데 아무 제약이 없다.

R1은 2025년 1월 20일에 나왔고, 일주일 뒤인 1월 27일에 미국 AI 관련 주식이 떨어졌다. NVIDIA가 그날 17% 빠져 하루 시가총액 감소로는 기록적인 값이 됐다. 논리는 이랬다. 적은 GPU로 최고 성능이 나온다면, 대규모 GPU 투자가 프런티어의 필수 조건이라는 전제가 흔들린다.

다만 이 반응은 절반만 맞다. R1은 GPU 없이 만들어진 것이 아니다. 671B 파라미터의 DeepSeek-V3라는 사전학습 모델이 먼저 있어야 그 위에 얹히는 단계였고, 그 사전학습에만 266만 GPU시간이 들어갔다. 싸진 것은 사전학습이 아니라 이미 있는 모델 위에 추론을 붙이는 단계다. 이 구분은 실무에서도 쓸모가 있다 — 자기 도메인에 추론 능력을 붙이고 싶다면 밑바닥부터 학습할 이유가 없고, 채점 가능한 문제를 모으는 것이 먼저다.

선택과 실행

가문별 강점

셋을 다 보고 나면 고르는 기준이 꽤 단순해진다.

상황 고르는 것
중국어·한국어를 포함한 아시아권 다국어 서비스 Qwen
0.5B부터 110B까지 크기를 옮겨 다녀야 한다 Qwen
수학·코딩·논리 추론이 핵심인 태스크 DeepSeek
사고 과정 자체를 화면에 보여 줄 필요가 있다 DeepSeek-R1
유럽 데이터 주권이 요구사항에 있다 Mistral
12B 이하 Apache 2.0 모델을 자체 호스팅한다 Mistral
에디터 자동완성처럼 가운데를 채워야 한다 Codestral

Qwen과 DeepSeek 비교

라이선스를 먼저 확인하는 습관이 중요하다. Mistral 7B와 NeMo, Mixtral은 Apache 2.0이고 DeepSeek-R1은 MIT라 사실상 제약이 없지만, 같은 Mistral의 Codestral은 비상업 라이선스이고 Qwen도 세대와 크기에 따라 자체 라이선스가 붙은 것이 있다. 오픈 웨이트라는 말이 라이선스를 보증하지는 않는다 — 가문 단위로 외우지 말고 모델 단위로 본다.

로컬 실행

작은 모델은 개인 장비에서 돈다. 가장 짧은 길은 llama.cpp와 Ollama다.

ollama run qwen2.5:7b
ollama run deepseek-r1:8b     # R1 자체가 아니라 증류판이다

두 번째 줄에 함정이 있다. deepseek-r1:8b는 R1이 아니다. 진짜 R1은 671B MoE라 개인 장비에 올라가지 않는다. 이 태그가 가리키는 것은 R1의 추론 흔적을 학습한 작은 모델이고, DeepSeek이 함께 공개한 증류판의 바탕은 Qwen2.5와 LLaMA다. 큰 모델의 출력을 작은 모델이 흉내 내게 학습시켜 능력을 옮기는 것을 증류(distillation)라 하고, 증류에서 따로 다뤘다. 성능은 원본보다 확실히 떨어지지만 노트북에서 돌아간다는 것이 값이다. 벤치마크 숫자를 인용할 때 이 둘을 섞으면 안 된다.

가중치를 직접 다루는 쪽도 세 가문이 똑같다. HuggingFace Transformers로 부르는 코드가 모델 이름만 다르다.

from transformers import AutoModelForCausalLM, AutoTokenizer

model_id = "mistralai/Mistral-7B-Instruct-v0.3"   # Qwen·DeepSeek도 같은 자리
tok = AutoTokenizer.from_pretrained(model_id)
model = AutoModelForCausalLM.from_pretrained(model_id, torch_dtype="auto",
                                             device_map="auto")

text = tok.apply_chat_template(
    [{"role": "user", "content": "파이썬 데코레이터로 캐싱을 구현해줘."}],
    tokenize=False, add_generation_prompt=True)
out = model.generate(**tok([text], return_tensors="pt").to(model.device),
                     max_new_tokens=512)
print(tok.decode(out[0], skip_special_tokens=True))

apply_chat_template을 거치는 줄이 중요하다. 인스트럭트 모델은 저마다 다른 특수 토큰으로 역할을 표시하도록 학습되어 있어서, 그 형식을 맞추지 않고 평문을 그냥 넣으면 품질이 눈에 띄게 떨어진다. 오류는 나지 않고 답이 이상해질 뿐이라 원인을 찾기 어려운 자리다. 템플릿은 토크나이저가 들고 있으므로 모델을 바꾸면 저절로 따라온다 — 그래서 이 코드가 세 가문에 그대로 통한다.

오픈 웨이트의 의미

세 팀이 함께 증명한 것을 세 줄로 줄이면 이렇다.

파라미터 수가 값을 예측하지 못한다. 7B가 13B를 이기고 활성 37B가 프런티어와 겨룬다면, 「몇 B짜리인가」는 성능에 대해 별로 알려 주는 것이 없다. 이제 물어야 하는 것은 총 파라미터가 아니라 무엇이 켜지는가, 어텐션이 어떻게 잘려 있는가, 사후 학습에 무엇이 들어갔는가다.

AI 주권이 실제 수요를 만든다. Mistral의 유럽 고객은 성능만 보고 오지 않는다. 데이터가 EU 안에 머무는지, 규제가 바뀔 때 협상할 상대가 같은 관할권에 있는지가 조건에 들어 있다. Qwen이 중국 시장에서, DeepSeek이 수출 규제 아래에서 자리를 잡은 사정도 같은 종류다. 기술 경쟁이 아니라 제도가 만든 시장이다.

여는 것이 유통 전략으로 성립한다. 가중치를 무료로 풀고도 API와 클라우드와 엔터프라이즈 지원으로 돈을 벌 수 있다는 것이 이제 가설이 아니다. 다만 그 모델이 세 가문마다 조금씩 다르다 — Mistral은 작은 것을 열고 큰 것을 닫았고, 알리바바는 열어서 클라우드로 끌어왔고, DeepSeek은 MIT로 전부 열고 압도적으로 싼 API를 붙였다.

여기까지가 세계 시장을 겨냥한 오픈 웨이트 이야기다. 그런데 같은 논리는 훨씬 좁은 자리에서도 성립한다. 언어 하나를 잘하는 것이 요구사항의 전부인 시장이 있고, 그 언어의 데이터를 가장 많이 가진 팀이 그 자리를 노린다. 다음 글에서는 한국어를 사전학습의 중심에 놓고 만들어진 모델들을 본다 — 토크나이저가 한국어를 몇 조각으로 쪼개는가라는, 이 글에서는 한 번도 문제가 되지 않았던 지점부터 이야기가 달라진다.


읽어주셔서 감사합니다. 😊

LATEST

LLM·트랜스포머의 최신 글

LLM·트랜스포머2026.08.14

작은 모델을 우리 일에 맞추는 법

파인튜닝이 실제로 고치는 것은 지식이 아니라 행동입니다. 데이터 몇 건이 필요한지, LoRA가 무엇을 바꾸는지, 학습 전에 무엇을 먼저 만들어야 하는지를 정리합니다.

15 MIN
LLM·트랜스포머2026.08.13

작은 모델로 내려도 되는지 판단하는 법

비용·지연·품질은 같은 방향으로 움직이지 않습니다. 폴백을 붙였을 때의 손익분기, 격차가 벌어지는 작업 유형, 그리고 내리기 전에 통과해야 할 네 관문을 정리합니다.

10 MIN
LLM·트랜스포머2026.08.13

작은 모델이 다시 쓸 만해진 이유

10억에서 100억 파라미터 사이의 모델이 다시 실무에 들어오고 있습니다. 무엇이 달라졌는지, 메모리는 어떻게 계산하는지, 무엇을 잘하고 무엇을 못하는지 정리합니다.

10 MIN