deepseek-v3 자세한 설명 일련의 기사 : 황소의 잠재적주의 메커니즘 (MLA)
이 기사는 "DeepSeek-V3의 자세한 설명"시리즈의 첫 번째 기사입니다.
이 일련의 기사는 두 가지 주요 주제를 다룰 것입니다 :
DeepSeek-V3의 주요 건축 혁신에는 MLA (Bulner 잠재적주의 관심) [3], Deepseekmoe [4], 보조 손실없이 부하 밸런싱 및 다중 태그 예측 훈련이 포함됩니다.
Deepseek-V3 교육 프로세스, 사전 훈련, 미세 조정 및 강화 학습 정렬 단계를 포함한 교육 프로세스.
이 기사는 주로 DeepSeek-V2의 개발에서 원래 제안되었으며 DeepSeek-v3에 적용 된 다중 헤드 잠재적주의 메커니즘 (MLA)
에 중점을 둡니다.
<:> 카탈로그 :
-
배경 : - 우리는 표준 MHA부터 시작하여 추론 단계에서 키 값 캐시가 필요한 이유, MQA와 GQA를 최적화하려고하는 방법, 로프 작동 방식 등을 설명합니다.
는 잠재적 인주의 메커니즘 (MLA)을 뚫고있다.
참조.
배경
MLA를 더 잘 이해 하고이 기사를 일대일로 만들기 위해 MLA의 세부 사항을 탐구하기 전에이 섹션의 몇 가지 관련 개념을 검토 할 것입니다.
디코더 변압기에서 MHA
MLA는자가 회귀 텍스트 생성의 추론을 가속화하기 위해 개발 되었으므로이 맥락에서 논의 된 MHA는 디코더 전용 변압기를위한 것입니다.
다음 그림은 디코딩을위한 세 가지 변압기 아키텍처를 비교합니다. 그런 다음 디코더 부품은 [6]에 의해 단순화되어 (b)에 표시된 디코더 전용 변압기 모델을 얻었으며, 나중에 GPT [8]와 같은 많은 생성 모델에 의해 사용되었습니다.
오늘날, 대형 언어 모델은 (c)보다 안정적인 훈련을 위해 (c)에 표시된 구조를 더 자주 선택하고, 출력보다는 입력에 정규화를 적용하고, Layernorm을 RMS Norm으로 업그레이드합니다. 이것은이 기사에서 논의하는 기준 아키텍처 역할을합니다.
이 맥락에서 MHA 계산은 아래 그림과 같이 [6]의 프로세스를 크게 따릅니다.
우리가 n_h - 주의 헤드를 가지고 있고 각주의 헤드의 치수가 d_h 로 표현되므로 연결된 치수는 (
h_n · - d_h ).
레이어가있는 모델의 경우, 해당 레이어에서 t-th 태그의 입력을 로 표시하면 우리는 d 에서 ( 의 치수를 매핑하려면 선형 매핑 행렬을 사용해야합니다.
더 공식적으로, 우리는 ([3]) : 를 가지고 있습니다 여기서 , w^k 및 는 선형 매핑 행렬입니다 :
맵핑 후 , k_t 및 를
n_h
t로 분할하여 비례 닷 제품을 계산하십시오
여기서 여기서 ()에서 d : <.>
식 (1) ~ (8)의 위에서 설명한 절차는 단일 마커에 대한 것입니다. 추론 과정에서 우리는 새로 생성 된 각 마크 업에 대해이 프로세스를 반복해야하며, 여기에는 많은 반복 계산이 포함됩니다. 이것은 키 값 캐싱이라는 기술로 이어집니다.
키-값 캐시
이름에서 알 수 있듯이 키-값 캐싱은 각 디코딩 단계에서 재 계산하는 대신 이전 키와 값을 캐싱하고 재사용함으로써 자동 회귀 프로세스 속도를 높이기 위해 설계된 기술입니다.
KV 캐시는 일반적으로 추론 단계에서만 사용됩니다. 훈련 중에 전체 입력 시퀀스를 병렬로 처리해야하기 때문입니다.
KV 캐시는 일반적으로 롤링 버퍼로 구현됩니다. 각 디코딩 단계에서 새 Query Q 만 계산하고 캐시에 저장된 K 및 V는 새로운 Q 및 재사용 K 및 V를 사용하여주의를 계산하기 위해 재사용됩니다. 동시에, 새로운 태그 K 및 V도 나중에 사용하기 위해 캐시에 추가됩니다.
그러나 키-값 캐시에 의해 가져온 가속도는 메모리 비용으로옵니다. 키-값 캐시는 일반적으로 배치 크기 × 시퀀스 길이 × 숨겨진 크기 x 헤드 카운트
에 따라 다르기 때문입니다. 배치 크기 나 시퀀스가 더 길면 메모리 병목 현상이 발생할 수 있습니다.
이것은이 제한을 다루기 위해 설계된 두 가지 기술, 즉 다중 정체주의와 그룹 쿼리주의로 이어집니다.
다중 쿼리주의 (MQA) 대 그룹 쿼리주의 (GQA)
다음 그림은 원래 MHA, 그룹화 된 쿼리주의 (GQA) [10]와 다중 정체주의 (MQA) [9] 간의 비교를 보여줍니다.
MQA의 기본 아이디어는 모든 쿼리 헤더에서 단일 키와 단일 값 헤더를 공유하는 것입니다.이 쿼리 헤더에서 메모리 사용량을 크게 줄일 수 있지만주의 정확도에도 영향을 줄 수 있습니다.
GQA는 MHA와 MQA 사이의 보간 방법으로 간주 될 수 있으며, 여기서 한 쌍의 키와 값 헤더 만 모두 쿼리 헤더 세트 만 공유합니다. 그러나 이것은 여전히 MHA보다 더 나쁜 결과로 이어질 것입니다.
후기 장에서는 MLA가 메모리 효율성과 모델링 정확도의 균형을 맞추기 위해 어떻게 관리하는지 살펴볼 것입니다. 로프 (회전 위치 임베드)
우리가 언급해야 할 마지막 배경은 로프 [11]입니다. 이것은 사인 함수를 사용하여 쿼리와 주요 벡터를 다중 헤드주의를 회전시켜 위치 정보를주의 메커니즘으로 직접 인코딩합니다.
보다 구체적으로, 로프는 각 태그의 쿼리 및 키 벡터에 위치에 따른 회전 행렬 를 적용하고 사인 및 코사인 함수를 기본으로 사용하지만 고유 한 방식으로 회전을 구현할 수 있습니다.
위치 의존적 인 원인을 이해하려면 4 가지 요소 (x_1, x_2, x_3, x_4) 만있는 장난감 임베딩 벡터를 고려하십시오.
로프를 적용하려면 먼저 연속 치수를 쌍으로 그룹화합니다.
(x_1, x_2) -& gt;
(x_3, x_4) -& gt;
그런 다음 회전 행렬을 적용하여 각 쌍을 회전시킵니다.
여기서 θ = θ (p) = p ⋅ θ_0, θ_0은 기본 주파수 입니다. 4D 장난감 예제에서 이것은 (x_1, x_2)가 θ_0을 회전하는 반면 (x_3, x_4)는 2 ⋅ θ_0을 회전한다는 것을 의미합니다.
이것이 우리 가이 회전 행렬을 호출하는 이유 위치 관련
: 각 위치 (또는 각 쌍)에서 회전 각도가 위치에 의해 결정되는 다른 회전 행렬을 적용합니다.
로프는 긴 시퀀스 인코딩의 효율성으로 인해 현대 대형 언어 모델에서 널리 사용되지만 위의 공식에서 볼 수 있듯이 Q와 K에 대한 위치 감도가있어 일부 측면에서는 호환되지 않습니다. MLA와 함께.
BULES의 잠재적 인주의 메커니즘
마지막으로 MLA 섹션에 대해 계속 논의 할 수 있습니다. 이 섹션에서는 먼저 MLA의 고급 아이디어에 대해 자세히 설명하고 로프 수정이 필요한 이유를 해결할 것입니다. 마지막으로 세부 알고리즘과 MLA의 성능도 소개합니다. -
<: :> MLA : 고급 생각
MLA의 기본 아이디어는주의 입력을 압축하는 것입니다. h_t
는 치수가 - d_c
인 저 차원 잠재 벡터로 압축하는 것입니다. 원본보다 작습니다 ( d_h ). 나중에주의를 계산해야 할 때이 잠재 벡터를 고차원 공간에 다시 매핑하여 키와 값을 복원 할 수 있습니다. 따라서, 잠재적 벡터 만 저장해야하므로 메모리 사용량이 크게 줄어 듭니다.
이 프로세스는 다음 방정식으로 더 공식적으로 설명 할 수 있습니다. 여기서 c^{kv} _t 는 잠복 벡터이고 w^{dkv}
는 입니다. h_t h_n
· )에서 d_c 의 압축 행렬에 맵핑됩니다 (여기서 Supercript에서 D 차원 감소 프로젝션 ", 이것은 압축을 의미하고, 는 공유 잠재적 벡터를 고차원 공간에 다시 맵핑하는 상단 투영 행렬입니다.
마찬가지로, 쿼리를 잠재적 인 저 차원 벡터에 매핑 한 다음 원래 고차원 공간에 다시 매핑 할 수 있습니다 : .
앞에서 언급했듯이 로프는 트레이닝 생성 모델이 긴 시퀀스를 처리하기위한 일반적인 선택입니다. 위의 MLA 정책을 직접 적용하면 로프와 호환되지 않습니다.
더 명확하게 보려면 Eqn을 사용하여주의를 계산할 때 어떤 일이 발생하는지 고려하십시오. 행렬 w^q 및 w^{uk}
는 가운데에 나타나고 그 조합은 d_c 에서 d에서 동일합니다. 의 매핑 치수.
원래 논문 [3]에서 저자는 로 "에 의해 w^q 에 흡수 될 수 있다고 묘사합니다. 캐시에 w^{uk} 를 저장할 필요가 없으므로 메모리 사용량이 더 줄어 듭니다.
그러나, 로프가 w^{uk} 의 왼쪽에 회전 행렬을 적용하기 때문에 그림 (4)의 회전 행렬을 고려할 때는 그렇지 않습니다. w^q 와 사이에 위치합니다.
배경 섹션에서 설명한 바와 같이,이 회전 행렬은 위치에 따라 다르므로 각 위치에 대한 회전 행렬이 다르다는 것을 의미합니다. 따라서, w^{uk} ** >
w^q ** ***************************************************************************************************************************************************** ************************************** 할 수 없습니다 w^q ** 에 더 오래 흡수됩니다.
이 갈등을 해결하기 위해 저자들은 추가 쿼리 벡터와 공유 주요 벡터를 도입하고이 추가 벡터를 로프 프로세스에서만 사용하여 " 디퍼 커플 링 로프 "라는 것을 제안했습니다. 동시에 원래 키를 회전 행렬에서 어느 정도 분리하여 유지하십시오.
전체 MLA 프로세스는 다음과 같이 요약 될 수 있습니다 (방정식 번호는 [3]의 부록 C에서 재사용됩니다.
여기서
<.> eqn. (37) ~ (40) 쿼리 태그가 어떻게 처리되는지 설명하십시오.
<.> eqn. (41) 및 (42)는 키 마커가 어떻게 처리되는지 설명합니다.
<.> eqn. (43) 및 (44) 로프에 추가 공유 키를 사용하는 방법을 설명하십시오. (42)의 출력은 로프에 관여하지 않습니다.
<.> eqn. (45)는 값 태그를 다루는 방법을 설명합니다.
이 과정에서는 파란색 변수를 상자로 캐시하면됩니다. 이 프로세스는 다음 흐름도를 사용하여보다 명확하게 설명 할 수 있습니다.
### mla의 성능
다음 표는 KV 캐시에 필요한 요소 수 (태그 당)와 MHA, GQA, MQA 및 MLA 간의 모델링 기능을 비교하여 MLA가 메모리 효율성과 모델링 기능 사이에서 실제로 더 나은 균형을 달성 할 수 있음을 보여줍니다.
흥미롭게도 MLA의 모델링 기능은 원래 MHA의 모델링 기능을 능가합니다. 더 구체적으로, 다음 표는 7B 모델에서 MHA, GQA 및 MQA의 성능을 보여줍니다. 여기서 MHA는 MQA 및 GQA보다 성능이 상당히 우수합니다.
[3]의 저자는 또한 MHA와 MLA를 분석했으며, 결과는 아래 표에 요약되어 있으며 MLA는 전체적으로 더 나은 결과를 얻었습니다.
참조
[1] Deepseek
[2] DeepSeek-V3 기술 보고서
[3] Deepseek-V2 : 강력하고 비용 효율적인 하이브리드 전문가 언어 모델
[4] Deepseekmoe : 하이브리드 전문가 언어 모델의 최종 전문가 전문 분야를 향해
[5] 하이브리드 전문가 모델에 대한 보조 손실로드 밸런싱 전략
[6]주의가 필요한 전부
[7] 긴 시퀀스 를 요약하여 Wikipedia를 생성합니다
[8] 생성 사전 훈련 를 통한 언어 이해를 향상시킵니다
[9] 빠른 변압기 디코딩 : 쓰기 헤드만으로도
[10] GQA : 멀티 헤드 체크 포인트에서 일반화 된 다중 쿼리 변압기 모델 훈련
[11] Roformer : 회전 위치가 포함 된 향상된 변압기
위 내용은 Deepseek-V3는 1 : 다중 헤드 잠재 관심을 설명했습니다의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!