Học sâugiáo trình tự học
Chương 1313 bài · 59 câu trắc nghiệm

13. Bài tập#

Mười một bài tập có lời giải chi tiết và ngân hàng câu hỏi trắc nghiệm theo từng chương.

Bài 1
tính tayCơ bảnChương 12
#

Tính số tham số của Llama 2 7B từ cấu hình: 32 khối, d=4 096d = 4\,096, dff=11 008d_{\text{ff}} = 11\,008, từ vựng 32 000 token, 32 đầu attention và 32 đầu khoá–giá trị, RoPE (không có embedding vị trí), RMSNorm (chỉ có γ\gamma), không có hệ số chặn, FFN dạng SwiGLU, lớp chiếu ra không dùng chung trọng số với embedding. (a) Tính riêng số tham số của attention, FFN, các lớp chuẩn hoá, embedding và lớp chiếu ra. (b) So tổng với con số đã công bố 6 738 415 616. (c) Tỉ số dff/dd_{\text{ff}}/d bằng bao nhiêu? Vì sao nó không bằng 4?

Gợi ý của đề
Gợi ý: SwiGLU có ba ma trận. So dffd_{\text{ff}} với 83d\tfrac83 d (Mục 10.5).
Xem lời giải chi tiết

(a) Từng thành phần.

Attention. Với 32 đầu truy vấn và 32 đầu khoá–giá trị, mỗi đầu dhead=4 096/32=128d_{\text{head}} = 4\,096/32 = 128 chiều, nên WQW_Q, WKW_K, WVW_V, WOW_O đều là ma trận 4 096×4 0964\,096 \times 4\,096. Không có hệ số chặn:

4d2×L=4×4 0962×32=2 147 483 648.4d^2 \times L = 4 \times 4\,096^2 \times 32 = 2\,147\,483\,648.

FFN. SwiGLU có ba ma trận WW, VV (kích thước d×dffd \times d_{\text{ff}}) và W2W_2 (kích thước dff×dd_{\text{ff}} \times d):

3×d×dff×L=3×4 096×11 008×32=4 328 521 728.3 \times d \times d_{\text{ff}} \times L = 3 \times 4\,096 \times 11\,008 \times 32 = 4\,328\,521\,728.

Chuẩn hoá. RMSNorm chỉ có vector γ\gamma. Mỗi khối có hai lớp chuẩn hoá (trước attention và trước FFN), cộng một lớp sau khối cuối:

32×2×4 096+4 096=266 240.32 \times 2 \times 4\,096 + 4\,096 = 266\,240.

Embedding và lớp chiếu ra. Không dùng chung trọng số nên tính hai lần:

2×32 000×4 096=262 144 000.2 \times 32\,000 \times 4\,096 = 262\,144\,000.

(b) Tổng.

Thành phần Số tham số Tỉ lệ
Attention 2 147 483 648 31,9%
FFN (SwiGLU) 4 328 521 728 64,2%
RMSNorm 266 240 0,004%
Embedding và lớp chiếu ra 262 144 000 3,9%
Tổng 6 738 415 616

Tổng khớp chính xác con số đã công bố 6 738 415 616.

(c) Tỉ số dff/dd_{\text{ff}}/d. 11 008/4 096=2,687511\,008/4\,096 = 2{,}6875, không phải 4. Vì SwiGLU có ba ma trận thay vì hai, muốn giữ số tham số bằng FFN gốc với dff=4dd_{\text{ff}} = 4d thì phải có 3d dff=8d23d\,d_{\text{ff}} = 8d^2, tức dff=83d=10 922,67d_{\text{ff}} = \tfrac83 d = 10\,922{,}67. Làm tròn lên bội của 256 được 43×256=11 00843 \times 256 = 11\,008 (Mục 10.5).

Trong phạm vi các khối Transformer, FFN chiếm 3×2,6875/(4+3×2,6875)=66,8%3 \times 2{,}6875/(4 + 3 \times 2{,}6875) = 66{,}8\% số tham số, gần với tỉ lệ 2/32/3 của FFN gốc ở Mục 12.2. Đó chính là mục đích của việc chọn dff≈83dd_{\text{ff}} \approx \tfrac83 d.

Bài 2
tính tayCơ bảnChương 12
#

Dùng kết quả Bài 1. (a) Tính số FLOP để huấn luyện Llama 2 7B trên 2×10122 \times 10^{12} token theo công thức C≈6NDC \approx 6ND. (b) Trên GPU A100 (312 TFLOPS với bf16), ước lượng số giờ-GPU khi mức sử dụng phần cứng (MFU) là 30% và 40%. (c) Meta công bố 184 320 giờ-GPU. Từ con số này, suy ra MFU thực tế. Giá trị đó có hợp lý không? (d) Vì sao NN trong công thức không tính tham số của embedding?

Xem lời giải chi tiết

(a) Số FLOP. Từ Bài 1, số tham số không tính embedding là

N=2 147 483 648+4 328 521 728=6 476 005 376≈6,48×109,\begin{aligned} N &= 2\,147\,483\,648 + 4\,328\,521\,728 \\ &= 6\,476\,005\,376 \approx 6{,}48 \times 10^9, \end{aligned}

nên

C=6ND=6×6,476×109×2×1012=7,771×1022 FLOP.\begin{aligned} C = 6ND &= 6 \times 6{,}476 \times 10^9 \times 2 \times 10^{12} \\ &= 7{,}771 \times 10^{22} \text{ FLOP}. \end{aligned}

(b) Số giờ-GPU. Tốc độ thực tế là 312×1012×MFU312 \times 10^{12} \times \text{MFU} FLOP mỗi giây:

  • MFU 30%: 7,771×1022/(312×1012×0,30)=8,30×1087{,}771 \times 10^{22} / (312 \times 10^{12} \times 0{,}30) = 8{,}30 \times 10^8 giây, tức 230 627 giờ-GPU;
  • MFU 40%: 172 970 giờ-GPU.

(c) MFU thực tế. Giải ngược từ con số công bố:

MFU=7,771×1022312×1012×184 320×3 600=0,375.\text{MFU} = \frac{7{,}771 \times 10^{22}}{312 \times 10^{12} \times 184\,320 \times 3\,600} = 0{,}375.

Mức 37,5% nằm trong khoảng 30% tới 50% thường gặp khi huấn luyện mô hình lớn, nên công thức 6ND6ND nhất quán với thực tế. Cần hiểu đúng ý nghĩa của phép so sánh: công thức cho đúng bậc độ lớn của lượng tính toán, còn thời gian thực phụ thuộc vào MFU, một đại lượng công thức không dự đoán được.

(d) Vì sao không tính embedding. Với mỗi token, lớp embedding chỉ là một phép tra bảng, không có phép nhân ma trận nào, nên gần như không tốn FLOP. Lớp chiếu ra từ vựng thì có phép nhân ma trận (2Vd2Vd FLOP mỗi token) nhưng thường được bỏ qua trong công thức gần đúng; với Llama 2 7B, phần này chỉ khoảng 2% so với 2N2N. Nếu dùng tổng 6,74 tỉ thay cho 6,48 tỉ, kết quả lệch khoảng 4%.

Bài 3
suy luậnTrung bìnhChương 9
#

(a) Chứng minh: nếu các thành phần của q,k∈Rdkq, k \in \mathbb{R}^{d_k} độc lập, có trung bình 0 và phương sai 1 thì Var⁡(q⋅k)=dk\operatorname{Var}(q \cdot k) = d_k. (b) Dùng đạo hàm của softmax để giải thích vì sao điểm số có phương sai lớn làm gradient qua attention gần như bằng 0. (c) Nếu chia điểm số cho dkd_k thay vì dk\sqrt{d_k} thì điều gì xảy ra khi dkd_k lớn?

