로컬 AI가 표준이 되어야 한다
요약
본 기사는 현대 소프트웨어 개발 트렌드에서 클라우드 기반 AI API에 과도하게 의존하는 문제점을 지적하며, 이러한 방식이 취약하고 사생활 침해적이라고 비판합니다. 대신, 강력한 온디바이스(on-device) 로컬 모델을 활용하여 애플리케이션의 핵심 기능을 구현해야 한다고 주장합니다. 특히, 단순히 텍스트 요약을 넘어 Swift `struct`와 같은 타입 시스템을 이용해 구조화된 출력(structured output)을 얻는 패턴을 제시하며, 이를 통해 사용자 데이터 주권을 지키면서도 안정적이고 예측 가능한 고품질 소프트웨어를 만들 수 있음을 강조합니다.
핵심 포인트
- 클라우드 AI API에 대한 과도한 의존성은 애플리케이션의 취약성(서버 다운 등)과 사생활 침해 문제를 야기한다.
- 소프트웨어 개발은 로컬 장치에서 작업을 수행하던 전통적인 방식으로 돌아가야 하며, 현대 기기의 성능은 이를 충분히 뒷받침한다.
- 단순한 텍스트 요약을 넘어, Swift `struct`와 같은 타입 시스템을 활용하여 구조화된 출력(structured output)을 얻는 것이 핵심이다.
- 로컬 모델을 사용하면 사용자 데이터가 외부 서버에 전송되는 것을 막고 데이터 주권을 확보할 수 있다.
- AI 기능을 단순히 채팅 상자에 붙여 넣기보다, 예측 가능한 동작과 실제 필드를 가진 서브시스템으로 활용해야 한다.
현대 소프트웨어의 한 가지 트렌드는 개발자들이 앱 내 기능을 위해 OpenAI나 Anthropic에 API 호출을 붙이는 것입니다. 합리적인 사람들은 그러한 기능들이 사용자에게 실제로 가치를 가져다주는지 따질 수 있겠지만, 제가 논하고 싶은 것은 애플리케이션에 클라우드 호스팅 AI 모델에 대한 의존성을 갖는다는 근본적인 개념입니다.
이러한 게으름은 취약하고, 사생활을 침해하며, 근본적으로 결함 있는 소프트웨어 세대를 만들고 있습니다. 우리는 서버가 다운되거나 신용카드가 만료되는 순간 작동을 멈추는 애플리케이션을 구축하고 있습니다.
우리는 로컬 장치가 작업을 수행하는 방식으로 소프트웨어를 구축하던 습관으로 돌아가야 합니다. 우리의 주머니 속 실리콘은 이전에는 이용 가능했던 것보다 상상을 초월할 정도로 빠릅니다.
만약 특정 기능을 로컬에서 처리할 수 있다면, 이 복잡한 상황에 동참하는 것은 스스로에게 입히는 피해와 같습니다.
목표는 ‘어디에나 AI’가 되는 것이 아닙니다. 유용한 소프트웨어가 목표입니다.
몇 년 전 저는 1990년대 스타일의 웹에서 영감을 받은 뉴스 애그리게이터 서비스인 The Brutalist Report라는 재미있는 사이드 프로젝트를 시작했습니다.
최근에는 이 서비스를 위한 네이티브 iOS 클라이언트를 구축하기로 결정했는데, 디자인 목표는 이것이 고밀도의 뉴스 읽기 경험을 유지하도록 하는 것이었습니다. 간결한 목록 형태의 헤드라인, 웹을 뒤덮은 암(cancer)을 제거하는 리더 모드, 그리고 (선택적으로) 기사의 요약본을 생성하는 ‘인텔리전스’ 뷰가 그것입니다.
하지만 핵심은 이겁니다: 요약본은 Apple의 로컬 모델 API를 사용하여 기기 내에서(on-device) 생성됩니다. 서버 우회는 없습니다. 프롬프트나 사용자 입력도 없습니다.
import FoundationModels
let model = SystemLanguageModel.default
guard model.availability == .available else { return }
...
그리고 더 긴 콘텐츠의 경우, 일반 텍스트를 청크 단위(청크당 약 10k 문자)로 나누고, 각 청크별로 간결한 '사실만' 노트(facts only notes)를 생성한 다음, 이를 결합하여 최종 요약본을 만드는 두 번째 과정을 실행할 수 있습니다.
이것이 바로 로컬 모델들이 할 수 있는 작업입니다.
‘모델에게 JSON을 요청하고 기도하는(ask the model for JSON and pray)’ 방식 대신, 더 새롭고 좋은 패턴은 원하는 것을 나타내는 Swift struct를 정의하는 것입니다. 모델에게 각 필드에 대한 지침을 자연어로 제공하고, 해당 타입의 인스턴스를 생성하도록 요청하면 됩니다.
그게 전부입니다.
개념적으로는 다음과 같습니다:
import FoundationModels
@Generable
struct ArticleIntel {
...
이제 사용자 인터페이스(UI)가 Markdown에서 글머리 기호(bullet points)를 스크랩하거나 모델이 JSON 스키마를 기억했기를 바랄 필요가 없습니다. 실제 필드를 가진 진짜 타입(real type)을 얻게 되며, 이를 일관되게 렌더링할 수 있습니다. 이는 앱이 실제로 사용할 수 있는 *구조화된 출력(structured output)*을 생성합니다. 그리고 이 모든 것이 로컬에서 실행됩니다!
이는 단순히 더 나은 사용 편의성(nicer ergonomics) 이상의 의미입니다. 이것은
클라우드 모델은 정말 필요할 때만 사용하세요. 사용자 데이터는 있어야 할 곳에 보관해야 합니다. 그리고 AI를 사용할 때는 단순히 채팅 상자로 붙여 넣지 마세요. 타입이 지정된 출력(typed outputs)과 예측 가능한 동작을 가진 실제 서브시스템으로 활용하세요.
기능을 출시하려 했는데 분산 시스템(distributed systems)을 배포하는 실수를 멈추세요.
AI 자동 생성 콘텐츠
본 콘텐츠는 HN AI Posts의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.
원문 바로가기