본문으로 건너뛰기

Claude 사용자를 위한 Apple Foundation Models 3와 온디바이스 LLM 스택

중급

**WWDC 2026 (2026년 6월 8일 발표)**에서 Apple은 Foundation Models의 3세대 — AFM 3 — 를 출시했으며, Foundation Models 프레임워크를 확장했습니다. Swift를 절대 쓰지 않는 사람에게도 중요한 방식으로: 프레임워크는 이제 써드파티 LLM 프로바이더(Anthropic Claude와 Google Gemini가 Swift 패키지로 출시)를 받으며, 온디바이스 경로는 장난감 3B 모델이기를 그만두고 대부분의 전문가를 NAND에 유지하고 프롬프트가 필요한 것만 RAM으로 스와핑하여 Apple Silicon에서 실행되는 20-billion-파라미터 스파스 MoE를 추가합니다. Claude 앱을 만들고 "온디바이스"를 API 워크플로우와 별개의 우주로 다뤄왔다면, 그 갭이 올해 좁혀지고 있습니다. 이 페이지는 실제로 출시된 것, 명백하지 않은 메커니즘, 그리고 이제 있는 구체적인 마이그레이션과 호환성 선택지를 풀어냅니다.

What you'll learn
  • 네 개의 AFM 3 모델 — Core (3B), Core Advanced (20B 스파스), Cloud, Cloud Pro — 이름을 짓고 어느 것이 어디서 실행되는지 알기
  • 20B 모델이 iPhone에 애초에 맞도록 하는 플래시 플러스 DRAM 전문가 라우팅 트릭 이해
  • Foundation Models 프레임워크의 @Generable / @Guide 매크로를 제약 디코딩에 사용 — 모델은 문자 그대로 잘못된 JSON을 방출할 수 없음
  • WWDC26에서 무엇이 바뀌었는지 알기: 동일한 Swift 세션 API에 Claude 또는 다른 어떤 LLM도 플러그인할 수 있게 하는 LanguageModel / LanguageModelExecutor 프로토콜
  • 온디바이스 3B에 손을 뻗을 때, Private Cloud Compute로 점프할 때, 그리고 Claude API에 워크로드를 유지할 때를 결정하기

한 문장 버전​

AFM 3는 Apple의 온디바이스 LLM에 대한 두 번째 진지한 시도입니다: 재구축된 3B 밀집 모델(Core), 대부분의 전문가를 플래시 스토리지에 유지하여 iPhone에서 실행되는 새로운 20B 스파스 MoE(Core Advanced), Apple Silicon과 Google Cloud의 NVIDIA GPU에 있는 Cloud와 Cloud Pro 페어, 그리고 이제 동일한 LanguageModel 프로토콜 뒤에서 Anthropic Claude와 Google Gemini를 일급 스왑 가능 프로바이더로 다루는 프레임워크. 개발자가 온디바이스로 호출하는 것은 무료; App Store Small Business Program 회원(첫 다운로드 200만 미만)에게 Private Cloud Compute도 무료.

AFM 3에 대한 세 가지 명백하지 않은 것​

모두가 "Apple에는 3B 온디바이스 모델이 있다"는 헤드라인을 쓰고 있습니다. 대부분의 리뷰가 건너뛴 메커니즘은 다음과 같습니다.

1. 20B 모델은 대부분이 RAM이 아니라 NAND에 살기 때문에 iPhone에 맞습니다​

"iPhone의 20-billion-파라미터 모델"의 순진한 읽기는 불가능합니다: 4비트에서도 20B 가중치는 ~10 GB로, iPhone이 RAM에 유지할 수 있는 것을 훌쩍 넘습니다. Apple의 트릭은 WWDC 2026 발표에 따르면 전체 AFM 3 Core Advanced 모델을 플래시 메모리(NAND)에 저장하고 추론 시 입력 의존적 라우팅된 전문가만 DRAM으로 스와핑하는 것입니다. 아키텍처에는 상주하는 공유 전문가와 라우터가 프롬프트당 고르는 라우팅된 전문가(전체 20B가 아니라 한 번에 1–4B 파라미터 활성화)가 있습니다. Quantization Aware Training과 결합하여, 이것이 Apple이 ~8 GB의 사용 가능한 RAM이 있는 기기에 20B 클래스 모델을 배송할 수 있게 하는 것입니다. 여러분에게 결과: iPhone 측 지연 시간은 이제 행렬 곱셈에 덜 지배되고 NAND 읽기 대역폭과 라우터의 선택에 더 지배됩니다 — 3B 밀집 모델과는 매우 다른 성능 엔벨로프입니다.

