3 điểm bởi GN⁺ 2025-05-06 | 1 bình luận | Chia sẻ qua WhatsApp
  • LLM tính phân phối xác suất token tiếp theo rồi chọn một token, và sampling bổ sung tính ngẫu nhiên có kiểm soát vào cách greedy để điều chỉnh độ đa dạng của đầu ra
  • temperature, penalty lặp lại, DRY, Top-K/Top-P/Min-P thay đổi logits hoặc phân phối xác suất trước và sau khi chọn token để tái cấu trúc phạm vi ứng viên và xác suất tương đối
  • Mỗi sampler giữ lại hoặc loại bỏ token theo những tiêu chí khác nhau như số lượng cố định, xác suất tích lũy, tỷ lệ so với xác suất cao nhất, entropy, lặp n-gram, surprisal, v.v.
  • Trong pipeline thực tế, thứ tự áp dụng của filtering, penalty, temperature và điều chỉnh phân phối ảnh hưởng lớn đến kết quả, và tùy tổ hợp mà hiệu ứng có thể bổ sung cho nhau hoặc ghi đè lẫn nhau
  • Kích thước từ vựng và cách tách của tokenizer thay đổi đơn vị mà mô hình gán xác suất, cũng như các mẫu mà sampler dựa trên n-gram như DRY có thể phát hiện

Cấu trúc cơ bản của sinh văn bản và sampling trong LLM

  • LLM nhận văn bản như prompt của người dùng làm đầu vào và tính token tương ứng với từ tiếp theo
  • Mô hình có một từ vựng gồm các token hợp lệ và tham chiếu từ vựng đó trong cả huấn luyện lẫn suy luận
  • Trong quá trình huấn luyện, mô hình xem rất nhiều văn bản để xây dựng bản đồ xác suất nội bộ của token; trong suy luận, nó quyết định token tiếp theo dựa trên các xác suất đã học
  • Quá trình sinh được chia thành hai bước
    • Dự đoán: tính phân phối xác suất cho toàn bộ các token tiếp theo có thể có ở mỗi vị trí
    • Lựa chọn: chọn một token từ phân phối đó và thêm vào đầu ra
  • Cách greedy luôn chọn token có khả năng cao nhất nên dễ tạo ra văn bản lặp lại và mang tính quyết định
  • Sampling đưa tính ngẫu nhiên có kiểm soát vào bước lựa chọn để đầu ra đa dạng hơn

Vì sao là token chứ không phải từ hay ký tự

  • Tokenization theo ký tự biến cùng một văn bản thành chuỗi dài hơn rất nhiều; tokenization có thể thành 12 token thay vì 2~3 token theo kiểu subword
  • Chuỗi dài đòi hỏi nhiều tính toán hơn cho self-attention, và mô hình phải nối thông tin ở nhiều vị trí như t-h-e thành một khái niệm
  • Tokenization theo từ phải bao gồm toàn bộ từ tiếng Anh và từ của nhiều ngôn ngữ nên ma trận embedding sẽ rất lớn và tốn kém
  • Khi gặp từ mới hoặc từ hiếm, cách theo từ thường thay bằng token "unknown", làm mất thông tin ngữ nghĩa
  • Tokenization subword có thể biểu diễn từ mới như grompuficious bằng tổ hợp các subword có sẵn
  • Với mô hình ngôn ngữ dùng tokenizer mới, tokenizer sẽ được huấn luyện để tìm các subword xuất hiện thường xuyên trong mẫu đại diện của dữ liệu huấn luyện, và kích thước từ vựng được xác định trước

Các giá trị cốt lõi mà sampler xử lý

  • logits: điểm số chưa chuẩn hóa mà mô hình xuất ra cho từng token trong từ vựng; giá trị càng cao thì càng có khả năng là token tiếp theo
  • softmax: biến logits thành các giá trị từ 0 đến 1 và chuyển thành phân phối xác suất có tổng bằng 1
  • entropy: biểu thị mức độ bất định hay ngẫu nhiên của phân phối xác suất; càng cao thì mô hình càng kém chắc chắn về token tiếp theo
  • perplexity: biểu thị mức độ mô hình “ngạc nhiên” trước văn bản; càng thấp thì độ tin cậy càng cao
  • n-gram: chuỗi gồm n token liên tiếp; "once upon a" là một 3-gram
  • context window: số lượng token tối đa mà LLM có thể xử lý trong một lần, bao gồm prompt và đầu ra được sinh ra