Xem lời giải chi tiết

(a) Phương sai của tích vô hướng. Viết q⋅k=∑i=1dkqikiq \cdot k = \sum_{i=1}^{d_k} q_i k_i. Vì qiq_i và kik_i độc lập và có trung bình 0,

E[qiki]=E[qi] E[ki]=0,Var⁡(qiki)=E[qi2] E[ki2]=1.\mathbb{E}[q_i k_i] = \mathbb{E}[q_i]\,\mathbb{E}[k_i] = 0, \qquad \operatorname{Var}(q_i k_i) = \mathbb{E}[q_i^2]\,\mathbb{E}[k_i^2] = 1.

Các số hạng độc lập với nhau nên phương sai của tổng bằng tổng các phương sai: Var⁡(q⋅k)=dk\operatorname{Var}(q \cdot k) = d_k. Số đo ở Mục 9.2 với dk=4,16,64,256,1 024d_k = 4, 16, 64, 256, 1\,024 là 3,63; 15,99; 64,66; 251,67; 1 021,97, khớp lý thuyết trong phạm vi sai số lấy mẫu.

(b) Vì sao gradient gần bằng 0. Đạo hàm của softmax là

∂pi∂sj=pi(δij−pj).\frac{\partial p_i}{\partial s_j} = p_i(\delta_{ij} - p_j).

Khi một pip_i gần 1 và các pjp_j còn lại gần 0, mọi phần tử của ma trận này đều gần 0: với i=ji = j là pi(1−pi)≈0p_i(1 - p_i) \approx 0, với i≠ji \ne j là −pipj≈0-p_i p_j \approx 0. Điểm số có độ lệch chuẩn dk\sqrt{d_k}; với dk=1 024d_k = 1\,024, các điểm số chênh nhau hàng chục đơn vị, và tỉ số esi−sje^{s_i - s_j} giữa hai trọng số có thể lên tới 101310^{13}, nên softmax gần như luôn ở vùng gần one-hot. Bảng ở Mục 9.2 cho thấy điều đó: không chia thì trọng số lớn nhất trung bình là 0,953 và entropy chỉ còn 0,118 nat.

(c) Chia cho dkd_k. Phương sai của điểm số thành dk/dk2=1/dkd_k/d_k^2 = 1/d_k, tiến về 0 khi dkd_k lớn. Các điểm số gần bằng nhau, softmax cho phân phối gần đều, và attention mất khả năng phân biệt các vị trí: mỗi token nhận gần như trung bình của cả chuỗi. Chia cho dk\sqrt{d_k} là cách duy nhất trong họ dkαd_k^{\alpha} làm phương sai không phụ thuộc dkd_k; chia ít hơn thì bão hoà, chia nhiều hơn thì phân phối bị làm phẳng.

Bài 4
tính tayCơ bảnChương 7
#

Một CNN chỉ gồm các lớp tích chập 3×33 \times 3. (a) Với bước nhảy 1 ở mọi lớp, cần bao nhiêu lớp để trường tiếp nhận phủ hết ảnh rộng 224 điểm ảnh? (b) Nếu các lớp thứ 2, 4, 6, … có bước nhảy 2 và các lớp còn lại có bước nhảy 1, tính trường tiếp nhận sau 10 lớp. Cần bao nhiêu lớp để phủ 224 điểm ảnh? (c) Vì sao trường tiếp nhận hiệu dụng nhỏ hơn con số tính ở trên?

Gợi ý của đề
Gợi ý: ri=ri−1+(ki−1)∏j<isjr_i = r_{i-1} + (k_i - 1)\prod_{j<i} s_j (Mục 7.2).
Xem lời giải chi tiết

(a) Bước nhảy 1 ở mọi lớp. Với ki=3k_i = 3, sj=1s_j = 1, công thức cho ri=ri−1+2r_i = r_{i-1} + 2, nên rL=2L+1r_L = 2L + 1. Giải 2L+1≥2242L + 1 \ge 224 được L≥111,5L \ge 111{,}5, tức cần 112 lớp.

(b) Bước nhảy 2 ở các lớp chẵn. Dãy bước nhảy là (1,2,1,2,… )(1, 2, 1, 2, \dots). Mức tăng của lớp ii là 2∏j<isj2\prod_{j<i}s_j:

Lớp ii ∏j<isj\prod_{j<i} s_j Mức tăng rir_i
1 1 2 3
2 1 2 5
3 2 4 9
4 2 4 13
5 4 8 21
6 4 8 29
7 8 16 45
8 8 16 61
9 16 32 93
10 16 32 125
11 32 64 189
12 32 64 253

Sau 10 lớp, trường tiếp nhận rộng 125 điểm ảnh; cần 12 lớp để phủ 224 điểm ảnh, so với 112 lớp khi không có bước nhảy. Bước nhảy nhân vào mọi mức tăng phía sau, nên trường tiếp nhận tăng theo cấp số nhân thay vì tuyến tính. Đổi lại, độ phân giải của bản đồ đặc trưng giảm một nửa theo mỗi chiều sau mỗi lớp có bước nhảy 2.

(c) Trường tiếp nhận hiệu dụng. Các điểm trong trường tiếp nhận lý thuyết không ảnh hưởng như nhau. Số đường đi từ một điểm ảnh tới đơn vị đang xét lớn nhất ở tâm và giảm dần ra rìa; ảnh hưởng tổng hợp qua nhiều lớp tích chập giống kết quả của nhiều lần tích chập liên tiếp, và theo định lý giới hạn trung tâm, nó có dạng gần Gauss. Luo và cộng sự (2016) cho thấy độ rộng hiệu dụng chỉ tăng theo L\sqrt L. Vì vậy chỉ thêm lớp không đủ để mở rộng vùng nhìn; cần bước nhảy, gộp, tích chập giãn cách hoặc attention.

Bài 5
chẩn đoánCơ bảnChương 2
#

Với mỗi tình huống, cho biết vấn đề chủ yếu là độ chệch hay phương sai, hay là dấu hiệu của lỗi, và nêu hai việc nên làm: (a) Sai số huấn luyện 2%, sai số xác thực 18%, khoảng cách không thu hẹp khi thêm dữ liệu vào tập huấn luyện nhưng vẫn giảm dần. (b) Sai số huấn luyện 24%, sai số xác thực 25%, cả hai đã nằm ngang. (c) Sai số xác thực 12%, sai số huấn luyện 15%.

Xem lời giải chi tiết

(a) Huấn luyện 2%, xác thực 18%, khoảng cách lớn và thu hẹp dần khi thêm dữ liệu. Phương sai cao (overfitting). Hai việc nên làm: thêm dữ liệu hoặc tăng cường dữ liệu, vì phương sai giảm khi có thêm dữ liệu và đường cong cho thấy dữ liệu đang có tác dụng; và tăng regularization (weight decay, dropout, dừng sớm), rẻ hơn thu thập dữ liệu và thường đủ.

(b) Huấn luyện 24%, xác thực 25%, cả hai đã nằm ngang. Độ chệch cao (underfitting). Thêm dữ liệu sẽ không giúp gì, và đây là kết luận quan trọng nhất của chẩn đoán này. Hai việc nên làm: dùng mô hình linh hoạt hơn (thêm lớp, tăng bề rộng hoặc đổi họ mô hình), và thêm đặc trưng hoặc giảm regularization.

