문서

Laya MLX는 열 배 빨라질 수 있는가? 수학적 조사

연구 날짜: 2026-09-19. 기준선: GPU 코어 40개와 통합 메모리 128 GiB를 갖춘 Apple M3 Max에서 커밋된 FP16 MLX 결과. 이 보고서는 대수적 사실, 정적 비용 추정, 선택된 체크포인트 행렬의 CPU 측정, 추론 실험이 필요한 가설을 구분합니다. 이 수학적 조사에서는 GPU 추론이나 새로운 지연 시간 측정을 수행하지 않았습니다. 짝을 이루는 엔지니어링 조사에는 가능한 경우 후보 타이밍이 들어 있습니다. 여기서 “exact”는 수학적 의존성과 실수 산술 함수를 보존하는 것을 뜻합니다. 다른 GPU 리덕션 순서나 커널은 여전히 부동소수점 결과를 바꿀 수 있으므로, 기존의 수치 허용 범위와 노출 출력 계약이 수용 게이트로 남습니다.

결정: 이 체크포인트들과 그 전체 출력을 유지한 채, 손으로 작성한 커널로 보편적인 10× 엔드투엔드 개선을 예산에 넣지 마십시오. 정확한 지역 어텐션과 출력 프루닝은 가치 있는 한정적 개선입니다. 직접적인 저랭크 분해는 샘플링한 네 개의 가중치 행렬에서 무손실에 가깝지 않습니다. 10× 제품 개선은 정확한 반복이 상당한 작업 부하에서, 또는 훨씬 작은 증류/재구성 모델의 목표로서 신뢰할 만합니다. 이는 서로 다른 약속이며 서로 다른 벤치마크가 있어야 합니다.

1. 열 배 빠르다는 것이 실제로 요구하는 것

이들은 준비와 포매팅을 포함한, 기존의 동기화된 워밍 엔드투엔드 중앙값이며, 새로운 측정이 아닙니다. 각 기준선은 워밍업 5회, 시간 측정 반복 50회, 질문 배치 한도 64를 썼습니다. 짧은 50질문 픽스처는 세 가지 질문 정의를 반복하지만, 원래 런타임은 그럼에도 50개를 모두 평가합니다. 다운로드, 로딩, 컴파일 시간은 이 중앙값 밖입니다.

모델 짧은 1: 기준선 → 10× 목표 짧은 10 짧은 50 긴 1 긴 10
Laya 13.421 → 1.342 ms 71.068 → 7.107 ms 336.030 → 33.603 ms 44.927 → 4.493 ms 420.987 → 42.099 ms
Multilingual 7.390 → 0.739 ms 27.386 → 2.739 ms 127.565 → 12.756 ms 37.635 → 3.763 ms 389.487 → 38.949 ms
Typed decisions 13.712 → 1.371 ms 75.618 → 7.562 ms 380.560 → 38.056 ms 99.233 → 9.923 ms 1000.294 → 100.029 ms

출처: Laya FP16, 다국어 FP16, typed-decisions FP16. 짧은 패딩 길이는 93/91/93이고, 긴 길이는 512/1024/1024입니다. 그 긴 행들을 비교해도 토큰 길이가 일정해지지 않습니다. 목표는 네이티브 MLX FP16 대비 추가 개선이며, PyTorch MPS FP32 대비가 아닙니다.

제안된 모든 최적화에 대해, f를 측정된 엔드투엔드 월 타임 비율, s를 그 자체의 가속도라고 합시다. 암달의 법칙은 다음을 줍니다:

whole-request speedup = 1 / (1 - f + f/s)
10× requires f > 0.9 and s >= f / (f - 0.9)

요청 시간의 95%를 차지하는 핫스팟을 가속하더라도 19× 의 핫스팟 개선이 필요합니다. 98%에서는 여전히 12.25×, 99%에서는 11×입니다. 10% 이상을 소비하는, 손대지 않은 준비·출력 변환·동기화가 하나라도 있으면 남은 부분만으로는 유한한 10× 이득이 불가능합니다. 독립적인 포워드와 엔드투엔드 중앙값을 빼서 그 비율을 추정할 수는 없습니다. 구획별 타이밍 실험이나 프로파일을 쓰십시오.

2. Dense 작업과 조건부 하한

