Kiến trúc DeepSeek V4

Một triệu token không có nghĩa là mô hình nhớ hết một triệu token. Khi Attention được phép nói "Thôi, vậy đủ rồi"

Kiến trúc DeepSeek V4

Đọc thêm một chữ, mô hình ngôn ngữ phải ngoái lại tất cả những chữ nó đã đọc. Chữ thứ mười ngoái lại chín chữ. Chữ thứ chín trăm nghìn ngoái lại gần chín trăm nghìn chữ. Ba câu đó là toàn bộ lý do ngữ cảnh dài ngốn máy tới thế: mỗi chữ thêm vào bắt máy làm thêm một mớ phép tính, và bắt nó giữ lại thêm một mớ bộ nhớ.

Gỡ kiến trúc DeepSeek-V4 ra thì thấy nó chỉ là mấy cách khác nhau để trả lời đúng một câu: lần này ngoái lại bao nhiêu thì đủ.

Câu hỏi ấy già đúng bằng cơ chế đẻ ra nó. Cả hai cùng xuất hiện năm 2017, trong cùng một bài báo. Từ đó tới giờ mỗi đời mô hình lại gọt đi một ít, và V4 gọt tiếp rồi dừng ở một chỗ mà chính người viết ra nó nói là chưa hiểu.

Một agent phải nhớ 300 file

Thả một chương trình vào kho mã nguồn 300 file rồi bảo nó đi tìm. Nó tự mở file, tự chạy lệnh, tự đọc kết quả, rồi tự quyết mở tiếp cái gì. Loại chương trình chạy một mạch không chờ ai bấm nút như thế thì người ta gọi là agent. Năm trăm bước sau, bạn hỏi nó một câu mà đáp án nằm trong đúng cái file nó mở ở bước một.

Năm trăm bước tương tác với ngữ cảnh 512 nghìn token chính là thiết lập DeepSeek dùng để chấm điểm agent của chính họ, ghi ở trang 37 [1].

Muốn trả lời được, chương trình phải còn giữ được thứ nó đọc ở bước một. Giữ nổi hay không thì quy về hai con số: mỗi chữ mới bắt máy làm thêm bao nhiêu phép tính, và cần thêm bao nhiêu bộ nhớ để khỏi quên. Cứ để tình huống này trong đầu.

Năm 2017: thứ làm nó mạnh cũng là thứ làm nó nặng

Trước hết, mô hình đọc token chứ không đọc chữ. Token là mẩu chữ cắt sẵn, cỡ vài ký tự tới một từ. Ở đây thì bạn cứ hiểu token là một từ, sai lệch chả đáng bao nhiêu.

Cơ chế đẻ ra mọi mô hình ngôn ngữ hiện nay tên là attention, công bố năm 2017 [2]. Nôm na là: Token mới xuất hiện, nó gửi một câu hỏi ngược về mọi token đã đi qua trước đó. Mỗi token cũ đáp lại bằng một điểm số, tức mức độ nó dính dáng tới câu đang hỏi. Rồi mô hình trộn nội dung các token cũ theo đúng tỷ lệ điểm ấy, và mớ trộn ra chính là thứ nó dùng để hiểu token mới.

\[\mathrm{Attention}(Q, K, V) = \mathrm{softmax}\!\left(\frac{QK^\top}{\sqrt{d_k}}\right)V\]

\(Q\) là câu hỏi của token đang xét, \(K\) là phần để được tìm thấy của các token cũ, \(V\) là nội dung của chúng. Tích \(QK^\top\) chính là bảng điểm, softmax biến đổi lại sao cho tổng mỗi token cộng lại bằng 1 (để chuyển đổi nó thành dạng %), rồi nhân với \(V\) là bước trộn. Còn \(\sqrt{d_k}\) dưới mẫu người ta thêm vào bằng tay cho bảng điểm khỏi quá gắt.

Hình 1. Đúng cái công thức trên, chạy chậm lại. Điểm số trong hình là mình đặt tay cho câu chuyện hiện ra chứ không đo từ mô hình nào, nên thứ đáng nhìn là hình dạng quy trình: một câu hỏi, sáu điểm, một lần softmax, một tổng có trọng số. Để ý hai dòng chảy dày nhất đi ra từ "tiền" và từ "hợp", mà "hợp" là token đứng đầu tiên.

Bạn thấy chứ?

Chỗ mạnh nằm ở chữ "mọi". Token thứ chín trăm nghìn vẫn biết và giữ quan hệ với token đầu tiên, không bị pha loãng dọc đường. Mấy kiến trúc trước nó không làm được chuyện đó, và đấy là lý do mô hình ngôn ngữ đọc nổi văn bản dài.

Chỗ nặng cũng nằm ở đúng chữ "mọi". Token mới hỏi lại tất cả token cũ, nên số câu hỏi phải đáp phình lên cùng chiều dài của văn bản (chính là chiều dài context length trong model). Mà muốn đáp thì mọi token cũ phải còn nằm đâu đó trong bộ nhớ. Cơ chế này rất mạnh mẽ nhưng cũng rất cồng kềnh, và đó là lý do ngữ cảnh dài ngốn Ram tới vậy.

Hình 2. Ô tô đậm là số cặp phải chấm điểm khi văn bản dài \(L\) token. Bốn dòng bên phải là chính con số đó khi \(L\) lớn dần, và chúng là phép cộng thuần tuý chứ không phải số đo của mô hình nào.
ở bước một nó hỏi lại vài nghìn token, ở bước năm trăm nó cũng hỏi lại vài trăm nghìn. Rất tốn tài nguyên tính toán.

Phép tính và bộ nhớ

Phép tính là thứ dễ thấy hơn. Mỗi token mới hỏi lại mọi token cũ, nên tổng số phép tính cho cả văn bản tăng theo bình phương chiều dài. Văn bản dài gấp mười thì riêng phần attention tốn gấp một trăm.

Bộ nhớ thì khó thấy hơn. Mỗi token đi qua đều để lại một bản ghi, để các token sau còn quay về tra lại nó. Bản ghi đó gọi là một entry, và chỗ chứa tất cả entry gọi là KV cache, một cuốn sổ mà mỗi token thêm vào một dòng.

Cuốn sổ này dày thêm đều đặn: đọc gấp đôi số token thì nó dày gấp đôi, chứ không phình theo bình phương như phép tính. Nhưng nó có một tật mà phép tính không có. Phép tính xong một bước là xong, còn entry thì nằm lại. Suốt năm trăm bước của con agent kia, cuốn sổ chỉ có dày thêm, không một lần nào mỏng đi.

Hình 3. Năm trăm bước của con agent đầu bài, và đường đi lên không có một đoạn nào đi xuống. Bậc thang trong hình chỉ để nhìn ra từng bước một, chứ mức tăng thật thì tuỳ mỗi bước đọc thêm bao nhiêu token.

Nó là như này:

\[C(L) \;\propto\; L^{2}, \qquad M(L) \;\propto\; L\]

