본문으로 건너뛰기

iOS 27 Foundation Models로 iPhone에서 로컬 LLM 사용하기

Your iPhone Can Run an LLM Locally — A Hands-On Swift Guide to Foundation Models in iOS 27

blog.stackademic.com

핵심 요약

  1. iOS 27의 Foundation Models는 온디바이스 모델뿐 아니라 Private Cloud Compute와 LanguageModel 프로토콜을 구현한 외부 모델도 같은 세션 구조로 사용할 수 있게 확장됐다.
  2. @Generable은 Swift 타입에서 스키마를 생성해 모델 출력을 구조화하지만, 결과의 의미까지 보장하지는 않으므로 앱에서 별도 검증이 필요하다.
  3. 모델 사용 가능 여부는 기기와 설정, 다운로드 상태에 따라 달라지며 배터리·발열·컨텍스트 한도도 고려해야 하므로 대체 UI와 취소 처리를 설계해야 한다.

도입

Foundation Models는 Apple Intelligence의 온디바이스 언어 모델을 Swift 앱에서 호출하는 프레임워크다. 원문은 메모 문장에서 할 일을 추출하는 앱을 예로 들어 세션, 구조화된 생성, 스트리밍, 도구 호출을 설명한다. iOS 27에서는 온디바이스 전용에 가까웠던 사용 방식이 모델을 바꿔 끼울 수 있는 구조로 확장되어, 작업에 따라 Apple의 서버 모델이나 외부 제공자 모델을 선택할 수 있다.

상세 요약

Foundation Models의 역할

Foundation Models는 Apple Intelligence의 온디바이스 언어 모델을 Swift 앱에서 사용하는 프레임워크다. 원문은 약 30억 파라미터 모델이 Apple silicon의 CPU, GPU, Neural Engine에서 동작한다고 설명한다. 주요 용도는 요약, 분류, 비정형 문장에서 필드 추출, 문장 재작성처럼 앱 범위에 묶인 언어 작업이다. 외부 지식이나 실시간 정보, 긴 문서 처리가 필요한 작업에는 온디바이스 모델만으로 한계가 있다.

iOS 27에서 달라진 점

iOS 27에서는 LanguageModel 프로토콜을 통해 세션의 모델을 바꿀 수 있다. SystemLanguageModel 외에 Apple의 서버 모델인 PrivateCloudComputeLanguageModel, 프로토콜을 구현한 외부 제공자 모델을 같은 세션 API로 사용할 수 있다. 원문은 Private Cloud Compute의 32K 컨텍스트와 조절 가능한 추론 깊이, API 키나 계정 설정이 필요 없는 점을 언급한다. 외부 모델 예시로 Claude와 Gemini도 제시한다.

온디바이스 모델도 새로 구축되어 지시 따르기, 도구 호출, 논리 작업이 개선됐다고 설명한다. 모델 동작은 OS 업데이트에 따라 달라질 수 있으므로 기존 프롬프트도 새 버전에서 다시 시험해야 한다.

세션과 구조화된 결과

LanguageModelSession은 지시, 프롬프트, 도구, 대화 기록을 담는다. respond(to:)는 응답 전체를 반환하고, streamResponse(to:)는 생성 중간 결과를 순차적으로 전달해 SwiftUI 상태를 갱신할 수 있다. 호출은 비동기이며 화면을 벗어날 때 실행 중인 작업을 취소하도록 설계할 수 있다.

@Generable을 Swift 구조체나 열거형에 적용하면 타입으로부터 스키마를 만들고, 모델 응답을 해당 타입의 값으로 받는다. @Guide는 각 필드에 설명을 붙인다. 예를 들어 ActionItem에 제목, 선택적 마감일, 우선순위를 두고, 배열을 담는 타입을 정의하면 여러 할 일을 구조화할 수 있다. JSON 문자열을 직접 파싱하는 과정을 줄이지만, 마감일이나 우선순위를 잘못 판단하는 문제까지 해결하지는 않는다. 앱에서 결과를 검증해야 한다.

도구와 이미지 입력

Tool을 구현하면 모델이 필요할 때 앱이 제공한 기능을 호출할 수 있다. 모델은 도구 사용 여부와 인수를 요청하고, 앱의 구현이 실행 결과를 세션에 돌려준다. 모델이 앱 전체에 접근하는 것은 아니며, 호출 가능한 범위는 개발자가 작성한 도구로 제한된다. iOS 27에는 OCR 및 바코드 도구와 Spotlight 기반 검색 도구가 포함되며, GenerationOptions.toolCallingMode로 요청별 도구 사용 방식을 조절할 수 있다.

이미지와 텍스트를 같은 프롬프트에 전달할 수도 있다. 큰 이미지는 컨텍스트를 더 사용하므로 전달 전에 크기를 조정할 수 있다. 이미지 이해는 문자 단위 전사와 다르다. 정확한 일련번호나 금액처럼 문자 정확도가 중요한 경우에는 OCRTool 또는 Vision 결과를 모델에 전달하는 방식이 적합하다고 원문은 구분한다.

가용성과 아키텍처

iOS 27을 실행하는 모든 기기에서 온디바이스 모델을 쓸 수 있는 것은 아니다. 기기 적격성, Apple Intelligence 설정, 모델 다운로드 상태를 확인해야 하며 .modelNotReady도 처리해야 한다. 가용성은 실행 중 바뀔 수 있고, 배터리나 열 상태로 생성이 중단될 수도 있다. 긴 요청은 컨텍스트 사용량을 측정하고, 취소와 대체 UI도 준비해야 한다.

원문은 SwiftUI 뷰와 모델 호출을 분리하는 구성을 제안한다. NotesView는 ViewModel을, ViewModel은 FoundationModelService를 사용하며, 서비스가 어떤 모델에 연결되는지는 감춘다. 제한된 추출은 온디바이스 모델로 처리하고 더 큰 컨텍스트나 추론이 필요한 요청에는 다른 백엔드를 선택하는 방식이다.

결론

Foundation Models를 적용할 때는 작업의 범위와 모델 가용성을 함께 판단해야 한다. 짧고 제한적인 추출은 온디바이스 모델로 처리하고, 더 큰 컨텍스트나 추론이 필요한 요청은 다른 모델로 보낼 수 있다. 다만 구조화 출력도 오답을 막지 못하며, 모델은 실행 중에도 사용할 수 없게 될 수 있다. 따라서 결과 검증, 실패 대체 경로, 생성 취소, 사용량 측정을 기능 설계에 포함해야 한다.