한 개발자가 PyTorch나 TensorFlow 같은 머신러닝 프레임워크를 전혀 쓰지 않고, 러스트(Rust) 언어만으로 언어모델을 처음부터 구현한 프로젝트 PSSA를 공개했다. 더 눈에 띄는 부분은 구조다. 요즘 나오는 거의 모든 언어모델이 트랜스포머 구조를 쓰는 것과 달리, PSSA는 순환 상태 공간(recurrent state-space) 방식을 채택했다. 그런데 동일한 파라미터 수와 동일한 데이터로 비교했을 때, 트랜스포머보다 더 빨리 학습하고 같은 CPU에서 텍스트 생성 속도가 약 12배 빠르다는 결과를 내놓으면서 관심을 끌고 있다.
트랜스포머와 무엇이 다른가
트랜스포머는 문맥 안의 모든 토큰 쌍 사이의 관계를 계산하는 어텐션(attention) 구조를 쓴다. 이 때문에 문장이 길어질수록 연산량이 토큰 수의 제곱에 비례해서 늘어나고, 매 단계마다 전체 문맥을 다시 읽어야 한다.
PSSA는 이 방식을 쓰지 않는다. 텍스트를 한 번에 한 토큰씩, 왼쪽에서 오른쪽으로 한 번만 읽으면서 고정된 크기의 상태(state) 하나를 계속 이어서 들고 간다. 과거 문맥을 다시 읽는 대신, 별도로 마련된 에피소드 기억 저장소(episodic memory bank)에서 필요한 정보를 찾아 쓴다. 더 특이한 점은 모델이 실행되는 동안 자기 가중치의 일부를 스스로 다시 쓴다는 것이다. 이런 구조 덕분에 연산량이 토큰 길이에 선형으로만 증가한다는 게 제작자의 설명이다.
같은 조건에서 진행한 비교 실험 결과
제작자는 PSSA와 표준 트랜스포머 두 모델을 같은 말뭉치, 같은 토크나이저, 같은 옵티마이저 스케줄, 같은 시드, 같은 파라미터 수로 맞춰 학습시켰다. 정제된 WikiText-103 말뭉치 1270만 토큰을 사용한 결과, PSSA는 학습 크로스엔트로피 3.98을, 트랜스포머는 4.43을 기록했다. 퍼플렉시티로 환산하면 각각 53.7과 83.7로, 격차가 꽤 크다.
더 흥미로운 대목은 트랜스포머가 1270만 토큰 전체 예산을 다 써서 도달한 손실 수준을, PSSA는 약 200만 토큰 만에 이미 통과했다는 점이다. 두 모델의 학습 곡선은 학습 내내 한 번도 교차하지 않았다.
학습 손실만으로는 모델이 학습 데이터에 얼마나 잘 맞춰졌는지만 알 수 있기 때문에, 두 모델 모두 학습에 전혀 쓰이지 않은 19만 8939토큰 구간으로 별도 검증도 진행했다. PSSA 64개, 트랜스포머 43개 체크포인트를 9934토큰짜리 미검증 구간에서 평가한 결과, PSSA가 처음부터 끝까지 앞섰고 최종적으로 0.51 나트(nats) 낮은 손실로 마무리했다. 검증 구간에서의 격차(0.43 나트)가 학습 구간 격차와 거의 같다는 점에서, 제작자는 “PSSA가 데이터를 더 세게 암기한 게 아니라 더 잘 일반화한 것”이라고 해석했다.
생성 속도가 12배 빠른 이유
같은 CPU, 같은 프롬프트, 같은 샘플러 조건에서 200토큰을 생성했을 때 PSSA가 약 12배 빠른 속도를 보였다. 이는 구조적 차이에서 비롯된 결과다. 순환 모델은 고정 크기 상태만 들고 다니기 때문에 새 토큰 하나를 생성하는 비용이 이전까지 생성된 길이와 무관하게 일정하다. 반면 트랜스포머는 매 단계마다 전체 문맥을 다시 읽어야 하므로, 생성된 텍스트가 길어질수록 토큰 하나 생성하는 데 드는 비용도 함께 늘어난다.
실험 규모에 대한 솔직한 한계 고지
제작자는 이 결과를 과대 해석하지 말라고 스스로 못 박았다. 전체 학습은 몇 시간이면 세션이 끊기는 무료 호스팅 노트북의 보급형 GPU 한 장으로, 20만 토큰 단위 “링크”를 이어붙이는 방식으로 진행됐다. 이 정도 규모에서는 트랜스포머 대비 우위가 파라미터 수를 10배, 100배로 키워도 유지되는지, 메모리 뱅크가 대규모에서도 의미가 있는지, 최신 순환 모델 계열과 비교하면 어떤지 같은 핵심 질문에 답할 수 없다는 것이다. 이런 질문에 답하려면 실제 VRAM 용량을 갖춘 GPU에서 며칠 단위로 학습할 수 있는 환경이 필요하다고 밝혔다.
이 때문에 프로젝트는 컴퓨팅 자원 후원을 요청하고 있으며, 후원금은 오직 연산 자원 확보에만 쓰인다고 명시했다. 코드 기여도 받고 있는데, 커널 성능 개선, 최신 순환 모델과의 비교 베이스라인 구축, 다음 토큰 손실을 넘어서는 평가 방식 마련이 우선순위로 꼽혔다. 러스트로 작성된 만큼 직접 러스트 코드베이스를 다뤄볼 수 있다는 점도 특징이다.
한국 개발자 입장에서 살펴볼 점
PSSA는 아직 대규모 검증을 거치지 않은 초기 단계 실험 프로젝트다. 다만 트랜스포머 일색인 현재 언어모델 생태계에서, CPU 환경의 추론 속도와 학습 효율을 동시에 개선할 수 있는 대안 구조를 실제 코드와 수치로 제시했다는 점에서 참고할 가치가 있다. 특히 파이썬 기반 ML 프레임워크 의존 없이 러스트만으로 처음부터 구현했다는 점은, 경량 환경이나 임베디드·엣지 디바이스에서의 언어모델 활용을 고민하는 개발자에게 흥미로운 참고 사례가 될 수 있다. 다만 검증된 대규모 벤치마크가 아직 없으므로, 실제 프로덕션 적용보다는 구조와 아이디어를 살펴보는 수준에서 접근하는 것이 합리적이다.
원문: PSSA: A non-transformer language model written from scratch in Rust

답글 남기기