- Tóm lược 7 mẫu cốt lõi theo hai trục: "cải thiện hiệu năng vs. giảm chi phí/rủi ro" và "thân thiện với dữ liệu vs. thân thiện với người dùng"
- Evals: đo lường hiệu năng
- RAG(Retrieval-Augmented Generation): bổ sung tri thức bên ngoài, cập nhật mới nhất
- Fine-tuning: để thực hiện tốt hơn các tác vụ cụ thể
- Caching: giảm độ trễ và chi phí
- Guardrails: đảm bảo chất lượng đầu ra
- Defensive UX: để dự đoán và quản lý lỗi
- Collect user feedback: xây dựng data flywheel
Evals: đo lường hiệu năng
- Evals là một tập hợp các phép đo dùng để đánh giá hiệu năng của mô hình trên một tác vụ
- Bao gồm dữ liệu benchmark và metric
- Có thể đo lường hệ thống hoặc sản phẩm đang hoạt động tốt đến mức nào và phát hiện sự suy giảm
- Có nhiều benchmark trong lĩnh vực language modeling: MMLU, EleutherAI Eval, HELM, AlpacaEval
- Có thể chia metric thành hai nhóm: context-dependent hoặc context-free
- Những metric thường dùng: BLEU, ROUGE, BERTScore, MoverScore
- Xu hướng nổi lên gần đây là dùng một LLM mạnh như một reference-free metric để đánh giá đầu ra do các LLM khác tạo ra
- G-Eval, bài báo Vicuna, QLoRA
RAG(Retrieval-Augmented Generation): bổ sung tri thức bên ngoài, cập nhật mới nhất
- Cải thiện đầu ra bằng cách lấy thông tin từ bên ngoài foundation model và tăng cường đầu vào bằng dữ liệu đó để cung cấp ngữ cảnh phong phú hơn
- RAG giúp tăng tính đúng sự thật bằng cách giảm hallucination, vì mô hình dựa trên ngữ cảnh được truy xuất
- Ngoài ra, việc giữ cho chỉ mục tìm kiếm luôn cập nhật cũng rẻ hơn so với liên tục pre-train LLM
- Nhờ tính hiệu quả về chi phí này, LLM có thể truy cập dữ liệu mới nhất thông qua RAG
- Nếu cần cập nhật/xóa dữ liệu như tài liệu thiên lệch hoặc độc hại, việc cập nhật chỉ mục tìm kiếm cũng đơn giản hơn (so với fine-tune LLM)
- Để làm RAG, trước hết sẽ hữu ích nếu hiểu về text embedding
- Text embedding là biểu diễn trừu tượng nén của dữ liệu văn bản, có thể biểu diễn văn bản có độ dài bất kỳ thành vector số có kích thước cố định
- Thường được huấn luyện trên các text corpus như Wikipedia
- Có thể xem đây là một dạng mã hóa tổng quát cho văn bản, trong đó các mục tương tự nằm gần nhau và các mục không tương tự nằm xa nhau hơn
- Embedding tốt là embedding thực hiện tốt các tác vụ downstream như tìm kiếm mục tương tự
- Massive Text Embedding Benchmark (MTEB) của Huggingface chấm điểm mô hình trên nhiều tác vụ như phân loại, phân cụm, tìm kiếm và tóm tắt
- Ở đây chủ yếu nói về text embedding, nhưng embedding có thể được dùng cho nhiều modality khác nhau
- Fusion-in-Decoder(FiD) kết hợp mô hình sinh và truy xuất cho bài toán open-domain QA
- Internet-augmented LM đề xuất tăng cường LLM bằng cách dùng các search engine hiện có
- Cách áp dụng RAG
- Hybrid search (chỉ mục tìm kiếm truyền thống + tìm kiếm dựa trên embedding) hoạt động tốt hơn so với từng cách riêng lẻ
Fine-tuning: để thực hiện tốt hơn các tác vụ cụ thể
- Fine-tuning là quá trình lấy một mô hình đã pre-train (mô hình đã được huấn luyện trước trên lượng dữ liệu rất lớn) và tiếp tục tinh chỉnh thêm cho một tác vụ cụ thể
- Mục đích là tận dụng tri thức mà mô hình đã học được trong giai đoạn pre-train để áp dụng cho một tác vụ cụ thể, thường với bộ dữ liệu theo tác vụ nhỏ hơn
- Thuật ngữ fine-tuning thường được dùng khá rộng để chỉ nhiều khái niệm khác nhau
- continual pre-training
- instruction fine-tuning
- single-task fine-tuning
- RLHF
- Tại sao cần fine-tuning?
- Hiệu năng và khả năng kiểm soát:
- Có thể cải thiện hiệu năng của foundation model sẵn có và thậm chí vượt qua LLM của bên thứ ba
- Có thể kiểm soát hành vi của LLM tốt hơn, từ đó làm cho hệ thống hoặc sản phẩm mạnh hơn
- Có thể xây dựng sản phẩm khác biệt chỉ bằng fine-tuning, thay vì đơn thuần dùng LLM của bên thứ ba hoặc LLM mã nguồn mở
- Tính mô-đun:
- Fine-tuning đơn tác vụ cho phép tạo ra một đội các mô hình nhỏ hơn, mỗi mô hình chuyên về một tác vụ riêng
- Cách thiết lập này giúp mô-đun hóa hệ thống thành các tác vụ như kiểm duyệt nội dung, trích xuất, tóm tắt
- Giảm phụ thuộc:
- Tự fine-tune và tự host mô hình có thể giảm rủi ro pháp lý liên quan đến dữ liệu độc quyền lộ ra ngoài API, ví dụ PII, tài liệu nội bộ và mã nguồn
- Ngoài ra còn giúp vượt qua các ràng buộc của LLM bên thứ ba như rate limit, chi phí cao hoặc bộ lọc an toàn quá hạn chế
- Generative Pre-trained Transformers (GPT; decoder only)
- Text-to-text Transfer Transformer (T5; encoder-decoder)
- InstructGPT
- Soft prompt tuning & Prefix Tuning
- Low-Rank Adaptation (LoRA) & QLoRA
- Cách áp dụng fine-tuning
- Thu thập dữ liệu demo/nhãn
- Xác định metric đánh giá
- Chọn mô hình pre-train
- Cập nhật kiến trúc mô hình
- Chọn phương pháp fine-tuning (LoRA, QLoRA, v.v.)
- Tinh chỉnh hyperparameter cơ bản
Caching: giảm độ trễ và chi phí
- Caching là kỹ thuật lưu trữ dữ liệu đã được truy xuất hoặc tính toán trước đó
- Nhờ đó có thể xử lý tốt hơn các yêu cầu trong tương lai đối với cùng dữ liệu đó
- Trong LLM, điều này có thể là cache phản hồi của LLM cho embedding của yêu cầu đầu vào, rồi ở yêu cầu sau nếu có yêu cầu tương tự về mặt ngữ nghĩa thì trả về phản hồi đã cache
- Tuy nhiên một số người làm thực tế cho rằng điều này giống như "đang chờ thảm họa xảy ra". Tôi cũng đồng ý
- Điểm mấu chốt khi áp dụng mẫu caching là tìm ra cách cache an toàn, thay vì chỉ dựa vào độ tương đồng ngữ nghĩa
- Tại sao nên caching? : giảm độ trễ và giảm số lượng request tới LLM để tiết kiệm chi phí
- Cách áp dụng caching?
- Cần bắt đầu từ việc hiểu rõ pattern yêu cầu của người dùng
- Cân nhắc liệu caching có hiệu quả với pattern sử dụng đó hay không
Guardrails: đảm bảo chất lượng đầu ra
- Xác thực đầu ra của LLM để bảo đảm rằng đầu ra không chỉ trông có vẻ tốt mà còn đúng về cú pháp, đúng sự thật và không chứa nội dung độc hại
- Tại sao cần guardrails?
- Giúp bảo đảm đầu ra của mô hình đủ đáng tin cậy và nhất quán để dùng trong môi trường production
- Cung cấp thêm một lớp an toàn và duy trì kiểm soát chất lượng đối với đầu ra của LLM
- Một cách tiếp cận là dùng prompt để kiểm soát phản hồi của mô hình
- Anthropic đã chia sẻ các prompt được thiết kế để hướng dẫn mô hình tạo ra phản hồi hữu ích, vô hại và trung thực (HHH)
- Cách tiếp cận phổ biến hơn là xác thực đầu ra (chẳng hạn như gói Guardrails)
- NeMo-Guardrails của Nvidia tuân theo các nguyên tắc tương tự, nhưng được thiết kế để dẫn dắt hệ thống hội thoại dựa trên LLM
- Cũng có thể trực tiếp điều chỉnh đầu ra để tuân theo một ngữ pháp cụ thể, như Guidance của Microsoft (có thể xem như một DSL cho LLM)
- Cách áp dụng guardrails
- Structural guidance
- Syntactic guardrails
- Content safety guardrails
- Semantic/factuality guardrails
- Input guardrails
Defensive UX: để dự đoán và quản lý lỗi
- Defensive UX là chiến lược thiết kế thừa nhận rằng các điều không mong muốn như sai lệch hoặc hallucination có thể xảy ra khi người dùng tương tác với sản phẩm dựa trên machine learning hoặc LLM
- Mục tiêu chính là dự đoán trước và quản lý các tình huống đó bằng cách định hướng hành vi người dùng, ngăn chặn lạm dụng và xử lý lỗi một cách phù hợp
- Tại sao là Defensive UX?
- Machine learning và LLM không hoàn hảo. Chúng có thể tạo ra kết quả không chính xác
- Có thể phản hồi khác nhau cho cùng một câu hỏi
- Defensive UX giúp giảm nhẹ các vấn đề trên bằng cách mang lại
- tăng khả năng tiếp cận, tăng độ tin cậy, Better UX
- Tham khảo các hướng dẫn do các công ty tổng hợp
- Microsoft’s Guidelines for Human-AI Interaction
- Google’s People + AI Guidebook
- Apple’s Human Interface Guidelines for Machine Learning
- Cách áp dụng Defensive UX
- Đặt kỳ vọng đúng đắn
- Cho phép bỏ qua hiệu quả (Enable efficient dismissal)
- Cung cấp attribution
- Anchor on familiarity
Collect user feedback: xây dựng data flywheel
- Việc thu thập phản hồi người dùng giúp hiểu được sở thích của họ
- Phản hồi người dùng đặc thù cho sản phẩm LLM đóng góp vào việc đánh giá, fine-tuning và xây dựng guardrails
- Dữ liệu như corpus cho pre-training, demo do chuyên gia tạo ra và sở thích của con người cho reward modeling là một trong số ít moat của sản phẩm LLM
- Phản hồi có thể là tường minh hoặc ngầm định
- Phản hồi tường minh là thông tin người dùng cung cấp để đáp lại yêu cầu từ sản phẩm
- Phản hồi ngầm định là thông tin học được từ tương tác của người dùng mà không cần họ chủ động đưa phản hồi
- Tại sao cần thu thập phản hồi người dùng
- Phản hồi người dùng giúp cải thiện mô hình
- Bằng cách học những gì người dùng thích, không thích hoặc phàn nàn, có thể cải thiện mô hình để đáp ứng nhu cầu của họ tốt hơn
- Ngoài ra còn có thể thích nghi với sở thích cá nhân
- Vòng phản hồi cũng giúp đánh giá hiệu năng tổng thể của hệ thống
- Cách thu thập phản hồi người dùng
- Giúp người dùng dễ dàng để lại phản hồi: như ChatGPT cho chọn thích/không thích đối với phản hồi
- Cũng cần cân nhắc phản hồi ngầm định: thông tin phát sinh khi người dùng tương tác với sản phẩm
1 bình luận
Trong bài viết gốc có phần giải thích chi tiết cho từng mục cũng như các thuật toán/chỉ số, nhưng phần đó đã được lược bỏ.
Hãy xem tạm bản tóm tắt qua bài này và tham khảo thêm cả bài gốc.