AI Store에서 AI코딩으로 만들어진 앱을 만나보세요!
지금 바로 방문하기

WWDC 2025 - BNNS Graph의 주요 업데이트

카테고리

프로그래밍/소프트웨어 개발

서브카테고리

인공지능

대상자

iOS 개발자, CPU 기반 머신러닝 모델 개발자, Swift 코드와 ML 통합이 필요한 엔지니어

핵심 요약

  • BNNSGraphBuilder는 Swift로 작성된 ML 그래프를 CPU에서 직접 실행 가능하게 하여, 파일 기반 API의 한계를 극복
  • 타입 안전성런타임 유연성 제공 (예: mean, softmax, topK 등 최적화된 연산 지원)
  • FP16 정밀도 사용 시 FP32 대비 성능 향상 가능 (예: typealias PRECISION = Float16)

섹션별 세부 요약

1. BNNS 개요

  • BNNS는 CPU 기반 실시간 오디오 처리, 저지연 추론, 에너지 효율성에 최적화된 Apple의 ML 라이브러리
  • BNNSGraph는 2024년에 도입된 네트워크 전체를 하나의 그래프 객체로 처리하는 구조

2. BNNSGraph의 주요 최적화

  • 수학적 변환: 불필요한 연산 제거 (예: slice 연산 최적화)
  • 레이어 퓨전: convolution + activation 같은 연산을 단일 최적화된 연산으로 합침
  • 메모리 공유: 텐서 메모리 할당 최적화 (예: memory sharing)
  • 가중치 재배치: 캐시 로컬리티 향상 (예: weight repacking)

3. BNNSGraphBuilder의 핵심 기능

  • Swift 네이티브 통합:

- makeContext 단일 함수 호출로 그래프 정의 (예: let context = try BNNSGraph.makeContext { builder in ... })

- 타입 안전성 강제 (예: let result = bases.pow(y: exponents.cast(to: Float16.self)))

  • 런타임 유연성:

- Swift 코드와 그래프 연산 간 값 공유 가능

- mean, softmax, topK 등 연산 지원 (예: let softmax = x.softmax(axis: 1))

  • vImage와의 제로-복사 통합: 이미지 처리 최적화 (예: source.withBNNSTensor { src in ... })

4. 예제 코드

  • 텐서 슬라이싱: Swift 서브스크립트 문법 사용 (예: let cropped = src[...])
  • 이진화 연산: mean 기반 임계값 처리 (예: let thresholded = src .> mean)
  • 오디오 효과: tanh()round()를 활용한 비트 크러셔 효과

5. 적합한 사용 시나리오

  • 작은 커스텀 ML 모델 개발
  • 기존 모델의 전/후 처리 파이프라인 구축
  • 실시간 오디오/이미지 처리
  • 프로토타입 개발 및 실험

결론

  • BNNSGraphBuilder는 Swift에서 ML 그래프를 직접 작성할 수 있게 하여, 파일 기반 API의 중간 컴파일링 단계를 생략하고 성능과 안정성을 동시에 확보
  • FP16 정밀도 사용 시 성능 향상메모리 사용량 감소 효과
  • 대규모 모델이나 외부 소스로 자주 업데이트가 필요한 경우 파일 기반 API 사용 권장