2 điểm bởi GN⁺ 2024-05-09 | 1 bình luận | Chia sẻ qua WhatsApp
  • Khi tạo câu trả lời dài, giải mã tự hồi quy (AR) sinh từng token một là nút thắt độ trễ chính; CLLM là cách tiếp cận nhằm giảm nút thắt này bằng giải mã song song theo đơn vị n token
  • Consistency Large Language Models (CLLMs) tinh chỉnh LLM đã tiền huấn luyện để học cách ánh xạ nhanh một trạng thái n token bất kỳ tới cùng điểm cố định như kết quả greedy AR
  • Về lý thuyết, Jacobi decoding hội tụ về cùng kết quả với sinh greedy AR, nhưng trên các LLM hiện có, mức tăng tốc chỉ giới hạn khoảng 1,05 lần nên tính thực tiễn còn thấp
  • Trong các thí nghiệm trên Spider, Human-Eval, GSM8k và MT-bench, CLLM cho thấy tốc độ sinh tăng 2,4 lần đến 3,4 lần, được đánh giá tương đương hoặc tốt hơn các kỹ thuật suy luận nhanh như Medusa2 và Eagle
  • Khi suy luận, không cần thành phần mô hình phụ trợ hay thay đổi kiến trúc của mô hình đích, nên có thể đồng thời hướng tới cải thiện tốc độ và hiệu quả bộ nhớ

Nút thắt giải mã mà CLLM nhắm tới

  • LLM được dùng trong nhiều lĩnh vực như lập trình, pháp lý, tư vấn sức khỏe, nhưng ở giai đoạn suy luận thường tạo token từng cái một bằng giải mã tự hồi quy (AR)
  • Câu trả lời càng dài thì độ trễ càng tăng do cách sinh theo từng token, làm thời gian chờ mà người dùng cảm nhận được lớn hơn
  • Các phương pháp suy luận nhanh hiện có thường đòi hỏi sửa đổi kiến trúc, thành phần phụ trợ hoặc mô hình nháp để tạo nhiều token cùng lúc

Cách Jacobi decoding hoạt động và các giới hạn

  • Jacobi decoding là phương pháp bắt nguồn từ lặp điểm cố định Jacobi và Gauss-Seidel, và đã được chứng minh là tương đương với sinh AR trong giải mã greedy
  • Nó chuyển quá trình sinh tuần tự thành một hệ gồm n biến và n phương trình phi tuyến, rồi cho phép tính song song bằng lặp Jacobi
  • Luồng xử lý cụ thể như sau
    • Từ prompt đầu vào, đoán ngẫu nhiên n token tiếp theo
    • Đưa prompt và chuỗi n token vào LLM để cập nhật lặp đi lặp lại
    • Khi chuỗi không còn thay đổi nữa thì đạt đến điểm cố định (fixed point)
    • Chuỗi n token cuối cùng sẽ hội tụ về đầu ra mà giải mã AR theo chiến lược greedy đã tạo ra
  • Đường đi từ dự đoán ngẫu nhiên ban đầu đến kết quả sinh AR cuối cùng được gọi là quỹ đạo Jacobi (Jacobi trajectory)
  • Jacobi decoding cơ bản trên LLM thực tế chỉ cho mức tăng tốc hạn chế, trung bình khoảng 1,05 lần so với giải mã AR
    • LLM được huấn luyện theo kiểu AR sẽ khó dự đoán đúng token phía sau nếu token phía trước bị sai
    • Phần lớn các vòng lặp Jacobi chỉ sửa được một token trong chuỗi n token, khiến quỹ đạo kéo dài
  • Lookahead decoding và speculative decoding cố giảm sự kém hiệu quả của Jacobi decoding và AR decoding truyền thống, nhưng phát sinh thêm chi phí bộ nhớ khi suy luận