model.py에서 은닉 폭 D, 인코더 MLP 폭 I, 인코더 깊이 N, 헤드 깊이 H, 배치 크기 B, 패딩된 토큰 길이 L을 정의합니다. 곱셈과 덧셈을 두 FLOPs로 세면:

A = N * (4 D² + 3 D I) + H * 12 D²
main dense FLOPs = 2 B L A
current dense attention products = 4 B (N + H) L² D

3DI는 게이트 인코더 MLP의 두 분기와 그 출력 투영을 포함합니다. 헤드 MLP는 다른, 일반적인 4D 확장을 씁니다. 이 공식들은 정규화, 활성화, 스코어링, 마스크, 전송, 스케줄링을 제외합니다. 일반적인 dense 구현 비용 모델이며, 가능한 모든 알고리즘에 대한 무조건적 산술 하한이 아닙니다.

계열 D / I / N / H 주요 dense 가중치 A A에서 인코더 MLP 비중 A의 FP16 바이트
Laya / typed decisions 1024 / 2624 / 28 / 2 368,312,320 61.28% 736,624,640
Multilingual 768 / 1152 / 22 / 2 124,452,864 46.92% 248,905,728

다국어 임베딩은 196,608,000개의 가중치를 갖지만, 추론은 전체 어휘를 곱하는 대신 선택된 행을 모읍니다. 따라서 총 체크포인트 파라미터는 영어 대비 토큰별 작업을 과장합니다. 임베딩 파일이 작다고 해서 자동으로 추론이 빨라지는 것은 아닙니다.

모델 / 형상 Dense + dense 어텐션 작업 10× 목표에서 요구되는 유효 처리량
Laya, B=1 L=93 69.57 GFLOPs 51.84 TFLOP/s
Laya, B=50 L=93 3478.44 GFLOPs 103.52 TFLOP/s
Laya, B=1 L=512 409.36 GFLOPs 91.12 TFLOP/s
Multilingual, B=1 L=91 23.26 GFLOPs 31.48 TFLOP/s
Multilingual, B=50 L=91 1163.05 GFLOPs 91.17 TFLOP/s
Multilingual, B=1 L=1024 332.19 GFLOPs 88.27 TFLOP/s
Typed decisions, B=1 L=1024 883.15 GFLOPs 89.00 TFLOP/s

이는 요건이며, Apple GPU 최고 성능을 주장하는 것이 아닙니다. 이 형상들에서 측정된 dense GEMM 상한이 유용한 엔지니어링 비교입니다. 측정된 상한은 프로젝트를 비현실적으로 보이게 할 수 있지만, 그것도 하드웨어 상한의 증명은 아닙니다. CPU 작업도 목표 안에 들어가므로, CPU 작업이 겹치지 않는다면 실제 GPU 실행은 이 표가 허용하는 것보다 더 빨리 끝나야 합니다.

Apple은 이 40코어 M3 Max 구성에 400 GB/s 통합 메모리 대역폭을 명시합니다. 주요 FP16 행렬 가중치가 요청당 한 번 통합 메모리에서 읽히고 온칩 캐시에 이미 남아 있지 않다는 명시적 가정 아래, 이상적인 스트리밍 하한은 영어/typed의 경우 1.842 ms, 다국어의 경우 0.622 ms입니다. 이들은 활성화, 임베딩, 스코어러 가중치, 모든 연산을 제외합니다. 또한 광고된 총 대역폭이 이 작업 부하에 완전히 가용하다고 가정합니다. Apple 기술 사양.

영어 짧은-단일 목표인 1.342/1.371 ms는 이미 그 일반적인 FP16 스트리밍 하한보다 낮습니다. 가중치 저장을 바꾸지 않고 400 GB/s에서 이 목표를 만족하려면, 계산에 포함된 가중치 약 200/188 MB가 메모리 읽기를 피해야 하거나 실행 가정을 또 바꿔야 합니다. 이 보고서는 온칩 캐시 용량을 가정하거나 지어내지 않습니다. 배치에 걸친 가중치 재사용, 정확한 압축, 대안 알고리즘은 하한을 바꿉니다. 이 관찰은 보편적 불가능성 정리가 아닙니다.