(c) Xác thực 12%, huấn luyện 15%. Sai số xác thực thấp hơn sai số huấn luyện không phải là một chẩn đoán về độ chệch hay phương sai mà là dấu hiệu cần kiểm tra quy trình. Ba nguyên nhân thường gặp:

  1. Dropout hoặc tăng cường dữ liệu chỉ bật khi huấn luyện. Sai số huấn luyện khi đó được đo trên bài toán khó hơn. Đây là nguyên nhân phổ biến nhất và không phải lỗi.
  2. Sai số huấn luyện được tính trung bình trong suốt một epoch, gồm cả những bước đầu khi mô hình còn kém, còn sai số xác thực đo ở cuối epoch.
  3. Tập xác thực dễ hơn hoặc có rò rỉ dữ liệu: chia không ngẫu nhiên, thiếu các trường hợp khó, hoặc chứa bản sao gần giống của dữ liệu huấn luyện.

Nên kiểm tra hai nguyên nhân đầu trước, vì chúng là vấn đề đo lường. Nếu loại trừ được cả hai mà hiện tượng vẫn còn, cần xem lại cách chia dữ liệu (Mục 8.5 của Nền tảng).

Bài 6
suy luậnTrung bìnhChương 4
#

Cho hàm lều g(x)=2ReLU⁡(x)−4ReLU⁡(x−12)g(x) = 2\operatorname{ReLU}(x) - 4\operatorname{ReLU}(x - \tfrac12). (a) Chứng minh gg ánh xạ [0,1][0, 1] lên [0,1][0, 1]. (b) Chứng minh bằng quy nạp rằng gg hợp với chính nó kk lần là một hàm tuyến tính từng khúc có 2k2^k đoạn. (c) Chứng minh một mạng một lớp ẩn với đầu vào một chiều cần ít nhất 2k−12^k - 1 đơn vị ReLU để biểu diễn chính xác hàm đó, và so với 2k2k đơn vị của mạng sâu.

Xem lời giải chi tiết

(a) gg ánh xạ [0,1][0,1] lên [0,1][0,1]. Với x∈[0,12]x \in [0, \tfrac12]: ReLU⁡(x)=x\operatorname{ReLU}(x) = x và ReLU⁡(x−12)=0\operatorname{ReLU}(x - \tfrac12) = 0, nên g(x)=2xg(x) = 2x, tăng từ 0 tới 1. Với x∈[12,1]x \in [\tfrac12, 1]: g(x)=2x−4(x−12)=2−2xg(x) = 2x - 4(x - \tfrac12) = 2 - 2x, giảm từ 1 về 0. Vậy gg liên tục, có giá trị trong [0,1][0, 1], và mỗi nửa đoạn được ánh xạ lên toàn bộ [0,1][0, 1].

(b) Quy nạp. Mệnh đề: g(k)g^{(k)} là hàm tuyến tính từng khúc gồm 2k2^k đoạn, mỗi đoạn ánh xạ lên toàn bộ [0,1][0, 1] (tăng từ 0 lên 1 hoặc giảm từ 1 về 0). Với k=1k = 1, mệnh đề đúng theo (a). Giả sử mệnh đề đúng với kk. Trên mỗi đoạn của g(k)g^{(k)}, giá trị đi qua toàn bộ [0,1][0, 1] một cách đơn điệu, nên đi qua cả hai nửa [0,12][0, \tfrac12] và [12,1][\tfrac12, 1] trên đó gg tuyến tính. Do đó mỗi đoạn của g(k)g^{(k)} tách thành hai đoạn của g(k+1)=g∘g(k)g^{(k+1)} = g \circ g^{(k)}, mỗi đoạn mới lại ánh xạ lên toàn bộ [0,1][0, 1]. Vậy g(k+1)g^{(k+1)} có 2k+12^{k+1} đoạn.

Mạng sâu thực hiện gg ở mỗi lớp bằng 2 đơn vị ReLU, nên g(k)g^{(k)} dùng 2k2k đơn vị trong kk lớp, tức 6k6k tham số (mỗi đơn vị một trọng số vào, một hệ số chặn, một trọng số ra).

(c) Mạng một lớp ẩn. Một mạng một lớp ẩn với mm đơn vị ReLU và đầu vào một chiều có dạng

f(x)=∑j=1mcjReLU⁡(ajx+bj)+e.f(x) = \sum_{j=1}^{m} c_j \operatorname{ReLU}(a_j x + b_j) + e.

Mỗi số hạng là hàm tuyến tính từng khúc với đúng một điểm gãy tại x=−bj/ajx = -b_j/a_j, nên ff có nhiều nhất mm điểm gãy. Hàm g(k)g^{(k)} có 2k2^k đoạn, tức 2k−12^k - 1 điểm gãy bên trong (0,1)(0, 1), nên cần m≥2k−1m \ge 2^k - 1.

So sánh: mạng sâu cần 2k2k đơn vị, mạng một lớp cần ít nhất 2k−12^k - 1. Với k=7k = 7 là 14 so với 127 đơn vị; với k=20k = 20 là 40 so với hơn một triệu. Thí nghiệm ở Mục 4.4 cho thấy cận dưới này sát với thực tế: sai số của mạng một lớp chỉ giảm rõ khi bề rộng đạt 2k2^k.

Lưu ý

Bài này chứng minh khả năng biểu diễn, không chứng minh rằng gradient descent tìm được nghiệm của mạng sâu. Trong thực tế, huấn luyện mạng hẹp và sâu để học hàm này thường thất bại.

Bài 7
suy luậnTrung bìnhChương 8
#

(a) Bỏ qua hàm tanh, gradient của một RNN tuyến tính sau 100 bước lùi có độ lớn cỡ ρ100\rho^{100} với ρ\rho là bán kính phổ của WhhW_{hh}. Tính giá trị này khi ρ=0,9\rho = 0{,}9 và ρ=1,1\rho = 1{,}1. So với số đo ở Mục 8.2 và giải thích vì sao chúng khác nhau. (b) Dọc theo ô nhớ của LSTM, gradient nhân với cổng quên ff ở mỗi bước. Tính f100f^{100} khi hệ số chặn của cổng quên là 1 và là 4 (bỏ qua phần phụ thuộc đầu vào), và thang thời gian 1/(1−f)1/(1 - f) tương ứng. (c) Vì sao gradient bùng nổ dễ xử lý hơn gradient tiêu biến?

Xem lời giải chi tiết

(a) RNN tuyến tính.

0,9100=2,66×10−5,1,1100=1,38×104.0{,}9^{100} = 2{,}66 \times 10^{-5}, \qquad 1{,}1^{100} = 1{,}38 \times 10^{4}.

Bán kính phổ chỉ khác nhau 20% nhưng kết quả chênh nhau 9 bậc độ lớn, vì ρ↦ρT\rho \mapsto \rho^T rất nhạy khi TT lớn.

Số đo ở Mục 8.2 khác xa các con số này: với g=0,9g = 0{,}9 là 3,2×10−23{,}2 \times 10^{-2}, với g=1,2g = 1{,}2 là 3,0. Có hai lý do. Thứ nhất, RNN trong thí nghiệm có hàm tanh, và khi các đơn vị bão hoà, đạo hàm tanh⁡′<1\tanh' < 1 làm Jacobi nhỏ đi; với g>1g > 1, trạng thái lớn dần theo thời gian nên hiệu ứng này mạnh ở cuối chuỗi. Thứ hai, với ma trận ngẫu nhiên 64×6464 \times 64, bán kính phổ thực tế chỉ xấp xỉ gg và độ lớn của WTvW^T v phụ thuộc cả vào các trị riêng khác. Ước lượng ρT\rho^T đúng về xu hướng nhưng không đúng về con số.