Các sampler cơ bản điều chỉnh trực tiếp phân phối xác suất

  • Temperature hoạt động như một “núm chỉnh độ sáng tạo” của LLM
    • Temperature thấp làm các token có điểm cao nhất càng trở nên có khả năng được chọn hơn, tăng tính dễ đoán
    • Temperature cao như 0.7~1.0 cho phép cả ứng viên thứ 3 hoặc thứ 4 được chọn, tăng độ đa dạng nhưng cũng làm tăng khả năng lỗi
    • Temperature rất cao vượt 1.0 có thể khiến đầu ra thô và khó đoán nếu không dùng cùng các phương pháp khác như Min-P
    • Về mặt kỹ thuật, logits được chia cho giá trị temperature rồi mới áp dụng softmax
  • Presence Penalty áp dụng penalty cố định cho token đã từng xuất hiện ít nhất một lần
    • Bất kể số lần xuất hiện, mô hình trừ giá trị penalty khỏi logits của token đã dùng trước đó
    • Thường không được khuyến nghị vì có các chiến lược penalty tốt hơn
  • Frequency Penalty tăng penalty tỷ lệ với số lần token xuất hiện
    • Nếu một token xuất hiện ba lần thì logits sẽ giảm đi 3 × frequency penalty
    • Cùng một token lặp càng nhiều thì xác suất được chọn lại càng giảm dần
  • Repetition Penalty áp dụng cho token xuất hiện cả trong prompt lẫn đầu ra sinh ra
    • Logits dương bị chia cho penalty, còn logits âm bị nhân với penalty để trở nên âm hơn
    • Hữu ích để phá vỡ vòng lặp lặp lại, nhưng với giá trị quá mạnh có thể đánh đổi tính nhất quán

