[Swift] Foundation Models Framework

2025. 6. 22. 21:35·Apple/Swift
728x90
반응형

안녕하세요! 피피아노입니다 🎵

 

이번에 WWDC25를 생방송으로 봤었는데 이번 발표에서 가장 인상 깊었던 것 중 하나는 Foundation Models 프레임워크의 공개였습니다. 이 프레임워크는 iOS, iPadOS, macOS, visionOS에서 on-device LLM (Large Language Model)을 활용할 수 있게 해주는 새로운 API입니다.

 

지금까지는 서버 기반의 LLM 사용이 일반적이었지만, 애플은 이를 디바이스 내에서 실행함으로써 개인 정보 보호, 저지연, 오프라인 처리까지 모두 잡는 혁신적인 접근을 제시했습니다.

 

이제 개발자들은 서버 기반 LLM 없이도, Swift 코드 몇 줄만으로 on-device에서 대화형 AI 기능을 구현할 수 있게 되었습니다.

Foundation Models란?

Foundation Models란 서론에서도 언급했듯이 Apple이 자체적으로 훈련한 3B 파라미터의 온디바이스 LLM을 Swift API로 사용할 수 있도록 지원하는 프레임워크입니다.

 

모델 자체는 30억 파라미터 규모의 LLM이며, 모든 파라미터는 2-bit로 양자화되어 효율성을 극대화했다고 합니다. 또한 텍스트 요약, 분류, 추출, 태깅 등 다양한 작업에 적합하며, 디바이스 스케일 모델로 설계된 만큼 빠르고 가볍게 동작한다고 합니다.

https://developer.apple.com/documentation/foundationmodels

 

Foundation Models | Apple Developer Documentation

Perform tasks with the on-device model that specializes in language understanding, structured output, and tool calling.

developer.apple.com

 

이 프레임워크의 특징으로는 애플 생태계 운영체제(iOS, macOS, iPadOS, VisionOS) 전반에서 사용이 가능하다는 점과 온디바이스, 즉 기기 내에서 모델이 실행되기 때문에 데이터 유출이 없어서 보안적으로 더 안전하다는 점입니다. 그리고 온디바이스로 구동이 되기 때문에 오프라인 환경에서도 동작할 수 있고 OS 자체에 내장이 되기 때문에 앱 크기 증가도 없다고 합니다.

 

Apple은 이 모델을 "디바이스 스케일 모델"이라고 부르며, 거대한 웹 지식보다도 로컬 환경에서의 유용한 작업들에 최적화되어 있습니다.

또한, Xcode의 새로운 Playgrounds 기능을 통해 손쉽게 프롬프트를 실험하고, 앱과 통합할 수 있습니다.

Guided Generation - 구조화된 Swift 출력 만들기

Foundation Models의 핵심 기능은 Guided Generation입니다.

모델에게 자연어로 명령을 내리고, Swift 타입 구조로 결과를 받아올 수 있습니다.

@Generable
struct TravelPlan {
    var title: String
    var date: String
    var destination: String
}

위처럼 @Generable로 타입을 정의하고 프롬프트를 날리면, 결과가 JSON도 아닌, 직접 정의한 Swift 객체로 돌아옵니다.

 

이제 프롬프트에 “일본 여행 일정을 만들어줘”라고만 해도, 위에 정의한 TravelPlan 구조체에 맞는 형태로 결과를 돌려줍니다.

직접 파싱하거나 예외 처리를 할 필요 없이, 곧바로 UI에 연결할 수 있습니다.

Streaming - 실시간으로 응답 받기

LLM 출력은 일반적으로 "토큰" 단위로 스트리밍됩니다. 하지만 Apple은 Snapshot 방식의 Streaming을 도입했습니다.

  • PartiallyGenerated 타입 제공
  • 응답이 생성되는 동안, SwiftUI에 즉시 업데이트 가능
  • 애니메이션/전환 효과 활용해 사용자 경험 향상 가능
for await snapshot in session.streamResponse(...) {
    self.partial = snapshot
}

델타 누적이 아닌 부분적으로 채워지는 구조체를 활용함으로써, 코드가 훨씬 더 단순해지고 안정적이라는 특징이 있습니다.

Tool Calling - 모델이 앱의 기능을 직접 실행

LLM은 모든 지식을 스스로 갖고 있지는 않습니다.

 

그래서 Apple은 Tool Calling 기능을 도입해, 모델이 앱 내 정의된 코드를 호출할 수 있도록 만들었습니다.

 

예를 들어 사용자가 “파리 날씨 알려줘”라고 하면, 모델은 자동으로 날씨 API를 호출하고, 응답을 대화에 반영할 수 있습니다.

struct WeatherTool: Tool {
    var description = "Get current weather in a city"
    
    func call(arguments: CityInput) async throws -> ToolOutput {
        // CoreLocation, WeatherKit 등 사용
        return .text("현재 기온은 24도입니다.")
    }
}
  • Tool 프로토콜을 따르는 타입을 정의
  • 입력 값은 @Generable 타입으로 안전하게 처리
  • 결과는 자연어 또는 구조화된 데이터로 반환 가능

이 기능 덕분에, 모델은 단순히 말만 하는 것이 아니라 실제로 앱 기능을 실행하는 주체가 될 수 있습니다.

Stateful Session - 문맥을 기억하는 대화형 모델

Foundation Models는 기본적으로 stateful session 방식으로 작동합니다.