(b) Đường ô nhớ của LSTM.

bf=1:  f=σ(1)=0,731,0,731100=2,5×10−14,1/(1−f)≈3,7 bước.\begin{aligned} b_f = 1: \;& f = \sigma(1) = 0{,}731, \quad 0{,}731^{100} = 2{,}5 \times 10^{-14}, \\ & 1/(1-f) \approx 3{,}7 \text{ bước}. \end{aligned}

bf=4:  f=σ(4)=0,982,0,982100=0,16,1/(1−f)≈56 bước.\begin{aligned} b_f = 4: \;& f = \sigma(4) = 0{,}982, \quad 0{,}982^{100} = 0{,}16, \\ & 1/(1-f) \approx 56 \text{ bước}. \end{aligned}

Mô phỏng ở Mục 8.2 cho 3,0×10−153{,}0 \times 10^{-15} và 0,130{,}13, cùng bậc với tính tay; phần chênh đến từ nhiễu cộng vào đầu vào của cổng quên ở mỗi bước. Với bf=1b_f = 1, bộ nhớ có thang thời gian chỉ vài bước; với bf=4b_f = 4, khoảng 50 bước. Cấu trúc cổng cho phép mạng điều khiển tích ∏ft\prod f_t, nhưng giá trị của cổng quyết định bộ nhớ dài hay ngắn.

(c) Bùng nổ và tiêu biến. Gradient bùng nổ vẫn giữ đúng hướng, chỉ có độ lớn quá mức; cắt ngưỡng gradient giới hạn độ lớn và giữ nguyên hướng, nên sửa được với một dòng mã. Gradient tiêu biến thì thông tin về ảnh hưởng của các bước xa đã nhỏ hơn nhiều so với nhiễu của SGD và sai số làm tròn; phóng to nó lên chỉ phóng to nhiễu. Tiêu biến phải được ngăn từ kiến trúc: cổng như LSTM, kết nối tắt, chuẩn hoá, khởi tạo phù hợp.

Bài 8
tính tayCơ bảnChương 10
#

Một mô hình 70 tỉ tham số có 80 lớp, dhead=128d_{\text{head}} = 128 và 64 đầu truy vấn. Tính dung lượng KV cache ở FP16 cho ngữ cảnh 4 096 token và 8 chuỗi cùng lúc, trong hai trường hợp: (a) MHA với 64 đầu khoá–giá trị; (b) GQA với 8 đầu khoá–giá trị. (c) So với dung lượng trọng số ở FP16. Vì sao GQA là quyết định về bộ nhớ khi suy luận chứ không phải về chất lượng?

Xem lời giải chi tiết

Công thức. Mỗi lớp lưu khoá và giá trị, mỗi thứ nkv×dheadn_{\text{kv}} \times d_{\text{head}} số cho mỗi token của mỗi chuỗi:

soˆˊ byte=2×L×nkv×dhead×T×B×2,\text{số byte} = 2 \times L \times n_{\text{kv}} \times d_{\text{head}} \times T \times B \times 2,

với hệ số 2 đầu cho khoá và giá trị, hệ số 2 cuối là số byte của FP16.

(a) MHA, 64 đầu khoá–giá trị.

2×80×64×128×4 096×8×2=85 899 345 920 byte=80 GiB.\begin{aligned} 2 \times 80 \times 64 \times 128 \times 4\,096 \times 8 \times 2 &= 85\,899\,345\,920 \text{ byte} \\ &= 80 \text{ GiB}. \end{aligned}

(b) GQA, 8 đầu khoá–giá trị. Chỉ nkvn_{\text{kv}} thay đổi, nên dung lượng giảm đúng 64/8=864/8 = 8 lần: 10 GiB.

(c) So với trọng số. Mô hình 70 tỉ tham số ở FP16 chiếm khoảng 140 GB trọng số. Với MHA, KV cache 80 GiB (86 GB) đã bằng hơn một nửa dung lượng trọng số, chỉ với 8 chuỗi 4 096 token; với 64 chuỗi, KV cache là 640 GiB, gần gấp năm lần trọng số. GQA là quyết định vì bộ nhớ khi suy luận vì ba lẽ:

  1. KV cache giới hạn số yêu cầu phục vụ được cùng lúc. Trọng số cố định, còn KV cache tăng tuyến tính theo độ dài ngữ cảnh và số chuỗi. Với GQA, mỗi token của mỗi chuỗi chỉ tốn 0,3125 MiB thay vì 2,5 MiB.
  2. Sinh token bị giới hạn bởi băng thông bộ nhớ. Mỗi token mới phải đọc lại toàn bộ KV cache; KV cache nhỏ hơn 8 lần thì lượng dữ liệu phải đọc cũng nhỏ hơn, và độ trễ giảm theo.
  3. Chất lượng không tăng. Các đầu truy vấn trong một nhóm buộc phải dùng chung khoá và giá trị, nên GQA giảm chất lượng một chút so với MHA; Ainslie và cộng sự (2023) cho thấy mức giảm nhỏ khi số nhóm không quá ít.
Bài 9
thiết kếTrung bìnhChương 1
#

Với mỗi bài toán, chọn họ mô hình và giải thích bằng thiên kiến quy nạp của mô hình và cấu trúc của dữ liệu, không dựa vào mức độ phổ biến của mô hình: (a) Dự đoán khách hàng rời bỏ dịch vụ từ 40 đặc trưng dạng bảng, 30 000 khách hàng, kết quả cần giải thích được cho bộ phận kinh doanh. (b) Phân loại ảnh sản phẩm lỗi trên dây chuyền, 3 000 ảnh có nhãn, các ảnh có bố cục rất giống nhau. (c) Trích xuất các trường thông tin từ hợp đồng dài 50 trang. (d) Dự báo phụ tải điện theo giờ cho 12 tháng tới.

Xem lời giải chi tiết

Điểm chính của bài là lý do dựa trên cấu trúc của dữ liệu và thiên kiến quy nạp của mô hình. "Mô hình X thắng nhiều cuộc thi" không phải là lý do.

(a) Khách hàng rời bỏ: 40 đặc trưng bảng, 30 000 mẫu, cần giải thích. Chọn gradient boosting trên cây (XGBoost, LightGBM), hoặc rừng ngẫu nhiên nếu cần một mô hình dễ chỉnh. Dữ liệu bảng không có cấu trúc không gian hay thời gian để tích chập hay attention khai thác; nó thường có quan hệ dạng ngưỡng, tương tác giữa các đặc trưng và các cột có thang đo khác nhau, đúng loại cấu trúc mà phép chia theo từng trục của cây biểu diễn tự nhiên (Mục 1.2). 30 000 mẫu cũng ít đối với mạng nơ-ron. Về giải thích, có thể dùng SHAP để giải thích từng dự đoán cho bộ phận kinh doanh.

(b) Ảnh sản phẩm lỗi: 3 000 ảnh có nhãn, bố cục giống nhau. Chọn CNN đã tiền huấn luyện rồi tinh chỉnh, ví dụ ResNet hoặc EfficientNet. Các giả định của tích chập đúng với ảnh, nên CNN cần ít dữ liệu hơn ViT ở quy mô này (Mục 7.4). 3 000 ảnh không đủ để huấn luyện từ đầu, nên dùng đặc trưng đã học từ ImageNet (Chương 6 của Biểu diễn & Căn chỉnh). Chi tiết "bố cục giống nhau" cần chú ý: nếu vị trí của khuyết tật có ý nghĩa, các phép tăng cường dữ liệu như lật hay dịch mạnh có thể có hại, và tính bất biến với dịch chuyển của lớp gộp toàn cục có thể không mong muốn.