\(L\) là số token đã đọc, \(C\) là phép tính phần attention phải làm, \(M\) là chỗ KV cache chiếm. Bảng điểm \(QK^\top\) có \(L\) hàng và \(L\) cột nên \(C\) mang số mũ hai, còn KV cache chỉ dài thêm mỗi token một dòng nên \(M\) mang số mũ một. Mọi mẹo trong V4 đều là cách kéo một trong hai xuống: có cái hạ hẳn số mũ, có cái chỉ cắt bớt hằng số nhân đằng trước.

Trong phần tóm tắt của báo cáo, ở ngữ cảnh một triệu token, bản DeepSeek-V4-Pro chỉ cần 27% số phép tính cho mỗi token và 10% dung lượng KV cache. Bản nhỏ hơn, DeepSeek-V4-Flash, xuống còn 10% phép tính và 7% KV cache [1].

Phần tóm tắt ở trang bìa báo cáo, đoạn tô vàng ghi rằng ở ngữ cảnh một triệu token, bản DeepSeek-V4-Pro chỉ cần 27% số phép tính cho mỗi token và 10% dung lượng KV cache so với DeepSeek-V3.2

Mấy chỗ dễ hiểu nhầm:

Hai con số ấy không thuộc về cùng một mô hình. Số 10% xuất hiện hai lần trong cùng một đoạn với hai nghĩa khác hẳn nhau: nó vừa là KV cache của bản Pro, vừa là phép tính của bản Flash.

Mốc so sánh cũng không phải một mô hình attention thông thường, mà là DeepSeek-V3.2 [3], tức đời trước của chính họ. Muốn so với loại thông thường thì phải lật sang trang 13 của bài nghiên cứu, và con số ở đó khác hẳn: chi phí attention của V4 vào khoảng 2% [1].

DeepSeek cho các tham số chuyên gia chạy ở định dạng số bốn bit (FP4), chính họ viết rằng trên phần cứng hiện có, nhân bốn bit với tám bit chỉ nhanh đúng bằng nhân tám bit với tám bit. Phần lợi thêm một phần ba là thứ về lý thuyết làm được, trên phần cứng tương lai. Chưa tồn tại. Hay nói chính xác hơn là chưa hoàn thiện để công bố, GPU của Trung Quốc.

Trang 5 của báo cáo, đoạn tô vàng viết rằng trên phần cứng hiện có, phép nhân giữa định dạng bốn bit và định dạng tám bit đạt đúng bằng tốc độ đỉnh của phép nhân tám bit với tám bit, còn phần lợi thêm một phần ba chỉ là điều có thể làm được về lý thuyết, trên phần cứng tương lai

2019 tới 2026: ba mẹo V4 không tự nghĩ ra

V4 không bắt đầu từ số không. Trang 7 liệt kê những gì họ bê nguyên từ đời V3 [4]: cách chia mô hình thành một nhóm chuyên gia (mixture-of-experts) mà mỗi token chỉ đánh thức vài người trong đó thay vì dựng cả nhóm dậy [5], và cách cho mô hình đoán trước nhiều token một lúc. Hai thứ đó có sẵn rồi, mình bỏ qua.

Cả ba mẹo đều có tiền lệ trước V4.

Key và value gộp làm một. Kiến trúc gốc để mỗi entry mang hai thứ tách rời. Một phần để được tìm thấy, giống chữ ghi trên gáy hộp hồ sơ, gọi là key. Một phần chứa nội dung thật, gọi là value. Ai làm lập trình thì cứ hình dung đúng cái dictionary. Tìm bằng phần trước, đọc ra phần sau. Ý tưởng cắt bớt chỗ này có từ một bài báo năm 2019 [6], DeepSeek-V4 chỉ đẩy nó tới mức cực đoan hơn: mỗi entry nén xuống còn đúng một dãy số, vừa là gáy hộp vừa là ruột hộp. Chọn được cái nào thì chính cái đó là thứ đọc ra. Bộ nhớ mỗi entry giảm một nửa, đổi lại mô hình mất một bậc tự do. Nó không còn cách nào làm cho một entry dễ tìm vì lý do này mà lại chứa nội dung kia. Dấu để tìm và thứ tìm được giờ là một.

Bên trái là kiến trúc gốc, mỗi entry lưu hai phần tách rời, phần key để được tìm thấy và phần value để đọc ra. Bên phải là DeepSeek-V4, cả hai gộp thành một dãy số duy nhất, nên mỗi entry chỉ tốn một nửa bộ nhớ

128 chữ gần nhất được miễn nén. Mấy cơ chế nén ở trên chỉ làm việc trên các khối đã nén xong, nên mấy chữ vừa mới xuất hiện thì không cơ chế nào nhìn thấy: chúng còn đang nằm trong một khối chưa gom đủ. Mà trong ngôn ngữ, mấy chữ ngay trước đó thường lại là mấy chữ quan trọng nhất. DeepSeek gắn thêm một nhánh phụ gọi là cửa sổ trượt (sliding window), giữ nguyên xi 128 token gần nhất, không nén gì hết, và mọi tầng đều đọc thẳng vào đó. Đổi lại thì có thêm một nhánh phải chạy và một chỗ phải lưu, ở mọi tầng và mọi bước, kể cả những lúc phần gần chẳng có gì đáng đọc.

Quyền không nhìn gì cả. Attention kiểu gốc bắt mỗi token chia hết 100% phần attention của nó cho các token trước. Tổng luôn bằng một. Nếu thật sự chẳng có gì đáng nhìn, nó vẫn phải đổ chỗ đó vào đâu đấy, và thường là đổ vào vài token đầu văn bản, biến mấy token vô nghĩa ấy thành cái chậu hứng. Hiện tượng này được đặt tên từ năm 2024, trước V4 [7]. DeepSeek lấy lại ý đó, và họ mô tả hệ quả ở trang 13: kỹ thuật này cho phép tổng điểm attention của mỗi đầu đọc khác 1, thậm chí gần bằng 0 [1]. Dấu bằng bị nới thành dấu bé hơn:

\[\sum_{j} a_{ij} = 1 \qquad \longrightarrow \qquad \sum_{j} a_{ij} \le 1\]

\(a_{ij}\) là phần attention mà token \(i\) rót cho token \(j\), và vế phải giờ có khi gần bằng không. Nói bình dân là mô hình được quyền trả lời rằng bước này tôi chả cần nhìn lại gì cả. Với một triệu token thì quyền đó rất đáng kể, vì phần lớn token thật sự chẳng liên quan gì tới nhau. Chỗ mất là từ giờ mô hình phải mang theo một mục giả không ứng với chữ nào trong văn bản, ở mọi tầng và mọi bước, và câu hỏi nó đã nhìn vào đâu không còn trả lời được bằng cách cộng cho đủ 100% nữa.

Hai nhánh phụ chạy song song với phần đã nén. Cửa sổ trượt giữ nguyên vẹn 128 token gần nhất để mọi tầng đọc thẳng, còn mục giả không ứng với chữ nào cho mô hình đổ phần attention thừa vào, nhờ đó tổng attention không bắt buộc bằng một và có thể gần bằng không

Năm 2026: dài bao nhiêu cũng chỉ đọc 1024 entry

Hai cơ chế chính của V4 mang hai cái tên do chính họ đặt, không có tiền lệ nào mang tên đó. Cái đầu tiên là attention nén thưa (Compressed Sparse Attention), và mình gọi tầng dùng nó là tầng nén thưa cho gọn.