dense 부분만 보면, 이상적인 가중치 전용 산술 집약도는 FP16에서 BL FLOPs/byte입니다: B=1 L=93에서 93, B=50에서 4650입니다. 활성화 트래픽은 이 숫자를 낮춥니다. 이는 각 행렬을 공유하는 토큰 수가 늘수록 가중치 압축이 덜 설득력 있는 처리량 전략이 되는 이유를 설명합니다.

3. 정확한 작업을 실제로 얼마나 제거할 수 있는가?

첫 전역 인코더 레이어는 모든 유효 토큰을 잠재적으로 관련 있게 만들고, 두 결정 헤드 레이어는 전역입니다. 토큰이 최종 출력에 없다고 해서 그 중간 표현이 없어도 되는 것은 아닙니다: 이후 쿼리들이 여전히 그것을 key/value로 씁니다.

정확한 예외는 마지막 헤드 레이어입니다. 모든 유효 토큰에 대해 그 K/V를, CLS와 선택지 마커에만 Q를 계산하고, 출력 투영/MLP는 그 선택된 위치에만 적용합니다. 이전 헤드와 전체 인코더는 여전히 모든 유효 토큰 상태를 만들어야 합니다. 이는 의존성 프루닝이며, 어텐션 헤드 제거가 아닙니다. CLS를 포함한 선택 위치 R=5일 때, Q를 융합 QKV 투영에서 분리하면 최대 dense 절감은 20 B (L-R) D² FLOPs에, 4 B L (L-R) D 어텐션 FLOPs를 더한 것입니다. 융합 QKV 투영을 보존하는 것이 더 간단하지만 덜 아낍니다.

지역 인코더 어텐션은 abs(q_position-k_position) <= 64, 즉 양끝을 포함한 129개 위치의 내부 윈도를 허용합니다. L>64일 때 유효한 지역 쌍의 수는 129L - 64*65입니다. 패딩과 위치가 보존된다면 금지된 K/V 타일을 건너뛰는 것은 수학적으로 정확합니다. dense QK 곱셈 뒤 적용하는 마스크는 그 산술 절감을 실현하지 못합니다.

모델 / 길이 총 모델링 FLOPs에서 어텐션 곱 비중 정확한 지역 윈도 절감 최종 헤드 선택 절감, R=5 합쳐진 절감
Laya, 93 1.53% 0.086% 2.701% 2.787%
Laya, 512 7.87% 3.607% 2.857% 6.464%
Typed decisions, 1024 14.59% 7.686% 2.904% 10.589%
Multilingual, 91 2.62% 0.130% 4.465% 4.595%
Multilingual, 1024 23.27% 11.919% 4.584% 16.503%

이는 모델링된 작업의 절감이며, 지연 시간 예측이 아닙니다. 모델링된 작업의 83.5–97.2%를 그대로 남기며, 10% 예산과는 거리가 멉니다. 모든 어텐션 곱을 무료로 만들어도 여기서는 1.53–23.27%만 제거됩니다. 반대로, 어텐션은 그대로 두고 모든 dense 투영을 가상으로 10× 가속하면 동일 FLOP 효율에서 영어 짧은 입력은 8.79×, 다국어 긴 입력은 3.23×에 그칩니다. 실제 프로파일은 암달을 적용하기 전에 이 산술 비율들을 측정된 시간 비율로 바꿔야 합니다.

런타임은 이미 MLX 고속 SDPA를 호출합니다. FlashAttention은 같은 dense softmax 어텐션 함수를 더 적은 중간 메모리 트래픽으로 계산하지만, 그 타일링이 임의의 전역 어텐션을 토큰 수에 선형으로 만들지는 않습니다. 체크포인트의 기존 지역 마스크를 활용하는 것은 정확하지만, 전역 레이어에 새로운 희소성을 부과하면 모델이 바뀝니다. QKᵀ가 저랭크라고 해서 요소별 지수화와 행 정규화 이후에도 저랭크라는 뜻은 아닙니다. FlashAttention 논문, MLX 어텐션 API.

언패딩도 독립 시퀀스, 원래 위치, 출력 순서를 유지하면 정확합니다. 현재 짧은 50질문 픽스처는 영어/typed 패딩 토큰의 8.9%, 다국어의 5.8%만 낭비합니다. 그 픽스처들은 패딩 제거로 10×를 얻을 수 없습니다. 1024토큰 항목 하나와 64토큰 항목 49개를 담은 다른 작업 부하는 12.3×의 토큰 작업 비율을 낼 만큼 패딩을 낭비할 것입니다. 그것은 그 분포에 특정한 스케줄링 결과일 것입니다.