2. 제약 디코딩은 런타임이 아니라 Swift 컴파일러에 구워져 있습니다​

프레임워크의 @Generable 매크로는 종종 "구조화된 출력"으로 설명되며, 이는 그것이 하는 일을 축소합니다. @Generable은 컴파일 시간에 실행됩니다: Swift 타입에 대한 JSON 스키마와 파서를 생성하고, 그러면 프레임워크는 그 스키마를 제약 디코딩에 사용합니다 — 온디바이스 모델은 토큰 레벨에서 Swift 구조체로 다시 파싱되는 출력을 생성하도록 강제됩니다. "유효한 JSON이기를 바라고 재시도"는 없습니다. @Guide 어노테이션은 디코딩 시간에도 강제되는 제약(.anyOf(["PG", "PG-13", "R", "G"]), 범위, 설명)을 추가할 수 있게 합니다. Claude 툴-사용 루프 주위에 JSON 복구 폴백을 쓰는 데 시간을 보냈다면, 앱의 온디바이스 3B 모델 쪽은 그 전체 재시도 계층을 떨어뜨릴 수 있습니다.

3. 프레임워크는 이제 하나의 Swift API 뒤에서 Claude와 Gemini를 포함한 어떤 LLM도 받습니다​

WWDC 2026 세션 **"Bring an LLM provider to the Foundation Models framework"**는 두 개의 새 프로토콜을 출시했습니다: LanguageModel(능력과 executor 구성 선언)과 LanguageModelExecutor(실제 생성, KV 캐시, 스트리밍 처리). 누구나 이에 준수하는 Swift 패키지를 배송할 수 있습니다 — Apple은 Anthropic Claude와 Google Gemini를 출시 시점 프로바이더로 명시적으로 명명했습니다. 결과: 앱의 관점에서 동일한 LanguageModelSession, 동일한 @Generable 타입, 동일한 툴 호출 계약, 동일한 트랜스크립트 모델이 기본 모델이 온디바이스 3B이든, Private Cloud Compute든, Anthropic API의 Claude든, Google Cloud의 Gemini든, Hugging Face의 MLX 가중치 파일이든 적용됩니다. 모델 선택은 SDK 재작성이 아니라 Swift 패키지 종속성이 됩니다.

한눈에 보는 AFM 3​

Enter 또는 스페이스 키를 눌러 카드를 뒤집습니다. 좌우 화살표 키로 카드를 이동할 수 있습니다.용어가 표시되었습니다.
1 / 6

실제로 어디서 무엇이 실행되는가​

Guided walkthrough1 of 4
  1. 모든 Apple Intelligence 기기에서 실행. Foundation Models 프레임워크를 통해 Swift에서 무료로 호출 — API 키, 네트워크, 토큰당 청구서 없음. 여기에 분류, 추출, 요약, 온디바이스 재작성, 그리고 비행기 모드에서 작동해야 하는 모든 것을 배치하세요.

최소한의 온디바이스 호출​

프레임워크의 헤드라인 기능은 거의 의식 없이 온디바이스 3B에서 타입 있는, 스키마 검증된 출력을 얻을 수 있다는 것입니다.

On-device 3B call with @Generable structured output (Swift)

import FoundationModels

@Generable
struct TripIdea {
  @Guide(description: "Short, evocative title")
  let title: String

  @Guide(description: "One-paragraph pitch, 40–80 words")
  let summary: String

  @Guide(.range(1...14))
  let estimatedDays: Int

  @Guide(.anyOf(["easy", "moderate", "hard"]))
  let difficulty: String
}

let session = LanguageModelSession()   // defaults to on-device Core
let idea = try await session.respond(
  to: "Suggest a shoulder-season trip in Puglia for a family with a 6-year-old.",
  generating: TripIdea.self          // constrained decoding
)

print(idea.title, idea.difficulty, idea.estimatedDays)

런타임에 모델은 토큰 레벨에서 실행 텍스트를 TripIdea로 파싱 가능하게 유지하는 토큰을 방출하도록 강제됩니다. JSON 문자열을 절대 보지 않습니다; TripIdea 값을 받습니다. 이는 세션이 온디바이스 3B, PCC, 또는 Swift 패키지로 배관한 써드파티 프로바이더와 대화하든 동일한 계약입니다.

Claude를 동일한 Swift 세션으로 가져오기​