DRY để ngăn mẫu lặp

  • DRY(Don't Repeat Yourself) phát hiện mẫu lặp rộng hơn là chỉ lặp từ đơn giản
  • Nó tìm lặp n-gram trong chuỗi token đã sinh và áp penalty cho token sẽ tiếp tục mẫu đó
  • Nếu mẫu như "the cat sat on the" đã xuất hiện trước đó và cùng dòng chảy bắt đầu lại, nó sẽ làm cho token từng theo sau mẫu đó trước đây ít có khả năng được chọn hơn
  • Mẫu lặp càng dài thì penalty càng mạnh
  • Các tham số chính gồm multiplier là độ mạnh penalty, base là tốc độ tăng theo độ dài n-gram, độ dài n-gram tối thiểu/tối đa, sequence breaker, range limit, v.v.
  • Sequence breaker như punctuation có thể đặt lại việc khớp mẫu, và vì hiệu năng nên cũng có thể có giới hạn phạm vi chỉ xét phần văn bản gần đây
  • Đặc biệt hữu ích trong các lĩnh vực như viết sáng tạo, nơi các cụm lặp lại trở nên thiếu tự nhiên

Các sampler lọc bớt ứng viên

  • Top-K chỉ giữ lại K token đứng đầu thay vì toàn bộ từ vựng
    • Nếu K là 40 thì chỉ chọn trong 40 ứng viên có khả năng cao nhất
    • Các logits còn lại được đặt thành -∞, nên sau softmax xác suất của chúng gần như bằng 0
  • Top-P(Nucleus) không giữ số lượng cố định mà giữ tập ứng viên nhỏ nhất sao cho xác suất tích lũy vượt ngưỡng P
    • Nếu P là 0.9 thì sẽ bao gồm các ứng viên hàng đầu cho đến khi xác suất tích lũy đạt 90%
    • Khi mô hình tự tin thì số ứng viên ít, còn khi bất định thì nhiều ứng viên hơn được giữ lại
    • Luôn giữ ít nhất một token bằng cách giữ lại token có xác suất cao nhất
  • Min-P đặt ngưỡng chất lượng theo tỷ lệ so với token có xác suất cao nhất
    • Nếu xác suất cao nhất là 0.6 và Min-P là 0.1 thì ngưỡng sẽ là 0.06
    • Các token có xác suất quá thấp so với ứng viên tốt nhất sẽ bị loại
    • Thường dùng cùng temperature cao khoảng 1.0~1.2, còn giá trị Min-P thì rất thấp như 0.1
    • Hiệu quả hơn Top-K hay Top-P vì không cần sắp xếp toàn bộ từ vựng
  • Top-A dùng ngưỡng tỷ lệ với bình phương của xác suất cao nhất
    • Mô hình càng tự tin thì hiệu ứng bình phương càng làm ngưỡng tăng mạnh, khiến số ứng viên giảm đáng kể
    • Đây là cách ra đời trước Min-P; về kỹ thuật, Min-P là tuyến tính còn Top-A dựa trên bình phương
  • Epsilon Cutoff loại bỏ token thấp hơn một ngưỡng xác suất cố định
    • Áp cùng một tiêu chuẩn bất kể đặc tính của phân phối
    • Đơn giản và dễ đoán, nhưng không thích ứng như Eta Cutoff

Các sampler khai thác hình dạng phân phối và mức độ bất định

  • Top-N-Sigma tạo ngưỡng thống kê bằng logit tối đa và độ lệch chuẩn
    • Tiêu chí là logit tối đa - N × độ lệch chuẩn
    • Nó phản ánh không chỉ giá trị tuyệt đối mà còn cả độ phân tán của toàn bộ phân phối điểm số
  • Tail-Free Sampling(TFS) nhìn vào độ cong của phân phối xác suất để tìm điểm bắt đầu của đuôi dài
    • Nó sắp xếp logits theo thứ tự giảm dần, chuyển sang xác suất rồi tính trị tuyệt đối của sai phân bậc hai
    • Các token sau điểm mà phân phối tích lũy của độ cong vượt ngưỡng sẽ bị loại bỏ
    • Nó tập trung vào hình dạng của phân phối hơn là giá trị xác suất tuyệt đối
  • Eta Cutoff dùng đồng thời xác suất riêng lẻ và entropy tổng thể
    • Trong tình huống entropy thấp khi mô hình tự tin, cutoff nghiêm ngặt hơn sẽ được áp dụng
    • Trong tình huống entropy cao khi mô hình bất định, cutoff khoan dung hơn sẽ được áp dụng
    • Ngưỡng được xác định bằng giá trị nhỏ hơn giữa etasqrt(eta) * exp(neg_entropy)
  • Locally Typical Sampling không nhìn vào bản thân xác suất mà xem nó gần mức surprisal trung bình đến đâu
    • Nó coi cả token quá dễ đoán lẫn token quá bất ngờ đều kém “typical” hơn
    • Nó sắp xếp token theo surprisal deviation tăng dần và dùng typical-p để quyết định lượng xác suất tích lũy cần giữ lại
  • Quadratic Sampling không phải lọc mà là biến đổi phi tuyến toàn bộ phân phối logits
    • Lấy token có điểm cao nhất làm chuẩn rồi điều chỉnh chênh lệch giữa nó và các logits khác bằng các hạng quadratic và cubic
    • smoothing factor kiểm soát độ mạnh điều chỉnh, còn smoothing curve kiểm soát dạng biến đổi
    • Nếu s dương thì phân phối sắc nhọn hơn, còn nếu k dương thì có xu hướng làm phẳng phân phối

Các phương pháp nâng cao để kiểm soát tính dễ đoán và độ đa dạng

  • XTC(eXclude Top Choices) được kích hoạt theo xác suất và cố tình loại bỏ các lựa chọn dễ đoán nhất
    • Nó dùng xác suất kích hoạt và ngưỡng loại trừ làm tham số
    • Trong các ứng viên hàng đầu vượt ngưỡng, nó loại một ứng viên có điểm thấp nhất rồi loại các ứng viên xác suất cao còn lại
    • Khác với các bộ lọc thông thường cắt ứng viên xác suất thấp, nó nhắm vào những lựa chọn quá hiển nhiên
  • Mirostat là cơ chế phản hồi động để giữ surprisal mục tiêu
    • Nó dùng ngưỡng mu hiện tại để lọc bớt các token quá bất ngờ
    • Sau khi chọn token, nó tính surprisal thực tế và so sánh với giá trị mục tiêu tau
    • eta là learning rate quyết định điều chỉnh mu nhanh đến đâu
    • Công thức cập nhật là mu_{t+1} = mu_t - η × (surprisal_t - τ)
    • Đây là cơ chế tự điều tiết nhằm giữ perplexity của văn bản sinh ra ở mức ổn định
  • Dynamic Temperature Sampling thay đổi temperature theo entropy của phân phối hiện tại
    • Khi entropy thấp, nó dùng temperature cao hơn để tăng độ đa dạng
    • Khi entropy cao, nó dùng temperature thấp hơn để tập trung đầu ra
    • Người dùng đặt temperature tối thiểu, temperature tối đa và exponent
    • Công thức là temperature = min_temp + (max_temp - min_temp) * (normalized_entropy ^ exponent)

Beam Search và Contrastive Search

  • Beam Search duy trì song song nhiều chuỗi ứng viên và tìm đường đi có xác suất tổng thể cao
    • Nó giữ số chuỗi ứng viên bằng beam width, mở rộng ứng viên ở mỗi bước decoding rồi chỉ giữ lại các ứng viên tốt nhất
    • Thường ở mỗi bước nó sample 2k ứng viên để sau khi loại các chuỗi đã hoàn tất, v.v. vẫn còn đủ ứng viên
    • Điểm số là tổng logprob của tất cả token trong chuỗi
    • Nó luôn cho cùng một đầu ra với cùng một đầu vào, chi phí cao và hiện ít được dùng vì đã có các phương pháp sampling tốt hơn
  • Contrastive Search tối ưu đồng thời xác suất cao phù hợp ngữ cảnh và việc tránh mẫu lặp
    • Trước tiên nó chọn các ứng viên Top-K
    • Sau đó so sánh hidden representation của context hiện có và continuation ứng viên để tính degeneration penalty dựa trên similarity
    • Điểm cuối cùng là score(x) = α * P(x) - (1-α) * sim(x, context)
    • α điều chỉnh cân bằng giữa tính khả dĩ và độ đa dạng
    • Tương tự Beam Search, đây cũng không phải phương pháp được dùng rộng rãi

Cách thứ tự áp dụng sampler làm thay đổi kết quả

  • Trong triển khai LLM thực tế, các kỹ thuật sampling thường được áp dụng theo thứ tự, và một số thư viện cho phép thay đổi thứ tự theo từng request nhưng đa số thì không
  • Pipeline phổ biến thường theo thứ tự sau
    • Mô hình tạo raw logits
    • Lọc hoặc cấm các token không được xét
    • Áp dụng repetition, frequency, presence penalty
    • Áp dụng các kỹ thuật dựa trên mẫu như DRY
    • Áp dụng temperature scaling
    • Áp dụng các kỹ thuật điều chỉnh phân phối như Top-K, Top-P, Min-P
    • Sample token từ phân phối xác suất cuối cùng
  • Tùy cách triển khai, temperature có thể được áp dụng đầu tiên hoặc cuối cùng, nằm ngoài penalty và sampler hậu softmax
    • Với đa số tác vụ, temperature thường được áp dụng trước
    • Với viết sáng tạo, temperature thường được áp dụng sau cùng
  • Mỗi sampler thay đổi địa hình xác suất mà sampler tiếp theo sẽ nhìn thấy
    • Penalty làm hạ đỉnh xác suất của token đã dùng và nâng tương đối các ứng viên khác
    • Temperature thấp làm phân phối sắc hơn, còn temperature cao làm nó phẳng hơn
    • Các bộ lọc như Top-K/P loại bỏ token xác suất thấp và chuẩn hóa lại xác suất còn lại

Tương tác phụ thuộc thứ tự và các tổ hợp

  • Temperature → Filtering tái cấu trúc toàn bộ phân phối trước rồi mới lọc
    • Temperature thấp dồn khối lượng xác suất vào ít token ngay từ trước khi lọc
    • Temperature cao làm xác suất trải rộng hơn rồi mới bị lọc
  • Filtering → Temperature cắt bớt ứng viên trước, rồi temperature chỉ điều chỉnh xác suất tương đối giữa các token còn lại
    • Dù dùng temperature cao, các token đã bị bộ lọc loại ban đầu cũng không quay lại
    • Với Top-K 40 và temperature 1.5, nếu lọc trước thì chỉ 40 token đầu ban đầu được giữ lại
  • Penalties → Temperature hạ xác suất token lặp trước, rồi temperature có thể khuếch đại hoặc làm giảm điều chỉnh đó
    • Ở temperature cao, hiệu ứng penalty có thể gần như bị xóa mờ
    • Ở temperature thấp, penalty có thể bị khuếch đại quá mức
  • Temperature → Penalties để penalty hoạt động trên phân phối đã được temperature tái cấu trúc, có thể tạo hiệu ứng penalty cân bằng và dễ đoán hơn
  • DRY rất nhạy với vị trí
    • Nếu áp sớm trong pipeline, hiệu ứng chống lặp mạnh hơn nhưng các sampler phía sau có thể kéo các token đã bị phạt lên lại
    • Nếu áp muộn thì có thể yếu hơn vì các sampler trước đó đã loại một số ứng viên, nhưng nó trở thành tuyến phòng thủ cuối cùng chống lặp ngay trước khi chọn token
  • Cũng có những tổ hợp bổ trợ cho nhau
    • Top-K + Top-P: Top-K cung cấp giới hạn cứng còn Top-P thích ứng theo mức độ tự tin của mô hình
    • Temperature + Min-P: temperature cao làm phân phối phẳng hơn còn Min-P đặt sàn chất lượng tương đối so với ứng viên tốt nhất
  • Cũng có những tổ hợp xung đột
    • High Temperature + Low Top-K: Top-K thấp giới hạn ứng viên quá mạnh nên phần lớn hiệu ứng của temperature bị ghi đè
    • Dùng đồng thời nhiều kiểu filtering: nếu dùng cùng Top-K, Top-P, Min-P, TFS thì phương pháp chặt nhất sẽ chi phối và các phương pháp còn lại có thể trở nên dư thừa
    • XTC + Top-A: cả hai đều loại các lựa chọn hàng đầu theo cách khác nhau nên có thể thu hẹp không gian sampling quá mức

Cách tokenizer tạo ra không gian sampling

  • Tokenizer quyết định mô hình dự đoán xác suất cho cái gì và sampler xử lý những ứng viên nào
  • Thuật toán subword cân bằng giữa vấn đề chuỗi dài của cấp ký tự và vấn đề từ vựng khổng lồ/unknown của cấp từ
  • BPE(Byte Pair Encoding) bắt đầu từ từ vựng dựa trên ký tự hoặc byte rồi lặp đi lặp lại việc gộp các cặp symbol kề nhau xuất hiện thường xuyên nhất trong corpus huấn luyện
    • Việc gộp được lặp cho đến khi đạt kích thước từ vựng mong muốn
    • Ví dụ kích thước từ vựng được nêu là 32000 hoặc 128256 units
    • BPE chuẩn có thể cần pre-tokenization dựa trên khoảng trắng và dấu câu, và cách xử lý whitespace có thể không nhất quán giữa các triển khai
  • SentencePiece xử lý trực tiếp chuỗi ký tự Unicode mà không tách sẵn văn bản
    • Nó có thể mã hóa khoảng trắng như một phần của token
    • Vì hoạt động trên Unicode thô nên nó có thể mã hóa whitespace bằng U+2581 một cách tường minh để tokenization và de-tokenization có tính thuận nghịch và không mất mát
    • Nội bộ nó có thể triển khai theo BPE hoặc unigram language model
    • Nhờ tính độc lập ngôn ngữ và khả năng thuận nghịch mà nó rất phổ biến trong LLM hiện đại

Ảnh hưởng của kích thước từ vựng, ranh giới token và từ hiếm

  • Tokenizer có kích thước từ vựng cố định; từ vựng lớn chứa được nhiều từ hoàn chỉnh hơn còn từ vựng nhỏ phụ thuộc nhiều hơn vào subword
  • Nếu "sampling" hay "probability" là một token đơn thì mô hình dự đoán khả năng của toàn bộ khái niệm đó trong một lần
    • Với các cụm phổ biến, đầu ra có thể trực tiếp và dễ đoán hơn
    • Với từ hiếm có thể phát sinh vấn đề <UNK> hoặc các tổ hợp subword gượng gạo
  • Nếu "sampling" bị tách thành sampl + ing thì mô hình dự đoán ở mức chi tiết hơn
    • Nếu các sampler như temperature cho phép, nó có thể chuyển từ sampling sang sampler
    • Có thể cấu thành từ hiếm từ các mảnh nhỏ
    • Nếu bị mắc vào common sub-word prefix thì đầu ra có thể kém nhất quán hoặc bị kẹt
    • Các penalty như DRY phải theo dõi các chuỗi ngắn hơn và ít rõ nghĩa hơn
  • Cùng một cụm từ có thể bị tách khác nhau tùy tokenizer
    • "State-of-the-art" có thể thành State + - + of + - + the + - + art, hoặc theo kiểu SentencePiece thành State + _of + _the + _art
    • Nếu xuất hiện đủ thường xuyên, toàn bộ cụm cũng có thể trở thành một token đơn
  • Ranh giới token ảnh hưởng trực tiếp đến các sampler dựa trên n-gram như DRY
    • Nếu "once upon a time" là 4 token thì DRY dễ phát hiện 4-gram
    • Nếu nó là một token đơn thì khó áp penalty theo cùng cách, trừ khi rollback đầu ra
  • Từ hiếm hoặc từ mới có thể bị phân rã thành các mảnh đã biết trong BPE và SentencePiece
    • Nếu tạo <UNK> thì sampler mất đi một lựa chọn có ý nghĩa để cân nhắc
    • Cách subword có thể kết hợp các mảnh một cách sáng tạo, nhưng để tạo một từ hiếm cần nhiều bước sampling nên khả năng đi chệch giữa chừng cao hơn so với một known token đơn

1 bình luận

 
GN⁺ 2025-05-06
Ý kiến trên Hacker News
  • Liên quan đến chuyện này, bài báo min_p của chúng tôi xếp hạng 18 trong số 12.000 bài nộp cho ICLR và được chọn thuyết trình oral
    https://iclr.cc/virtual/2025/oral/31888
    Poster cũng khá được quan tâm: https://iclr.cc/media/PosterPDFs/ICLR%202025/30358.png?t=174...
    Có thể xem phần thuyết trình oral ở đây. Có một đoạn “đá xoáy” Yoshua Bengio về chủ đề này, và ông ấy trở thành người đặt câu hỏi đầu tiên. Diễn giả thứ hai bắt đầu khoảng 19:30, kèm cả slide thuyết trình, khá buồn cười: https://iclr.cc/virtual/2025/session/31936
    Bài báo: https://arxiv.org/abs/2407.01082
    Với tư cách một trong các tác giả của min_p, tôi có thể xác nhận rằng sampler đa dụng hiện nay thì Top N sigma áp đảo là tốt nhất. Ngoài ra, temperature có thể và nên được đặt cao hơn hiện tại rất nhiều. Nếu dùng các kỹ thuật như min_p hay top N sigma thì temperature 100 cũng hoàn toàn ổn
    Một điều nữa: tổ hợp top_k = 2 và temperature cực cao, dù các tác giả không khuyến nghị ở cuối bài báo, tự thân nó cũng rất thú vị. Khoảng mỗi 10 từ lại có một lỗi chính tả, nhưng đồng thời dường như tạo ra mức sáng tạo khá thú vị

    • Tôi tò mò liệu có sampler nào về cơ bản là không tham lam không. Tức là kiểu thực sự thực hiện tìm kiếm cây
      Tôi biết số nhánh lớn đến phi lý và chi phí mở rộng node cũng đắt, nhưng việc thực tế lại không có tìm kiếm nào luôn khiến tôi thấy kỳ lạ
  • Một điều còn thiếu ở đây là sampler không có quyền truy cập vào trạng thái nội bộ của mô hình. Sampler chỉ áp dụng toán học cơ bản lên phân phối đầu ra, và dù phân phối đó về mặt kỹ thuật có chứa chút ngữ nghĩa, bạn sẽ không giải mã được nếu không thông minh ngang mô hình
    Các sampler như repetition penalty hay DRY được giải thích ở đây cũng vậy. Mô hình có thể tự lặp lại theo vô số cách khác nhau, và cách duy nhất để chặn hết là huấn luyện tốt hơn, chứ không phải tìm n-gram hay các cách xử lý ngôn ngữ tự nhiên cổ điển. Nó giống như cố dùng ngón tay bịt mọi cái lỗ — bạn có bao nhiêu ngón tay chứ?
    Việc hack quy trình tự hồi quy có thể đem lại cải thiện hay mẹo hay với những quả treo thấp như Min-P, nhưng nếu mục tiêu là biến một mô hình tệ thành mô hình tốt thì hướng đó là sai

    • Không, mục tiêu là biến một mô hình không sáng tạo thành một mô hình sáng tạo. Vì quan niệm rằng sampling không quan trọng, hoặc rằng nó đi ngược “bitter lesson”, nên trong bài thuyết trình oral tại ICLR, chúng tôi đã phải chỉ ra thẳng rằng cả lĩnh vực này có một điểm mù khổng lồ đối với kiểu nghiên cứu này
      Top n sigma đã có từ giữa năm 2024, min_p thì từ năm 2023, nhưng bên ngoài nguồn mở, tức ngoài HF/vllm, chúng tôi vẫn đang chờ các đổi mới này được tích hợp. Lý do các nhà cung cấp API cố tình chậm chạp là vì họ không muốn gánh rủi ro mô hình trở nên quá sáng tạo, và temperature cao cũng rất có khả năng phá watermarking
      Một điều nữa: khiến mô hình biết thiết lập sampling của chính nó là việc rất dễ. Chỉ cần đưa lại các thiết lập đó vào mô hình ở mỗi token hoặc mỗi lần sinh. Ví dụ có thể làm bằng structured generation. Mô hình có thể kiểm soát thiết lập sampling của chính nó, và chỉ cần thêm một chút lập trình là có thể “truy cập trạng thái nội bộ”. Giờ thì đoạn code đó mô hình cũng có thể viết thay
    • Trọng tâm chính trong hướng dẫn này có vẻ là hiệu quả và tránh bùng nổ độ phức tạp
  • Gần đây tôi cũng viết thử một hướng dẫn sampling cho Ollama/llama.cpp, rất hoan nghênh phản hồi hoặc đề xuất chỉnh sửa: https://smcleod.net/2025/04/comprehensive-guide-to-llm-sampl...

  • Tôi thích việc toàn bộ nội dung được tổ chức tốt và giải thích dễ hiểu, mở ra những chỗ có thể thử nghiệm hiệu quả
    Ví dụ tại sao không dùng cả từ làm token? Ta có thể tạo ra một “robot” với “phương ngữ robot” hạn chế. Nó sẽ không có khả năng xử lý từ mới hay từ hiếm, nhưng có thể chỉnh dữ liệu huấn luyện và dữ liệu đầu vào để dịch các từ đó sang vốn từ hiện có. Khi đó sẽ có một ánh xạ nhỏ hơn nhiều, đúng nghĩa là rất giống robot, và người dùng cũng sẽ có kỳ vọng như với C-3PO về việc robot này sẽ trả lời tốt những gì

    • Tokenizer chỉ dùng từ là cách người ta từng làm thời RNN/LSTM. Về mặt chức năng, nó không tốt hơn các cách token hóa như BPE hay WordPiece/SentencePiece, và còn khiến việc sử dụng các gợi ý ngữ nghĩa có ý nghĩa như dấu câu trở nên khó hơn, nên chất lượng cũng tệ hơn
  • Nếu đang cố khiến LLM xuất ra ý tưởng chứ không chỉ “token tiếp theo”, thì quá trình chọn trên vector logit có vẻ sẽ phá vỡ ý tưởng ban đầu đó. Nếu ý tưởng đã hoàn chỉnh thì lẽ ra không cần dùng sampling trên logit
    Trong khung này, sampling không nên diễn ra ở mức gần đầu ra, tức “từ tiếp theo cần nói là gì”

    • LLM được huấn luyện để tối đa hóa xác suất đoán đúng token tiếp theo, chứ không phải “ý tưởng”. Không thể định nghĩa ý tưởng thành mục tiêu loss để huấn luyện
  • Vài tuần trước tôi đã làm một bài viết tương tác về chủ đề liên quan là constrained sampling. Dù bài này thì kỹ lưỡng hơn nhiều
    http://michaelgiba.com/grammar-based/index.html

  • Liệu mô hình LLM có thể ngầm thực hiện token hóa không? Ý là thay vì tạo tokenizer riêng, cho phép chuỗi bất kỳ rồi để mạng nơ-ron chuyển nó thành token, và huấn luyện trọng số của mạng đó cùng với phần còn lại của LLM

    • Thực ra đã làm như vậy rồi. Mạng nơ-ron không thể xử lý trực tiếp token, mà chỉ có thể nhận vector số thực và đầu vào khả vi[0]. Vì vậy không thể đưa nguyên token 123, 456 vào, mà phải chuyển mỗi token thành vector mã hóa one-hot. Đó là vector trong đó chỉ vị trí mà token ID trỏ tới là 1, còn lại đều là 0
      Các vector one-hot này đi qua một tầng tuyến tính và được nén xuống kích thước trạng thái ẩn của mô hình. Ví dụ, từ vựng token có thể có 10.000–100.000 mục, nhưng kích thước trạng thái ẩn có thể chỉ khoảng 500–2.000. Toàn bộ phần còn lại của mô hình hoạt động trong không gian trạng thái ẩn[1], nơi chứa nhiều khái niệm bậc cao
      Nếu loại bỏ token hóa, encoder sẽ phải làm nhiều việc hơn để đạt tới không gian trạng thái ẩn quen thuộc với chúng ta. Có thể nó sẽ tìm được cách mã hóa hiệu quả hơn từ các byte chưa được ghép cặp sang không gian ẩn, nhưng xét việc token hóa của hầu hết mô hình đã dựa trên các thuộc tính thống kê của tập huấn luyện, khả năng này có vẻ thấp. Nếu không tự động ghép “anti” hay “ism” thành một token trước khi đưa cho mô hình, thì các attention head ở tầng thấp của mô hình sẽ phải làm cùng việc đó
      Trước đây người ta từng huấn luyện mô hình trên chuỗi ký tự rồi chuyển sang token hóa vì lý do hiệu quả, nên sự đánh đổi này có lẽ không đáng
      [0] Không thể chỉ đưa danh sách token ID vào. Token 123.25 không có ý nghĩa toán học, và việc tăng hay giảm token ID cũng không có ý nghĩa
      [1] Hiệu năng tốt hơn nhưng khả năng diễn giải khó hơn. Đặc biệt, các vector cơ sở của không gian ẩn không tương ứng trực tiếp với từ hay khái niệm; mọi khái niệm tồn tại như một kiểu vòng N chiều
  • Gọi việc cập nhật kỹ thuật để dùng các công nghệ mới được phát minh chỉ vài năm trước là hiện đại gần như là vấn đề về năng lực đọc hiểu. Nếu là hiện đại thì đối lập với cái gì, lấy mẫu LLM cổ điển à?

    • Nếu muốn phê bình như vậy thì trước hết nên tra từ điển
      modern, adj. designed and made using the most recent ideas and methods
      https://dictionary.cambridge.org/us/dictionary/english/moder...
      Nội dung bài này giải thích đúng theo định nghĩa đó. Trong khoảng 7 năm qua lĩnh vực này đã có rất nhiều tiến bộ; chẳng hạn GPT 1, 2, 3 theo tiêu chuẩn hiện nay rõ ràng đã rất cũ và không phải là hiện đại theo nghĩa của định nghĩa trên
    • Khá nhiều thuật toán trong số này được phát minh khoảng năm 2019, ví dụ TFS, hoặc thậm chí cũ hơn như temperature
    • LLM đã có từ lâu hơn nhiều. Giải Nobel liên quan cũng cho thấy những đột phá từ hàng chục năm trước đã được tạo ra như thế nào
      ChatGPT chỉ là bước đột phá đại chúng. Trước đó, bàn phím smartphone đã dùng LLM từ 10 năm trước rồi
  • Tài liệu thực sự hữu ích. Giải thích rất rõ ràng và phạm vi bao quát cũng rộng
    Có ai biết ai viết không? Không thấy ghi tác giả và nó được đăng trên một pastebin Markdown miễn phí
    Phần hình phạt lặp DRY khá thú vị. Tôi thường muốn LLM cố ý sao chép chính xác đầu vào để xuất ra. Ví dụ khi tóm tắt một cuộc hội thoại dài, tôi hay yêu cầu các trích dẫn chính xác thể hiện rõ nhất luận điểm, vì sau đó dễ tìm trong bản gốc để kiểm chứng
    Hình phạt DRY có vẻ sẽ đi ngược lại mục tiêu đó

    • Tôi không biết là không có ghi tác giả. Bài này do @AlpinDale viết