tag양자화 기술 개요
모델 양자화는 일반적으로 다음 네 가지 중 하나를 의미합니다.- 사후 훈련 양자화 (PTQ, Post-training quantization)
- 양자화된 임베딩 출력을 위한 훈련 (Output QAT)
- 완전 양자화된 모델을 위한 훈련 (Full QAT)
- 기존의 양자화되지 않은 모델에서 새로운 양자화된 모델을 증류
| 접근 방식 | 더 작은 임베딩? | 훈련 필요? | 모델 압축? | 더 빠른 추론? |
|---|---|---|---|---|
| PTQ | ✓ | ❌ | ❌ | ❌ |
| Output QAT | ✓ | ✓ | ❌ | ❌ |
| Full QAT | ✓ | ✓ | ✓ | ✓ |
| Distillation | ||||
| (더 작은 모델로) | ✓ | ✓ | ✓ | ✓ |
tag실험 설정
이러한 실험에서 기준 모델은 2048차원에서 32비트 정밀도 부동 소수점 (FP32) 벡터를 생성하는 검색 어댑터가 있는 jina-embeddings-v4입니다. 따라서 각 임베딩의 크기는 8196바이트 또는 8kB입니다. NanoBEIR 벤치마크 스위트의 쿼리-문서 검색 벤치마크 작업을 사용하여 여러 실험 조건을 연구했습니다. 검색 프로세스는 벡터 간의 코사인 유사도를 사용하여 쿼리와 가장 일치하는 문서를 찾고 순위를 매깁니다.- 기준 — 양자화 없이 jina-embeddings-v4 임베딩 벡터의 성능. 이러한 실험은 모두 모델의 베타 버전을 사용했으며 릴리스 성능이 다소 좋습니다.
- PTQ — 모델을 변경하지 않고 출력 벡터를 이진 벡터로 양자화했습니다.
- Output QAT — 양자화된 조건에서 성능을 향상시키기 위해 출력 벡터를 양자화하고 검색 어댑터에 미세 조정을 적용했습니다.
tag양자화 수준

- 8비트 정수 — FP32 값은 -128에서 127 범위의 정수로 줄어들어 임베딩이 4배 줄어들어 2048바이트가 됩니다.
- 4비트 정수 - 4비트 정수와 동일하지만 -8에서 7 범위로 매핑하여 벡터 크기를 8배 줄여 1024바이트로 줄입니다.
- 삼항 양자화 — 모든 값은 -1, 0, 1의 세 값 중 하나로 매핑됩니다. 최적으로 저장하면 각 차원이 1.6비트로 줄어들어 임베딩 벡터의 크기가 약 40배 줄어들어 약 230바이트가 됩니다.
- 이진 양자화 —
torch.sign데이터 유형을 사용하여 FP32 스칼라 값을 1비트로 변환합니다. 이 데이터 유형은 저장하는 데 1비트가 걸리는 두 개의 값만 제공합니다. 이렇게 하면 2048차원 임베딩 벡터가 8192바이트에서 128바이트로 64배 줄어듭니다.
tag스케일링
이진 양자화의 경우 양자화는 매우 간단합니다. 벡터 값이 0보다 크거나 양수이면 1로 매핑됩니다. 그렇지 않으면 -1로 매핑됩니다.
- ≥ 이면 는 1이 됩니다.
- ≤ 이면 는 -1이 됩니다.
- < < 이면 는 0이 됩니다.

- ≥ 이면 는 7이 됩니다.
- ≤ 이면 는 -8이 됩니다.
- < < 이면 는 이 되고 가장 가까운 정수로 반올림됩니다. 이렇게 하면 값이 범위로 스케일링됩니다.

- ≥ 이면 는 127이 됩니다.
- ≤ 이면 는 -128이 됩니다.
- < < 이면 는 이 되고 가장 가까운 정수로 반올림됩니다. 이렇게 하면 값이 범위로 스케일링됩니다.