Mục tiêu huấn luyện của Consistency LLM

  • CLLM thích nghi LLM đã tiền huấn luyện để nó di chuyển nhất quán từ một điểm bất kỳ trên quỹ đạo Jacobi tới điểm cố định
  • Mục tiêu này tương tự mục tiêu của consistency models, một kỹ thuật tăng tốc cho mô hình khuếch tán
  • Sử dụng các quỹ đạo Jacobi thu thập từ mô hình đích, mô hình được huấn luyện bằng một hàm mất mát khuyến khích hội tụ trong một bước trong quá trình lặp Jacobi
  • Việc biến mỗi mô hình đích thành CLLM gồm hai phần
    • Chuẩn bị quỹ đạo Jacobi
      • Với mỗi prompt, chạy Jacobi decoding tuần tự trên mọi đoạn cắt theo đơn vị n token
      • Toàn bộ chuỗi phản hồi trở thành dạng ghép nối của các điểm cố định liên tiếp
      • Mỗi chuỗi được sinh ra trong quỹ đạo được tính là một mẫu dữ liệu huấn luyện
      • Cắt theo n token được dùng để tránh suy giảm tốc độ do phải đánh giá toàn bộ đầu vào dài trong các phản hồi dài
    • Tối ưu hóa chung consistency loss và AR loss
      • consistency loss khuyến khích dự đoán nhiều token cùng lúc
      • AR loss giúp CLLM không lệch khỏi phân phối của LLM đích, nhờ đó giữ chất lượng sinh

Cấu trúc hàm mất mát

  • Gọi LLM đích là p, và CLLM là ; được khởi tạo bằng tham số của p
  • Global consistency (GC) loss khuyến khích CLLM xuất ra điểm cố định y* khi nhận đầu vào là một trạng thái bất kỳ y trên quỹ đạo Jacobi
  • Local consistency (LC) loss buộc hai trạng thái liền kề y(j)y(j+1) trên quỹ đạo Jacobi cho cùng một đầu ra
  • Khoảng cách giữa các phân phối D(·||·) tuân theo các lựa chọn được thảo luận trong phương pháp GKD; trong thí nghiệm này chủ yếu dùng forward KL
  • AR loss áp dụng hàm mất mát tự hồi quy truyền thống dựa trên kết quả sinh l của LLM đích p để ngăn mô hình lệch khỏi phân phối của LLM đích
  • Tổng loss huấn luyện được cấu thành từ consistency loss cộng với AR loss có gắn trọng số w

Thiết lập và kết quả thí nghiệm

  • Thí nghiệm bao gồm ba tác vụ miền chuyên biệt và một benchmark hội thoại miền mở
    • Spider: text-to-SQL
    • Human-Eval: hoàn thành mã Python
    • GSM8k: toán học
    • MT-bench: hội thoại miền mở
  • Tùy theo tác vụ, các mô hình đích được dùng gồm coder LLM đã fine-tune, Deepseek-coder-7B-instruct, LLaMA-2-7B, ABEL-7B-001
  • Cả huấn luyện và đánh giá đều được thực hiện trên máy chủ NVIDIA A100 40GB
  • Trong các miền chuyên biệt, khi so với mô hình đích ban đầu, Medusa2, speculative decoding và các baseline khác, CLLM cho mức tăng tốc lớn nhất
  • Trên MT-bench, CLLM được huấn luyện từ LLaMA2-7B bằng bộ dữ liệu ShareGPT, khi kết hợp với lookahead decoding, đạt mức tăng tốc tương đương Medusa2
    • Điểm MT-bench cũng ở mức có thể so sánh
    • CLLM không cần sửa đổi kiến trúc gốc của mô hình đích
    • Không có thành phần phụ trợ nên hiệu quả bộ nhớ cao

