GPU 터미널 렌더러 대신 TUIs를 실제 UI 컴포넌트로 변환하는 126만 파라미터 모델 학습
요약
기존 터미널 에뮬레이터의 복잡한 렌더링 방식 대신, 서버 측에서 AI 모델을 사용하여 TUI(Text User Interface)를 실제 UI 컴포넌트 스트림으로 변환하는 방법을 제안합니다. 이 작은 모델은 화면의 각 셀에 테두리, 제목, 버튼 등 15가지 역할을 레이블링하고, 이를 Google의 A2UI와 같은 선언적 UI 프로토콜로 변환하여 클라이언트에게 전송할 수 있습니다.
핵심 포인트
- TUI를 GPU 기반 렌더링 대신 AI가 이해하는 구조화된 컴포넌트로 변환합니다.
- 126만 파라미터의 작은 모델이 화면 셀에 다양한 역할을 레이블링합니다.
- 클라이언트는 터미널 에뮬레이터를 실행할 필요 없이, JSON-pointer 패치로 변경된 UI를 받습니다.
- A2UI 스트림은 원본 VT보다 크지만, 클라이언트 측 복잡성을 획기적으로 줄입니다.
작성 글 + 데모: https://drksci.com/labs-phosphene
이것은 약간의 불만에서 시작되었습니다. 현대 터미널 렌더러는 정말 인상적이고, 또한 매우 복잡합니다. GPU glyph atlas, texture cache, 커스텀 셰이더(custom shaders), HarfBuzz shaping, 리가처(ligatures), 손상 추적(damage tracking), 그리드 차분화(grid diffing), 더티-로우 업로드(dirty-row uploads) 등이 있습니다. Alacritty, Kitty, WezTerm, Ghostty는 결국 캐릭터의 격자(grid)를 매우 빠르게 그리기 위해 영웅적인 노력을 기울이고 있습니다. 그리고 모든 클라이언트는 여전히 같은 일을 합니다. 이스케이프 코드 스트림을 파싱하고, 셀 그리드를 유지하며, 문자를 페인트합니다. 충실하지만 불투명합니다. 휴대폰은 이를 리플로우(reflow)할 수 없고, 스크린 리더는 박스 그리기 문자들로 가득 찬 벽을 받게 되며, 에이전트는 어떤 행이 선택되었는지 알아내기 위해 │ ▶ 항목 │를 뚫어지게 봐야 합니다. 그래서 저는 궁금해했습니다. 그리드를 그리는 데 더 많은 GPU 자원을 투입하는 대신, 서버 측에서 한 번 AI를 사용하여 이해하게 하면 어떨까? 그리고 클라이언트에게 터미널 대신 실제 UI를 보내는 것은 어떨까?
작은 모델(126만 파라미터, 5MB, 행과 열에 대한 축 방향 트랜스포머)이 모든 셀에 역할을 레이블링합니다: 테두리(border), 제목(title), 메뉴 항목(menu item), 선택된 행(selected row), 테이블(table), 입력(input), 상태 표시줄(status bar), 키 힌트(key hint) 등 (15가지 역할). 단순한 결정론적 코드는 이러한 영역들을 A2UI 컴포넌트(Google의 선언적 UI 스트림 프로토콜): 리스트, 텍스트 필드, 버튼, 진행률 표시줄로 변환합니다. 화면 레이아웃이 한 번 보이면, 이는 템플릿으로 잠기고 변경된 콘텐츠만 JSON-pointer 패치로 와이어를 타고 전송됩니다. 모델은 심지어 실행되지 않습니다. UI에서 버튼을 누르면 키스트로크가 다시 전송됩니다. F10은 단순히 액션(action)이 있는 버튼입니다. https://preview.redd.it/srgc7o4b06uh1.png?width=2100&format=png&auto=webp&s=a390b467df08095c6941643dc0cd5b1b1180a91b
공개 asciinema 녹화본으로 학습되었습니다. 레이블링은 Claude 서브 에이전트가 수행했으며, 정확한 레이블을 위해 합성 TUI 생성기를 사용했고, 모두 무료에 가까운 Colab T4에서 진행되었습니다. 솔직한 수치를 말씀드리자면: 보류된 실제 화면에서의 정확도는 mIoU 0.51입니다. 놀랍지는 않지만 사용할 만하며, 이는 600 프레임의 첫 레이블링 라운드입니다.
40%의 경우 ~14k 화면은 모델에 전혀 영향을 주지 않습니다 (템플릿 히트). less와 dialog에서는 약 90%를 차지하지만, htop과 nano에서는 미터가 레이아웃을 계속 변경하기 때문에 성능이 매우 떨어집니다. A2UI 스트림은 원본 VT보다 약 25배 더 크지만, 결국 VT가 터무니없이 간결한 포맷임이 밝혀졌습니다. 장점은 클라이언트가 아예 터미널 에뮬레이터를 실행할 필요가 없다는 점이며, 이는 대역폭 문제와 관련이 없습니다. 8개의 애플리케이션(vim, htop, less, dialog, emacs, top, tig, nano)을 사용한 재생 영상이 있습니다. 네이티브 터미널은 왼쪽에 위치하고 생성된 UI는 오른쪽에 위치하며, 모든 요소가 동기화되어 윤곽선으로 표시됩니다. 상세 설명 및 데모: https://drksci.com/labs-phosphene 코드, 레이블, 결과: https://github.com/drksci/phosphene /u/BuckChancey 님이 제출했습니다. [링크] [댓글]
AI 자동 생성 콘텐츠
본 콘텐츠는 r/MachineLearning (hot)의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.
원문 바로가기