(c) Trích xuất thông tin từ hợp đồng 50 trang. Chọn Transformer đã tiền huấn luyện, có ngữ cảnh đủ dài, hoặc kết hợp chia văn bản thành đoạn với truy xuất. Bài toán có nhiều phụ thuộc xa, ví dụ điều khoản ở trang 40 tham chiếu định nghĩa ở trang 2; attention cho đường đi độ dài O(1)O(1) giữa hai vị trí bất kỳ. Tiền huấn luyện là cần thiết vì không có đủ hợp đồng có nhãn để học ngôn ngữ pháp lý từ đầu. Về chi phí, 50 trang tương ứng khoảng 25 000 tới 35 000 token; với một mô hình có d=4 096d = 4\,096, tỉ số T/(6d)T/(6d) vào khoảng 1 tới 1,4, tức phần tính toán của attention đã ngang phần còn lại (Mục 12.4), nên cân nhắc FlashAttention hoặc chỉ đưa vào các đoạn liên quan.

(d) Dự báo phụ tải điện theo giờ cho 12 tháng. Chọn mô hình khai thác trực tiếp cấu trúc đã biết: gradient boosting trên các đặc trưng lịch (giờ trong ngày, ngày trong tuần, mùa, ngày lễ), đặc trưng trễ và dự báo thời tiết, hoặc mô hình chuỗi thời gian có thành phần mùa vụ tường minh. Phụ tải bị chi phối bởi các chu kỳ đã biết trước và nhiệt độ; đưa chúng vào làm đặc trưng thì mô hình không phải học lại chúng từ dữ liệu. Quan trọng hơn cả việc chọn mô hình là cách đánh giá: phải chia dữ liệu theo thời gian, huấn luyện trên quá khứ và kiểm tra trên giai đoạn sau, không bao giờ chia ngẫu nhiên (Mục 8.5 của Nền tảng).

Bài 10
thí nghiệmNâng caoChương 9
#

Trong phần (E) của code/models/experiments.py, thay softmax bằng một phép chuẩn hoá không có hàm mũ, ví dụ wi=ReLU⁡(si)/∑jReLU⁡(sj)w_i = \operatorname{ReLU}(s_i)/\sum_j \operatorname{ReLU}(s_j), rồi đo lại entropy theo dkd_k khi không chia cho dk\sqrt{d_k}. (a) Hiện tượng bão hoà còn xuất hiện không? Giải thích. (b) Từ đó cho biết phép chia dk\sqrt{d_k} xử lý vấn đề của softmax hay của tích vô hướng. (c) Nêu lý do attention vẫn dùng softmax.

Xem lời giải chi tiết

Cách làm. Trong phần (E), thay softmax(scores) bằng một hàm chuẩn hoá không có hàm mũ:

Python
def relu_norm(s, axis=-1, eps=1e-9):
    """Chuan hoa l1 cua ReLU: khong co ham mu nen khong bao hoa."""
    w = np.maximum(s, 0.0)
    return w / (w.sum(axis=axis, keepdims=True) + eps)

rồi đo entropy của trọng số theo dk=4,16,64,256,1 024d_k = 4, 16, 64, 256, 1\,024 khi không chia cho dk\sqrt{d_k}.

(a) Kết quả dự kiến. Hiện tượng bão hoà biến mất: entropy gần như không đổi theo dkd_k. Với softmax, tỉ số giữa hai trọng số là esi−sje^{s_i - s_j}, hàm mũ của hiệu hai điểm số, nên khi điểm số có độ lệch chuẩn cỡ 32, một phần tử áp đảo các phần tử còn lại. Với chuẩn hoá ℓ1\ell_1 của ReLU, tỉ số là si/sjs_i/s_j (với các điểm số dương); nhân mọi điểm số với cùng một hằng số dương không thay đổi tỉ số này, nên phân phối trọng số không phụ thuộc thang đo của điểm số.

(b) Softmax hay tích vô hướng. Tích vô hướng làm phương sai của điểm số tăng theo dkd_k (Bài 3). Nhưng phương sai lớn chỉ gây hại vì softmax nhạy với thang đo tuyệt đối của đầu vào. Nguyên nhân trực tiếp nằm ở tích vô hướng, còn cơ chế gây hại nằm ở softmax. Cách sửa được chọn ở phía tích vô hướng vì chỉ tốn một phép chia, trong khi thay softmax sẽ thay đổi tính chất của mô hình.

(c) Vì sao vẫn dùng softmax.

  1. Luôn dương và trơn. Chuẩn hoá ReLU cho trọng số bằng đúng 0 và gradient bằng 0 ở mọi vị trí có điểm số âm, nên các vị trí đó không bao giờ được xét lại, tương tự đơn vị ReLU chết.
  2. Mẫu số luôn dương. Với ReLU, nếu mọi điểm số đều âm thì tổng bằng 0; phải thêm eps, và eps trở thành một siêu tham số ngầm.
  3. Có thể chọn dứt khoát khi cần. Một số nhiệm vụ cần phân phối gần one-hot, ví dụ sao chép chính xác một token từ ngữ cảnh. Tính chất hàm mũ của softmax cho phép điều đó với điểm số vừa phải.

Khi chạy, nên ghi thêm entropy khi có chia dk\sqrt{d_k} cho cả hai hàm để có bốn cột so sánh: chuẩn hoá ReLU cho entropy gần như không đổi trong cả hai trường hợp, còn softmax chỉ ổn định khi có phép chia.

Bài 11
tính tayTrung bìnhChương 7
#

Phát hiện đối tượng (Mục 7.5). (a) Tính IoU của hai hộp A=(10,10,50,40)A = (10, 10, 50, 40) và B=(30,20,70,60)B = (30, 20, 70, 60), toạ độ dạng (x1,y1,x2,y2)(x_1, y_1, x_2, y_2). (b) Chạy NMS với ngưỡng IoU 0,5 trên bốn hộp: P1=(0,0,10,10)P_1 = (0, 0, 10, 10) điểm 0,9; P2=(1,1,11,11)P_2 = (1, 1, 11, 11) điểm 0,8; P3=(5,5,15,15)P_3 = (5, 5, 15, 15) điểm 0,7; P4=(20,20,30,30)P_4 = (20, 20, 30, 30) điểm 0,6. Những hộp nào được giữ? (c) Một lớp có 4 hộp thật. Bộ phát hiện trả về 6 hộp; xếp theo điểm giảm dần, kết quả ghép ở ngưỡng IoU 0,5 lần lượt là: đúng, đúng, sai, đúng, sai, sai. Tính precision và recall sau mỗi hộp, rồi tính AP theo cách tính mọi điểm của PASCAL VOC. (d) Vì sao một hộp dự đoán trùng với hộp đúng của cùng đối tượng bị tính là dương tính giả, và điều đó liên quan gì tới NMS?

Xem lời giải chi tiết

(a) IoU. Hộp AA có diện tích 40×30=1 20040 \times 30 = 1\,200, hộp BB có diện tích 40×40=1 60040 \times 40 = 1\,600. Phần giao theo trục ngang là [30,50][30, 50], theo trục dọc là [20,40][20, 40], diện tích 20×20=40020 \times 20 = 400. Phần hợp là 1 200+1 600−400=2 4001\,200 + 1\,600 - 400 = 2\,400, nên

