Qwenputer 이후, 더 작은 모델로도 가능한지 궁금해서 Nemotron 3.5 Lightning의 가중치에 Forth 인터프리터를
요약
Nemotron 3.5 Lightning 모델을 활용하여 Forth 인터프리터를 구현한 연구입니다. 이 시스템은 모델이 생성하는 코드 블록을 순전파 과정마다 단계적으로 실행하며, 스택 관리를 위해 Mamba-2 상태를 사용합니다. LoRA 미세 조정을 통해 테스트 문제에서 높은 정확도 향상을 보였으며, 관련 레포지토리가 공개되었습니다.
핵심 포인트
- Forth의 RPN 특성이 LLM의 왼쪽->오른쪽 생성 순서에 적합하게 활용됨.
- 스택 관리를 위해 Mamba-2 상태를 사용했으며, bf16 정밀도 제한을 준수함.
- LoRA 미세 조정을 통해 테스트 문제에서 점수가 79.1%에서 92.1%로 향상됨.
- 전체 순전파 과정 비용 때문에 일반적인 도구 호출 방식보다 느림.
저는 HP 계산기에서 RPN(Reverse Polish Notation)을 배웠고, 나중에 엄밀히 필요하지 않은 용도로 Forth를 사용하는 데 더 많은 시간을 보냈습니다. Qwenputer가 기계어를 언어 모델의 가중치로 컴파일하는 것을 보고 저는 두 가지 질문이 생겼습니다. 스택 언어가 그 아이디어에 잘 맞을까? 그리고 단지 3B개의 활성 파라미터만 가진 모델이 그런 기계를 구동할 수 있을까?
설정은 다음과 같습니다: NVIDIA Nemotron 3.5 Lightning (30B, 3B active)은 변경되지 않고 그대로 남아 있습니다. 같은 모델 내에서 이웃하여, 27개 레이어로 구성된 두 번째 네트워크가 존재합니다. 파이썬 스크립트가 이 가중치들을 계산했으며, 그 중 어느 것도 학습되지는 않았습니다. 이것은 Forth 인터프리터입니다. 모델은 일반 텍스트로 Forth 블록을 작성합니다. 인터프리터는 모델이 여전히 글을 쓰는 동안 각 단어(word)를 실행하며, 순전파(forward pass)마다 한 단계씩 진행됩니다. 블록 작성이 끝나면, 출력 결과를 모델의 다음 토큰으로 작성합니다. 도구 호출(tool call)은 발생하지 않으며, 생성도 멈추지 않습니다.
RPN이 여기에 잘 맞습니다. Forth 단어는 공백에서 끝나기 때문에, 기계는 전체 프로그램을 구문 분석할 필요 없이 다음 단어가 시작되는 즉시 그것을 실행할 수 있습니다. 피연산자는 연산자보다 앞에 오므로, 모델이 +를 작성할 때 이미 두 숫자가 스택에 올라와 있습니다. 이는 왼쪽에서 오른쪽으로 진행하는 모델이 어차피 쓰는 순서입니다. 스택 자체는 Mamba-2 상태(state)에 존재합니다. 한 항목은 하나의 행이며 20자리의 폭을 가지고 있고, 숫자를 팝(pop)한다는 것은 그 정확한 음수를 더한다는 의미입니다. 기계를 정확하게 구현하는 데 약간의 주의가 필요했습니다. bf16은 정수만 최대 256까지 정확하게 유지하므로, 기계 내부의 어떤 값도 이 값을 초과하지 않도록 했습니다. 모든 Mamba 감쇠율(decay)은 정확히 1로 설정되어 있어 아무것도 사라지지 않습니다. 기계의 내부 단계는 모델이 절대 사용하지 않고 빈 문자열로 디코드되는 982개의 예약된 토큰을 사용합니다.
테스트에서, 765,734개의 모든 기계 토큰은 파이썬 참조와 일치했습니다. 모델이 기계보다 더 어려웠습니다. 작은 Qwen 모델의 이전 버전은 기계를 정확하게 일치시켰지만, 그 모델은 그렇게 할 수 없었습니다. 기본 Lightning이 더 나았지만, 결과를 신뢰하지 않았습니다. 한 기록에서는 기계로부터 올바른 답을 얻었지만, 토큰이 바닥날 때까지 손으로 나눗셈을 시작했습니다.
기계가 사용 가능할 때도 쉬운 문제에서는 점수가 낮았습니다. LoRA 미세 조정(fine-tuning)을 통해 대부분의 문제가 해결되었습니다: 600문제로 구성된 별도 테스트에서 점수는 79.1%에서 92.1%로 향상되었습니다. Qwenputer의 산술 집합(arithmetic sets)에서는 결과가 혼재되어 있습니다. DeepMind 세트에서는 기본 Lightning과 대략적으로 비슷한 수준인데, 이는 30B 규모의 추론 모델이 기계를 거의 필요로 하지 않기 때문입니다. 긴 정수(long integers)의 경우, 제 기계는 20자리에서 멈추기 때문에 Python에 패배합니다. 이것은 연구 프로젝트이지 상용화 제품이 아닙니다. 모든 기계 단계마다 전체 순전파 과정(full forward pass) 비용이 들기 때문에 일반적인 도구 호출(tool call)이 훨씬 빠릅니다. 저는 Qwenputer 작업을 따라 하거나 NVIDIA 스택에서 유사한 것을 시도하고 싶은 사람들과 공유합니다. 레포지토리에는 다음 내용들이 포함되어 있습니다: - 커널 빌더와 그 패리티 테스트; - 하이브리드 Mamba/MoE 모델용 vLLM 플러그인; - NeMo AutoModel LoRA 레시피 및 훈련 데이터; - NVFP4, GGUF 및 MLX 빌드; - RL을 포함하여 작동하지 않은 내용에 대한 메모. 모든 것은 MIT 라이선스입니다. https://github.com/markab21/rpn-gpt Qwenputer 개발자들의 훌륭한 작업과 영감에 다시 한번 축하드리며 🤗, 커뮤니티와 작업을 공유해 주셔서 감사합니다. 이는 Forth로 실험하기 위한 훌륭한 출발점이었습니다. 프로젝트의 다음 단계는 NVIDIA의 Nemotron 3.5 Super가 어떻게 작동하는지 확인하고, 나아가 Ultra 가중치에서도 작동하도록 시도하는 것입니다. (저는 그렇게 큰 모델에 대해 미세 조정을 할 하드웨어가 없습니다.) /u/Mr_Finious 제출 [링크] [댓글]
AI 자동 생성 콘텐츠
본 콘텐츠는 Reddit AI Engineering의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.
원문 바로가기