추론용 NPU로 325M 모델 학습, B200과 손실값 비슷
제조사 SDK가 추론용이라 수천 단계 만에 발산하던 학습을 VIDRAFT는 안정화해 약 나흘간 돌렸다. 손실값이 B200과 비슷하다면 학습용 GPU를 NPU로 바꿔도 된다는 뜻일까?

추론용 AI 반도체로 언어 모델을 처음부터 학습할 수 있다는 실험 결과가 나왔다. VIDRAFT는 10월 26일 공개한 VKORE-325M-NPU-Base에서 무작위로 초기화한 가중치를 NPU 위의 역전파로 학습했다고 밝혔다. 같은 출발점에서 학습한 NVIDIA B200 모델과 비교했을 때, 두 모델이 처음 보는 텍스트의 다음 바이트를 예측하는 손실은 거의 같았다. 모델이 얼마나 잘 학습됐는지를 비교한 결과이며, NPU가 B200보다 빠르거나 저렴하다는 측정 결과는 아니다. VIDRAFT 발표
추론용 ATOM-Max에 학습을 맡겼다는 의미
개발자는 GeekNews 게시글에서 사용 장비를 리벨리온의 ATOM-Max라고 밝혔다. 공개 모델 카드는 NPU 32칩과 B200 GPU 한 대를 학습 장비로 기재했다. 두 정보 모두 VIDRAFT가 공개한 실험 설명이다. 개발자 게시글
리벨리온의 개발자 문서는 ATOM-Max를 지원 장비로 안내하면서 현재 SDK는 추론용이며 미세조정을 지원하지 않는다고 설명한다. 일반적인 흐름은 다른 곳에서 학습한 모델을 컴파일해 NPU 실행 형식으로 만들고, 런타임으로 입력을 넣어 결과를 받는 방식이다. PyTorch 모델을 불러올 수 있다는 설명도 이 컴파일과 추론 경로에 관한 것이어서, PyTorch의 학습 반복문이 그대로 실행된다는 의미는 아니다. 리벨리온 개발자 문서, SDK 빠른 시작
추론에서는 고정된 가중치로 입력을 계산해 다음 토큰의 확률을 얻는다. 학습은 그 확률과 실제 정답의 차이를 손실로 계산한 다음, 각 가중치가 손실에 얼마나 영향을 줬는지 역전파로 구한다. 옵티마이저는 이 기울기를 이용해 가중치를 바꾸고 다음 입력에서 같은 과정을 반복한다. 따라서 정방향 계산만 잘 돌아가는 것으로는 부족하다. 기울기 계산과 갱신에 필요한 상태를 다루면서 수만 번의 반복에도 계산이 불안정해지지 않아야 한다. PyTorch 자동 미분 설명
실제 상용 활용 사례도 추론에 맞춰져 있다. Red Hat은 5월 공개한 별도의 배포 안내에서 ATOM NPU를 OpenShift AI에 연결하고, 인증된 vLLM 컨테이너로 언어 모델을 서비스하는 과정을 설명했다. 이는 VKORE 팀과 별개의 사용 사례지만 리벨리온과 협력한 파트너의 자료다. NPU의 현재 소프트웨어 생태계가 어떤 작업을 지원하는지는 보여 주되, 이번 학습 결과를 독립 검증하지는 않는다. Red Hat 배포 사례
VIDRAFT가 새로 했다고 밝힌 일은 이 추론용 장비에서 전체 사전학습을 수행할 소프트웨어를 구성한 것이다. 발표에 따르면 초기 장시간 실험은 수천 단계까지 정상적으로 진행되다가 발산했고, 이를 안정화하는 작업이 필요했다. 최종 NPU 학습은 7만6292단계에 도달했으며 약 나흘이 걸렸다. 다만 안정화 기법과 학습 반복문은 특허 출원 중인 자체 기술이라는 이유로 공개하지 않았다. 제조사 SDK를 설치하면 같은 학습을 바로 따라 할 수 있는 상태는 아니다.
같은 모델을 학습한 비교와 서로 다른 장비 구성
이번 비교의 장점은 NPU에서 얻은 손실을 이름만 비슷한 다른 모델과 나란히 놓지 않았다는 점이다. 제작자는 B200에서도 같은 모델을 무작위 초기 가중치부터 학습했다. 데이터 파일과 배치 크기, 옵티마이저, 학습률 일정도 맞췄다. 다만 각 실행이 무작위로 뽑은 텍스트 조각을 읽는 순서는 달랐다고 설명한다. 초기 조건을 통제한 비교이지만 모든 단계에서 똑같은 입력이 들어간 실행은 아니다.
| 항목 | NPU 학습본 | B200 학습본 |
|---|---|---|
| 장비 | 추론용 NPU 32칩이다. | B200 GPU 한 대다. |
| 모델 | 매개변수 3억2560만 개, 20개 층이며 무작위 초기 가중치를 맞췄다. | |
| 학습 자료 | FineWeb-Edu sample/10BT의 000·001 조각으로 만든 6.94GB 바이트 파일이다. | |
| 배치와 학습량 | 단계당 6만5536 바이트 토큰, 전체 약 50억 바이트 토큰이다. | |
| 마지막 체크포인트 | 7만6292단계다. | 7만6293단계다. |
| 처리량·전체 소비전력·비용 | 동일 조건의 비교 수치가 공개되지 않았다. | |
NPU 32칩을 쓴 학습은 약 나흘이 걸렸지만, B200 실행의 소요 시간은 공개되지 않았다. 두 학습본의 최종 손실이 비슷해도 같은 시간 안에 수행할 수 있는 학습량까지 비교한 결과는 아닌 이유다. 칩마다 연산량·메모리·통신 구성이 달라 장비 수를 성능 비율로 환산할 수도 없다.
학습 장비를 구입하려는 팀에는 이 공백이 직접 영향을 준다. 같은 손실까지 도달하는 데 며칠이 걸리는지, 그동안 서버 전체가 얼마나 전력을 쓰는지, 학습 소프트웨어를 공급받을 수 있는지가 운영 비용을 바꾼다. 현재 공개 자료로 답할 수 있는 것은 이 작은 모델의 학습 결과가 비슷하다는 질문이다. B200을 대신할 장비 수나 절감액을 견적에 넣을 근거는 아직 제공되지 않았다.
평가 자료를 바꾼 뒤에도 비슷했던 손실
학습량 50억 바이트 토큰은 제작자 계산으로 전체 6.94GB 파일의 약 0.72회분이다. 이는 앞에서부터 72%를 한 번씩 읽었다는 뜻이 아니다. 파일 전체에서 무작위 창을 뽑았으므로 같은 위치를 다시 읽거나 어떤 위치는 읽지 않을 수 있다. 이 데이터 선택 방식이 초기 평가를 수정한 이유와 연결된다.
처음 모델 카드에 실린 평가는 학습 데이터 파일 끝부분에서 고정된 텍스트 조각 256개를 뽑아 계산한 것이었다. 카드에는 이를 학습에서 빼 둔 자료로 표현했지만, 실제 학습은 파일 전체에서 무작위 조각을 뽑았다. 끝부분도 학습에 노출됐을 수 있으므로, 모델이 처음 보는 자료에 대한 성능을 보여 주는 평가가 아니었다.
제작자는 이 설명을 수정하고, 학습 파일에 포함하지 않은 FineWeb-Edu의 013번 조각을 추가 평가에 사용했다. 새 평가는 같은 위치에서 뽑은 1024개의 창을 두 모델에 똑같이 넣었다. 공개 평가 코드는 각 창의 256개 바이트에 대해 다음 바이트를 예측하는 교차 엔트로피 손실을 계산한다. 표의 손실은 낮을수록 정답 바이트에 더 높은 확률을 줬다는 뜻이다. 수정된 모델 카드
| 평가 | NPU 학습본 | B200 학습본 |
|---|---|---|
| 미학습 조각의 1024개 창: 바이트당 손실이다. | 0.7993이다. | 0.7994다. |
| 같은 미학습 평가: 바이트당 비트 수다. | 1.1531이다. | 1.1533이다. |
| 학습 파일의 256개 창: 기존 평가 손실이다. | 0.8067이다. | 0.8070이다. |
NPU의 평균 손실은 0.0001 낮았고, 각 창의 차이로 계산한 평균 차이의 표준오차는 0.0007이었다. NPU 쪽 손실이 더 낮은 창은 50.1%였다. 이 결과는 어느 쪽이 더 우수한 언어 모델인지 순위를 매기기보다, 해당 평가에서 두 학습본의 예측 품질이 거의 같다는 해석을 뒷받침한다. 표준오차는 이 평가 창들의 차이에서 계산한 값이며, 여러 번 새로 학습해 얻은 변동폭은 아니다. 하드웨어별 학습은 한 시드의 결과다.
50억 토큰과 256 문맥을 읽는 방법
VKORE의 토큰은 단어나 단어 조각이 아니라 UTF-8 바이트다. 가능한 토큰 값이 256개이고, 문맥 길이 256도 바이트 토큰 기준이다. 영어의 기본 ASCII 문자 하나는 보통 한 바이트지만 한글 음절은 UTF-8에서 일반적으로 세 바이트를 쓴다. 같은 256토큰이라고 해도 일반적인 대화형 모델이 사용하는 토크나이저의 256토큰과 담을 수 있는 글의 길이가 다르다. 공개 모델 설정
따라서 ‘50억 토큰을 학습했다’는 숫자를 다른 모델의 학습량과 그대로 나눠 볼 수 없다. 이번 실험에서는 바이트를 그대로 입력해 토크나이저 선택의 영향을 줄이고 두 장비의 학습본을 비교했다. 그러나 긴 문서의 앞뒤 내용을 연결하거나 여러 차례의 대화를 기억하는 능력까지 같은 평가에서 확인한 것은 아니다. 256바이트 창의 다음 바이트를 잘 예측하는지와 수십 페이지 문서를 요약하는지는 입력 길이와 필요한 능력이 다르다.
모델 파일이 LlamaForCausalLM 형식이라는 점도 용도에 영향을 준다. 이는 Transformers가 읽을 수 있는 모델 구현 형식을 뜻하며, Meta의 사전학습된 Llama 가중치에서 출발했다는 뜻이 아니다. VKORE는 처음부터 학습한 기초 모델이고 지시를 따르는 대화형 미세조정을 거치지 않았다. 업무용 챗봇이나 한국어 문서 도우미를 고르는 독자라면 손실표만으로 기존 서비스의 대체 후보에 넣을 단계는 아니다. 발표에 실린 짧은 생성 예시에서도 두 모델 모두 사실이 흔들리는 문장을 만든다.
공개 파일로 확인할 수 있는 것
공개 저장소의 루트에는 NPU 학습본이, b200_reference 하위 폴더에는 GPU 학습본이 있다. evaluate_unseen.py는 평가 자료의 013번 조각을 내려받아 시드 2026으로 같은 창을 뽑고, 두 모델의 손실과 창별 차이를 계산한다. 실행 장치는 CUDA를 사용할 수 있으면 GPU, 아니면 CPU를 선택한다. 이 코드는 NPU를 소유하지 않아도 저장된 가중치를 재평가할 수 있도록 구성돼 있다. 공개 평가 코드
가중치를 다시 평가하면 공개된 두 파일이 같은 텍스트에서 어떤 손실을 내는지 확인할 수 있다. 그러나 가중치만으로 학습 때 어느 장비가 각 연산을 수행했는지, 비공개 안정화 기법이 어떻게 작동했는지까지 재현할 수는 없다.
공개 결과물을 이용하는 가장 가까운 작업은 두 체크포인트를 같은 텍스트로 재평가하는 것이다. ATOM에서 새 모델을 학습하려면 비공개 학습 소프트웨어와 지원 조건이 추가로 필요하다. 기존 ATOM 장비를 학습에도 쓰려는 팀에는 이 소프트웨어의 제공 여부가 실제 도입을 가르는 조건으로 남는다.