4. 저랭크 분해가 숨은 10× 지름길을 드러내는가?

형상 m × n의 고정 행렬 W를 두 인자 U(m × r)와 V(r × n)로 대체하면 토큰별 곱셈 비용이 mn에서 r(m+n)으로 바뀝니다. 손익분기에는 r < mn/(m+n)이 필요하고, 10× 행렬 작업 절감에는 다음이 필요합니다:

r <= mn / (10(m+n))
best squared Frobenius residual at rank r = sum_{j>r} sigma_j²

두 번째 표현식은 절단 SVD 최적값입니다. 정사각 1024 폭 투영은 랭크가 최대 51이면 되고, 그 정확한 전체 랭크 분해는 오히려 곱셈 횟수를 두 배로 만듭니다. GELU, 게이팅, softmax, 입력 의존 LayerNorm 때문에 이웃 레이어 가중치를 하나의 상수 행렬로 단순히 곱할 수는 없습니다.

저는 CPU float64 Gram 고유값 솔버를 써서, 각 모델 계열에서 어텐션 출력 행렬 하나와 융합 MLP 입력 행렬 하나씩, 명시적으로 선택한 중간 레이어 행렬 네 개를 조사했습니다. 가장 큰 고유계는 1024×1024였고, 요청된 모든 BLAS 스레드 한도는 1이었으며, GPU 라이브러리를 임포트하지 않았고, 모델 포워드 패스를 실행하지 않았습니다. 이는 선택한 행렬의 전체 스펙트럼이며, 무작위 투영 추정도 모든 레이어의 조사도 아닙니다.

샘플 행렬 형상 10× 행렬 작업 절감을 위한 최대 랭크 그 랭크에서 보존되는 제곱 Frobenius 에너지 최선의 상대 Frobenius 오차 99% 에너지를 보존하는 랭크
Laya layer 14 attention Wo 1024×1024 51 28.66% 84.46% 690
Laya layer 14 MLP Wi 5248×1024 85 29.29% 84.09% 956
Multilingual layer 11 attention Wo 768×768 38 24.97% 86.62% 516
Multilingual layer 11 MLP Wi 2304×768 57 32.88% 81.93% 697

원시 측정값, 선택 행렬 SHA-256 값, 특이값 극값, 안정 랭크, 추가 후보 랭크는 math_spectrum.json에 있습니다. 샘플링한 각 행렬은 수치적으로 전체 랭크입니다. 네 개 모두에서 제곱 Frobenius 에너지 99%를 보존하려면 두 인자 산술 손익분기점보다 높은 랭크가 필요합니다. 다국어 MLP Wi는 안정 랭크가 13.29에 불과하지만, 랭크 57도 총 에너지의 32.88%만 보존합니다: 안정 랭크는 작은 재구성 오차에 필요한 차원이 아닙니다.

이는 순수 가중치 전용 SVD를 거의 무손실 지름길로 삼는 것에 반하는 강한 증거입니다. 모든 저랭크 모델의 작업 정확도가 나쁘다는 증명은 아닙니다: 토큰 활성화가 제한된 분포를 차지할 수 있고, 재학습이 유용한 연산을 더 작은 표현으로 옮길 수 있습니다. 활성화 인식 압축은 실제 입력 공분산으로 가중된 오차, 대략 ||(W-Wr) Sigma_x^(1/2)||F를 최소화하고, 그런 다음 엔드투엔드 품질을 시험해야 합니다. 이 네 행렬 분석은 그 공분산이나 전역 로짓 오차 한계, 전체 모델에서 달성 가능한 속도 향상을 추정하지 않습니다. 저랭크 파인튜닝 델타도 고정된 사전 학습 행렬 자체를 버릴 수 있다는 뜻이 아닙니다.