IoU⁡(A,B)=4002 400=16≈0,167.\operatorname{IoU}(A, B) = \frac{400}{2\,400} = \frac{1}{6} \approx 0{,}167.

(b) NMS. Các IoU cần dùng: IoU⁡(P1,P2)=81/119≈0,681\operatorname{IoU}(P_1, P_2) = 81/119 \approx 0{,}681 (giao 9×99 \times 9, hợp 100+100−81100 + 100 - 81); IoU⁡(P1,P3)=25/175≈0,143\operatorname{IoU}(P_1, P_3) = 25/175 \approx 0{,}143; IoU⁡(P1,P4)=0\operatorname{IoU}(P_1, P_4) = 0; IoU⁡(P3,P4)=0\operatorname{IoU}(P_3, P_4) = 0.

  1. Chọn P1P_1 (điểm 0,9). Bỏ P2P_2 vì IoU 0,681 vượt 0,5; giữ P3P_3 và P4P_4.
  2. Trong các hộp còn lại, chọn P3P_3 (0,7); IoU với P4P_4 bằng 0 nên giữ P4P_4.
  3. Chọn P4P_4.

Kết quả: P1P_1, P3P_3, P4P_4. Lưu ý rằng P2P_2 bị loại vì trùng với P1P_1 chứ không vì trùng với P3P_3 (IoU giữa P2P_2 và P3P_3 chỉ là 36/164≈0,2236/164 \approx 0{,}22).

(c) Precision, recall và AP. Với 4 hộp thật:

Hộp thứ Kết quả TP tích luỹ Precision Recall
1 đúng 1 1,000 0,25
2 đúng 2 1,000 0,50
3 sai 2 0,667 0,50
4 đúng 3 0,750 0,75
5 sai 3 0,600 0,75
6 sai 3 0,500 0,75

Precision nội suy tại mỗi mức recall là precision lớn nhất ở các mức recall lớn hơn hoặc bằng: tại recall 0,25 và 0,50 là 1; tại recall 0,75 là 0,75. Recall không bao giờ đạt 1 vì một hộp thật không được phát hiện, nên đoạn từ 0,75 tới 1 đóng góp 0. AP theo cách tính mọi điểm:

AP=0,25×1+0,25×1+0,25×0,75=0,6875.\text{AP} = 0{,}25 \times 1 + 0{,}25 \times 1 + 0{,}25 \times 0{,}75 = 0{,}6875.

Theo cách tính 11 điểm của VOC 2007: precision nội suy bằng 1 tại 6 mức recall 0;0,1;… ;0,50; 0{,}1; \dots; 0{,}5, bằng 0,75 tại hai mức 0,6 và 0,7, và bằng 0 tại 0,8; 0,9; 1. AP =(6+1,5)/11≈0,682= (6 + 1{,}5)/11 \approx 0{,}682, gần nhưng không bằng cách tính mọi điểm.

(d) Hộp trùng. Mỗi hộp thật chỉ được ghép với một hộp dự đoán. Hộp dự đoán thứ hai của cùng một đối tượng không còn hộp thật nào để ghép, nên bị tính là dương tính giả và làm giảm precision. Vì vậy NMS làm tăng AP: nó loại các hộp trùng trước khi đánh giá. Trong thí nghiệm ở Mục 7.5, AP50 tăng từ 0,885 lên 0,913 sau NMS. Nhưng nếu ngưỡng NMS quá thấp, hộp đúng của một đối tượng khác đứng sát bên cũng bị loại, và recall giảm.

Bài 12
tính tayTrung bìnhChương 11
#

Giải mã (Mục 11.4 và 11.5). (a) Sau câu "Tôi muốn ăn", mô hình cho "phở" xác suất 0,5, "cơm" 0,4 và "bún" 0,1. Sau "phở", token tiếp theo là "bò" với xác suất 0,5, "gà" 0,3 và "cuốn" 0,2; sau "cơm", là "tấm" 0,8 và "rang" 0,2. Tìm chuỗi hai token mà greedy chọn và chuỗi mà beam search với b=2b = 2 chọn, kèm xác suất của chúng. (b) Hai chuỗi hoàn chỉnh: chuỗi 4 token có tổng log-xác suất −2,8-2{,}8, chuỗi 8 token có tổng −4,4-4{,}4. Với α=0\alpha = 0, 0,750{,}75 và 11, chuẩn hoá theo độ dài chọn chuỗi nào? (c) Giải mã suy đoán trên ba token A, B, C, với phân phối của mô hình nhỏ q=(0,6; 0,3; 0,1)q = (0{,}6;\ 0{,}3;\ 0{,}1) và của mô hình lớn p=(0,3; 0,4; 0,3)p = (0{,}3;\ 0{,}4;\ 0{,}3). Tính xác suất nhận của từng token và phân phối phần dư, rồi kiểm tra rằng phân phối của đầu ra đúng bằng pp. (d) Tính tỉ lệ chấp nhận α\alpha trong (c) và số token kỳ vọng sau một lượt xuôi của mô hình lớn khi mô hình nhỏ đề xuất γ=3\gamma = 3 token mỗi lượt.

Xem lời giải chi tiết

(a) Greedy và beam search. Greedy chọn "phở" (0,5) rồi "bò" (0,5), được chuỗi "phở bò" với xác suất 0,5⋅0,5=0,250{,}5 \cdot 0{,}5 = 0{,}25. Beam search với b=2b = 2 giữ "phở" và "cơm" sau bước đầu, rồi so năm chuỗi ở bước hai:

Chuỗi Xác suất
cơm tấm 0,4⋅0,8=0,320{,}4 \cdot 0{,}8 = 0{,}32
phở bò 0,5⋅0,5=0,250{,}5 \cdot 0{,}5 = 0{,}25
phở gà 0,5⋅0,3=0,150{,}5 \cdot 0{,}3 = 0{,}15
phở cuốn 0,5⋅0,2=0,100{,}5 \cdot 0{,}2 = 0{,}10
cơm rang 0,4⋅0,2=0,080{,}4 \cdot 0{,}2 = 0{,}08

Beam giữ "cơm tấm" và "phở bò", và chọn "cơm tấm" với xác suất 0,32, cao hơn chuỗi của greedy dù "cơm" chỉ đứng thứ hai ở bước đầu. Lý do là sau "cơm", mô hình rất chắc chắn về token tiếp theo, còn sau "phở" thì xác suất chia cho ba lựa chọn.

(b) Chuẩn hoá theo độ dài. Điểm số là tổng log-xác suất chia cho LαL^\alpha:

α\alpha Chuỗi 4 token Chuỗi 8 token Chọn
0 −2,800-2{,}800 −4,400-4{,}400 chuỗi ngắn
0,75 −2,8/2,828=−0,990-2{,}8/2{,}828 = -0{,}990 −4,4/4,757=−0,925-4{,}4/4{,}757 = -0{,}925 chuỗi dài
1 −0,700-0{,}700 −0,550-0{,}550 chuỗi dài

Không chuẩn hoá thì chuỗi ngắn thắng chỉ vì có ít số hạng âm hơn. Tính trung bình mỗi token, chuỗi dài có xác suất cao hơn, e−0,55=0,58e^{-0{,}55} = 0{,}58 so với e−0,70=0,50e^{-0{,}70} = 0{,}50, nên nó được chọn khi α=0,75\alpha = 0{,}75 hay 1. Hai chuỗi hoà nhau khi −2,8/4α=−4,4/8α-2{,}8/4^\alpha = -4{,}4/8^\alpha, tức 2α=4,4/2,82^\alpha = 4{,}4/2{,}8, hay α≈0,65\alpha \approx 0{,}65.