- 최소/최대 — 데이터를 일괄 처리하고 각 일괄 처리마다 가장 높은 벡터 구성 요소와 가장 낮은 벡터 구성 요소를 식별하여 를 가장 높게, 을 가장 낮게 설정했습니다.
- 일괄 처리에서 롤링 평균 — 각 일괄 처리마다 벡터 구성 요소의 평균과 표준 편차를 계산했습니다. 모든 일괄 처리를 처리하면서 평균과 표준 편차의 이동 평균을 유지했습니다. 가 일괄 처리 평균 값의 현재 이동 평균이고 가 표준 편차의 현재 이동 평균인 경우 각 일괄 처리마다:
tagQAT 미세 조정
PTQ 실험의 경우 모델을 있는 그대로 사용하고 위에서 설명한 방법을 사용하여 생성된 임베딩을 양자화했습니다. Output QAT의 경우 *straight-through estimation*을 사용하여 모델을 미세 조정했습니다. 이는 손실 (즉, 오류)을 계산하기 전에 양자화 프로세스를 되돌려 값의 전체 정밀도를 복원한 다음 해당 손실 메트릭을 사용하여 모델을 미세 조정하는 것을 의미합니다.각각의 경우 10,000단계를 거쳐 미세 조정했으며, 500단계마다 체크포인트를 저장했습니다. 그런 다음 NanoBEIR 벤치마크에서 가장 높은 점수를 받은 체크포인트를 유지했습니다.
tag비대칭 양자화
PTQ와 Output QAT는 임베딩 벡터의 크기를 줄이지만, 모델 크기나 추론 속도를 줄이지는 않습니다. 모든 절감 효과는 저장된 문서 임베딩의 크기와 검색 속도에 있습니다.
결과적으로 쿼리 벡터를 양자화하거나 검색 시 양자화되지 않은 상태로 두는 것을 모두 테스트했습니다. 어느 쪽이든 저장된 임베딩 벡터의 크기를 변경하지 않기 때문입니다.
tag결과
총 9가지 조건을 테스트했으며, 아래 표에 요약되어 있습니다.
| 조건 이름 | 미세 조정 | 양자화 수준 | 스케일링 전략 | 양자화된 쿼리 |
|---|---|---|---|---|
| 기준선 | ❌ | 해당 없음 | 해당 없음 | 해당 없음 |
| PTQ Both | ❌ | 이진 | 해당 없음 | ✓ |
| PTQ Docs Only | ❌ | 이진 | 해당 없음 | ❌ |
| QAT Binary | ✓ | 이진 | 해당 없음 | ✓ |
| QAT Binary Docs Only | ✓ | 이진 | 해당 없음 | ❌ |
| QAT Trinary | ✓ | 삼진 | 롤링 평균 | ✓ |
| QAT 4-bits | ✓ | 4비트 | 롤링 평균 | ✓ |
| QAT 8-bits | ✓ | 8비트 | 롤링 평균 | ✓ |
| QAT 8-bits Min/Max | ✓ | 8비트 | 최소/최대 | ✓ |
표 2: 실험 조건
| 조건 이름 | 평균 점수 | 기준선과의 차이 |
|---|---|---|
| 기준선 | 60.10 | 해당 없음 |
| PTQ Binary | 58.33 | -1.78 |
| PTQ Binary Docs Only | 59.08 | -1.02 |
| QAT Binary | 59.22 | -0.89 |
| QAT Binary Docs Only | 60.81 | +0.70 |
| QAT Trinary | 59.49 | -0.62 |
| QAT 4-bits | 61.73 | +1.62 |
| QAT 8-bits | 61.67 | +1.56 |
| QAT 8-bits Min/Max | 61.29 | +1.19 |
표 3: 12개의 NanoBEIR 벤치마크에 대한 각 조건의 평균 점수(정확도 %)
위 표에서 양자화를 위한 미세 조정이 점수를 향상시킨다는 것을 알 수 있습니다. PTQ Binary 조건과 QAT Binary 조건의 유일한 차이점은 미세 조정이며, 점수 차이는 상당합니다. 마찬가지로, 동일한 미세 조정으로만 구분되는 PTQ Binary Docs Only 조건과 QAT Binary Docs Only 조건 간에 거의 2%의 점수 향상을 확인할 수 있습니다.
놀랍지 않게도 양자화 정도가 적을수록 점수가 일반적으로 향상되는 것을 알 수 있습니다. 4비트 양자화가 삼진보다, 삼진이 이진보다 더 나은 점수를 얻습니다. 그러나 8비트로 더 나아가는 것은 아무것도 개선하지 못한 것 같습니다.
이진 경우에만 쿼리를 양자화하지 않은 상태로 두는 것을 테스트했지만, 이는 성능을 향상시키는 것으로 보입니다.
마지막으로, 테스트 결과 롤링 평균 스케일링 방법이 단순한 최소/최대 접근 방식보다 성능이 우수함을 시사합니다.
tag결론
양자화는 임베딩 모델에 대한 몇 가지 중요한 운영상의 이점을 제공합니다. 임베딩 벡터의 크기를 크게 줄이고 정보 검색 속도를 높이기 때문입니다. 간단한 사후 훈련 양자화 (PTQ, Post-Training Quantization)는 메모리 및 스토리지 측면에서 즉각적인 이점을 제공하지만, 실험 결과 양자화 인식 훈련 (QAT, Quantization-Aware Training)이 불가피한 정밀도 손실을 크게 완화하는 것으로 나타났습니다. 미세 조정은 지속적으로 더 나은 점수를 산출했습니다.
양자화 정도는 성능에 직접적인 영향을 미치며, 이는 값의 정밀도를 낮추는 데 기반한 방법에서 예상할 수 있는 결과입니다. 덜 적극적인 양자화 (예: 4비트)는 일반적으로 더 적극적인 방법 (예: 이진)보다 성능이 우수하지만, 놀랍게도 8비트와 4비트 양자화 간에는 성능 차이가 크지 않았습니다. 일부 부정확성 임계값에 도달할 때까지는 양자화 정도에 따른 차이가 거의 없는 것으로 보입니다.
스케일링 전략도 중요하며, 롤링 평균 방법이 고정된 최소/최대 접근 방식보다 우수한 결과를 보였습니다. 데이터와 관련된 스케일링 값을 사용하는 것이 훨씬 더 효과적인 것으로 보이며 추가 탐구가 필요합니다.
양자화를 통해 더 적은 비용으로 임베딩 모델을 더 많이 활용할 수 있습니다. 이 기사에서는 양자화에 대한 모든 옵션을 탐색하지는 않지만, 쉽게 접근할 수 있는 두 가지 옵션을 탐색하고 있으며, 이들은 실제로 제공할 수 있는 이점이 있습니다. 사용자 비용을 더욱 절감할 수 있도록 양자화 전략을 개선하고 개선하기 위해 노력하고 있으며, 가까운 시일 내에 jina-embeddings-v4에 대한 이진 지원을 릴리스할 예정입니다.