손으로 작성한 고속 행렬 곱셈도 이 증거를 없애지 못합니다. 산술 예시로, 8개 대신 7개 곱셈을 쓰는 블록 재귀는 추가 행렬 덧셈과 트래픽을 빼고도 레벨당 곱셈 작업을 12.5%만 아낍니다. 이상적인 열 레벨을 써도 곱셈은 약 3.8× 적어질 뿐입니다. 768–1024 폭 투영에 깊은 재귀를 적용하는 것은 신뢰할 만한 10× 지연 시간 계획이 아니며, 특히 이미 타일링된 GPU GEMM을 상대로는 그렇습니다. 가능한 모든 정확 알고리즘을 배제했다는 주장은 아닙니다.

5. 양자화, 프루닝, 얼리 엑시트는 계약을 바꾼다

가중치 전용 양자화. FP16 스케일과 오프셋을 쓰는 그룹 64 아핀에서, 행렬 파라미터당 저장 바이트는 대략 bits/8 + 4/64입니다. 이는 FP16 대비 이상적인 행렬 저장 절감 8비트에서 1.88×, 4비트에서 3.56×, 2비트에서 6.40× 를 줍니다. 이는 연산 절감이나 월 타임 이득이 아닙니다. 이 메커니즘만으로 가중치 트래픽을 10분의 1로 줄이려면 가중치당 대략 1비트에 메타데이터를 더해야 하며, 이는 근본적으로 다른 근사입니다. 기존 정규화/임베딩/헤드 텐서와 디코드 오버헤드가 전체 요청 이득을 더 줄입니다. MLX quantize 문서, quantized matmul 문서.

양자화는 가중치 트래픽이 지배적일 때 B=1에서 유용할 수 있지만, 큰 토큰 GEMM을 가속할 필요는 없습니다. 이는 로짓, 점수 기대값, 엔트로피 신뢰도, 액션 확률을 바꿉니다. 공개 API가 이 모두를 노출하므로, argmax 일치만으로는 불충분합니다. 각 최종 로짓이 최대 epsilon만큼 바뀐다면, 상위 두 로짓 마진이 2*epsilon보다 크면 승리 레이블을 보증하지만, 확률·점수·액션 일치를 보증하지는 않습니다. 온도 캘리브레이션은 로짓 오차를 온도로 나눕니다. 작은 온도는 겉보기에 작은 원시 오차를 확대할 수 있습니다. 기존 체크포인트에는 0.1006 근처의 선택지 수 온도 버킷이 있어 이것이 관련됩니다.

토큰 프루닝. 폭/깊이와 dense 연산 효율이 그대로일 때, 근사적인 10× dense 작업 목표는 레이어 전반에서 토큰 처리의 약 10%를 유지하는 것을 요구하며, 구두점 토큰 몇 개를 없애는 것이 아닙니다. 원래 깊이의 비율 a를 처리한 뒤 프루닝하면 dense 작업 비율은 a + (1-a)rho이며, 여기서 rho는 이후 레이어의 유지 토큰 비율입니다. a >= 0.1이면 남은 토큰을 전부 버려도 그 단순화 모델에서 10×를 넘길 수 없습니다. 이 모델에서 첫 전역 레이어는 이미 각 상태 토큰을 마스킹되지 않은 모든 질문/선택지 토큰에 연결합니다. 학습된 토큰 중요도와 동적 프루닝을 연구할 수 있지만, 그 정확성은 훈련/캘리브레이션이 필요한 작업 품질 주장입니다. 버려진 토큰에는 부정, 희귀 개체, 근소한 선택지를 결정하는 사실이 들어 있을 수 있습니다. 낮은 초기 어텐션이 이후 레이어에서의 무관함 증명은 아닙니다.

얼리 엑시트. 3번 레이어의 은닉 상태를 28번 레이어 뒤에 훈련된 헤드에 그냥 넣는다고 그 입력 분포가 보존되지는 않습니다. 중간 헤드와 검증된 신뢰도 규칙을 훈련해야 합니다. 10× 균일 비용 깊이 예산은 헤드와 CPU 오버헤드를 빼고 영어 약 2.8개, 다국어 2.2개 인코더 레이어입니다. 현재의 전체 헤드를 유지하면 짧은 시퀀스 dense 예산이 더 엄격해집니다: 그 두 레이어만으로 영어/다국어 A의 6.83%/11.37%입니다. 다국어에서는 그 헤드 하나가 전체 10% dense 작업 예산을 넘습니다. 배치 분기(divergence)도 중요합니다: 개별 항목이 줄지 않은 dense 배치에 남아 있다면 그 항목을 조기 종료해도 아무것도 아끼지 못합니다. FastBERT와 DeeBERT는 정확도/속도 트레이드오프가 있는 훈련된 적응 추론 접근을 확립하지만, 그들이 보고한 이득은 Laya나 이 Mac의 측정이 아닙니다.

