llama.cpp용 Qwen-3.8-Next-Flash Ngram 핫스왑 가능 지식 주입기
Qwen-3.8-Next-Flash Ngram Hot-Swappable Knowledge Injector for llama.cpp
핵심 요약
llama.cpp의 Ngram PLE 테이블을 수정해 모델 재로딩 없이 실시간으로 지식을 주입하는 기술을 구현함.
- 실시간 지식 주입 — 모델을 다시 불러올 필요 없이 Ngram 테이블을 수정해 데이터를 즉시 반영함
- llama.cpp 수정 — 메모리 내에서 PLE 테이블을 직접 패치할 수 있도록 기능을 구현함
- 잠재적 활용성 — 저비용 학습이나 장기 기억을 가진 모델을 만드는 새로운 방식으로 주목받음
- 기술적 한계 — 현재는 q8 양자화 환경에서만 테스트되었으며 복잡한 개념 매핑에 어려움이 있음
새로운 Qwen 아키텍처를 좀 살펴보다가, Ngram PLE 테이블을 수정해서 장기 지식 데이터베이스처럼 쓸 수 있지 않을까 하는 궁금증이 생겼음. 결론부터 말하자면, 몇 가지 제약은 있지만 가능하더라.
llama.cpp를 살짝 수정해서 메모리 상의 테이블을 직접 건드릴 수 있게 만들었음. 덕분에 모델을 다시 로드할 필요 없이 실시간으로 새로운 데이터를 패치할 수 있게 된 거지. PLE 테이블은 프롬프트마다 업데이트되니까, 이제 모델을 껐다 켤 필요 없이 테이블 일부를 바로바로 갈아끼울 수 있음.
물론 제약도 있음. 임베딩이 레이어 초반에 주입되는 방식이라 출력값을 완벽하게 제어하기는 좀 빡셈. 그래도 몇 가지 기술을 쓰면 예시처럼 간단한 수정만으로도 모델 출력을 어느 정도 입맛대로 조절할 수 있음.
레포지토리 두 개 만들어 놨음:
-
수정된 llama.cpp: https://github.com/ortegaalfredo/llama.cpp-NLTM
-
Ngram 지식 주입기 (테이블 패치를 만드는 컴파일러 같은 거): https://github.com/ortegaalfredo/ngram-knowledge-injector
프로젝트에 몇 가지 한계가 있는데, PLE 테이블을 메모리에 매핑해야 해서(llama.cpp 기본 방식임) 메모리를 좀 많이 먹음. 일단 q8 양자화로만 테스트해 봐서, 이거 돌려보려면 램 좀 넉넉해야 할 거임.
이게 저비용 학습의 새로운 방식이 될 수 있을까? 아마도? 지금 당장은 좀 까다롭긴 한데, 간단하게만 다듬으면 즉각적으로 핫스왑 가능한 장기 기억 장치를 가진 모델을 아주 쉽게 만들 수 있을 것 같음.