Chi phí huấn luyện

  • Chi phí fine-tune CLLM được mô tả là ở mức trung bình
  • LLaMA-7B chỉ cần chạy qua khoảng 1 triệu token trên bộ dữ liệu Spider để đạt mức tăng tốc 3,4 lần
  • Với bộ dữ liệu lớn như CodeSearchNet-Python, chỉ dùng 10% dữ liệu để tạo quỹ đạo Jacobi cũng đạt khoảng 2,5 lần tăng tốc
  • Tổng số token được ước tính bằng công thức sau
    • số quỹ đạo trung bình trên mỗi prompt × độ dài quỹ đạo trung bình × số lượng prompt
  • Chi phí huấn luyện ước tính theo từng bộ dữ liệu như sau
    • Spider: 2 triệu token, < 0,01% chi phí tiền huấn luyện
    • CodeSearchNet-Python: 100 triệu token, ~0,1% chi phí tiền huấn luyện
    • GSM8K: 10 triệu token, ~0,01% chi phí tiền huấn luyện
    • ShareGPT: 200 triệu token, ~0,2% chi phí tiền huấn luyện

Fast forwarding và stationary tokens

  • LLM đích thường chỉ sinh đúng một token trong một vòng lặp Jacobi
  • Với CLLM, xuất hiện hiện tượng fast forwarding khi một vòng lặp Jacobi có thể dự đoán đúng nhiều token liên tiếp
  • Ở LLM đích, ngay cả các token đã được sinh đúng trước đó cũng có thể bị đổi thành token sai trong các vòng lặp sau
  • CLLM cho thấy khả năng dự đoán trước token đúng ngay cả khi token phía trước còn lỗi, và vẫn giữ các token đó ở các bước sau
    • Những token như vậy được gọi là stationary tokens
  • Fast forwarding và stationary tokens giúp Jacobi decoding của CLLM hội tụ nhanh hơn, từ đó góp phần tăng tốc độ sinh

Học các mẫu ngôn ngữ

  • Qua huấn luyện, CLLM được quan sát là học được khái niệm ngôn ngữ gọi là collocations
  • Collocation là chuỗi từ hoặc thuật ngữ xuất hiện cùng nhau thường xuyên hơn mức ngẫu nhiên
  • Có thể thấy ví dụ về collocation trong cả ngôn ngữ tự nhiên lẫn mã nguồn
    • Ngôn ngữ tự nhiên: talk to, remind … of …
    • Cấu trúc động từ + danh từ: make a decision, catch a cold
    • Cấu trúc ngữ pháp theo miền: SELECT … FROM …, if … else
  • Mục tiêu sinh theo consistency khiến CLLM suy ra các cấu trúc này ở bất kỳ điểm nào trên quỹ đạo Jacobi, từ đó khuyến khích dự đoán nhiều từ cùng lúc để giảm số bước lặp

Tài liệu và mã nguồn