근사 학생 모델과 교사 폴백을 함께 쓰면, 직렬 실행을 가정할 때 기대 정규화 비용은 대략 c + q입니다. 여기서 c는 교사 비용으로 나눈 학생 비용, q는 교사 폴백 비율입니다. 10×를 만족하려면 c + q <= 0.1입니다: 교사의 5% 비용 학생은 최대 5%의 요청을 폴백에 남깁니다. 이는 평균 지연 시간을 개선할 수 있지만 어려운 요청의 p95는 교사 지연 시간 근처에 남습니다. 신뢰도 기반 라우팅은 정확한 동등성 증명서가 아닙니다.

6. 질문들 사이에서 정확히 무엇을 재사용할 수 있는가?

프롬프트는 [CLS] question/options [SEP] state [SEP]입니다. 서로 다른 질문은 상태 오프셋과 상태 절단을 모두 바꿀 수 있습니다. 첫 레이어 쿼리 i에 대해 어텐션 출력은 다음과 같습니다:

o_i = sum_j exp(q_i dot k_j / sqrt(d)) v_j
      / sum_j exp(q_i dot k_j / sqrt(d))

마스킹되지 않은 질문 key/value를 바꾸면 모든 상태 쿼리의 분자와 분모가 모두 바뀔 수 있습니다. 유한 로짓에서, 마스킹되지 않은 softmax 가중치는 실수 산술에서 양수입니다. 따라서 첫 전역 레이어 이후의 문맥적 상태는 질문에 의존합니다. 이후의 모든 K/V는 그 바뀐 상태에 의존합니다. 그러므로 완전한 상태 인코딩이나 디코더식 K/V 캐시를 서로 다른 질문들 사이에서 재사용하면 함수가 바뀝니다. 공유되는 원시 텍스트만으로는 불충분하며, 오프셋, 절단, 마스크, 마커 메타데이터도 중요합니다.

구분할 가치가 있는 작은 정확 예외가 있습니다: 그 첫 어텐션 연산 전에, 정규화된 토큰 임베딩과 그 첫 레이어, pre-RoPE Q/K/V 투영은 토큰 정체성에만 의존합니다. 이들은 캐시하거나 미리 계산할 수 있고, 절대 RoPE 위치는 나중에 적용합니다. 전체 첫 QKV 투영을 없애도 조회 트래픽을 빼고 영어/다국어에서 주요 dense 작업의 0.85%/1.42% 만 제거됩니다. 전체 어휘 QKV 표를 일반 임베딩과 함께 유지하면 FP16 저장량이 대략 309 MB/1.18 GB 늘어납니다. 첫 레이어의 상태 대 상태 softmax 충분 통계도 동일한 상태 토큰/절단과 상대 위치 조건에서 재사용한 뒤, 안정적인 softmax 병합으로 질문 기여와 결합할 수 있습니다. 이는 어텐션 레이어 하나의 일부만 아끼며, 이후의 문맥적 상태를 재사용 가능하게 만들지는 않습니다.

정확한 전체 입력 중복 제거는 훨씬 큰 잠재력이 있습니다. N개의 요청된 질문이 U개의 동일한 준비된 포워드 입력을 담으면, U개를 평가하고 그 원시 출력을 올바른 순서 있는 레이블, 캘리브레이션, ID, 사용량 회계와 함께 모든 원래 질문에 매핑합니다. 동등성과 캐시 키는 마스크, 마커 위치, 질문 유형을 포함한 모든 준비된 텐서를 포함해야 하고, 호출 간 키는 체크포인트 리비전, dtype, 실행 구성을 식별해야 합니다. 기존 50질문 픽스처에서 U <= 3이므로, 이상적인 선형 작업 비율은 50/3 = 16.67× 입니다. 작은 배치는 효율이 다르고 준비/출력 매핑이 남기 때문에 실제 지연 시간은 덜 예측 가능합니다. 질문 10개와 고유 입력 세 개일 때 비율은 3.33×에 불과합니다. 어느 결과든 진짜 다른 질문 50개짜리 벤치마크가 함께 가야 합니다.

