TextRecast를 위한 하드웨어 인식형 멀티 모델 기반 구축
요약
오픈 소스 Windows 글쓰기 도우미인 TextRecast v0.2.0이 하드웨어 사양에 맞춰 최적의 로컬 모델을 자동 선택하는 멀티 모델 기반 구축을 완료했습니다. 벤더 중립적 어댑터 구조를 도입하여 다양한 소형 언어 모델(SLM) 지원이 가능해졌습니다.
핵심 포인트
- 사용자 하드웨어 성능에 따른 모델 자동/수동 선택 기능 지원
- 모델 어댑터 계약 도입으로 특정 모델 종속성 제거 및 확장성 확보
- 로컬 GGUF 모델 검증을 위한 자체 벤치마크 러너 및 평가 프로세스 구축
- Qwen 2.5 1.5B 모델 대상 자격 검증 결과 종합 점수 9.0/10 달성
TextRecast는 사용자의 컴퓨터에서 완전히 실행되는 언어 모델 (Language Model)을 사용하여 선택한 텍스트를 다시 작성해 주는 오픈 소스 Windows 글쓰기 도우미입니다.
클라우드 API, 별도의 Ollama 설치 또는 외부 모델 서비스가 필요하지 않습니다. 사용자는 다른 애플리케이션에서 텍스트를 선택하고 서식 지정 작업을 선택하면, TextRecast가 원래의 선택 영역을 생성된 결과물로 교체합니다.
최근 저는 TextRecast v0.2.0을 위해 계획된 모델 기반 구축을 완료했습니다.
TextRecast에 여러 모델이 필요한 이유
TextRecast는 현재 Qwen 2.5 1.5B Instruct를 사용합니다. 이는 유용한 결과를 생성하면서도 많은 Windows 컴퓨터에서 실행될 수 있을 만큼 충분히 작습니다.
하지만 하나의 모델이 모든 컴퓨터에 최상의 경험을 제공할 수는 없습니다.
경량 노트북은 더 작고 빠른 모델이 필요할 수 있는 반면, 메모리가 더 많은 시스템은 더 나은 출력 품질을 가진 더 큰 모델을 안전하게 실행할 수 있습니다.
따라서 v0.2.0의 목표는 다음을 지원하는 것입니다:
- 다양한 로컬 모델 제품군 (Model Families)
- 하드웨어 기반 자동 선택
- 수동 모델 선택
- 재개 및 검증 가능한 모델 다운로드
- 모델별 프롬프트 (Prompt) 및 생성 설정
- 반복 가능한 자격 검증 프로세스
아직 사용자에게 추가적인 모델이 공개되지는 않았습니다. 모델은 먼저 TextRecast의 자격 검증 프로세스를 통과해야 합니다.
벤더 중립적 모델 어댑터 (Vendor-neutral model adapters)
기존 구현에는 Qwen 및 그 ChatML 형식에 특화되어 설계된 동작이 포함되어 있었습니다.
이제 해당 동작은 모델 어댑터 계약 (Model Adapter Contract) 뒤로 분리되었습니다. 각 모델 제품군은 다음과 같은 항목을 자체적으로 정의할 수 있습니다:
- 프롬프트 형식 (Prompt format)
- 샘플링 구성 (Sampling configuration)
- 중단 시퀀스 (Stop sequences)
- 출력 정제 (Output cleanup)
- 예상 출력 길이
기존의 Qwen 동작은 변경되지 않고 유지되지만, 향후 모델들은 더 이상 메인 추론 워크플로우를 복사하거나 수정할 필요가 없습니다.
이를 통해 애플리케이션을 특정 벤더에 종속시키지 않고도 Phi, Granite, Ministral 또는 기타 적합한 소형 언어 모델 (Small Language Models)과 같은 모델 제품군을 지원하는 것이 가능해집니다.
로컬 모델 자격 검증
기존의 로컬 GGUF 모델을 테스트하는 개발 전용 벤치마크 러너 (benchmark runner)를 추가했습니다. 이 러너는 모델을 절대 다운로드하지 않으며, 배포되는 애플리케이션에서는 제외됩니다.
현재 코퍼스 (corpus)는 다음 항목들을 다룹니다:
- 글쓰기 개선 (Improve writing)
- 단축 (Shorten)
- 확장 (Lengthen)
- 요약 (Summarize)
- 지원되는 모든 톤 (Every supported tone)
- 짧음, 중간, 긴 텍스트 (Short, medium, and long text)
- 구두점이 많은 텍스트 (Punctuation-heavy text)
- 적대적 지시문 (Adversarial instructions)
- 영어, 힌디어, 스페인어, 프랑스어, 독일어 및 일본어
평가기 (evaluator)는 출력 존재 여부, 필수 정보, 길이, 반복, 프로토콜 유출 (protocol leakage) 및 언어 보존 여부를 확인합니다.
첫 번째 벤치마크 결과
현재 사용 중인 Qwen 2.5 1.5B 모델을 대상으로 자격 검증 스위트 (qualification suite)를 실행했습니다.
결과:
- 18개 케이스 완료
- 종합 점수 9.0/10
- 추론 실패 없음
- 프로토콜 유출 없음
- 반복 실패 없음
- 강력한 영어 성능
- 양호한 일본어 결과
또한 벤치마크를 통해 중요한 한계점이 드러났습니다. 힌디어, 스페인어, 프랑스어, 독일어 입력이 원래 언어를 보존하는 대신 영어로 번역되었습니다.
이것이 바로 프로젝트별 자격 검증 스위트가 가치 있는 이유입니다. 성능이 좋은 범용 모델 (general-purpose model)이 특정 애플리케이션에 자동으로 최적의 모델이 되는 것은 아닙니다.
이 점수는 TextRecast 전용 측정값이며, 보편적인 모델 벤치마크가 아닙니다.
하드웨어 인식형 권장 사항
이제 TextRecast는 다음 항목들을 검사할 수 있습니다:
- 전체 및 현재 사용 가능한 메모리
- 논리 프로세서 수 (Logical processor count)
- 프로세스 아키텍처 (Process architecture)
- AVX2 가용성
- 여유 모델 저장 공간
권장 엔진은 측정된 요구 사항을 충족하는 모델만 수락합니다. 메모리, 저장 공간, 아키텍처, 응답성 또는 최소 품질 요구 사항을 충족하지 못하는 모델은 거부합니다.
메모리 권장 사항에는 측정된 피크 요구 사항(peak requirement)의 30% 예비 용량과 추가적인 512 MiB의 안전 여유분이 포함됩니다.
안전한 프로필 중에서 TextRecast는 가장 품질이 높은 옵션을 선택합니다.
안전한 모델 설정
자동 또는 수동 선택 사항과 활성 모델 식별자 (active model identifier)는 이제 사용자의 로컬 애플리케이션 데이터 디렉터리 (application-data directory)에 저장될 수 있습니다.
설정 쓰기 작업은 원자적 (atomic)으로 수행되며, 애플리케이션은 다음과 같은 상황으로부터 안전하게 복구됩니다:
- 누락된 설정
- 손상된 JSON
- 오래된 스키마 (schemas)
- 알 수 없는 모델 식별자
- 중단된 교체 시도
선택되거나 생성된 사용자 텍스트는 설정 파일에 절대 저장되지 않습니다.
검증 (Validation)
완성된 기반은 현재 다음 항목들을 통과합니다:
- 52개의 자동화된 테스트
- 릴리스 포맷팅 (Release formatting) 체크
- 경고가 없는 (zero-warning) 릴리스 빌드
- 독립형 (Self-contained) Windows 퍼블리싱
- GGUF 파일이 포함되지 않은 패키지 검증
- 실제 모델 벤치마크 실행
- 포그라운드 (foreground) 선택-교체 테스트
포그라운드 테스트에서 TextRecast는 다음을 캡처했습니다:
teh report dont include the final deadline
그리고 선택 영역을 다음과 같이 생성하여 교체했습니다:
The report does not include the final deadline.
워크플로우는 4.79초 만에 완료되었으며, 이전 클립보드 내용이 성공적으로 복구되었습니다.
다음 단계
다음 단계는 후보 모델들을 벤치마킹하여 빠름 (Fast), 균형 (Balanced), 최고 품질 (Best Quality) 프로필에 대한 최적의 옵션을 선택하는 것입니다.
후보 모델은 배포되기 전에 TextRecast 자격 검증 스위트 (qualification suite)에서 최소 8.0/10점을 달성해야 하며, 언어, 메모리 및 응답성 요구 사항을 충족해야 합니다.
자격 검증이 완료된 후, 모델 설치, 전환, 삭제, 자동 추천 및 모델 관리 UI를 추가할 예정입니다.
TextRecast는 오픈 소스이며, 여기에서 개발 과정을 팔로우할 수 있습니다:
AI 자동 생성 콘텐츠
본 콘텐츠는 Dev.to AI tag의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.
원문 바로가기