섹션별 상세
기본 Swift 구현에서 배열의 Copy-on-Write 오버헤드와 참조 확인 비용이 성능의 주요 병목으로 작용했습니다. UnsafeMutableBufferPointer를 사용하여 메모리에 직접 접근하고 Span 구조체를 활용해 슬라이싱 비용을 제거함으로써 초기 대비 약 3.5배의 성능 향상을 달성했습니다.
Swift Numerics 라이브러리의 'Relaxed' 제약 조건을 적용하여 컴파일러가 FMA(Fused Multiply-Add)와 같은 SIMD 명령어를 적극적으로 사용하도록 유도했습니다. 이를 통해 부동 소수점 연산의 정밀도 제약을 일부 완화하는 대신 하드웨어 가속을 극대화하여 성능을 대폭 개선했습니다.
루프 구조를 재설계하고 수동으로 루프를 언롤링하여 CPU의 파이프라이닝 효율을 높였습니다. 데이터가 메모리에 저장된 순서(Row-major)에 맞춰 내부 루프를 순회하도록 변경함으로써 캐시 적중률을 최적화하고 SIMD 처리량을 극대화했습니다.
DispatchQueue.concurrentPerform을 도입하여 단일 코어의 한계를 넘는 멀티스레드 병렬 처리를 구현했습니다. 행렬의 행 단위를 여러 스레드에 분산 배치하여 계산함으로써 Apple Silicon의 다중 코어 성능을 온전히 활용할 수 있게 되었습니다.
Apple Silicon 전용 가속 유닛인 AMX(Apple Matrix Extension)를 직접 제어하여 CPU 기반 최적화보다 70% 더 높은 성능을 기록했습니다. 타일링(Tiling) 기법을 적용해 데이터를 AMX 레지스터 크기에 맞춰 패킹하고 연산함으로써 메모리 대역폭 한계를 극복했습니다.
근거
- AMX 유닛을 사용한 구현이 멀티스레드 Swift보다 약 1.67배 더 빠른 학습 속도를 보였다. — AMX 섹션의 성능 비교 표 및 'Another 1.67 times faster on training' 설명
Metal GPU 커널을 직접 작성하여 1.1 Tflop/s라는 최종 성능 목표를 달성했습니다. 스레드 그룹 공유 메모리를 활용한 타일링 커널을 구현하여 GPU의 수천 개 코어가 효율적으로 행렬 연산을 수행하도록 설계했습니다.
이미지 분석

Chart
이 이미지는 llm.c, Basic Swift, Fast Swift, Multithreaded Swift, Accelerate BLAS 등 각 구현 방식에 따른 학습 손실(Training Loss) 변화와 단계별 실행 시간(ms), 초당 반복 횟수(Iter/s)를 상세히 비교합니다. 특히 Accelerate BLAS가 가장 빠른 성능(13.381s)을 보이며, 기본 Swift 구현과의 극명한 성능 차이를 시각적으로 증명합니다.
TinyShakespeare 데이터셋을 사용한 다양한 엔진별 학습 손실 및 성능 비교 그래프와 표
근거 모음
근거
- Swift 최적화를 통해 행렬 곱셈 성능을 2.8 Gflop/s에서 1.1 Tflop/s로 382배 향상시켰다. — Conclusion 섹션의 'made it 382 times faster, taking it from 2.8 Gflop/s to 1.1 Tflop/s' 문구
기술
- Swift
- Metal
- AMX
- Swift Numerics
- llm.c
활용 사례
- 온디바이스 LLM 학습
- 고성능 수치 연산 라이브러리 개발
- Apple Silicon 하드웨어 가속 벤치마킹
AI 분석 전체 내용 보기
AI 요약 · 북마크 · 개인 피드 설정 — 무료
출처 · 인용 안내
원문 발행 2026. 05. 11.수집 2026. 05. 11.출처 타입 RSS
인용 시 "요약 출처: AI Trends (aitrends.kr)"를 표기하고, 사실 확인은 원문 보기 기준으로 진행해 주세요. 자세한 기준은 운영 정책을 참고해 주세요.