호출 간 결과 캐싱에서 평균 정규화 지연 시간은 1-h+h*epsilon이며, 여기서 h는 적중률, epsilon은 캐시 적중 비용을 캐시되지 않은 추론 비용으로 나눈 값입니다. 평균 10× 개선에는 h >= 0.9/(1-epsilon)이 필요합니다. 적중이 추론의 1% 비용이면 필요한 적중률은 90.91% 입니다. 적중률, 미스, 콜드 캐시 지연 시간, 미스 경로를 따로 보고하십시오. 표준 벤치마크는 정확히 같은 요청을 반복하므로, 레이블 없는 호출 간 캐시는 모델 실행 측정을 거의 멈추게 할 것입니다.

공유 상태 인코더와 질문별 교차 어텐션은 유망한 재설계 제품이지만, 원래의 이른 질문/상태 상호작용을 제거하므로 재학습이나 증류가 필요합니다. 재사용 가능한 상태 패스 비용이 대략 예전 질문별 패스 하나 정도라면, Q=50에서 공유 패스는 예전 총 예산의 2%를 소비하고, 질문별 작업은 10× 목표에서 최대 8%를 더 소비할 수 있습니다. Q=10에서는 그 공유 패스 하나가 질문별 작업 전에 이미 10%를 씁니다. 상태 길이, 선택지 복잡성, 선택한 더 작은 상태 인코더가 이 추정을 바꿉니다.

7. 한 자릿수 배 모델 개선으로 가는 신뢰할 만한 경로

깊이와 폭을 모두 줄이면 오버헤드를 흡수할 충분한 산술 여유가 생깁니다. 다음은 학생 설계 예산이며, 구현된 모델이나 품질 주장, 측정된 속도 향상이 아닙니다. 같은 토큰 길이를 유지하고, 게이트 인코더 MLP와 하나의 일반적인 결정 헤드 레이어를 쓰며, 같은 A 공식을 셉니다.

교사 후보 N / D / I / H 주요 dense 가중치 교사/학생 dense 작업 비율
Laya / typed 6 / 512 / 1344 / 1 21.82 M 16.88×
Laya / typed 4 / 512 / 1344 / 1 15.60 M 23.61×
Multilingual 6 / 384 / 576 / 1 9.29 M 13.40×
Multilingual 4 / 384 / 576 / 1 6.78 M 18.35×

임베딩은 상대적으로 크게 유지해도 모으는 비용이 저렴할 수 있습니다. 교사의 선택지 분포와 액션 출력을 증류하고, 레이블된 작업을 섞고, score/noul 동작과 다양한 선택지 수를 포괄한 뒤, 홀드아웃 데이터로 출력 캘리브레이션을 다시 적합하십시오. 전체 언어 커버리지와 서로 다른 질문을 평가하십시오. TinyBERT는 증류를 통해 인코더 깊이/폭을 함께 줄이면 다른 BERT 환경에서 큰 속도/품질 트레이드오프를 낼 수 있음을 보여주는 근거입니다. 보고된 9.4× 추론 이득은 Laya로 수치적으로 전이되지 않습니다.