Cột 61 tầng của bản Pro. Hai tầng dưới cùng luôn là tầng nén mạnh, các tầng trên xen kẽ hai loại. Tầng nén thưa gom bốn token thành một entry rồi chỉ đọc 1024 entry điểm cao nhất, tầng nén mạnh gom 128 token thành một entry rồi đọc hết. Tỷ lệ một đổi một trong hình chỉ là quy ước vẽ, báo cáo không công bố tỷ lệ thật
Mục 2.3 ở trang 9, vệt vàng thứ nhất là chỗ báo cáo đặt tên cho hai cơ chế attention mà mình gọi là tầng nén thưa và tầng nén mạnh, vệt vàng thứ hai là câu nói tầng nén mạnh nhắm tới mức nén cực đoan bằng cách gộp KV cache của mỗi nhóm token thành một entry duy nhất

Tầng nén thưa làm hai việc nối đuôi nhau.

Gom trước. Cứ bốn token liên tiếp thì ép lại thành một entry, thay vì giữ cả bốn. Đây không phải phép lấy trung bình máy móc, mô hình tự học xem trong bốn token đó cái nào đáng giữ hơn. Riêng bước này số entry đã bớt đi bốn lần.

Lọc sau. Gom xong rồi thì số entry vẫn còn nhiều quá. Tầng nén thưa gắn thêm một bộ phận nhỏ, việc duy nhất của nó là chấm điểm thật nhanh xem với token đang xét thì entry nào đáng đọc. Nó lấy đúng 1024 cái điểm cao nhất, còn lại bỏ hết [1]. Con số 1024 là của bản Pro, bản Flash lấy 512.

Phần lọc này chả phải đồ mới. Nó vốn là cơ chế chọn thưa DeepSeek đã công bố ở đời V3.2, dùng lại gần như nguyên xi [3]. Cái mới của V4 là ghép nó với bước gom ở trên, rồi ghép tiếp với cơ chế thứ hai ở mục sau.

Ghép gom với lọc lại thì số lần tra cứu của một tầng nén thưa là

\[n_{\text{CSA}}(L) = \min\!\left(1024,\; \left\lceil L/4 \right\rceil\right)\]

CSA là viết tắt tên riêng của tầng này trong báo cáo, còn \(n\) là số entry nó thật sự phải mở ra đọc. Dưới bốn nghìn token, gom bốn xong vẫn chưa đủ 1024 entry nên nó đọc hết. Qua mốc đó thì vế 1024 thắng và đứng yên mãi mãi: một triệu token hay mười triệu token thì vẫn đúng 1024 lần tra cứu. Đường cong bình phương ở mục trên, riêng ở tầng này, bị bẻ thành một đường nằm ngang từ đúng chỗ ấy.

Rủi ro nằm ở bộ chấm điểm. Nó mà chọn nhầm thì thông tin cần thiết nằm ngoài 1024 entry kia sẽ không bao giờ được nhìn tới, và chả có bước hai nào để sửa. Ở đây có luôn câu trả lời cho một hiểu lầm khá phổ biến: một triệu token không có nghĩa là mô hình nhớ hết một triệu token. Ở tầng nén thưa, nó cố ý không nhìn gần hết.

Con agent 300 file: ép ba trăm file thành entry thì ra một con số lớn, mà mình không tự tính vì báo cáo không cho đủ số. Cái đọc được là con số bên kia. Dù có bao nhiêu entry đi nữa, một tầng nén thưa chỉ đọc 1024 cái.

Cùng năm đó, hướng ngược lại: gom 128 nhưng đọc hết

Cơ chế thứ hai tên là attention nén mạnh (Heavily Compressed Attention), và nó đi ngược hẳn. Mình gọi tầng dùng nó là tầng nén mạnh.

Tầng nén mạnh chả lọc gì cả. Entry nào cũng đọc, không bỏ cái nào. Đổi lại nó nén nặng tay hơn hẳn: 128 token liên tiếp ép thành một entry duy nhất, so với bốn của bên kia [1]. Nén tới mức đó thì số entry còn lại ít đến nỗi đọc hết vẫn nhẹ.

Hai tầng chọn hai vế khác nhau của cùng một cái tích:

\[n_{\text{HCA}}(L) = \left\lceil L/128 \right\rceil \qquad\qquad n_{\text{CSA}}(L) = \min\!\left(1024,\; \left\lceil L/4 \right\rceil\right)\]

Ở một triệu token, vế trái ra khoảng tám nghìn lần tra còn vế phải vẫn đứng ở 1024. Tầng nén mạnh tra nhiều hơn nhưng mỗi lần moi ra được ít hơn; tầng nén thưa tra ít hơn nhưng mỗi lần moi ra rõ hơn.

Tầng nén thưa giống người lướt mục lục rồi mở đúng vài trang cần. Tầng nén mạnh giống người đọc bản tóm tắt cả cuốn sách, mỗi đoạn còn một câu, nhưng không sót đoạn nào.

Chỗ mất là độ phân giải. Một entry gánh 128 token thì không giữ nổi chi tiết riêng lẻ nào. Chỉ có tầng nén mạnh thôi thì mô hình sẽ nhớ rằng đoạn này nói về một hợp đồng thuê nhà, nhưng không nhớ số tiền.

Bản Pro có 61 tầng, và báo cáo nói đúng hai điều về cách xếp: hai tầng đầu là tầng nén mạnh, các tầng còn lại thì hai loại xen kẽ nhau [1]. Bản Flash có 43 tầng, hai tầng đầu dùng cửa sổ trượt thuần tuý.

Ý đồ của việc xen kẽ thì đọc ra được. Toàn tầng nén thưa thì thứ bị bỏ ở tầng dưới không bao giờ quay lại được ở tầng trên, vì tầng trên chỉ nhìn thấy đúng thứ tầng dưới chuyển lên. Toàn tầng nén mạnh thì chả tầng nào nhìn thấy chi tiết. Xen kẽ cho tầng nén mạnh giữ tấm bản đồ tổng thể còn tầng nén thưa phóng to vào vùng đang quan tâm, hai loại thay phiên nhau suốt chiều sâu của mạng.

Nén ở đây cũng không phải là đem một mô hình xịn hơn cắt bớt đi cho nhẹ. Hai loại tầng bù cho nhau, và thứ mất đi là độ phân giải ở một nửa số tầng.

Nhưng báo cáo không công bố tỷ lệ xen kẽ. Họ dùng đúng chữ "xen kẽ" rồi dừng, không nói một đổi một, không nói tầng nào là tầng nào. Mọi hình vẽ ở đây, kể cả hình dưới, mình dựng theo kiểu một đổi một cho dễ nhìn, và đó là quy ước của mình chứ không phải cấu hình đã công bố. Chỗ duy nhất tra ra được con số thật là mã nguồn tham chiếu họ mở kèm.

Cùng một dải ô token đi qua hai loại tầng. Bấm để đổi loại tầng.

Hình 4. Token đi qua hai loại tầng: gom bốn rồi chỉ đọc phần được chọn, hay gom 128 rồi đọc hết.