(c) Quy tắc chấp nhận. Xác suất nhận là min⁡(1, p/q)\min(1,\ p/q): A được nhận với xác suất 0,3/0,6=0,50{,}3/0{,}6 = 0{,}5, còn B và C luôn được nhận vì p≥qp \ge q ở hai token này. Việc từ chối chỉ xảy ra khi A được đề xuất rồi bị từ chối, với xác suất 0,6⋅0,5=0,30{,}6 \cdot 0{,}5 = 0{,}3. Phần dư là max⁡(0, p−q)=(0; 0,1; 0,2)\max(0,\ p - q) = (0;\ 0{,}1;\ 0{,}2), chuẩn hoá thành (0; 13; 23)(0;\ \tfrac13;\ \tfrac23). Phân phối của đầu ra:

Token Đề xuất và được nhận Lấy từ phần dư Tổng
A 0,6⋅0,5=0,30{,}6 \cdot 0{,}5 = 0{,}3 0 0,3
B 0,3⋅1=0,30{,}3 \cdot 1 = 0{,}3 0,3⋅13=0,10{,}3 \cdot \tfrac13 = 0{,}1 0,4
C 0,1⋅1=0,10{,}1 \cdot 1 = 0{,}1 0,3⋅23=0,20{,}3 \cdot \tfrac23 = 0{,}2 0,3

Cột tổng đúng bằng pp. Phần dư bù chính xác lượng xác suất mà mô hình nhỏ đặt thiếu cho B và C.

(d) Tốc độ. α=∑xmin⁡(p(x),q(x))=0,3+0,3+0,1=0,7\alpha = \sum_x \min(p(x), q(x)) = 0{,}3 + 0{,}3 + 0{,}1 = 0{,}7, bằng một trừ xác suất từ chối 0,3 ở (c). Với γ=3\gamma = 3, số token kỳ vọng sau một lượt xuôi của mô hình lớn là

1−0,741−0,7=0,75990,3≈2,53.\frac{1 - 0{,}7^{4}}{1 - 0{,}7} = \frac{0{,}7599}{0{,}3} \approx 2{,}53.

Mức tăng tốc thực tế thấp hơn con số này, vì còn thời gian chạy mô hình nhỏ.

Bài 13
tính tayCơ bảnChương 12
#

Tính toán tài nguyên theo kiểu bài tập nhẩm của CS336 (Mục 12.4 và 12.5). Một mô hình 13 tỉ tham số được huấn luyện trên 2 nghìn tỉ token bằng GPU A100, đạt tối đa 312 TFLOPS với bf16. (a) Với MFU 40%, ước lượng số giờ-GPU, và số ngày nếu dùng 1 024 GPU. (b) Meta công bố 368 640 giờ-GPU cho Llama 2 13B. Suy ra MFU và so với con số 37,5% của Llama 2 7B ở Ví dụ 12.1. (c) Với Adam và độ chính xác hỗn hợp, trọng số, gradient và trạng thái của bộ tối ưu cần bao nhiêu GB? Cần ít nhất bao nhiêu GPU 80 GB nếu mọi khoản được chia đều, và vì sao con số thực tế lớn hơn? (d) Với V=32 000V = 32\,000 và d=5 120d = 5\,120, lớp chiếu ra từ vựng tốn bao nhiêu FLOP mỗi token ở lượt xuôi, và bằng bao nhiêu phần trăm của 2N2N? So với GPT-2 small ở Mục 12.4.

Xem lời giải chi tiết

(a) Thời gian. Tổng số phép tính là C=6ND=6⋅13×109⋅2×1012=1,56×1023{C = 6ND = 6 \cdot 13 \times 10^9 \cdot 2 \times 10^{12} = 1{,}56 \times 10^{23}} FLOP. Mỗi giờ, một A100 với MFU 40% làm được 312×1012⋅0,4⋅3 600=4,49×1017{312 \times 10^{12} \cdot 0{,}4 \cdot 3\,600 = 4{,}49 \times 10^{17}} FLOP, nên

1,56×10234,49×1017≈347 000 giờ-GPU.\frac{1{,}56 \times 10^{23}}{4{,}49 \times 10^{17}} \approx 347\,000 \text{ giờ-GPU}.

Với 1 024 GPU, con số này ứng với 347 000/(1 024⋅24)≈14347\,000 / (1\,024 \cdot 24) \approx 14 ngày.

(b) MFU của Llama 2 13B. Ở tốc độ đỉnh, 368 640 giờ-GPU cung cấp 368 640⋅3 600⋅312×1012=4,14×1023{368\,640 \cdot 3\,600 \cdot 312 \times 10^{12} = 4{,}14 \times 10^{23}} FLOP, nên MFU khoảng 1,56/4,14≈37,7%1{,}56/4{,}14 \approx 37{,}7\%, gần như bằng 37,5% của bản 7B. Hai mô hình được huấn luyện trên cùng một hệ thống, nên hiệu suất gần nhau là hợp lý, và đây là một phép kiểm tra chéo cho công thức 6ND6ND. Ở đây NN được làm tròn thành 13 tỉ; với số tham số không tính embedding, 12 687 769 600, MFU thấp hơn một chút, khoảng 36,8%.

(c) Bộ nhớ. Với 16 byte mỗi tham số, trọng số, gradient và trạng thái của Adam cần 13×109⋅16=20813 \times 10^9 \cdot 16 = 208 GB. Chia đều cho các GPU 80 GB cần ít nhất 208/80=2,6208/80 = 2{,}6, tức 3 GPU. Con số thực tế lớn hơn vì còn giá trị kích hoạt, vốn tăng theo kích thước lô và độ dài chuỗi (Mục 12.5), cùng các bộ đệm cho việc trao đổi dữ liệu giữa các GPU. Trong thực tế, số GPU thường được chọn theo thời gian huấn luyện mong muốn như ở (a), chứ không theo mức tối thiểu về bộ nhớ.

(d) Lớp chiếu ra. Bảng embedding đầu vào chỉ là phép tra một hàng của ma trận, không có phép nhân nào. Lớp chiếu ra nhân vector dd chiều với ma trận d×Vd \times V, tốn 2Vd=2⋅32 000⋅5 120≈3,3×1082Vd = 2 \cdot 32\,000 \cdot 5\,120 \approx 3{,}3 \times 10^8 FLOP mỗi token ở lượt xuôi, tức khoảng 1,3% của 2N=2,6×10102N = 2{,}6 \times 10^{10}. Với GPT-2 small, cùng khoản này bằng gần một nửa 2N2N (Mục 12.4). Khác biệt đến từ tỉ số 2Vd/2N≈V/(12Ld)2Vd/2N \approx V/(12Ld), giảm khi LL và dd tăng: mô hình nhỏ có LL và dd nhỏ nhưng từ vựng vẫn lớn.

Trắc nghiệm theo chương#

59 câu bám sát nội dung và số liệu của từng chương. Đáp án được xáo lại mỗi lần tải trang.

Chương 1 — Các họ mô hình

2 câu

  1. 1Thiên kiến quy nạp của một thuật toán học là gì?

  2. 2Vì sao gradient boosting thường tốt hơn mạng nơ-ron trên dữ liệu dạng bảng?

Đã trả lời 0/2

Chương 2 — Độ chệch và phương sai