즉, 대화의 맥락을 기억하며, 이전 대화 내용을 바탕으로 자연스럽게 이어지는 대화를 만들 수 있습니다.

  • Instruction: 개발자가 모델에게 주는 역할 지침
  • Prompt: 사용자의 입력
  • Transcript: 세션 내 전체 대화 기록

예를 들어, 사용자가 “Swift 튜토리얼 예제 하나 만들어줘” → “하나 더”라고 하면, 모델은 이전 요청을 기억하고 맥락에 맞는 새로운 예제를 만들어냅니다.

개발자 도구와 최적화 팁

Apple은 Foundation Models를 더 쉽게 개발하고 테스트할 수 있도록 다양한 도구도 함께 제공합니다.

Xcode Playgrounds

#Playground 매크로를 사용하면 Swift 파일 안에서 바로 모델 프롬프트 실험 가능

Instruments 템플릿

LLM 응답 속도 분석, prewarm 최적화 등 성능 튜닝에 활용

Feedback Assistant

API나 모델에 대한 피드백을 공식적으로 전달할 수 있도록 Encodable 포맷 지원

어댑터 훈련

특화된 데이터셋이 있다면 Adapter Training Toolkit으로 맞춤형 모델 학습 가능

(단, Apple이 모델 업데이트할 때마다 재학습 필요)

마무리

이번 WWDC25에서 소개된 Foundation Models 프레임워크는 단순히 "애플도 LLM을 도입했구나" 수준이 아니라, Swift 개발자가 실제 앱에 적용해볼 수 있을 정도로 구체적인 사용 방식까지 제시했다는 점에서 꽤 흥미로웠습니다. 

 

특히 가장 기대되는 기능은 Tool Calling이 가장 기대되고 빨리 써보고 싶었습니다 ㅎㅎ

 

저처럼 Swift 기반 iOS 앱을 만드는 입장에서,

이제는 "AI 기능은 서버에서 처리해야 한다"는 고정관념 없이, 기기 내부에서 바로 작동하는 lightweight한 LLM을 활용할 수 있다는 부분이 굉장히 매력적이라서 얼른 공부하고 사용해보고 싶었습니다.

 

물론 아직은 모델 크기나 추론 능력에 제한이 있고, 경쟁사에 비해서는 많이 부족하긴 하지만 여러가지 특징들과 프라이버시, UX 통합, Swift 연동성을 고려하면, 사용해볼 만한 가치가 개인적으로는 충분하다고 생각합니다.

 

앞으로 작은 사이드 프로젝트나 기능 실험에서 Foundation Models를 조금씩 써보면서 감을 익혀보면서 Foundation Models를 제대로 활용할 수 있도록 공부해야 할 것 같습니다..!

 

LLM 기반 기능을 Swift로 직접 구현해보고 싶은 분들에게는 꽤 좋은 출발점이 될 수 있을 것 같아요! 

 

아래에 관련 링크도 남겨 둘테니 관심 있으신 분들은 참고하시면 좋을 것 같습니다!

참고 링크

Foundation Models 개발자 문서

WWDC25 세션 영상


감사합니다.

 

잘못된 내용이 있거나 더 좋은 내용 피드백은 언제나 환영합니다!

궁금하신 부분은 댓글로 질문 부탁드립니다!

728x90
반응형

'Apple > Swift' 카테고리의 다른 글

[Swift] suffix()로 인한 시간 초과 문제 해결하기  (4) 2025.06.27
[Swift] Core ML과 MFCC를 활용한 감정 추론  (7) 2025.05.14
[Swift] Tuist 살펴보기  (0) 2025.04.27
[Swift] 의존성 주입(Dependency Injection)이란?  (0) 2025.04.18
[Swift] Combine에서 map과 flatMap 살펴보기  (2) 2025.04.08
'Apple/Swift' 카테고리의 다른 글
  • [Swift] suffix()로 인한 시간 초과 문제 해결하기
  • [Swift] Core ML과 MFCC를 활용한 감정 추론
  • [Swift] Tuist 살펴보기
  • [Swift] 의존성 주입(Dependency Injection)이란?
P_Piano
P_Piano
Apple 생태계 개발자가 되기 위한 학습과 경험의 기록
    반응형
    250x250
  • P_Piano
    피피아노의 개발 일지
    P_Piano
  • 전체
    오늘
    어제
    • 분류 전체보기 (206) N
      • Apple (124) N
        • iOS (22)
        • visionOS (4)
        • Swift (67) N
        • UIKit (2)
        • SwiftUI (23)
        • RxSwift (2)
        • Xcode (4)
      • C언어 (5)
      • C++ (8)
      • Dart (1)
      • Python (3)
      • JavaScript (17)
      • Git (1)
      • CS (39)
        • 디자인 패턴 (6)
        • 네트워크 (20)
        • 운영체제 (8)
        • Database (5)
        • 자료구조 (0)
      • IT 지식 (2)
      • IT 뉴스 (4)
      • 출처 표기 (1)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    네트워크
    옵셔널
    비동기
    UIKit
    스위프트
    운영체제
    combine
    티스토리챌린지
    Vision Pro
    자바스크립트
    프로그래머스
    ios
    swiftUI
    디자인패턴
    코딩테스트
    클래스
    Xcode
    배열
    visionOS
    Initializers
    오블완
    SWIFT
    제어문
    이니셜라이저
    프로세스
    프로퍼티 래퍼
    Optional
    연산자
    함수
    변수
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.1
P_Piano
[Swift] Foundation Models Framework
상단으로

티스토리툴바