Thứ mà con agent kia bỏ qua ở bước mười hai, có cứu lại được không. Kiến trúc trả lời là có, nhưng chỉ ở mức bản đồ. Các tầng nén mạnh vẫn giữ dấu vết của phần mà tầng nén thưa đã quyết định không nhìn, đủ để biết vùng đó nói về cái gì. Còn số tiền trong hợp đồng thì không.

61 tầng chồng lên nhau, và luật không túi nào được phình

Chồng 61 tầng lên nhau thì đẻ ra một vấn đề khác hẳn, chả dính gì tới độ dài văn bản.

Trong mạng sâu, tầng nào cũng không viết đè lên kết quả của tầng trước. Nó cộng thêm phần đóng góp của mình vào một dòng chảy chung. Đường đó tên là residual connection, và nó chính là lý do các mạng rất sâu vẫn train được: thứ mà tầng thứ ba nhận ra vẫn còn nguyên trong dòng chảy khi tới tầng thứ sáu mươi.

Có một ý mở rộng đường chảy đó ra. Thay vì một dòng thì cho chạy bốn dòng song song, và cho phép chúng trộn vào nhau mỗi lần đi qua một tầng. Cách này làm mô hình mạnh hơn thật. Nó cũng làm mô hình mất ổn định: chồng đủ nhiều tầng thì các con số trong mạng hoặc phình to dần hoặc teo dần, tới một lúc nào đó thì train sụp đổ.

Cách chữa của DeepSeek, công bố thành một công trình riêng [8], là đặt một cái luật lên bảng trộn giữa các dòng. Dòng nào đi ra cũng chỉ được chia lại đúng 100% thứ nó nhận, không hơn. Dòng nào đi vào cũng chỉ được nhận đúng 100%, không hơn. Và chả phần nào được âm, tức là không có chuyện rút của dòng này bù cho dòng kia. Không túi nào phình, không túi nào rỗng đi vì nơi khác.

\[A\mathbf{1} = \mathbf{1}, \qquad A^{\top}\mathbf{1} = \mathbf{1}, \qquad A_{ij} \ge 0\]

\(A\) là bảng trộn, \(\mathbf{1}\) là cột toàn số một. Dòng đầu bắt mỗi hàng cộng đủ một, dòng giữa bắt mỗi cột cộng đủ một, dòng cuối cấm ô âm. Tập hợp mọi bảng thoả cả ba có tên riêng là đa diện Birkhoff, và đó đúng là chỗ DeepSeek ép bảng trộn của họ về [8].

Hệ quả báo cáo nêu ra là bước trộn không bao giờ phóng đại tín hiệu đi qua nó. Mà ghép hai bảng trộn tuân luật lại thì kết quả vẫn tuân luật, nên chồng bao nhiêu tầng cũng không làm tín hiệu nở ra ngoài tầm kiểm soát [1].

Ép một bảng trộn bất kỳ về đúng luật thì không làm được trong một bước. DeepSeek dùng một thủ tục lặp tên là Sinkhorn-Knopp, mà một vòng của nó chỉ là hai phép chia:

\[A \leftarrow \operatorname{diag}(A\mathbf{1})^{-1} A, \qquad A \leftarrow A \operatorname{diag}(A^{\top}\mathbf{1})^{-1}\]

Phép đầu chia mỗi hàng cho tổng của chính hàng đó, phép sau chia mỗi cột cho tổng của chính cột đó. Chỉnh chiều này thì chiều kia lệch đi một chút, nhưng lệch ít dần. Họ chạy hai mươi vòng rồi dừng, ở mỗi tầng, mỗi lần chạy.

Bảng trộn giữa bốn dòng chảy. Chỉnh hàng rồi chỉnh cột, luân phiên, cho tới khi mọi tổng đều về 1.

Hình 5. Chính cái thủ tục đó, chạy bằng tay: bấm chỉnh hàng, rồi bấm chỉnh cột, và nhìn mọi tổng bò dần về 1.

Bản gốc viết cái luật này thành hai công thức đánh số ở trang 8, và vệt vàng dưới đây là đúng chỗ đó.

Trang 8 của báo cáo, vệt vàng thứ nhất nói cốt lõi của cách chữa là ép bảng trộn giữa các dòng chảy về đúng họ các bảng vừa cộng đủ theo hàng vừa cộng đủ theo cột, tức đa diện Birkhoff, còn vệt vàng thứ hai là công thức (2) ngay dưới, viết lại chính cái luật đó

Cùng mục này họ đổi luôn optimizer, tức thứ quyết định sau mỗi lượt train thì chỉnh tham số của mạng đi bao nhiêu và theo hướng nào. V4 bỏ optimizer tiêu chuẩn lâu nay để sang một cái tên Muon [9].

Tín hiệu của bước một có còn sống tới tầng 61 hay không thì luật này không trả lời. Nó chỉ chặn đúng một nguyên nhân làm mất: các con số phình lên hay teo lại dọc đường.

Hai mẹo giữ cho train khỏi sụp đổ, mà chính họ nói chưa hiểu vì sao

Train một mô hình cỡ này có thể sụp đổ giữa chừng theo những kiểu chẳng ai đoán trước được. Mục 4.2.3 trang 26 kể hai kỹ thuật họ tìm ra để chặn chuyện đó: định tuyến đón trước (Anticipatory Routing) và kẹp trần SwiGLU (SwiGLU Clamping).

Nhưng ngay sau khi giới thiệu hai kỹ thuật ấy, họ viết:

Fortunately, we discovered two practical techniques that effectively maintain training stability. Although a comprehensive theoretical understanding of their underlying mechanisms remains an open question for now, we are sharing them openly to foster further exploration by the community.

Tạm dịch: may thay, chúng tôi tìm ra hai kỹ thuật thực dụng giữ được sự ổn định khi huấn luyện; tuy hiểu biết lý thuyết đầy đủ về cơ chế bên dưới chúng hiện vẫn còn là một câu hỏi mở, chúng tôi vẫn chia sẻ công khai để cộng đồng khám phá tiếp [1].

Mục 4.2.3 ở trang 26, đoạn tô vàng là câu DeepSeek tự nhận rằng hiểu biết lý thuyết đầy đủ về cơ chế bên dưới hai kỹ thuật chống bất ổn hiện vẫn còn là một câu hỏi mở, và họ vẫn chia sẻ công khai để cộng đồng khám phá tiếp

Họ nói lại lần nữa ở phần kết luận, trang 44: hai kỹ thuật đã chứng minh được là có tác dụng chống bất ổn, nhưng nguyên lý bên dưới vẫn chưa được hiểu đủ.

Họ ghi rằng đây mới là bản xem trước của dòng V4, rằng kiến trúc hiện tại tương đối phức tạp, và rằng họ định đơn giản hoá nó ở bản sau.

Train xong rồi còn phải dạy lại

Train xong chưa phải là hết. Còn một giai đoạn nữa, dạy cho mô hình cách trả lời chứ không chỉ cách đoán chữ tiếp theo, và đây là chỗ V4 khác đời trước nhiều nhất.

