Apple Core AI 프레임워크
Apple Core AI 프레임워크 | GeekNews
원문으로 표시됩니다. 한국어로 보시려면 브라우저의 번역 기능을 사용해 주세요.
- Core AI는 Apple silicon에서 AI 모델을 앱 안에서 실행·최적화·배포하기 위한 새 프레임워크
- CPU, GPU, Neural Engine을 활용하고 Swift API로
.aimodel 추론을 앱에 통합 가능
- PyTorch 모델을 Core AI 모델로 변환하고, 압축·디버깅·사전 컴파일까지 도구 체인으로 제공
- 큰 모델은 실행 전 specialization이 필요해 다운로드, 캐시, 첫 실행 흐름 설계가 중요
- SAM 3, Qwen, Transformer 예제로 온디바이스 비전·언어·상태 캐싱 최적화 흐름 도 소개
Core AI의 역할
- Core AI는 Apple 플랫폼 전반에서 온디바이스 AI 실행을 위한 새 기술 묶음
- iOS 27.0+ Beta, iPadOS 27.0+ Beta, macOS 27.0+ Beta, tvOS 27.0+ Beta, visionOS 27.0+ Beta, watchOS 27.0+ Beta 지원
- 앱 안에서 고성능 AI 추론을 실행하고, 사용자 데이터를 기기 밖으로 보내지 않는 구조 제공
- Core AI는 단순 실행 API가 아니라 모델 준비부터 앱 통합까지 포함
- 모델 최적화, PyTorch 변환,
.aimodel 생성, 디버깅, Xcode 프로파일링, 사전 컴파일 제공
- 신경망 외 decision tree나 tabular feature engineering 모델은 Core ML 사용 대상
개발 흐름: PyTorch에서 Swift 앱까지
- Core AI는 기존 PyTorch 워크플로를 Apple silicon 배포 흐름으로 연결
torch.export로 PyTorch 모델을 exported program으로 변환
- Core AI PyTorch Extensions의
TorchConverter로 .aimodel 생성
- Core AI Optimization으로 Apple silicon에 맞춘 압축과 최적화 적용
- Swift 앱에서는 새 Core AI Framework API로 모델 로드와 추론 실행
AIModel은 .aimodel 파일을 로드하고 추론 함수를 검사
InferenceFunction은 실행 가능한 단일 계산 그래프
NDArray는 다차원 입력·출력 데이터를 담는 타입
run 호출로 NDArray 입력을 넣고 추론 결과를 받는 구조
- Xcode에서
.aimodel 파일을 직접 확인 가능
- 모델 크기, 연산 분포, 메타데이터, 함수 시그니처 확인
- 동적 shape 차원은
?로 표시
성능 최적화: state, cache, memory layout
- Transformer 모델처럼 입력 시퀀스가 길어지는 구조에서는 추론 시간이 점점 늘어날 수 있음
- Snake 예제에서 두 Snake를 모두 AI 모델로 실행하자 시간이 지날수록 게임이 느려짐
- Core AI Instruments에서 추론 구간이 점점 길어지는 현상 확인
- Core AI는 state를 사용해 key/value cache 같은 구조를 구현 가능
- 상태는 모델 입력이면서 추론 중 읽히고 제자리에서 업데이트됨
- 이전 단계의 key/value를 다시 계산하지 않고 캐시에 저장
- 전체 게임 이력을 매번 입력으로 넣지 않아도 되는 구조
- Swift 쪽에서는
InferenceFunction.run의 states 인자로 mutable view 컬렉션 전달
- 업데이트된 모델은 시간이 지나도 일정한 속도를 유지
- Instruments에서도 추론 지연 시간 증가가 훨씬 느려짐
- Core AI는 추론 루프 오버헤드를 줄이는 메모리 제어 기능도 제공
NDArray의 최적 메모리 레이아웃을 확인하고 해당 구조로 할당 가능
- 출력 값을 미리 할당해 추론 중 새 출력 할당 방지 가능
- 비동기 값을 사용해 여러 추론 함수를 파이프라인화 가능
모델 배포: 다운로드, specialization, 사전 컴파일
- Core AI 모델은 모든 Apple 기기에서 실행될 수 있는 소스 표현이며, 실제 실행 전 기기별 specialization 필요
- 모델 로드 시 이미 캐시에 specialization된 결과가 있는지 확인
- 없으면 해당 기기와 OS 버전에 맞는 실행 artifact 생성
- 큰 모델은 specialization에 시간이 걸릴 수 있어 사용자 상호작용 중간에 넣지 않는 것이 중요
- SAM 3 예제에서는 첫 실행 시 model load와 큰 specialization 이벤트로 spinner가 오래 표시됨
- 기능 소개 화면에서 사용자가 시도할 때만 Background Assets로 모델을 다운로드하는 흐름 제시
coreai-build 명령으로 개발 머신에서 일부 컴파일을 미리 수행 가능
- 특정 기기 아키텍처를 대상으로 compiled model 생성
- 사용자 기기에서도 specialization은 필요하지만 남은 작업이 줄어 준비 시간이 짧아짐
AIModelCache로 모델 캐시를 프로그래밍 방식으로 제어 가능
- 필요 없는 항목 삭제
- 항목 유지 정책 제어
- 같은 app group의 여러 앱 간 캐시 공유
모델 최적화와 디버깅
- Core AI Optimization은 모델 압축과 양자화 기능 제공
- INT4, INT8, FP4, FP8 가중치 압축 지원
- calibration 데이터 또는 quantization aware training을 사용하는 양자화 API 제공
- SAM 3 예제에서는 32비트 baseline asset이 3GB 이상이었고, 4비트 압축 후 약 430MB가 됨
- 모든 계층에 공격적으로 압축을 적용하자 가려진 꽃 하나가 검출되지 않음
- 출력만으로는 어떤 계층이 문제인지 찾기 어려움
- Core AI Debugger는 변환된 모델과 원래 PyTorch 모델의 내부 값을 비교
- 모델 구조를 그래프로 시각화
- 중간 텐서 값을 확인
- Python 소스 코드의 특정 줄까지 추적
- PSNR 기준으로 차이가 큰 연산을 표시
- SAM 3 비교에서는 낮은 PSNR sync point 대부분이 detector decoder에서 발생
- detector block은 전체 파라미터의 4%에 불과해 압축 이득이 작음
- detector를 양자화 대상에서 제외하자 모든 꽃이 다시 검출되고 baseline 품질 회복
Core AI Models와 고수준 API
- Core AI Models 저장소는 앱에 맞게 변환하고 최적화할 수 있는 인기 모델과 export recipe 제공
- SAM 3와 Qwen 계열 모델을 찾고 Core AI 모델로 변환 가능
- Swift 패키지는 모델별 전처리·후처리를 추상화
- SAM 3 같은 segmentation 모델은
CoreAIImageSegmenter로 사용할 수 있음
- 텍스트 프롬프트로 객체를 분할
- raw tensor shape를 직접 다루지 않고 Swift API로 mask 추출 가능
- Qwen 같은 언어 모델은
CoreAILanguageModel로 로드 가능
- asset loading, engine creation, tokenizer setup 추상화
FoundationModels의 LanguageModelSession과 연결해 사용 가능
- 스트리밍 응답과
@Generable 기반 구조화 출력 사용 가능
개발자가 주목할 지점
- Core AI는 “모델을 앱에서 실행하는 API”보다 넓은 범위의 온디바이스 AI 배포 체계
- PyTorch 모델을 Apple silicon용
.aimodel로 바꾸는 흐름
- Swift 앱에서 모델을 안전하고 효율적으로 실행하는 API
- Xcode, Instruments, Debugger를 통한 성능·정확도 진단
- 앱 설계에서는 모델 자체보다 준비 과정이 사용자 경험에 큰 영향을 줌
- 모델을 앱에 번들할지, Background Assets로 받을지 결정 필요
- 첫 실행에서 다운로드와 specialization을 어떻게 보여줄지 설계 필요
- 캐시 정책과 사전 컴파일 전략이 큰 모델 사용성에 직접 연결
- Core AI는 Apple 플랫폼에서 비전 모델, 언어 모델, Transformer 기반 모델을 온디바이스로 다루는 개발 흐름을 제시
- SAM 3 예제로 segmentation 모델의 압축·분리·디버깅 흐름 제시
- Qwen 예제로 커스텀 언어 모델과 Foundation Models API 연결 제시
- Snake Transformer 예제로 state 기반 key/value cache 최적화 제시
참고 링크
원문 보기
https://news.hada.io/topic?id=30342