[Hacker News 요약] LLM 없이 작동하는 빠른 터미널 보조 도구 TERMy 공개
30
설명
개발자 gioblu는 LLM(거대 언어 모델) 없이도 자연어 명령을 처리할 수 있는 터미널 보조 도구 TERMy를 개발했습니다. 이는 최근 LLM 서비스의 가격 인상에 대한 대응으로 시작되었습니다.
TERMy는 1000줄 미만의 Python 코드로 작성되었으며, 2024년 7월부터 약 두 달간 개발되었습니다.
이 도구는 기존의 복잡한 NLU 프레임워크와 달리, 머신러닝이나 임베딩 없이 결정론적 방식으로 작동합니다.
### 배경 설명
최근 몇 년간 LLM 기반의 AI 보조 도구들이 개발자 워크플로우에 깊숙이 통합되었습니다. GitHub Copilot과 같은 서비스는 코드 작성, 제안, 그리고 간단한 명령 실행 등 다양한 작업을 지원하며 생산성 향상에 기여해왔습니다. 그러나 이러한 서비스들은 종종 상당한 비용을 발생시키며, 특히 반복적이고 사소한 작업에 대해서는 과도한 지출이라는 비판도 제기되고 있습니다. 이러한 배경 속에서, 개발자들은 LLM의 막대한 연산 능력과 비용 없이도 유사한 수준의 효율성을 달성할 수 있는 대안을 모색하기 시작했습니다.
LLM의 '환각' 현상이나 예측 불가능한 응답, 그리고 연산 자원의 낭비는 이러한 대안 모색의 중요한 동기가 되었습니다. 특히 2024년 7월경 AI 서비스들의 가격 인상은 많은 개발자들에게 자체적인 해결책을 강구하도록 자극했습니다. gioblu 역시 이러한 흐름 속에서, 개인 프로젝트에 집중할 수 있었던 두 달간의 시간을 활용하여 LLM에 의존하지 않는 터미널 보조 도구 개발에 착수했습니다. 그의 목표는 복잡한 자연어 요청을 빠르고 정확하게 처리하면서도, 비용 효율적이고 예측 가능한 시스템을 구축하는 것이었습니다.
### LLM 없이 터미널 보조 도구 개발 시도
개발자 gioblu는 LLM의 가격 인상과 과도한 자원 소모에 대한 문제의식에서 출발하여, 2024년 7월부터 개인 프로젝트로 터미널 보조 도구 개발을 시작했습니다. 그는 16GB RAM, NVIDIA GTX 1050 Ti (4GB VRAM), i7-4790K CPU를 갖춘 개인 컴퓨터 환경에서 LLM을 직접 훈련시키는 실험을 진행했습니다. NanoGPT와 유사한 100-200M 파라미터 모델부터 시작하여 플래시 어텐션, Mamba와 같은 최신 아키텍처까지 시도했지만, 결과는 만족스럽지 못했습니다. 모델들은 반복적인 문장 생성, 부정확한 답변, 그리고 예측 불가능한 동작을 보였으며, 이는 LLM의 비효율성과 예측 불가능성을 다시 한번 확인시켜 주었습니다. Project Gutenberg의 책, 오픈소스 소프트웨어, Huggingface의 다양한 데이터셋으로 모델을 훈련시켰음에도 불구하고, 이러한 시도는 상당한 시간과 자원 낭비로 이어졌습니다.
### 결정론적 접근 방식: NPC-Forge와 TERMy
LLM 기반 접근 방식의 한계를 깨달은 개발자는 '결정론적' 접근 방식으로 전환했습니다. 이는 임베딩이나 머신러닝 없이, 미리 정의된 규칙과 데이터 구조에 기반하여 작동하는 방식입니다. 이 과정에서 NPC-Forge라는 프레임워크가 개발되었으며, 이는 'NPC-Forge Dataset Format (NDF 0.0)'이라는 데이터 형식을 정의합니다. 이 형식은 카테고리, 입력 문장, 텍스트 응답, 사고 과정, 권한 제어, 도구 호출 등을 포함하는 자체 포함된 지식 단위로 구성됩니다. 예를 들어, 'ls -lah'와 같은 터미널 명령을 실행하는 'list files' 요청은 JSON 객체로 명확하게 정의될 수 있습니다. 또한, 'create file test.txt'와 같은 명령에서 'test.txt'와 같은 변수를 추출하기 위해 'intent', 'type', 'structure', 'tag' 등의 개념을 활용한 템플릿 매칭 방식을 도입했습니다. 이러한 구조는 Neo가 매트릭스에서 주짓수를 배우듯, 새로운 명령어를 즉시 학습시킬 수 있는 유연성을 제공합니다.
### TERMy의 작동 방식 및 안전성
TERMy는 FlintParser와 FlintNPC 클래스를 통해 NLU 파이프라인을 구현합니다. 이 파이프라인은 불필요한 단어 제거, 감정 분석, 정확한 일치, 템플릿 일치, 확률적 일치 등의 단계를 거쳐 자연어 요청을 해석합니다. 특히, 템플릿 매칭 단계에서는 태그와 정규 표현식을 사용하여 입력 문장에서 필요한 정보를 추출합니다. 예를 들어, '<||vocab_create||>'와 같은 태그는 'create', 'make', 'generate'와 같은 동의어를 나타내며, '<||filename||>' 태그는 파일명을 인식하는 정규 표현식과 연결됩니다. 이러한 결정론적 접근 방식은 예측 가능하고 안전한 시스템 구축을 가능하게 합니다. 특히, 잠재적으로 위험한 명령에 대해 'permission': 'ask' 설정을 강제함으로써, 사용자 오류나 구현상의 버그로 인한 위험을 크게 완화했습니다. 이 시스템은 Python과 JavaScript로 구현되어 로컬 OS 환경뿐만 아니라 브라우저에서도 실행 가능합니다.
### 기존 NLU 프레임워크와의 비교
TERMy와 NPC-Forge는 Rasa나 NLP.js와 같은 기존의 머신러닝 기반 NLU 프레임워크와는 근본적으로 다릅니다. Rasa와 NLP.js는 복잡한 훈련 파이프라인과 머신러닝 모델에 의존하는 반면, NPC-Forge는 제로 훈련(zero-training)을 요구하며, 강력하고 유연한 데이터 형식과 함께 매우 작고 효율적인 파서를 제공합니다. ChatScript와 같은 다른 프레임워크도 존재하지만, NPC-Forge는 훨씬 가볍고 접근성이 뛰어납니다. NPC-Forge는 훈련 과정 없이도 강력한 기능을 수행할 수 있으며, 그 파서의 크기는 마이크로컨트롤러에서도 실행될 수 있을 정도로 작습니다. 이는 기존의 무겁고 복잡한 NLU 솔루션에 대한 실용적인 대안을 제시하며, 개발자들에게 더 큰 자유와 효율성을 제공할 수 있습니다.
### 가치와 인사이트
TERMy의 개발은 LLM에 대한 의존도를 줄이고, 비용 효율적이며 예측 가능한 AI 기반 도구를 구축할 수 있다는 가능성을 보여줍니다. 이는 특히 예산이 제한적이거나, 높은 수준의 예측 가능성이 요구되는 환경에서 큰 가치를 가집니다. 또한, NPC-Forge의 데이터 형식은 지식 단위를 명확하게 정의하고 공유할 수 있게 하여, 커뮤니티 기반의 지식 확장과 협업을 촉진할 수 있습니다. 결정론적 접근 방식은 AI 시스템의 투명성과 신뢰성을 높이는 데 기여하며, 개발자들에게 AI의 작동 원리를 더 깊이 이해할 기회를 제공합니다. 이는 단순히 도구를 넘어, AI 개발의 새로운 패러다임을 제시할 수 있습니다.
### 기술·메타
- Python
- JavaScript
- NDF 0.0 (NPC-Forge Dataset Format)
- FlintParser, FlintNPC 클래스
- IDF (Inverse Document Frequency)
- BOW (Bag Of Words)
- Levenshtein distance
### 향후 전망
TERMy와 NPC-Forge의 향후 발전은 커뮤니티의 참여에 크게 달려 있습니다. 개발자는 이 프로젝트가 '프로덕션 레디' 상태는 아니며, 데이터셋과 소스 코드에 대한 상당한 개선이 필요함을 인정했습니다. 특히, 다양한 Linux 환경에서의 호환성, 명령어 체인의 안전성 강화, 그리고 더 광범위한 작업에 대한 지원이 필요합니다. 만약 커뮤니티가 NPC-Forge와 TERMy에 집중한다면, 이들은 LLM의 대안으로서 더욱 강력한 경쟁력을 갖추게 될 것입니다. 또한, 기업용 AI 서비스들이 TERMy와 같은 결정론적 NPC를 활용하여 비용을 절감하고, LLM은 복잡하고 창의적인 작업에만 제한적으로 사용하는 방식이 보편화될 가능성이 있습니다. 이는 AI 기술의 민주화와 지속 가능한 발전에 기여할 수 있습니다.
📝 원문 및 참고
- Source: Hacker News
- 토론(HN): [news.ycombinator.com](https://news.ycombinator.com/item?id=49562219)
- 원문: [링크 열기](https://github.com/gioblu/NPC-Forge/blob/main/docs/development.md)
---
출처: Hacker News · [원문 링크](https://github.com/gioblu/NPC-Forge/blob/main/docs/development.md)
이 글에 대한 한 줄 의견
신고 · 불법·유해·아동 안전(CSAE) 관련 콘텐츠

댓글 0
아직 댓글이 없습니다. 로그인하면 바로 의견을 남길 수 있습니다.