Trước hết phải sửa một cái sai đang bị lan truyền. DeepSeek không bỏ học tăng cường (reinforcement learning), tức cách dạy bằng thưởng phạt theo kết quả. Thứ bị bỏ là một giai đoạn cụ thể: trang 28 viết rằng giai đoạn học tăng cường trộn của DeepSeek-V3.2 đã bị thay thế hoàn toàn bằng chưng cất theo chính sách (on-policy distillation) [1]. Học tăng cường vẫn còn nguyên, chỉ là nó chuyển sang chỗ khác.

Chỗ khác đó là bước đầu tiên: train từng chuyên gia riêng. Mỗi lĩnh vực một mô hình, toán, lập trình, tự gọi công cụ, tuân thủ chỉ dẫn, và chính mấy mô hình đó mới đi qua học tăng cường, mỗi cái với tín hiệu thưởng hợp với lĩnh vực của nó. Kết quả là hơn mười mô hình, mỗi cái giỏi một mảng.

7 sư phụ
Giống Quách Tĩnh có 7 sư phụ vậy, mỗi người giỏi một mảng và cùng truyền dạy cho 1 đệ tử

Chữ "chuyên gia" ở đoạn trên phải đọc cho đúng, vì nó trùng tên với một thứ khác trong cùng báo cáo. Chuyên gia trong kiến trúc, thứ DeepSeek đặt tên từ năm 2024 [5], là các khối nhỏ nằm bên trong một mô hình, mỗi token chỉ đánh thức vài khối. Chuyên gia trong đoạn này là hơn mười mô hình hoàn chỉnh, tách rời, chạy riêng. Hai nghĩa, một chữ, và họ để nguyên như thế.

Bước sau là gộp hơn mười mô hình ấy lại thành một. Cách cũ là trộn thẳng trọng số, mà cách đó hay làm hỏng cả đàn. DeepSeek làm khác. Mô hình cuối cùng đóng vai học trò, tự sinh ra câu trả lời cho từng câu hỏi, rồi với mỗi câu thì chỉnh mình theo cách trả lời của đúng ông thầy hợp với loại câu đó. Toán thì học thầy toán, mã nguồn thì học thầy mã nguồn. Vì học trò tự sinh câu trả lời của chính nó để học, nó học đúng những tình huống nó thật sự gặp, chứ không học thuộc lòng bài mẫu của thầy.

Bên trái là hơn mười mô hình chuyên gia, mỗi cái huấn luyện riêng cho một lĩnh vực với tín hiệu thưởng riêng. Bên phải mô hình cuối đóng vai học trò: nó tự viết câu trả lời của mình trước, rồi chỉnh theo cách trả lời của đúng ông thầy hợp với loại câu hỏi đó. Phía dưới là cách cũ, trộn thẳng trọng số, bị gạch chéo vì cách đó hay làm hỏng cả đàn

Một thiên lệch chẳng ai cố ý tạo ra, và nó không nằm trong mã nguồn

Chuyện đáng kể nhất của giai đoạn dạy lại thì lại nằm ở cụm máy chạy train.

Cụm máy của DeepSeek có quyền ngắt ngang một công việc bất cứ lúc nào để nhường chỗ cho việc ưu tiên hơn. Cách xử lý ngây thơ là quay lại thì sinh lại từ đầu mấy câu trả lời chưa xong. Báo cáo chỉ ra rằng làm vậy là sai, và đây là nguyên văn:

Importantly, it is mathematically incorrect to regenerate unfinished requests from scratch, as this introduces length bias. Because shorter responses are more likely to survive interruption, regenerating from scratch makes the model more prone to producing shorter sequences whenever an interruption occurs.

Tạm dịch: điều quan trọng là sinh lại từ đầu các yêu cầu chưa xong là sai về mặt toán học, vì nó tạo ra thiên lệch độ dài (length bias); do các câu trả lời ngắn có khả năng sống sót qua gián đoạn cao hơn, việc sinh lại từ đầu khiến mô hình dễ trả lời ngắn hơn mỗi khi xảy ra một lần gián đoạn [1].

Mục 5.2.3 ở trang 34, đoạn tô vàng là câu nói sinh lại từ đầu các yêu cầu chưa xong là sai về mặt toán học vì nó tạo ra thiên lệch độ dài; câu giải thích ngay sau đó bị cắt ngang ở chân trang và chảy tiếp sang trang 35

Gián đoạn rơi vào một thời điểm ngẫu nhiên trong lúc mô hình đang viết. Câu trả lời nào viết xong trước thời điểm ấy thì thoát, câu nào còn đang viết thì bị vứt và làm lại. Mà câu càng dài thì càng dễ còn đang viết. Nên trong đống câu sống sót, câu ngắn nhiều hơn mức lẽ ra phải có, và mô hình học từ đúng cái đống lệch đó.

Gọi \(p(\ell)\) là phân bố độ dài mà mô hình lẽ ra phải học, còn \(s(\ell)\) là xác suất một câu dài \(\ell\) sống sót qua gián đoạn. Sinh lại từ đầu thì thứ mô hình thật sự học là

\[q(\ell) \;\propto\; p(\ell)\,s(\ell)\]

mà \(s(\ell)\) giảm khi \(\ell\) tăng, nên \(q\) lệch sang trái so với \(p\). Báo cáo không đưa công thức nào ở chỗ đó, họ nói bằng lời rồi chuyển thẳng sang cách chữa; công thức trên là mình tự viết lại cho gọn.

Mỗi vòng, gián đoạn rơi vào một thời điểm ngẫu nhiên. Câu nào viết xong trước đó thì thoát và được giữ lại để dạy; câu nào còn đang viết thì bị vứt và sinh lại từ đầu.

Hình 6. Bấm một vòng cho vạch gián đoạn rơi xuống, rồi bấm chạy nhiều vòng. Câu nào còn đang viết thì bị vứt và sinh lại từ đầu, và chỉ vài vòng là thấy đống sống sót lệch sang trái so với đống lẽ ra phải thu được.

Chẳng ai cố ý tạo ra thiên lệch này. Nó không phải một lỗi trong mã nguồn, nên nó không hiện ra trong bất kỳ báo cáo lỗi nào, không làm hỏng phép kiểm tra nào, và chả có cách nào nhìn thấy nó ngoài việc ngồi nghĩ về xác suất sống sót của một câu trả lời dài. Câu tiếp nối của đoạn trích trên bị cắt ngang sang trang 35, và ở đó họ nói thêm rằng nếu hạ tầng suy luận cho ra kết quả lặp lại được thì có thể chữa bằng cách sinh lại với cùng một hạt giống ngẫu nhiên, nhưng cách đó vẫn phải chạy lại toàn bộ phần đã sinh nên tốn hơn hẳn. Cách họ chọn là ghi nhật ký từng token một: bị ngắt thì lưu chỗ đang đứng, quay lại thì đọc nhật ký rồi viết tiếp đúng chỗ đã dừng.

Con agent 300 file không bao giờ gặp lần gián đoạn nào, vì nó xảy ra lúc train chứ không phải lúc chạy. Nhưng nếu thiên lệch kia không bị chặn, nó sẽ nằm sẵn trong chính cái mô hình mà con agent chạy trên đó, dưới dạng một xu hướng trả lời ngắn hơn mức cần, ở đúng những chỗ cần dài.

Điểm số của V4 và cách đọc cho đúng

