AI를 공부하려고 하면 생각보다 용어가 한번에 많이 나옵니다.
머신러닝, 딥러닝, 모델, 추론, Transformer, 양자화, Core ML, Foundation Models...
이번 글에서는 기본개념을 알아보고 iOS에는 어떻게 연결되고
앞으로는 어떻게 쓰면좋을지 고민과정을 작성해보려합니다.
- AI 핵심 개념과 키워드
- 모델은 어떻게 사용하는가
- iOS에서는 어떻게 연결되는가
- Python 방식과 Create ML 방식
- 성능최적화
- 나는 지금 AI를 어떻게 쓰고 있는가
(아래부터 글은 제가 정리한 자료조사를 기반으로 AI가 작성해준 글입니다....🤖)
AI 핵심 개념
머신러닝 (Machine Learning)
데이터를 보고 패턴을 학습해서 예측하거나 분류하는 방법입니다.
예를 들어
메일이 스팸인지 분류하거나
사용자에게 상품을 추천하는 문제를 풀 때 사용할 수 있습니다.
보통 전통적인 머신러닝에서는
사람이 어떤 특징(feature)을 넣을지 설계하는 비중이 상대적으로 컸습니다.
딥러닝 (Deep Learning)
딥러닝은 머신러닝의 한 종류입니다.
대량의 데이터와 많은 연산을 이용해서
모델이 복잡한 패턴을 스스로 학습하도록 하는 방식입니다.
이미지 인식, 음성 인식, 번역, LLM 같은 생성형 AI도
대부분 딥러닝 기반이라고 보면 됩니다.
모델 (Model)
모델은 학습이 끝난 결과물입니다.
조금 단순하게 말하면
AI의 “뇌”처럼 생각할 수 있습니다.
예를 들어 사진을 넣었을 때
“이건 고양이일 확률이 90%다”
같은 결과를 내놓는게 모델입니다.
학습 vs 추론 (Training vs Inference)
학습
- 데이터를 이용해서 모델 파라미터를 조정하는 과정
- 시간이 오래 걸리고 연산량이 큼
- 쉽게 말하면 배우는 단계
추론
- 학습이 끝난 모델로 실제 입력에 대한 결과를 반환하는 과정
- 서비스에서 우리가 주로 사용하는 단계
- 예: 사용자의 음성을 텍스트로 바꾸기
iOS 개발자 입장에서는 대부분 학습보다 추론을 더 많이 다루게 됩니다.
앱에서는 이미 만들어진 모델을 넣고
그 모델이 실제 입력에 대해 어떤 결과를 내는지 사용하는 경우가 많기 때문입니다.
관련 키워드 개념
Neural Network (신경망)
사람 뇌의 뉴런 연결 방식을 흉내낸 구조입니다.
딥러닝의 기본 뼈대라고 보면 됩니다.
CNN / RNN / Transformer
CNN
- 이미지 처리에 강한 구조
- 사진의 패턴이나 형태를 잘 잡음
- 이미지 분류, 객체 탐지에 많이 사용
RNN
- 순서가 중요한 데이터를 다루기 위한 구조
- 이전 정보를 어느 정도 기억하면서 다음 데이터를 처리
- 문장, 음성 같은 순차 데이터에서 많이 다뤄졌음
Transformer
- 현재 자연어 처리와 생성형 AI의 핵심 구조
- 문장 전체 관계를 잘 파악하고 병렬 처리에 유리
- 번역, 요약, 질의응답, LLM 등에 널리 사용
Input / Output / Feature
- input: 모델에 넣는 입력 데이터
- output: 모델이 내놓는 결과
- feature: 데이터를 설명하는 특징 정보
예를 들어
집 사진을 넣어서 인테리어 스타일을 분류한다면
사진은 input,
“모던 스타일” 같은 결과는 output,
사진 안의 패턴이나 색감, 구조 같은 정보는 feature로 볼 수 있습니다.
Loss / Optimization
- loss: 모델 예측이 얼마나 틀렸는지를 나타내는 값
- optimization: 그 loss를 줄이도록 모델 파라미터를 조정하는 과정
학습은 결국
“틀린 정도를 줄여가는 과정”이라고 이해하면 편합니다.
Overfitting / Generalization
Overfitting
학습 데이터는 지나치게 잘 맞추는데
처음 보는 데이터에서는 성능이 떨어지는 상태입니다.
문제를 이해한게 아니라
학습 데이터를 외워버린 상태에 가깝습니다.
Generalization
처음 보는 데이터에도 잘 동작하는 능력입니다.
좋은 모델은 결국
훈련셋이 아니라 실제 사용자 입력에서도 잘 동작해야 합니다.
Dataset / Label
- dataset: 학습이나 평가에 사용하는 데이터 모음
- label: 데이터에 붙는 정답 정보
예를 들어 고양이 사진 1만장이 dataset이고,
각 사진에 붙은 “고양이”라는 정답이 label입니다.
Tensor
머신러닝과 딥러닝에서 데이터를 담는 기본적인 다차원 배열 단위입니다.
이미지, 음성, 텍스트도
결국은 연산 가능한 숫자 구조로 바뀌어서 다뤄지는데
그때 자주 등장하는 표현이 tensor입니다.
모델은 어떻게 사용하는가
앱 개발에서는 보통 모델을 직접 학습시키기보다
이미 학습된 모델을 가져와 사용하는 경우가 많습니다.
Core ML 모델 포맷
애플 생태계에서는 .mlmodel, .mlpackage 형태의 모델을
Xcode에 넣어서 사용할 수 있습니다.
이미지 분류, 텍스트 처리, 음성, 예측 등
여러 작업을 Core ML 기반으로 연결할 수 있습니다.
모델 변환
실제로는 Python 환경에서 모델을 학습한 뒤
coremltools 같은 도구를 사용해서
Core ML 형식으로 변환하는 흐름이 자주 나옵니다.
즉,
Python에서 학습
-> 모델 변환
-> Xcode에 포함
-> 앱에서 추론
이런 식입니다.
ONNX
ONNX는 모델을 다른 환경으로 옮기기 쉽게 하려는 중간 표준 형식입니다.
모델 학습 프레임워크와 실행 환경이 다를 수 있기 때문에
중간 포맷을 거쳐 Core ML 쪽으로 가져오는 경우도 있습니다.
TensorFlow Lite
크로스플랫폼이나 이미 TFLite 모델을 쓰고 있는 환경이라면
TensorFlow Lite 기반으로 앱에 넣어 사용하는 방법도 있습니다.
iOS에서는 어떻게 연결되는가
Core ML이란?
Core ML은
앱이 모델을 사용할 수 있도록 해주는 상위 ML 프레임워크입니다.
입출력 관리, 모델 로드, 컴파일, 실행 경로 선택 같은 부분을 맡습니다.
즉
모델 자체를 만드는 도구라기보다
앱에서 모델을 안정적으로 실행하게 해주는 런타임 인터페이스에 가깝습니다.
Foundation Models
최근 애플은 Foundation Models 프레임워크를 통해
온디바이스 언어 모델에 접근하는 인터페이스를 제공하고 있습니다.
이 프레임워크는 Apple Intelligence를 지원하는 기기와 설정 여부에 따라 사용 가능 여부가 달라지고,
세션 기반으로 모델을 호출하며, 생성 옵션이나 구조화된 응답 형태를 다룰 수 있습니다.
개발자 입장에서는
기존처럼 직접 모델 파일을 넣어 쓰는 방식과는 조금 다르게,
애플이 제공하는 시스템 모델 능력을 앱 기능으로 연결하는 방식으로 볼 수 있습니다.
CPU / GPU / ANE
CoreML은 조건에따라 적절한 장치를 사용합니다
간단히 보면:
- CPU: 제어 흐름, 범용 처리, 호환성
- GPU: 병렬 연산에 유리
- ANE: AI 추론에 특화된 연산 가속
전체 흐름
대략적인 구조는 이런 느낌입니다.
-> Vision / Natural Language / Speech / SoundAnalysis
-> Core ML
-> .mlmodel / .mlpackage
-> MLModel runtime
-> Input / Output abstraction
-> Compute planning
-> CPU / GPU / Neural Engine execution
-> Low-level foundations
Python 방식과 Create ML 방식
Python 중심 방식
모델 설계부터 학습, 평가, 변환, 배포까지 전부 직접 다루는 흐름입니다.
- 문제 정의
- 데이터 수집/정리
- 모델 선택
- 학습 설정
- 평가
- 저장/변환
- 배포 최적화
자유도는 높지만
그만큼 복잡합니다.
Create ML
Create ML은 많은 부분을 자동화해주는 편입니다.
복잡한 연구보다
기능 구현이 목적일 때 빠르게 시도해보기에 좋습니다.
즉,
- 내가 AI 연구자가 되려는건 아니고
- 특정 기능을 앱에 넣고 싶다
이런 상황에서는 Create ML이 훨씬 실용적일 수 있습니다.
성능 최적화
온디바이스 AI는 매력적입니다.
- 응답이 빠르고
- 네트워크가 없어도 동작할 수 있고
- 개인정보를 서버로 보내지 않아도 되는 경우가 많습니다
하지만 그만큼
모델 크기, 메모리, 발열, 배터리, 앱 용량 같은 현실적인 문제가 따라옵니다.
그래서 온디바이스 AI는 결국 최적화가 핵심입니다.
Quantization (양자화)
- 개념
- 모델 숫자표현을 더 작은 정밀도로 변경하는 방법
- float32 -> int8, float16처럼 더 작은형식으로 변경
- 목적: 모델크기감소, 메모리 사용량감소, 추론속도 향상
- 온디바이스에서는 제한된 자원 안에서 모델을 실행해야하므로 매우 중요한 최적화 방식
- 원리
- 모델 가중치와 활성값은 정밀한 실수로 저장되는 경우가 많음
- 하지만 실제 추론에서는 항상 높은 정밀도가 필요한 것은 아님
- 따라서 더 적은 비트로 표현해도 성능 손실은 작게 유지하면서 계산량과 메모리 사용량을 줄일 수 있음
- 저장해야 하는 데이터 크기가 줄어들기 때문에 앱 용량과 로딩 비용에도 도움이 됨
- 활용
- 스마트폰, 임베디드 기기 등 자원이 제한된 환경에서 매우 자주 사용
- transformer, cnn처럼 큰 모델을 기기에서 실행할 때 특히 중요
- 추론 속도 개선, 전력 소모 감소, 메모리 절약 측면에서 효과적
- 다만 양자화를 너무 강하게하면 정확도 저하가 발생할 수 있어서 적절한 균형이 중요
Pruning (가지치기)
- 개념
- 모델 안에서 중요도가 낮은 연결, 가중치, 레이어 일부를 제거하는 방법
- 덜 중요한 부분을 잘라내서 모델을 더 가볍고 효율적으로 만듬
- 불필요한 계산을 줄여서 온디바이스 환경에 맞게 단순화하는 작업이라고 볼 수 있음
- 원리
- 실제로 학습이 끝난 모델에는 결과에 큰 영향을 주지 않는 가중치가 존재할 수 있음
- 이런 요소를 제거해도 전체 성능이 크게 떨어지지 않는 경우가 있음
- pruning 이후 필요하면 다시 fine-tuning을 해서 성능을 회복함
- 즉, 모델이 가진 여유분을 줄여 더 효율적인 구조로 다시 정리하는 방식
- 활용
- 구조적으로 잘라낸 pruning은 실제 기기 속도개선에 더 도움되는편
- 모델 크기축소, 계산량감소, 메모리절약에 사용
- 온디바이스에서는 발열과 배터리 부담을 줄이는 데에도 의미가 있음
- 단순히 작게 만드는 것보다 실제 실행 효율이 좋아지는 방향으로 적용하는 것이 중요
Model Compression
- 개념
- 모델을 더 작고 효율적으로 만드는 전체기법 묶음
- 양자화, pruning, distillation 등의 방식이 포함될 수 있음
- 온디바이스에서 실행 가능한 수준으로 모델을 다듬는 전체 전략이라고 볼 수 있음
- 원리
- 원본 모델 성능을 최대한 유지하면서 용량, 연산량을 줄이는 방향으로 변형
- 같은 일을 더 적은 자원으로 수행하게 만드는 것
- 단순히 모델을 줄이는 것이 아니라, 속도·메모리·전력·정확도 사이에서 균형을 맞추는 과정
- 활용
- 온디바이스에서 필수개념
- 앱크기제한, 메모리제한, 발열문제 줄이는데 중요
- 대형모델 -> 소형모델 변경시 핵심
- 실제 서비스에서는 사용자 경험을 유지하면서 배포 가능한 형태로 만드는 데 사용됨
Latency vs Accuracy trade-off
- 더 빠르게 응답할수록 정확도가 떨어질수도있고, 높은 정확도를 추구할수록 모델이 무거워 느려질수 있는 트레이드오프관계
- 온디바이스에서는 특히 응답속도가 사용자 경험에 직접 영향을 줌
- 예를 들어 카메라 객체인식이나 음성인식은 정확도도 중요하지만, 늦게 반응하면 사용성이 크게 떨어짐
- 따라서 여러 모델후보를 비교해서 적정 균형점을 찾는 것이 중요
- 서비스에서는 항상 최고 정확도보다, 충분히 좋은 정확도와 빠른 응답을 함께 만족하는 지점을 찾게됨
Batch vs Real-time inference
- batch 추론 - 여러 입력을 한번에 묶어서 처리
- 서버로그분석, 대용량 이미지분류, 야간 일괄처리 등에 적합
- 처리 효율은 좋지만 즉각적인 응답이 필요한 상황과는 맞지않음
- real time 추론 - 입력이 들어올때마다 즉시처리
- 카메라 객체인식, 음성비서, 키보드 자동완성등에 사용
- 사용자 입력에 바로 반응해야하므로 속도와 지연시간이 매우 중요
- 온디바이스는 대체로 real-time 이 많이사용됨
- 그래서 모델 정확도뿐 아니라 실행속도, 메모리 사용량, 발열까지 함께 고려해야함
그래서 이 시점의 나는 지금 AI를 어떻게 사용하고 있는가
크게 3가지로 나누어서 사용하고있습니다
개발영역과 생산성영역과 검색영역입니다.
개발
- 에이전트를 역할별로 나눠서 사용
- UI 구현
- 아키텍처, 성능, 보안, 스타일 검사
- 스킬
- 모듈 추가
- 코드 구현
- 코드 검사
개발 생산성
- 작업 스케줄 관리 - 옵시디언 연동
- 문서 작성 - 작업기반으로 작성
- AI 에이전트가 수행한 작업을 md 파일로 정리
- 웹훅을 통해 메신저로 요약 연결
검색
- 개념 검색
- 정보 분석 및 정리
- 필요한 코드 초안 작성
- 버그 원인 탐색
Next...
26년 최근들어 하네스 라는 방식의 에이전트 팀을 이용한
에이전트끼리 워크플로우를 통해서 아웃풋을 내도록하는 방식이 화두가 되고있어요
하네스란
- 에이전트 팀 시스템을 활용하여 복잡한 작업을 전문 에이전트 팀으로 분해·조율하는 아키텍처 도구
- 궁극적으론 다른모델을써도 같은 아웃풋이나옴
가드레일을 통해 제어하고
기록과 피드백을통해 다듬어서
에이전트를 잘 운용할 수 있도록 관심이 몰리고있습니다.
이런 방식을 이용해서
명령어하나로
리드 에이전트 -(명령)-> 개발 에이전트 -> 작업
-(명령)-> 문서 에이전트 -> 작업
-(명령)-> 검증 에이전트 -> 작업
이런 과정을 알아서 할 수 있는 환경을 만들어보고싶네요
이 과정에서
주의해야할점은 AI를 어디까지 믿어야하는가가 될거같아요
완전한 신뢰는 할 수 없으니 검증은 어떻게 해야할지에 대한 고민도 필요할것 같아요
'iyOmSd > Title: Swift' 카테고리의 다른 글
| [Swift] BGContinuedProcessingTask 백그라운드 작업 (0) | 2026.05.29 |
|---|---|
| [Swift] Protocol Buffer (Protobuf) (0) | 2026.04.28 |
| [Swift] Core Image Filter (0) | 2026.01.27 |
| [Swift] Vision FaceDetect (0) | 2025.11.29 |
| [Swift] Screen Time API(DeviceActivity) (0) | 2025.10.27 |