손으로 작성하는 엔지니어링에서는 다음 결정에 우선순위를 두십시오:

  1. 새 GEMM을 작성하기 전에 한계를 확립하십시오. B=1과 처리량 배치에서 컴파일된 모델 시간과 대표적인 dense 프리미티브를 측정하십시오. 실제 지속 처리량을 위의 31–104 TFLOP/s 요건과 비교하십시오. 런치 제거 후에도 dense 실행이 지배적이라면, 새 요소별 커널로는 빠진 한 자릿수 배를 채울 수 없습니다.
  2. 정확한 출력 선택과 정확한 지역 어텐션을 한정된 프로젝트로 구현하십시오. 마지막 헤드는 명확한 의존성 증명이 있고, 긴 다국어 지역 경로는 가장 큰 정확 산술 기회를 가집니다. 맞춤형 Metal을 유지하기 전에 측정된 월 타임 비율을 점검하십시오. 기존 고속 어텐션의 수치 계약을 보존하고 경계 길이/패딩을 테스트하십시오.
  3. 정확한 중복 제거는 작업 부하 회계와 함께만 공개하십시오. 충분히 반복적인 애플리케이션에서 가능한 10× 결과로 가는 가장 빠른 경로입니다. 사용자가 자기 결과를 예측할 수 있도록, 캐시되지 않은 고유 입력 벤치마크와 공존해야 합니다.
  4. 4/8비트와 활성화 인식 저랭크를 측정된 근사로 다루십시오. 속도 개선과 캘리브레이션된 품질 게이트를 함께 요구하십시오. 저장 바이트가 적거나 안정 랭크 숫자가 낮은 것만으로는 충분하지 않습니다.
  5. 새롭고 다양한 요청에서 10×가 필요하다면, 더 작은 학생 모델이나 공유 상태 아키텍처를 개발하고 검증하십시오. 어텐션, CPU 준비, 소형 커널 오버헤드가 남기 때문에 학생 예산은 의도적으로 10× 이상의 dense 작업 절감을 목표로 합니다. 품질 예산과 적절한 훈련/평가 데이터가 전제 조건이며, 기존 동등성 픽스처는 이 주장을 검증할 수 없습니다.

근사 변형의 수용은 choice 일치와 레이블 정확도, 점수 오차, 확률 드리프트, 신뢰도 캘리브레이션, 액션 확률, 근소 마진 사례를 기록해야 합니다. 기존 378/378 argmax 검사, 600회의 유한 반복 호출, AG News 회귀 정합은 그 테스트들에서 현재 포트의 동작을 확립할 뿐, 새로운 압축 모델을 검증하지 않습니다. 별도의 모델 정체성을 유지하고 p50/p95, 콜드 셋업, 메모리, 고유 입력 수, 품질을 함께 보고하십시오.

재현과 범위

  • math_costs.py는 체크포인트 구성과 기존 벤치마크 JSON에서 아키텍처에서 유도한 모든 표와 지연 시간 목표를 재현하고, math_costs.json은 입력 파일 해시와 체크포인트 리비전을 기록합니다.
  • math_spectrum.py는 선택한 CPU 행렬 스펙트럼 네 개를 재현하고, math_spectrum.json은 정확한 행렬 해시를 포함합니다. NumPy와 safetensors만 쓰고 전체 모델을 로딩하지 않습니다.
  • 고정된 소스 체크포인트를 내려받은 뒤 저장소 루트에서 .venv/bin/python experiments/math_costs.py와 .venv/bin/python experiments/math_spectrum.py를 실행하십시오. CPU 샘플링과 엔지니어링 GPU 타이밍은 겹치지 않도록 조율했습니다.
  • 현재 MLX 양자화 의미는 find-docs 스킬로, 요구되는 Context7 라이브러리 해석과 그 뒤의 별도 양자화 문서 쿼리를 써서 확인했습니다. 공식 MLX 문서, ModernBERT/FlashAttention 및 증류/얼리 엑시트 논문, Apple 사양, 실제 로컬 모델을 출처로 썼습니다. 논문의 어떤 성능 수치도 이 머신에서의 측정으로 제시하지 않습니다.

한국어 결론: 같은 체크포인트, 같은 전체 출력 의미 아래에서는, 당장 “손으로 커널 몇 개만 쓰면 다시 10× 빨라진다”는 신뢰할 만한 경로가 없습니다. 기존 모델의 대부분은 dense 계산이며, 지역 어텐션과 마지막 head 정확 프루닝은 모델링 FLOPs의 약 2.8%–16.5%만 줄입니다. 실제 가중치 샘플링은 행렬 분해를 10분의 1 작업량으로 압축하면 최선의 상대 Frobenius 재구성 오차가 약 82%–87% 나온다는 것을 보여주므로, 근사 무손실 지름길로 삼을 수 없습니다. 10×는 반복이 많은 입력의 정확 중복 제거/캐시에서, 또는 증류로 레이어 수와 폭을 함께 줄이고 공유 state 인코딩 방식을 재설계하는 데서 더 유망합니다. 전자는 적중률과 독립 입력 성능을 공개해야 하고, 후자는 정확도, 점수, 확률, action 동작을 훈련하고 다시 검증해야 합니다.