Ở bảng so sánh phần nền, tức là trước khi mô hình được dạy cách trả lời, DeepSeek đo bằng một bộ đề đọc hiểu văn bản dài tên LongBench v2 [10]. Đời V3.2 được 40,2. Bản Flash của V4 được 44,7. Bản Pro được 51,5 [1].

MRCR ở một triệu token là bộ đề của bên thứ ba, đo khả năng tìm lại nhiều mẩu thông tin đã bị chôn trong một khối văn bản rất dài [11]. DeepSeek-V4-Pro được 83,5. Gemini-3.1-Pro được 76,3. Claude Opus 4.6 được 92,9.

CorpusQA ở một triệu token thì gần với tình huống thật hơn: 62,0 cho DeepSeek, 53,8 cho Gemini, 71,7 cho Claude [1].

Bảng 6 ở trang 38, hai dòng tô vàng thuộc nhóm ngữ cảnh dài: MRCR ở một triệu token với 92,9 cho Claude Opus 4.6, 76,3 cho Gemini-3.1-Pro và 83,5 cho DeepSeek-V4-Pro, và CorpusQA ở một triệu token với 71,7, 53,8 và 62,0; hàng tiêu đề cho thấy mỗi cột chạy ở một chế độ suy nghĩ khác nhau, còn cột GPT-5.4 chỉ có dấu gạch

Mà hai dòng số đó chỉ đọc đúng khi kèm mấy điều sau.

Điểm của Claude với của Gemini trong bảng này là do chính DeepSeek chạy lại, không phải số Anthropic hay Google công bố. Lý do họ ghi rõ ở trang 37: chạy lại để mọi mô hình dùng chung một cấu hình.

Các cột cũng không cùng một chế độ suy nghĩ. DeepSeek và Claude ở chế độ cao nhất, còn Gemini ở một chế độ thấp hơn chế độ cao nhất của nó.

Dấu gạch trong bảng nghĩa là không đánh giá, chứ không phải điểm thấp. GPT-5.4 để trống ở hai dòng này vì theo lời họ, cổng giao tiếp của mô hình đó không trả lời phần lớn truy vấn.

Và chính báo cáo nói thẳng cả hai vế ở trang 39 chứ không chỉ vế thắng: DeepSeek-V4-Pro vượt Gemini-3.1-Pro ở MRCR, nhưng vẫn đứng sau Claude Opus 4.6.

Còn một câu nữa của chính họ, và đó là câu tự nhận rõ nhất trong cả báo cáo. Trang 5, sau khi kể rằng bản Pro chạy hết sức thì vượt được GPT-5.2 và Gemini-3.0-Pro trên các bài kiểm suy luận tiêu chuẩn, họ viết tiếp rằng nó vẫn kém GPT-5.4 và Gemini-3.1-Pro một chút, và điều đó cho thấy một quỹ đạo phát triển đi sau các mô hình dẫn đầu khoảng ba tới sáu tháng [1]. Câu này chỉ xuất hiện đúng một lần trong cả 58 trang, và nó nói riêng về mảng suy luận, với đúng hai mốc so sánh vừa nêu.

Trang 5 của báo cáo, đoạn tô vàng là câu nói DeepSeek-V4-Pro-Max vẫn kém GPT-5.4 và Gemini-3.1-Pro một chút, cho thấy một quỹ đạo phát triển đi sau các mô hình dẫn đầu khoảng ba tới sáu tháng

Mình bỏ đi gần một phần ba báo cáo, toàn bộ phần hạ tầng: cách họ chồng lấn tính toán với truyền tin, thư viện sinh mã cho phần cứng, các phép tính cho ra kết quả lặp lại được, cách trải ngữ cảnh dài qua nhiều máy, cách đẩy KV cache xuống đĩa, cái hộp cát để agent chạy an toàn. Đó là một bài khác, và ai viết hạ tầng thì nên đọc thẳng bản gốc.

Ai nên quan tâm tới những gì mình vừa kể thì mình đoán thế này. Người tự chạy mô hình trên máy của mình, vì phép tính và bộ nhớ quyết định mô hình có nạp nổi vào máy hay không. Người viết agent, vì cái quyết định chương trình của họ còn nhớ được gì sau năm trăm bước không phải con số một triệu in trên trang giới thiệu, mà là 1024 entry ở tầng nén thưa với độ phân giải còn lại ở tầng nén mạnh. Và người trả tiền cho từng token, vì phần lớn số tiền đó là tiền mua đúng hai thứ ấy, đổi sang một đơn vị khác.

Bài viết dừng ở đây, đó là toàn bộ kiến trúc của DeepSeek V4. Mình chắc chắn sẽ viết thêm một bài khác về cách mà DeepSeek Optimize hạ tầng vận hành. Mình có nói về việc Kimi K3 Optimize hạ tầng vận hành ở một Video dài 1 giờ, bạn có thể tìm xem.

Bình 🙌