5 câu

  1. 1Độ chệch và phương sai trong phân rã sai số được định nghĩa qua kỳ vọng trên cái gì?

  2. 2Sai số huấn luyện 2%, sai số xác thực 18%, khoảng cách lớn và vẫn thu hẹp dần khi thêm dữ liệu. Nên làm gì?

  3. 3Trong thí nghiệm ở Mục 2.3, vì sao thêm dữ liệu không giúp được đa thức bậc 1?

  4. 4Trong thí nghiệm ở Mục 2.3, vì sao đa thức bậc 2 có độ chệch² gần như bằng bậc 1?

  5. 5Hiện tượng double descent nói điều gì?

Đã trả lời 0/5

Chương 3 — Cây quyết định và phương pháp tập hợp

5 câu

  1. 1Phương sai của trung bình MM mô hình, mỗi mô hình có phương sai σ2\sigma^2 và mỗi cặp có tương quan ρ\rho, là bao nhiêu?

  2. 2Gradient boosting chủ yếu giảm thành phần nào của sai số?

  3. 3Phát biểu nào về cây quyết định là đúng?

  4. 4Rừng ngẫu nhiên khác bagging thông thường ở điểm nào?

  5. 5Một nút có 6 điểm lớp A và 4 điểm lớp B. Độ không thuần nhất Gini của nút là bao nhiêu?

Đã trả lời 0/5

Chương 4 — Mạng nơ-ron nhiều lớp

5 câu

  1. 1Vì sao mạng nơ-ron cần hàm kích hoạt phi tuyến?

  2. 2Định lý xấp xỉ phổ quát không cho biết điều gì?

  3. 3Một mạng một lớp ẩn với đầu vào một chiều cần ít nhất bao nhiêu đơn vị ReLU để biểu diễn chính xác hàm răng cưa 2k2^k đoạn?

  4. 4Kết quả ở Mục 4.4 cho phép kết luận điều gì?

  5. 5Vì sao đạo hàm của sigmoid làm gradient qua nhiều lớp nhỏ đi nhanh?

Đã trả lời 0/5

Chương 5 — Lan truyền ngược và các thuật toán tối ưu

5 câu

  1. 1Vì sao lan truyền ngược, tức vi phân chế độ ngược, rẻ hơn chế độ xuôi khi huấn luyện mạng nơ-ron?

  2. 2Trong Ví dụ 5.1, vì sao hàng thứ hai của W1W_1 nhận gradient bằng 0?

  3. 3Vì sao Adam có bước hiệu chỉnh độ chệch?

  4. 4Trạng thái của Adam cho mô hình 7 tỉ tham số, lưu ở FP32, chiếm bao nhiêu bộ nhớ?

  5. 5AdamW khác Adam kèm regularization ℓ2\ell_2 ở điểm nào?

Đã trả lời 0/5

Chương 6 — Khởi tạo, chuẩn hoá và kết nối tắt

5 câu

  1. 1Hệ số 2 trong khởi tạo He, σW2=2/nin\sigma_W^2 = 2/n_{\text{in}}, đến từ đâu?

  2. 2Trong thí nghiệm ở Mục 6.3, kết nối tắt không kèm chuẩn hoá cho kết quả gì trên mạng 40 lớp?

  3. 3Vì sao Transformer dùng LayerNorm thay cho BatchNorm?

  4. 4Kết nối tắt trong ResNet được đề xuất để giải quyết vấn đề gì?

  5. 5RMSNorm khác LayerNorm ở điểm nào?

Đã trả lời 0/5

Chương 7 — Mạng nơ-ron tích chập

9 câu

  1. 1Trường tiếp nhận sau LL lớp tích chập 3×33 \times 3 với bước nhảy 1 rộng bao nhiêu điểm ảnh?

  2. 2Vì sao trường tiếp nhận hiệu dụng nhỏ hơn con số lý thuyết?

  3. 3Ba giả định mà mạng tích chập đưa vào kiến trúc là gì?

  4. 4Một lớp tích chập 7×77 \times 7, 64 bộ lọc, bước nhảy 2, phần đệm 3, nhận ảnh 224×224×3224 \times 224 \times 3. Đầu ra có kích thước không gian bao nhiêu?

  5. 5Hai hộp (0,0,4,4)(0, 0, 4, 4) và (2,2,6,6)(2, 2, 6, 6) có IoU bằng bao nhiêu?

  6. 6Vì sao bộ phát hiện cần bước NMS?

  7. 7Cùng một bộ phát hiện, vì sao AP@[0,5:0,95] thấp hơn nhiều so với AP50?

  8. 8Trong U-Net, các kết nối giữa nhánh mã hoá và nhánh giải mã có tác dụng gì?

  9. 9Hai mô hình phân đoạn có IoU 0,5. Hệ số Dice tương ứng là bao nhiêu?

Đã trả lời 0/9

Chương 8 — Mạng nơ-ron hồi quy

4 câu

  1. 1Giới hạn nào của RNN là lý do chính khiến Transformer thay thế nó?

  2. 2Dọc theo trạng thái ô nhớ của LSTM, gradient nhân với gì ở mỗi bước?

  3. 3Theo mô phỏng ở Mục 8.2, gradient dọc ô nhớ sau 100 bước còn bao nhiêu khi hệ số chặn của cổng quên bằng 1 và bằng 4?

  4. 4Vì sao gradient bùng nổ dễ xử lý hơn gradient tiêu biến?

Đã trả lời 0/4

Chương 9 — Attention và Transformer

6 câu

  1. 1Nếu các thành phần của q,k∈Rdkq, k \in \mathbb{R}^{d_k} độc lập, trung bình 0, phương sai 1, thì q⋅kq \cdot k có phương sai bao nhiêu?

  2. 2Không chia điểm số cho dk\sqrt{d_k} thì điều gì xảy ra khi dkd_k lớn?

  3. 3Attention nhiều đầu mang lại điều gì?

  4. 4Thành phần nào trong một khối Transformer kết hợp thông tin giữa các vị trí?

  5. 5Vì sao self-attention cần thông tin vị trí?

  6. 6Mô hình chỉ decoder khác mô hình chỉ encoder ở điểm nào?

Đã trả lời 0/6

Chương 10 — Các cải tiến của Transformer

5 câu

  1. 1Tính chất quan trọng nhất của RoPE là gì?

  2. 2GQA được dùng vì lý do gì?

  3. 3Vì sao dffd_{\text{ff}} của Llama 2 7B là 11 008 chứ không phải 4d=16 3844d = 16\,384?

  4. 4Mixture of experts tách hai đại lượng nào khỏi nhau?

  5. 5FlashAttention thay đổi điều gì so với cách tính attention trực tiếp?

Đã trả lời 0/5

Chương 11 — Các chiến lược giải mã

2 câu

  1. 1Vì sao beam search thường cho văn bản mở nhạt và lặp?

  2. 2Top-p khác top-k ở điểm cơ bản nào?

Đã trả lời 0/2

Chương 12 — Tham số, FLOP và bộ nhớ của Transformer

6 câu

  1. 1Số tham số không tính embedding của một Transformer LL lớp, số chiều dd, với dff=4dd_{\text{ff}} = 4d là bao nhiêu?

  2. 2Trong GPT-2 small, embedding chiếm khoảng bao nhiêu phần tổng số tham số?

  3. 3Công thức C≈6NDC \approx 6ND phân bổ chi phí cho mỗi token thế nào?

  4. 4Khi tính đủ ma trận điểm số, phần tính toán của attention lớn hơn phần còn lại khi nào?

  5. 5Huấn luyện với Adam và độ chính xác hỗn hợp cần khoảng bao nhiêu byte cho mỗi tham số, chưa tính giá trị kích hoạt?

  6. 6Khi huấn luyện bị hết bộ nhớ, cách xử lý đầu tiên thường là gì, và vì sao?

Đã trả lời 0/6