1 bình luận

 
GN⁺ 2024-05-09
Các ý kiến trên Hacker News
  • Điều này giống với trải nghiệm của tôi khi tham gia một lớp “vẽ tự do” (không có bài giảng)
    Từ nhỏ tôi đã được khen là vẽ đẹp, nhưng thực ra tôi nhớ mình chỉ lặp lại những bức vẽ chi tiết tương tự từng vẽ trước đó, hoặc bỏ rất nhiều thời gian để vẽ. Tôi nghĩ chỉ cần có thời gian và kiên nhẫn thì ai cũng có thể vẽ một cảnh trông khá thuyết phục
    Lớp học không có quy tắc hay bài giảng; mỗi người mang theo vật liệu mình muốn. Có người mang mực, có người mang bút chì, tôi mang than vẽ, và thứ duy nhất được quy định là thời gian giữa các tư thế của mẫu. Vài tư thế đầu rất ngắn, khoảng 1 phút, rồi dần dài hơn đến các tư thế 5 phút; bất cứ lúc nào cũng có thể xé tranh và vẽ lại cùng một tư thế
    Phần khởi động ngắn thực ra buộc bạn phải nắm đúng tỉ lệ và đường nét ngay từ lần thử đầu tiên. Trái với quan niệm phổ biến rằng vội vàng sẽ làm hỏng việc, khi học hoặc mài giũa kỹ năng, sự gấp gáp dường như hoạt động như một yếu tố gây căng thẳng thúc đẩy sự chú ý và học tập
    Trước lớp học, có lẽ tôi cũng có thể vẽ được tranh có chất lượng tương tự, nhưng tôi chắc chắn là sẽ mất thời gian gấp 5–10 lần. Cách bị buộc không được vòng vo và cảm nhận cái giá của những sai lầm vội vã đã có hiệu quả
    Tuy vậy, tôi thấy hơi tiếc khi gọi kỹ thuật này là Consistency. Cái tên đó hợp với cải thiện hiệu năng hơn, nhưng có vẻ kém phù hợp với cải thiện tốc độ suy luận; tôi hiểu ý là “tính nhất quán với kết quả rốt cuộc sẽ xuất hiện nếu tạo từng token một”. Tôi thà gọi nó là Proficiency LLM, với kỳ vọng cùng một đầu ra nhưng không có sự kìm hãm kiểu mò mẫm để đi đến cùng kết luận

    • Với tư cách là tác giả CLLM, cảm ơn bạn đã chia sẻ trải nghiệm và góc nhìn. Quá trình mài giũa kỹ năng vẽ có vẻ giống với quá trình huấn luyện CLLM, chỉ khác là hiện tại yếu tố gây căng thẳng trong huấn luyện CLLM không phải dạng ngày càng khắc nghiệt hơn
      Trong vẽ, ta có thể đặt thời gian cho phép cho mỗi lần thử và dần rút ngắn nó. Với CLLM, có vẻ có thể làm quá trình huấn luyện khó hơn bằng cách ánh xạ các trạng thái ngày càng xa hơn trên quỹ đạo Jacobi về trạng thái cuối cùng
      Thuật ngữ “consistency” được lấy từ sự tương đồng giữa consistency model trong sinh ảnh khuếch tán và consistency LLM, vì quá trình huấn luyện của chúng khá giống nhau
    • Tôi đã có một trải nghiệm thú vị trong một lớp thực hành động vật không xương sống vào một mùa hè
      Sinh viên bước vào phòng thí nghiệm, nhận mẫu vật, và chỉ được chỉ dẫn: “Vẽ cái này trong 30 phút. Bắt đầu”
      Không có những câu như “vẽ là phải thế này”, “hãy làm cái này, đừng làm cái kia”; về cơ bản nó gần với “bạn lo lắng hay nghĩ mình không vẽ được cũng mặc kệ. Đừng bào chữa, cứ vẽ đi. Ngay bây giờ”
      Tất cả chúng tôi đều vẽ, và suốt mùa hè, khi ngày càng có thêm nhiều loài vật được đưa vào và cùng bài tập đó lặp lại, tất cả đều tiến bộ cực kỳ nhiều
      Điều lớp học đó dạy là bất kỳ ai, thật sự là bất kỳ ai, cũng có thể vẽ. Thái độ chung của cả nhóm chuyển từ “không biết chuyện này có làm được không” sang “dĩ nhiên là làm được. Dễ, bình thường, chẳng có gì to tát”
      Đây là một cách tiếp cận rất đáng khuyến nghị, và là một trong những lớp học mang lại cảm giác giải phóng và đáng kinh ngạc nhất mà tôi từng học ở đại học
    • Các hệ thống thường trở nên hiệu quả hơn khi chịu căng thẳng. Đồng thời chúng cũng có thể bị đẩy vào nghiệm tối ưu cục bộ, nên mọi thứ đều có mặt lợi và mặt hại
  • Các tác giả nói Jacobi decoding tương đương với greedy autoregressive decoding, nhưng trên thực tế chẳng phải ta thường muốn đặt sampling temperature lớn hơn 0 để tránh lặp lại và những câu trả lời quá chung chung sao?
    Tôi hoàn toàn không biết chiến lược giải mã này, nên có thể tôi đang bỏ lỡ một cách đơn giản để phản ánh điều đó

    • Câu hỏi hay. Chúng tôi đang tích cực làm việc để hỗ trợ cả các chiến lược sampling khác ngoài greedy sampling
      Trong bối cảnh huấn luyện CLLM, thay vì ánh xạ điểm cố định tĩnh thu được bằng Jacobi decoding làm mục tiêu học, chúng tôi gọi nó là điểm cố định động. Bạn có thể theo dõi kho GitHub để biết tiến triển mới
    • Tôi đồng ý. Dễ kiểm tra token nào là lựa chọn có giá trị lớn nhất, nhưng có vẻ khó kiểm tra token nào đã xuất hiện với xác suất mong muốn
      Một bước tinh chỉnh để học sao cho quỹ đạo tiến gần đến phần hoàn thành n-token có các thống kê mong muốn có lẽ vẫn khả thi, nhưng tôi không rõ có thể thay thế bước kiểm tra điểm cố định như thế nào. Có thể là kiểu “kiểm tra xem likelihood có vượt quá một ngưỡng cố định nào đó hay không”
  • Đây có vẻ là một tối ưu hóa khá rủi ro để thực hiện trước khi thật sự hiểu điều gì đang diễn ra bên trong LLM. Chẳng hạn, những người tin vào cách diễn giải hình học hẳn sẽ có điều muốn nói, và nếu dùng token “điền vào” thì có vẻ cũng có thể gây hại
    Ngoài ra, giả định rằng “ta tạo một câu hoàn chỉnh trong đầu rồi nói từng từ một” chỉ là một giả định chứ không phải sự thật phổ quát, và dường như đơn giản hóa quá mức hoạt động diễn ra trong tâm trí chúng ta. Chúng ta có thật sự có một kế hoạch hoàn chỉnh trước khi nói hay gõ không? Với tư cách là một Phật tử, tôi thấy điều đó gần giống ảo tưởng. Xa hơn nữa, những suy nghĩ đồng thời thì sao? Chúng ta có suy nghĩ tuyến tính theo đơn vị câu không?
    Dù sao thì phần toán học khá tuyệt

    • Tối ưu hóa này không ảnh hưởng đến kết quả của LLM, và được đảm bảo tạo ra kết quả tương đương với giải mã trực tiếp
      Đừng đối xử với LLM như một thứ ma thuật giống tâm trí chúng ta. Nó chỉ là một chương trình khác tạo ra các câu có vẻ hợp lý mà thôi
    • Giả định đó có thể hữu ích trong ngữ cảnh này, nhưng khá rõ là nó không đúng
      Nếu yêu cầu người ta giải thích một sự kiện phức tạp trong quá khứ theo nhiều nhánh, họ sẽ nhanh chóng chen các mảnh, phần bổ sung và nhánh phụ vào giữa câu để bao quát toàn bộ phạm vi sự kiện. Tôi không nghĩ mình từng thấy giả thuyết về độ hạt theo đơn vị câu trong một bối cảnh khoa học nghiêm túc
    • Không thể nói điều này đúng với tất cả mọi người, nhưng ít nhất tôi không tạo sẵn một câu hoàn chỉnh trong đầu trước khi nói
      Đôi khi giữa câu tôi rơi vào ngõ cụt về mặt ngữ pháp và phải kết thúc ý nghĩ bằng một từ hoặc cụm từ vụng về, hoặc đơn giản là dừng lại rồi nói lại từ đầu
    • Mặc dù từ có thể được tách thành các đơn vị nhỏ hơn mang nghĩa trong nhiều ngôn ngữ, dường như chúng ta không tạo từ một cách tuần tự từ các thành phần bên dưới đó
      Cũng không thấy có lý do rõ ràng nào để hiện tượng này đột ngột mất hiệu lực ở cấp độ câu
    • Tôi tò mò cách diễn giải hình học là gì
  • Thật đáng ngạc nhiên là nó không được chú ý nhiều hơn. Đây có vẻ là lợi ích rõ ràng về hiệu năng suy luận
    Chi phí tinh chỉnh này là hợp lý, chỉ khoảng 0,01% chi phí tiền huấn luyện ban đầu. Lợi ích về hiệu năng cũng có vẻ khá nhất quán

    • Có vẻ như đây là một kết quả rất lớn đối với hiệu năng LLM
      Tôi không biết rõ bài báo nào khác từng đề xuất có thể tăng hiệu năng suy luận LLM đến mức này. Trước đây đã có chưa?
      Nhất là trong điều kiện vẫn duy trì chất lượng đầu ra, cải thiện không chỉ độ trễ truy vấn mà cả thông lượng tổng thể, không đòi hỏi thêm tính toán, triển khai tương đối thực dụng và không thêm nhiều độ phức tạp
      Vì nó được xây trên các công trình về giải mã song song/Jacobi, nên bản thân insight cũng có thể xem là mang tính tiệm tiến. Các kết quả trước đó cũng cần thiết và quan trọng, nhưng đây có thể là kết quả thực sự rút ra giá trị ngoài đời thực từ tiềm năng của giải mã song song
    • Lợi ích suy luận tương tự hoặc lớn hơn đã có thể đạt được bằng speculative decoding, vốn đã được dùng rộng rãi
      Vì vậy công trình này thật sự thú vị, và theo tôi biết trước đây cũng từng có những thử nghiệm kém thành công hơn, nhưng tác động thực tế sẽ lớn đến đâu thì vẫn chưa rõ
    • Cảm ơn vì đã quan tâm đến công trình của chúng tôi. Chỉ cần huấn luyện trên một phần của tập dữ liệu với consistency loss + AR loss cũng đã đem lại mức tăng tốc đáng kể, còn chi phí chỉ khoảng 0,01% tiền huấn luyện
      Huấn luyện với nhiều dữ liệu hơn thì tốc độ sẽ còn tăng thêm, vì mô hình có thể học từ các cụm từ và cấu trúc xuất hiện thường xuyên hơn
      Chi tiết thì có thể xem trong bài báo, và cũng có thể thấy mức tăng tốc bị bão hòa khi kích thước dữ liệu huấn luyện tăng lên
  • Lúc đầu tôi tưởng đây là kiểu bài như Medusa, dùng thêm unembed head để đoán các token tiếp theo, nhưng hóa ra hoàn toàn không phải
    Thật sự rất ấn tượng. Không dùng thêm tham số, chỉ thêm một loss huấn luyện phụ trợ

    • Điểm chung duy nhất giữa Medusa và CLLM là cả hai đều huấn luyện/thích nghi LLM để suy luận nhanh hơn
      Kỹ thuật huấn luyện và kỹ thuật giải mã hoàn toàn khác nhau, và như bạn đã chỉ ra, CLLM không cần thêm tham số hay thiết lập attention mask để xác minh dựa trên cây
  • Tôi nghĩ rồi chúng ta sẽ sớm nhận ra rằng không nhất thiết phải huấn luyện mô hình
    Thứ cần thiết là lập chỉ mục và lấy mẫu tốt
    Về bản chất, ở một mức độ nào đó, mọi LLM đều giống như một cơ sở dữ liệu của dữ liệu trong dataset, với một giao diện ngôn ngữ tự nhiên tuyệt vời đặt lên trên
    Cả hai chỉ là những cách khác nhau để khám phá dữ liệu đã lưu trữ

    • LLM có thể dễ dàng tạo ra dữ liệu không có trong tập huấn luyện
      LLM không khám phá dữ liệu đã lưu trữ. LLM không phải là cơ sở dữ liệu của dữ liệu huấn luyện
    • Nhưng lập chỉ mục cũng là huấn luyện. Chỉ là không dùng gradient descent đầu-cuối mà thôi
    • Mô hình nhỏ hơn bản nén của dữ liệu huấn luyện nhiều bậc độ lớn, nên không thể tương đương với cơ sở dữ liệu đó
    • Nếu vậy có thể bạn sẽ thích bài báo Infinigram. Gần đây đã được thảo luận
      https://news.ycombinator.com/item?id=40266791
  • Có nơi nào để một người không rành như tôi có thể “hỏi chuyên gia AI” không?
    Ví dụ tôi muốn hỏi vì sao LLM nhận cùng một prompt mà lại không trả lời theo cùng một cách xác định
    Tôi muốn học điều này, và có lẽ phải làm theo các video kiểu “tạo LLM trong 1 giờ” trên YouTube

    • Trong phần mềm, đúng nghĩa là có một bộ sinh số ngẫu nhiên chọn một trong các ứng viên token tiếp theo có trọng số mà mô hình đưa ra
      Quá trình chọn có thể có nhiều núm điều chỉnh để thao tác phản hồi. Nếu muốn làm cho nó xác định và có quyền truy cập trực tiếp vào phần mềm, tùy phần mềm bạn dùng, đặt top-k = 1 hoặc temperature = 0.0 là nó sẽ trở nên xác định
      Thông thường thiết lập mặc định không mang tính xác định, vì khi làm hoàn toàn xác định thì chất lượng kết quả có xu hướng không tốt lắm
    • Câu trả lời đó có thể tham khảo video của 3blue1brown
      Mô hình LLM xuất ra một vector xác suất cho các token, và người dùng LLM dùng số ngẫu nhiên để chọn token từ danh sách có khả năng cao
    • Vì về bản chất LLM là ma trận xác suất
      Khi nhập prompt, nó tính xác suất từ tiếp theo sẽ xuất hiện, rồi lặp lại quá trình đó để cuối cùng tạo ra câu. Các xác suất đã học dựa trên dữ liệu huấn luyện
      Vì mô hình xác suất nền tảng như vậy nên nó không xác định 100%. Hơn nữa, các mô hình như ChatGPT còn cố ý có tham số temperature để thêm tính ngẫu nhiên vào toàn bộ quá trình
      Nếu muốn đọc thêm, câu trả lời này dựa trên bài báo sau: The Matrix: A Bayesian learning model for LLMs, https://arxiv.org/abs/2402.03175
    • Trong hầu hết hệ thống, có thể kiểm soát điều này bằng tham số thiết lập suy luận gọi là temperature
      Nhưng nếu đặt temperature thấp nhất có thể, chất lượng câu trả lời thường có xu hướng rất thấp. Hệ thống bị kẹt ở một cực trị cục bộ nào đó và cứ lặp lại. Câu trả lời như vậy có thể “xác định”, nhưng không hay
    • Bài này là một điểm khởi đầu tốt, giải thích khá có hệ thống mà vẫn không đánh mất bức tranh lớn
      https://writings.stephenwolfram.com/2023/02/what-is-chatgpt-...
  • Không có bữa trưa miễn phí, nên theo tôi ở đây cũng có một dạng mất mát đường đi nào đó
    Ví dụ một số quỹ đạo Jacobi theo định nghĩa sẽ loại trừ các đường đi có temperature cao hơn. Nhìn từ góc độ truy xuất dữ liệu thì điều đó có thể còn tích cực, nhưng nếu muốn tối đa hóa tính sáng tạo thì có thể là tiêu cực

    • Có thuật toán tốt hơn và thuật toán kém hơn
      Tôi không chắc “không có bữa trưa miễn phí” lúc nào cũng được áp dụng một cách đặc biệt có ý nghĩa. Một số thứ không nằm trên biên Pareto
  • Tôi muốn được giải thích chi tiết hơn về phần “phương pháp speculative decoding tốn thêm chi phí bộ nhớ khi suy luận”
    Trong speculative decoding, một mô hình nhỏ hơn tạo ra các “nhánh” nhanh hơn nhưng có thể không chính xác, rồi sau đó mô hình lớn kiểm chứng các nhánh này. Nhưng speculative decoding chỉ cần lượng bộ nhớ tương ứng với một token đơn lẻ, còn token của các nhánh khác chỉ đơn giản bị masking trong quá trình suy luận. Nếu context size là 1000 và có khoảng 30 nhánh dài 5 token, overhead bộ nhớ là 3%, có thể xem là không đáng kể. Nếu context size nhỏ hơn rất nhiều so với số nhánh, tôi tự hỏi liệu người dùng LLM sinh nội dung với cửa sổ ngữ cảnh chỉ 50 token có thật sự quan tâm đến tốc độ sinh không
    Ngoài ra, kỹ thuật speculative decoding không bị giới hạn ở greedy sampling. Nó phải hoạt động đúng y như mô hình gốc và sampling theo xác suất kỳ vọng. Phần lớn tài liệu về speculative decoding đã báo cáo tốc độ tăng 2,6~3,5 lần. Bài blog này báo cáo tốc độ sinh tăng 2,4~3,4 lần, nên tôi không chắc đây có phải là nâng cấp lớn đến vậy không
    Ở trên đã nhắc đến speculative decoding, và kỹ thuật tác giả so sánh có vẻ là Medusa2 và Eagle, nhưng vấn đề cốt lõi vẫn như cũ. Dù dùng bất kỳ cách nào để dự đoán trước token, vẫn có những điểm cụ thể mà trước khi dự đoán token tiếp theo, bạn tuyệt đối cần token trước đó. Đây không phải là vấn đề phụ thuộc vào mô hình hay kỹ thuật, mà là vấn đề về mặt toán học: điều gì là khả thi. Nếu phân phối xác suất của token thứ năm tiếp theo phụ thuộc mạnh vào bốn token trước đó, làm sao có thể dự đoán 5 token cùng lúc? Dù là speculative decoding, Jacobi decoding hay multi-token parallel decoding thì cũng như nhau
    Nếu phương pháp này chỉ hỗ trợ greedy sampling thì tôi nghi ngờ lợi thế của nó là gì. Nhất là khi xét đến việc các kỹ thuật khác đã đạt được mức tăng tốc như kỳ vọng. So sánh tăng tốc greedy sampling với tăng tốc random sampling chẳng khác nào so táo với cam, và tôi nghi ngờ liệu sau khi chỉnh phương pháp này cho phù hợp với random sampling, mức tăng tốc tương tự có còn giữ được hay không, do vấn đề cốt lõi đã nói ở trên

    • Có thể phần “trước khi dự đoán token tiếp theo, tuyệt đối cần token trước đó” chính là đóng góp cốt lõi của bài báo này
      Thông qua consistency training, có thể họ đã cho thấy LLM vẫn có thể dự đoán n token tiếp theo ngay cả khi có phỏng đoán sai ở token trước đó
      Mặt khác, về mặt toán học thì đúng là p(x_t|x_1,...,x_t-1) phụ thuộc vào toàn bộ từ x_1 đến x_t-1, nhưng trong thực tế, để dự đoán x_t có thể chỉ cần x_1 đến x_t-2, còn attention lên x_t-1 là không đáng kể. Vì vậy vẫn có thể dự đoán x_t bằng x_1 đến x_t-2 và một x_t-1 không chính xác
    • Speculative decoding phải nạp một mô hình nhỏ hơn vào bộ nhớ và chạy suy luận bằng mô hình đó
  • Nội dung thú vị. Đây có lẽ là ý tưởng nhiều người từng nghĩ tới, nhưng bài viết và phần trình bày được tổ chức rất tốt

    • Đúng vậy. Tôi và bạn cùng phòng đã nói về chuyện này một năm trước. Có thể làm điều tương tự với LLM steering