Phụ lục: Citations (11)
  1. DeepSeek-AI. DeepSeek-V4: Towards Highly Efficient Million-Token Context Intelligence. arXiv. 2026-04-26. Nguồn chính của bài, bản v1, 58 trang, đọc ngày 20 tháng 8 năm 2026. Số trang in trên giấy trùng khớp với số trang PDF. Paper tự gọi mình là "a preview version of DeepSeek-V4 series" (trang 1 và trang 44), và bài trích đúng chữ đó ở mục hai kỹ thuật chưa ai hiểu. Từng câu được trích, theo thứ tự xuất hiện trong bài. Trang 37, chống lưng cho tình huống mở bài: thiết lập đánh giá agent của paper cho phép tối đa 500 bước tương tác với ngữ cảnh tối đa 512K token; con số 300 file là quy mô do bài đặt ra, không có trong paper. Trang 1, abstract, chống lưng cho câu nói bản Pro chỉ cần hơn một phần tư số phép tính và một phần mười sổ ghi nhớ: "In the one-million-token context setting, DeepSeek-V4-Pro requires only 27% of single-token inference FLOPs and 10% of KV cache compared with DeepSeek-V3.2." Trang 5, bản đầy đủ của cùng câu đó cộng con số của bản Flash, chống lưng cho câu bài nói hai bản có hai bộ số khác nhau: "In the scenario of 1M-token context, even DeepSeek-V4-Pro, which has a larger number of activated parameters, attains only 27% of the single-token FLOPs (measured in equivalent FP8 FLOPs) and 10% of the KV cache size relative to DeepSeek-V3.2." và "Furthermore, DeepSeek-V4-Flash, with its smaller number of activated parameters, pushes efficiency even further: in the 1M-token context setting, it achieves only 10% of the single-token FLOPs and 7% of the KV cache size compared with DeepSeek-V3.2." Trang 5, chống lưng cho câu bài nói lợi ích của FP4 chưa tồn tại: "While the peak FLOPs for FP4 x FP8 operations are currently the same as FP8 x FP8 on existing hardware, they can theoretically be implemented to be 1/3 more efficient on future hardware, which will further enhance the efficiency of DeepSeek-V4 series." Trang 13, chống lưng cho câu bài nói mốc so sánh với một transformer thường là một con số khác hẳn: chi phí chú ý của V4 khoảng "2% times of that baseline" so với GQA8 ở BF16 với head dimension 128. Trang 11 và 13, chống lưng cho ba mẹo ở mục các lần vá trước: mục "Shared Key-Value MQA" cho chuyện mỗi ghi chú nén chỉ còn một vector, mục "Additional Branch of Sliding Window Attention" cho cửa sổ trượt 128 token gần nhất, và mục "Attention Sink" cho quyền không nhìn gì cả. Trang 13, nguyên văn câu quyền không nhìn gì cả: "This technique allows each query head to adjust its total attention scores to be not equal to 1, and even to be near 0." Trang 9, chống lưng cho toàn bộ hai mục CSA và HCA: "CSA integrates both compression and sparse attention strategies: it first compresses the Key-Value (KV) cache of every m tokens into one entry, and then applies DeepSeek Sparse Attention (DSA) (DeepSeek-AI, 2025) where each query token attends to only k compressed KV entries. HCA aims for extreme compression by consolidating the KV cache of every m' (>> m) tokens into a single entry." Trang 24 và 25, mục 4.2.1, chống lưng cho mọi con số cấu hình bài nêu: bản Pro có 61 tầng, hai tầng đầu dùng HCA, CSA nén 4 token thành một ghi chú và chọn 1024 ghi chú, HCA nén 128 token thành một ghi chú, cửa sổ trượt 128 token, 1.6 nghìn tỷ tham số tổng với 49 tỷ kích hoạt mỗi token; bản Flash có 43 tầng, hai tầng đầu dùng cửa sổ trượt thuần tuý, chọn 512 ghi chú, 284 tỷ tham số tổng với 13 tỷ kích hoạt. Paper chỉ nói hai loại tầng xen kẽ nhau "in an interleaved manner" và KHÔNG công bố tỷ lệ xen kẽ, nên bài phải khai chỗ đó là hình minh hoạ. Trang 8, chống lưng cho mục luật không túi nào được phình: "The core innovation of mHC is to constrain the residual mapping matrix B_l to the manifold of doubly stochastic matrices (the Birkhoff polytope) M, and thus enhance the stability of signal propagation across layers", kèm câu giải thích "This constraint ensures that the spectral norm of the mapping matrix ||B_l||_2 is bounded by 1, so the residual transformation is non-expansive, which increases the numerical stability during both the forward pass and backpropagation", và câu cuối trang "This iteration converges to a constrained doubly stochastic matrix B_l = M^(t_max). We choose t_max = 20 as a practical value." Trang 26, chống lưng cho câu bài nói chính tác giả chưa hiểu vì sao hai kỹ thuật chống bất ổn lại chạy được: "Fortunately, we discovered two practical techniques that effectively maintain training stability. Although a comprehensive theoretical understanding of their underlying mechanisms remains an open question for now, we are sharing them openly to foster further exploration by the community." Trang 44, câu hô ứng ở phần kết luận, chống lưng cho câu bài nói họ nhắc lại chuyện đó lần nữa: "Meanwhile, although Anticipatory Routing and SwiGLU Clamping have been proven effective in mitigating training instabilities, their underlying principles remain insufficiently understood." Trang 28, chống lưng cho câu bài nói giai đoạn học tăng cường trộn bị thay thế hoàn toàn chứ không phải học tăng cường bị bỏ: "Although the training pipeline largely mirrored that of DeepSeek-V3.2, a critical methodological substitution was made: the mixed Reinforcement Learning (RL) stage was entirely replaced by On-Policy Distillation (OPD; Gu et al., 2024; Lu and Lab, 2025)." Trang 34, chống lưng cho mục thiên lệch độ dài: "Importantly, it is mathematically incorrect to regenerate unfinished requests from scratch, as this introduces length bias. Because shorter responses are more likely to survive interruption, regenerating from scratch makes the model more prone to producing shorter sequences whenever an interruption occurs." Câu này bị cắt ngang giữa trang 34 và trang 35, và vế nằm ở đầu trang 35 nói về cách chữa thay thế bằng seed cố định rồi bác bỏ nó vì tốn hơn. Trang 37, chống lưng cho ba câu khai ở mục bảng số: "We re-evaluate Claude Opus 4.6 and Gemini 3.1 Pro on these tasks with the goal of standardizing the configuration across all models", "We did not evaluate GPT-5.4 because its API failed to respond to a large portion of our queries", và câu nói K2.6 cùng GLM-5.1 để trống một số ô vì API quá bận. Trang 38, Bảng 6, chống lưng cho bốn con số bài nêu, và chú ý chế độ suy luận không đồng nhất giữa các cột: MRCR 1M đo bằng MMR, Claude Opus 4.6 ở chế độ Max đạt 92,9, DeepSeek-V4-Pro ở chế độ Max đạt 83,5, Gemini-3.1-Pro ở chế độ High đạt 76,3; CorpusQA 1M đo bằng độ chính xác, lần lượt là 71,7 rồi 62,0 rồi 53,8. Dấu gạch trong bảng nghĩa là không đánh giá, không phải điểm thấp. Trang 39, chống lưng cho câu bài nói thắng một bên và thua một bên: "DeepSeek-V4-Pro outperforms Gemini-3.1-Pro on the MRCR task, which measures in-context retrieval, but remains behind Claude Opus 4.6." Trang 28, Bảng 1, chống lưng cho con số LongBench v2 của ba mô hình nền: 40,2 cho DeepSeek-V3.2-Base, 44,7 cho DeepSeek-V4-Flash-Base, 51,5 cho DeepSeek-V4-Pro-Base. Trang 5, chống lưng cho câu paper tự nhận đi sau, và câu này chỉ xuất hiện đúng một lần trong cả paper, gắn riêng với mảng suy luận: "Through the expansion of reasoning tokens, DeepSeek-V4-Pro-Max demonstrates superior performance relative to GPT-5.2 and Gemini-3.0-Pro on standard reasoning benchmarks. Nevertheless, its performance falls marginally short of GPT-5.4 and Gemini-3.1-Pro, suggesting a developmental trajectory that trails state-of-the-art frontier models by approximately 3 to 6 months." Trang 44 KHÔNG có câu này.
  2. Ashish Vaswani, Noam Shazeer, Niki Parmar, Jakob Uszkoreit, Llion Jones, Aidan N. Gomez, Lukasz Kaiser, Illia Polosukhin. Attention Is All You Need. Advances in Neural Information Processing Systems 30. 2017-06-12. Nơi cơ chế chú ý ra đời. Chống lưng cho cả mục năm 2017 của bài, tức câu nói mỗi token mới chấm điểm liên quan với mọi token cũ rồi trộn theo điểm, và câu nói cái làm cơ chế này mạnh với cái làm nó đắt là cùng một chuyện và ra đời cùng một năm. Paper DeepSeek-V4 trích công trình này ở trang 4 (câu mở đầu phần Introduction) và trang 6 (câu mở đầu phần Architecture). Lưu ý mục References của DeepSeek-V4 ở trang 52 chỉ ghi kỷ yếu NeurIPS 2017, không ghi mã arXiv; mã arXiv ở đây là do bài này bổ sung để người đọc tra lại được.
  3. DeepSeek-AI. DeepSeek-V3.2: Pushing the Frontier of Open Large Language Models. arXiv. 2025-12-02. Hai vai trong bài. Vai thứ nhất, đây là mốc so sánh của mọi con số hiệu suất: câu 27 phần trăm phép tính và 10 phần trăm sổ ghi nhớ đo so với chính mô hình này, không phải so với một transformer thường, và bài phải nói rõ chỗ đó. Vai thứ hai, đây là nơi bộ chấm điểm nhanh mà CSA dùng lại ra đời: paper DeepSeek-V4 trang 9 gọi nó là DeepSeek Sparse Attention và trích thẳng công trình này, nên câu bài nói phần chọn lọc của CSA là đồ đi mượn chứ không phải đồ mới phải dựa vào đây. Được trích ở các trang 4, 9, 14 và 42 của DeepSeek-V4.
  4. DeepSeek-AI. DeepSeek-V3 Technical Report. arXiv. 2024-12-27. Cái khung mà DeepSeek-V4 đứng lên. Chống lưng cho câu ở mục các lần vá trước, nói V4 không bắt đầu từ số không mà thừa hưởng nguyên hai thứ từ đời V3: cách chia mô hình thành nhiều chuyên gia nhỏ và cách đoán trước nhiều token cùng lúc. Paper DeepSeek-V4 dành riêng mục 2.1 trang 7 cho phần này, đặt tên thẳng là "Designs Inherited from DeepSeek-V3", và trích lại ở các trang 4, 6, 19, 24.
  5. D. Dai và cộng sự. DeepSeekMoE: Towards Ultimate Expert Specialization in Mixture-of-Experts Language Models. arXiv. 2024-01-11. Nơi chữ chuyên gia có nghĩa thứ nhất trong bài. Chống lưng cho hai câu. Một, câu ở mục các lần vá trước nói mỗi token chỉ đánh thức một nhúm chuyên gia trong một kho lớn thay vì chạy cả mô hình. Hai, và quan trọng hơn, câu cảnh báo ở mục dạy lại mô hình: chữ chuyên gia trong giai đoạn sau khi huấn luyện là hơn mười mô hình riêng biệt, hoàn toàn khác với chuyên gia bên trong kiến trúc mà công trình này đặt tên, và trộn hai nghĩa đó vào nhau là đọc sai. Được trích ở các trang 4, 6 và 7 của DeepSeek-V4.
  6. Noam Shazeer. Fast Transformer Decoding: One Write-Head Is All You Need. arXiv. 2019-11-06. Tiền lệ của mẹo thứ nhất trong ba mẹo. Chống lưng cho câu nói chuyện cắt bớt phần lưu trữ của mỗi ghi chú đã có từ năm 2019 chứ không phải phát minh của V4, và cho câu nói V4 đẩy ý đó tới mức gộp hẳn phần dùng để tìm với phần chứa nội dung làm một. Paper DeepSeek-V4 trích công trình này ở trang 11, ngay tại mục có tên "Shared Key-Value MQA".
  7. G. Xiao, Y. Tian, B. Chen, S. Han, M. Lewis. Efficient Streaming Language Models with Attention Sinks. ICLR 2024. 2024-05. Tiền lệ của mẹo thứ ba trong ba mẹo, tức quyền không nhìn gì cả. Chống lưng cho câu nói hiện tượng vài token đầu câu bị biến thành chỗ hứng sự chú ý thừa đã được đặt tên từ năm 2024, trước V4, và cho câu nói V4 chỉ lấy lại ý đó rồi cho phép tổng chú ý của một bước khác 1. Paper DeepSeek-V4 trích công trình này ở trang 13. Mục References của DeepSeek-V4 ở trang 52 chỉ ghi link OpenReview, không ghi mã arXiv, nên trường url ở đây giữ đúng link mà paper dẫn.
  8. Z. Xie và cộng sự. mHC: Manifold-Constrained Hyper-Connections. arXiv. 2025-12. Công trình riêng cho cơ chế mà mục luật không túi nào được phình kể lại. Chống lưng cho câu nói luật ép mỗi dòng ra chỉ chia lại đúng một phần trăm phần mình nhận và mỗi dòng vào chỉ nhận đúng một phần trăm đó, và cho câu nói bản đầy đủ của luật này nằm ở một công trình riêng chứ không phải chỉ ở paper V4. Mục References của DeepSeek-V4 ở trang 52 ghi năm xuất bản là 2026 nhưng mã arXiv là 2512.24880, tức tháng 12 năm 2025; trường date ở đây lấy theo mã arXiv. Được trích ở các trang 4, 6, 7 và 20 của DeepSeek-V4.
  9. Keller Jordan, Yuchen Jin, Vlado Boza, Jiacheng You, Franz Cesista, Laker Newhouse, Jeremy Bernstein. Muon: An Optimizer for Hidden Layers in Neural Networks. 2024. Chống lưng cho đúng một câu trong bài, ở mục luật không túi nào được phình: thuật toán quyết định mỗi lượt học xong thì chỉnh tham số đi bao nhiêu, DeepSeek-V4 đổi từ chuẩn công nghiệp sang thuật toán này. Bài cố ý không giải thích thêm gì về nó. Không có mã arXiv và không có trường url ở đây vì mục References của DeepSeek-V4 ở trang 48 không ghi nơi xuất bản: trường venue của mục đó là một chuỗi lỗi, in ra thành "Cited on, page 10". Được trích ở các trang 4, 6, 14, 19 và 25 của DeepSeek-V4.
  10. Y. Bai, S. Tu, J. Zhang, H. Peng, X. Wang, X. Lv, S. Cao, J. Xu, L. Hou, Y. Dong và cộng sự. LongBench v2: Towards Deeper Understanding and Reasoning on Realistic Long-context Multitasks. Proceedings of the 63rd Annual Meeting of the Association for Computational Linguistics, Volume 1: Long Papers, trang 3639-3664. 2025. Bộ đề đọc hiểu văn bản dài mà DeepSeek dùng để đo phần nền của mô hình, trước khi dạy lại. Chống lưng cho ba con số trong mục bảng số: 40,2 của DeepSeek-V3.2-Base, 44,7 của DeepSeek-V4-Flash-Base và 51,5 của DeepSeek-V4-Pro-Base ở Bảng 1 trang 28 của DeepSeek-V4. Không có trường url vì mục References của DeepSeek-V4 ở trang 45 chỉ ghi kỷ yếu hội nghị, không ghi mã arXiv, và bài không đoán bù chỗ paper để trống. Được trích ở trang 27 của DeepSeek-V4.
  11. OpenAI. OpenAI MRCR: Long Context Multiple Needle in a Haystack Benchmark. Hugging Face. 2024. Bộ đề của dòng MRCR 1M trong bảng số. Chống lưng cho câu bài giải thích bài kiểm này đo cái gì, tức tìm lại nhiều mẩu thông tin đã bị chôn trong một đống văn bản rất dài, và cho câu nói đây là bộ đề của một bên thứ ba chứ không phải bài kiểm do DeepSeek tự đặt ra. Paper DeepSeek-V4 trích ở trang 37, ngay đoạn nói họ chạy lại Claude Opus 4.6 và Gemini 3.1 Pro trên đúng bộ đề này.