Giới thiệu bài lab
Ba loss trên tone tổng hợp: đọc số trước khi kết luận
Một chương trình NumPy chạy ngay trong trình duyệt tạo 192 khung sóng sin, dùng A/B/C làm ba nhãn âm giả và hai mức biên độ làm speaker giả. Bạn cần kiến thức mảng NumPy cùng cross-entropy, gradient, AdamW từ hai khóa tiên quyết; hướng dẫn bên dưới nhắc lại các ý cần dùng.
Codec học tái tạo sóng, LM học dự đoán codec ID theo chữ giả và speaker, ASR học nhãn từ Mel. MSE là trung bình bình phương sai số sóng; CE là trung bình −ln xác suất nhãn đúng. Chúng có đơn vị và mục đích khác nhau, nên không so trị số để xếp hạng ba nhiệm vụ.
Bạn sẽ chạy gì?
- Tám khối output, mỗi khối có Quan sát, Kết luận và Không chứng minh, cùng bảng ánh xạ về 22 ô ở Tab 01.
- Codec tuyến tính 1728 tham số, hai bảng RVQ tám mã; LM MLP 608 tham số chỉ nhìn một mã trước; đầu ASR tuyến tính trên 12 dải Mel.
- Bốn bài tập với đáp án đã chạy: giảm bước codec, giảm số bảng mã, giảm bước LM và tính collapse CTC.
Làm xong, bạn có thể
- Đọc MSE codec 0.232382 → 0.001859 và [3,5] mã hoạt động mà không nhầm số mã dùng với ID của một khung.
- Đọc CE LM 2.1214 → 0.0015 và CE ASR 0.9248 → 0.0082, đồng thời giải thích vì sao accuracy khung 100% chưa phải nhận dạng lời nói thật.
- Phân biệt kiểm đạo hàm decoder, kiểm tiền tố nhân quả và nạp lại codec với kiểm chất lượng giọng hoặc tốc độ phục vụ.
Phạm vi: lab huấn luyện codec, LM mã và ASR theo khung trên tone tổng hợp, không tạo tiếng nói thật. CTC chỉ có ví dụ collapse, còn SFT, LoRA, distillation, preference, sharding và recompute chỉ được giải thích. Nhạc và âm thanh không phải tiếng nói chỉ được nhắc tới, không được giảng dạy.
Cách chạy và đọc
- Đọc đầu vào: 164 khung train, 28 validation, seed 17, 8 kHz và 64 mẫu/khung. Các khung đã cùng sample rate và có nhãn căn sẵn; không có resampling hoặc tìm ranh giới tự động.
- Dự đoán trước: với tám mã được đoán đều, CE bằng ln 8 ≈ 2.0794. Viết xem bạn mong MSE, CE và codebook usage đổi ra sao sau học.
- Chạy toàn file, đối chiếu tám khối với bảng. Mốc mặc định là MSE kiểm định 0.002234, CE LM 0.0015 và dòng PASS; chữ số cuối có thể khác theo NumPy.
- Mở bài đọc Lab đầy đủ để làm một bài tập; chỉ sửa một hằng số, chạy lại và giải thích trước khi xem đáp án. LM học 10 bước vẫn PASS nhưng CE còn 1.4325: PASS không phải thước đo chất lượng.
Số bit và khung/giây là tính từ cấu hình; lab không đo độ trễ hay băng thông trên hệ phục vụ.
| Giai đoạn | Ô | Bài học (bấm để mở) | Lab NumPy dựng gì (training-audio-end-to-end.py) | Cách đọc số liệu & phép kiểm chứng |
|---|---|---|---|---|
| 1 | 1A–1B | Dữ liệu và ranh giới có sẵn ↗ | Tạo 192 khung tone, nhãn A/B/C và hai biên độ giả người nói; 164 train / 28 validation. | Không tải giọng thật; không thực thi resampling, phân đoạn tự động hay lọc chất lượng. |
| 2 | 1C–1D | Mel và đầu vào ASR ↗ | STFT theo khung, 12 bộ lọc Mel, log1p và chuẩn hóa bằng train. | Thống kê train gần 0 sau chuẩn hóa. Không có encoder ngữ cảnh; đặc trưng đi thẳng vào đầu ASR. |
| 3 | 2A–2E | Học codec RVQ ↗ | Encoder tuyến tính 64→12, hai bảng tám mã và decoder 12→64; MSE, commitment, regression bảng mã. | MSE train 0.232382→0.001859, validation 0.002234; mã hoạt động [3,5]/8. Không có GAN hoặc semantic distillation. |
| 4 | 4C | Backward và AdamW ↗ | AdamW viết bằng NumPy; sai phân hữu hạn một phần tử decoder, nơi mã được giữ cố định. | Sai lệch khoảng 2.48e−16 so ngưỡng 1e−6; không kiểm đạo hàm argmin hoặc mọi tham số encoder. |
| 5 | 3A–3D | LM học mã có điều kiện ↗ | MLP tanh 608 tham số nhận chữ giả, speaker, vị trí bảng và một mã trước; nối phẳng, teacher forcing rồi tự sinh. | CE 2.1214→0.0015; MSE sóng sinh kiểm định 0.002234. Không có attention, ngữ cảnh nhiều khung hoặc depth/delay predictor. |
| 6 | 4A–4B | ASR theo khung và collapse ↗ | Đầu tuyến tính Mel→A/B/C, nhãn đã căn sẵn; thêm ví dụ gộp lặp rồi bỏ blank. | CE 0.9248→0.0082; accuracy khung 100% chỉ trên tone. Không tính CTC loss tổng đường hay WER tiếng nói. |
| 7 | 4D,5C | Nhân quả và đếm mã ↗ | Đổi sóng tương lai để kiểm codec không nhìn khung sau; đếm số mã và bit từ cấu hình. | Tiền tố lệch 0; 250 mã/giây, 750 bit/giây lý thuyết. Không đo latency, GPU, sharding hoặc recompute. |
| 8 | 4E,5A,5B,5D | Nạp codec và nêu phần chưa dựng ↗ | Sao chép tham số codec trong RAM và nạp lại; giải thích phần còn lại của checkpoint toàn hệ. | Sóng nạp lại lệch 0; m,v codec chiếm 27648 byte. Không ghi tệp hoặc resume; SFT, LoRA, distillation, preference chỉ là bài đọc. |
Hướng dẫn đọc output
Mục tiêu và kiến thức cần nhớ
Bạn cần đọc được mảng NumPy và đã học causal LM, cross-entropy, gradient và AdamW trong LLM Foundations và LLM Training (Text). Nhắc lại: CE bằng −ln xác suất nhãn đúng; gradient là độ nhạy loss theo tham số; AdamW dùng trung bình gradient và bình phương gradient để sửa tham số.
Sau lab, bạn tách được ba mục tiêu: codec tái tạo waveform, LM dự đoán codec ID có điều kiện, ASR dự đoán nhãn chữ từ đặc trưng. PASS chỉ chứng minh các bất đẳng thức và ngưỡng số trong chương trình.
Đầu vào và cấu hình
Không tải dữ liệu: chương trình tạo 192 khung, mỗi khung 64 mẫu tại 8 kHz. Nhãn A/B/C tương ứng 500/1000/1500 Hz; speaker 0/1 chỉ điều khiển biên độ, thêm pha và nhiễu ngẫu nhiên. Đây là “âm vị” giả để quan sát phép tính, không phải tiếng nói.
Chọn mỗi khung thứ bảy cho kiểm định: 164 khung train và 28 validation; đây không phải split người nói mới. Codec có encoder tuyến tính 64→12, hai codebook tám vector rồi decoder 12→64, tổng 1728 tham số. LM là MLP tanh 608 tham số nhìn điều kiện và một mã trước, không có Transformer. ASR là đầu tuyến tính trên 12 dải Mel.
CODEC_STEPS=400, LM_STEPS=350, ASR_STEPS=200, LR=0.01, BETA=0.1, seed 17. Dùng NumPy với co chỉ số einsum cho các ma trận nhỏ. Chạy trong trình duyệt hoặc /usr/bin/python3 public/labs/llm-training-audio/training-audio-end-to-end.py.
Bản đồ tám khối output
Khối 1 ↔ 1A–1B: sóng và nhãn đã cùng sample rate, ranh giới có sẵn; không thực thi resampling hay lọc chất lượng. Khối 2 ↔ 1C: STFT, bộ lọc Mel và log1p; đầu encoder ngữ cảnh 1D chỉ được thay bằng đặc trưng trực tiếp.
Khối 3 ↔ 2A–2E: encoder học latent, RVQ chọn mã rồi decoder dựng lại sóng; MSE, commitment và mã hoạt động là các chỉ số khác nhau. Khối 4 ↔ 4C: AdamW và kiểm đạo hàm decoder; không kiểm argmin hoặc tuyên bố straight-through là gradient thật.
Khối 5 ↔ 3A–3D: đóng băng codec, dùng nhãn text giả và speaker để dự đoán mã, chấm CE và tự sinh mã để dựng sóng. Khối 6 ↔ 4A–4B: ASR theo khung đã căn nhãn, kèm ví dụ collapse CTC; không huấn luyện CTC tổng đường.
Khối 7 ↔ 4D,5C: kiểm không nhìn tương lai theo khung và tính lý thuyết số mã/bit. Khối 8 ↔ 4E,5A,5B,5D: kiểm nạp lại bản sao codec trong RAM; pretraining lớn, SFT, LoRA, distillation và preference chỉ được giải thích, chưa chạy.
Đọc các con số theo đúng câu hỏi
Ở khối 3, so MSE ban đầu 0.232382 với sau học 0.001859 và kiểm định 0.002234. Các số cùng đơn vị bình phương biên độ sóng; commitment 0.004943 nằm trong không gian latent nên không so lớn nhỏ trực tiếp với MSE. Mã hoạt động [3,5] nghĩa ba và năm mã được dùng ở từng bảng, không phải hai ID của một khung.
Ở khối 5, CE ban đầu 2.1214 gần ln 8 ≈ 2.0794; sau học 0.0015 cho thấy xác suất mã đúng tăng trên dữ liệu đơn giản. CE kiểm định dùng teacher forcing, còn MSE 0.002234 của sóng sinh dùng mã tự dự đoán. Hai phép đo trả lời hai câu hỏi khác nhau.
Ở khối 6, accuracy 100% chỉ trên 28 khung tone kiểm định. Collapse giữ hai A khi có blank xen giữa: gộp lặp trước rồi bỏ blank. Khối 7 tính 125 khung/giây × hai codebook = 250 mã/giây, mỗi mã log2(8)=3 bit nên 750 bit/giây chưa có header; đây không phải băng thông được đo.
Bằng chứng và giới hạn
Các assert kiểm MSE và hai CE giảm, sai lệch gradient decoder <1e−6 và hai sai lệch nhân quả/nạp lại <1e−12. Không kiểm mọi gradient của codec, không đo thời gian, không tổng hợp giọng thật và không thực thi đầy đủ mọi ô sơ đồ.
Mỗi ví dụ TTS chỉ một khung, token trước chỉ nằm trong khung đó; không học thời lượng câu hay dừng câu. ASR có nhãn từng khung, không có decoder văn bản hay CTC forward–backward. Các phần chưa dựng được ghi rõ trong bảng và output, không dùng PASS để suy ra chất lượng Qwen.
Thử thay đổi và tự đối chiếu
Giảm số bước codec
Đổi CODEC_STEPS từ 400 xuống 60. Dự đoán MSE cuối trước khi chạy; so cả train, validation và mã hoạt động.
Đáp án sau khi tự thử
Đã chạy seed 17: MSE train 0.023338, validation 0.027875, mã hoạt động vẫn [3,5]. So mặc định 0.001859/0.002234: ít bước giữ sai số cao hơn trong trường hợp này; cùng số mã hoạt động không nghĩa cùng tái tạo. Nhãn codec đổi nên CE LM cũng đổi; không cô lập riêng năng lực LM.
Một codebook
Đổi CODEBOOKS từ 2 xuống 1; giữ các hằng số còn lại. Tính trước số mã và bit mỗi giây rồi chạy.
Đáp án sau khi tự thử
Đã chạy: 125 mã/giây và 375 bit/giây lý thuyết, bằng một nửa cấu hình hai bảng. MSE train 0.003881, validation 0.004295; bốn mã hoạt động. Thay cấu trúc cũng thay đường lấy số ngẫu nhiên nên đây là so hai cấu hình cụ thể, không bằng chứng Q luôn quyết định chất lượng.
LM học ít bước
Chỉ đổi LM_STEPS từ 350 xuống 10. Codec đã học có đổi không? Đọc CE và sóng sinh.
Đáp án sau khi tự thử
Đã chạy: codec giữ MSE 0.001859; CE LM còn 1.4325, kiểm định teacher-forced 1.4489 và MSE sóng sinh 0.008533. So mặc định 0.0015 và 0.002234: codec tốt chưa đủ, LM cũng phải dự đoán đúng mã. CE vẫn giảm nên PASS không bảo đảm chất lượng cao.
Thứ tự collapse CTC
Tự tính đường A,A,blank,A rồi so với cách “bỏ blank trước, gộp sau”. Không cần đổi chương trình.
Đáp án sau khi tự thử
Gộp lặp liền nhau trước: A,blank,A; bỏ blank: A,A. Bỏ blank trước tạo A,A,A rồi gộp thành A, làm mất một nhãn. Lab chỉ minh họa phép collapse, không tính CTC loss.
Nguồn công bố tham chiếu
Danh sách bài học (17)
- 1A · Cặp audio–transcript và chia tập
- 1B · Chuẩn hóa, phân đoạn và lọc audio
- 1C–1D · Mel và encoder cho ASR
- 2A–2B · Encoder codec và lượng tử hóa phần dư RVQ
- 2C–2E · Decoder, loss tái tạo và sức khỏe codebook
- 3A · Điều kiện TTS, speaker prompt và mặt nạ nhãn
- 3B · Backbone ngôn ngữ dự đoán codec token
- 3C–3D · Lịch codebook và cross-entropy nhiều đầu
- 4A · ASR từ biểu diễn audio tới chữ
- 4B · Căn chỉnh: CTC hoặc decoder cross-entropy
- 4C · Loss, backward và AdamW cho ba nhánh
- 4D · Chuỗi audio dài, batch và ngân sách bộ nhớ
- 4E · Học nền và SFT hội thoại tiếng nói
- 5A · Thích nghi người nói và LoRA
- 5B · Distillation và ưu tiên độ tự nhiên
- 5C–5D · Huấn luyện nhân quả, checkpoint và cầu sang suy luận
- Lab tổng hợp · huấn luyện audio bằng NumPy