WWDC 2026 "Bring an LLM provider" 세션은 이를 구체화했습니다: LanguageModel과 LanguageModelExecutor를 구현하고, git-태그된 Swift 패키지로 게시하면, 이미 온디바이스 3B를 사용하던 앱 코드는 하나의 이니셜라이저를 변경하여 여러분의 프로바이더를 호출할 수 있습니다.

Sketch of a third-party provider conforming to LanguageModel

import FoundationModels

public struct ClaudeSonnet5: LanguageModel {
  public let capabilities = LanguageModelCapabilities(capabilities: [
      .toolCalling, .guidedGeneration, .reasoning
  ])
  public var executorConfiguration: ClaudeExecutor.Configuration
}

public final class ClaudeExecutor: LanguageModelExecutor {
  public struct Configuration: Hashable {   // hashable = KV-cache key
      public var modelID: String
      public var tokenProvider: TokenProvider   // NOT a plain API key string
  }

  public required init(configuration: Configuration) throws { /* … */ }

  public func respond(
      to request: LanguageModelExecutorGenerationRequest,
      model: Model,
      streamingInto channel: LanguageModelExecutorGenerationChannel
  ) async throws {
      // 1. Map Foundation Models transcript → Anthropic /messages payload
      // 2. Stream deltas back via channel.send(.response(action: .appendText(...)))
      // 3. Surface tool calls / reasoning via the same transcript entry types
  }
}

API가 의도적으로 당신을 밀어붙이는 두 가지 미묘함. 첫째, Configuration은 목적적으로 Hashable입니다: 프레임워크는 executor를 구성별로 캐시하므로 동일한 구성 = 동일한 executor = 턴 전반에 걸쳐 보존된 KV 캐시입니다. 둘째, 가이던스는 이니셜라이저에서 일반 API 키 문자열을 명시적으로 권장하지 않습니다 — TokenProvider나 사인인 플로우를 선호하고, 키체인 지속 토큰, 클라우드 호출에는 App Attest를 사용하여 기기가 여러분의 엔드포인트에 외부에서 히트하는 변조된 빌드가 아닌지 확인하세요.

무엇을 언제 사용할지 — Claude 빌더를 위한 결정 표​

Pro tip
  • 온디바이스 AFM 3 Core (3B)에 손을 뻗어라: 요약, 분류, 엔티티 추출, 온디바이스 재작성, 키보드 제안 — 경계 있는 프롬프트와 타입 있는 출력이 네트워크 왕복을 이기는 모든 것. 무료.
  • AFM 3 Core Advanced (20B)에 손을 뻗어라: 기기를 떠날 수 없는 개인 추론(건강, 금융, 미공개 문서)이며 3B가 서투른 것. NAND 전문가 스왑 때문에 지연 시간이 가변적일 것을 기대하세요.
  • Private Cloud Compute (Cloud / Cloud Pro)에 손을 뻗어라: 온디바이스 20B가 따라잡을 수 없지만 프라이버시가 여전히 써드파티 API를 배제하는 더 큰 컨텍스트, 더 긴 추론, 또는 멀티모달.
  • Anthropic API의 Claude(또는 새 Swift-패키지 프로바이더)에 머물러라: 긴 에이전트 실행, 확장 사고, 큰-컨텍스트 코드베이스 작업, 그리고 Android와 웹에서 동일한 모델이 필요한 크로스-플랫폼 앱. Claude vs 다른 것들 파운데이션 페이지 참조.
  • 온디바이스 3B를 JSON 복구 루프로 감싸지 마세요: 제약 디코딩이 있습니다. 출력이 파싱되지 않으면 스키마가 잘못되었거나 @Generable을 건너뛴 것입니다.

크로스링크​

빠른 확인​

Check yourself

0/5
  1. AFM 3 Core Advanced는 어떻게 20B-파라미터 모델을 iPhone에 맞추나요?
  2. @Generable 매크로는 손으로 굴린 JSON 프롬프팅이 주지 못하는 것을 무엇을 주나요?
  3. 온디바이스 요약을 위해 이미 Foundation Models 프레임워크를 사용하는 iOS 앱에서 Claude Sonnet 5를 호출하고 싶습니다. WWDC26 네이티브 경로는 무엇입니까?
  4. 어떤 개발자 그룹이 프레임워크에서 Private Cloud Compute 호출을 무료로 얻나요?
  5. executor `Configuration` 타입이 `Hashable`이 되어야 하는 이유는?

소스 & 추가 자료​