
Tinh chỉnh một LLM để viết tài liệu như thể đang ở năm 1995
Bình luận: 0
Tinh chỉnh LLM để viết tài liệu theo phong cách năm 1995
Đăng ngày 1/6/2026
· Đọc 10 phút
Trong dự đoán của mình về năm 2030, tôi đã viết rằng các chuyên gia viết tài liệu kỹ thuật sẽ sử dụng các LLM chuyên biệt, chạy cục bộ trên phần cứng mạnh mẽ. Tôi nhận thấy những dấu hiệu của xu hướng "ưu tiên cục bộ" này trong giới chuyên gia kỹ thuật, nhưng chúng ta vẫn chưa đạt được điều đó, một phần vì các mô hình tiên tiến được kết nối mạnh mẽ hơn rất nhiều. Tuy nhiên, điều đó không có nghĩa là chúng ta không thể thử nghiệm. Đó chính xác là những gì tôi đã làm vào tuần trước, cố gắng tinh chỉnh một mô hình hướng dẫn để viết theo phong cách của một chuyên gia viết tài liệu kỹ thuật phần mềm từ những năm 80 và 90.
Triệu hồi kiến thức viết tài liệu kỹ thuật cũ để nghiên cứu
Để huấn luyện một mô hình cá nhân, cục bộ viết theo phong cách của một chuyên gia viết tài liệu kỹ thuật từ những năm 1990, cần rất nhiều nguồn tài liệu viết. Ví dụ, nếu tôi muốn tinh chỉnh một mô hình để viết theo phong cách của chính mình, blog này sẽ không đủ, vì nó chỉ có khoảng 100.000 từ tại thời điểm bài đăng này. Bạn sẽ cần nhiều mẫu hơn để huấn luyện kỹ lưỡng (ít nhất là theo Claude), và những mẫu đó không dễ tìm, cũng không dễ tạo ra. Cách nhanh nhất là sử dụng một kho ngữ liệu hiện có. Tôi có thể lấy một kho ngữ liệu ở đâu?
Hãy đến với Bitsavers: đây là một trang web thu thập và quét các tài liệu hướng dẫn và quảng cáo máy tính cũ. Đây là một kho lưu trữ vô cùng quý giá về lịch sử máy tính và tài liệu kỹ thuật cổ xưa, với các bản sao có sẵn ở khắp mọi nơi. Vì tôi yêu thích các tài liệu hướng dẫn của Microsoft từ những năm 90, tôi đã chọn bộ sưu tập Microsoft làm nguồn tài liệu huấn luyện. Bộ sưu tập này chứa các tài liệu đã hết bản in được xuất bản từ năm 1977 đến 2005: hơn 37 triệu từ, bao gồm các hệ thống cũ và SDK.
Tôi đã tải xuống các tệp văn bản được nhận dạng ký tự quang học (OCR) và làm sạch nội dung khỏi các tạo tác và lộn xộn (như chỉ mục và trang đầu) bằng các tập lệnh Python cũ. Sau đó, tôi đã sử dụng một mô hình rẻ và nhanh thông qua OpenRouter, gemma-4-26b, để phân loại từng đoạn văn là "giữ" hoặc "bỏ" dựa trên khả năng hiểu của nó. Lần xử lý thứ hai này tốn khoảng 8 đô la. Ngay cả với việc làm sạch hai lần này, dữ liệu huấn luyện vẫn giữ lại nhiễu mà tôi chỉ phát hiện ra sau này, nhưng điều đó phần lớn vẫn ổn cho các thử nghiệm của tôi.
Tôi đã chia văn bản đã được làm sạch thành các ví dụ huấn luyện theo ranh giới đoạn văn và phần, ngắt ở các tiêu đề và giữ nguyên các khối mã, với mỗi đoạn được giới hạn khoảng 512 token theo lời khuyên của Claude. Mỗi đoạn được ghép nối với một hướng dẫn tổng hợp được rút ra từ các mẫu. Tôi đã có 192.456 ví dụ ở định dạng JSONL (một đối tượng JSON trên mỗi dòng). Tôi có thể đã sử dụng một mô hình nhỏ để đưa ra các hướng dẫn và câu hỏi tốt hơn, nhưng tôi là một người thiếu kiên nhẫn.
💡 Lưu ý về tài liệu: Đây là một dự án nghiên cứu độc lập, phi thương mại và không liên kết, được tài trợ hoặc chứng thực bởi Microsoft. Tôi đã sử dụng các tài liệu hướng dẫn đã hết bản in này chỉ để thử nghiệm chuyển đổi phong cách cá nhân. Kho ngữ liệu, dữ liệu huấn luyện và các bộ điều hợp kết quả không được phân phối, và các mô hình đã được tinh chỉnh vẫn hoàn toàn cục bộ trên máy của tôi.
Tinh chỉnh như một giải pháp thay thế cho việc huấn luyện từ đầu
Trong một thế giới lý tưởng, tôi sẽ có hàng triệu đô la để tạo ra LLM của riêng mình, Fabrice. Vì tôi không giàu (nếu không thì tôi đã không viết bài này), giải pháp thay thế cho Fabrice là tinh chỉnh, bao gồm việc điều chỉnh "trọng số" của một mô hình để mỗi token được tạo ra được điều kiện bởi các tài liệu huấn luyện. Tôi thích hình dung việc tinh chỉnh giống như việc lái một tảng băng trôi khổng lồ bằng các tàu kéo; chỉ một chút, chỉ để đạt được hiệu quả mong muốn.
Tại sao lại là tinh chỉnh (fine-tuning) mà không phải là, ví dụ, tạo sinh tăng cường truy xuất (RAG)? Bởi vì trong thí nghiệm này, tôi không quan tâm nhiều đến việc truy xuất thông tin thực tế, một kịch bản mà RAG vượt trội, mà là làm cho một mô hình ngôn ngữ lớn (LLM) hoạt động và viết theo một phong cách cụ thể, bất kể kiến thức của nó về ngữ cảnh. So với đào tạo toàn diện, tinh chỉnh không yêu cầu lượng dữ liệu khổng lồ, do đó chi phí thấp hơn. Ngoài ra, chỉ đơn giản là: tôi luôn muốn thử tinh chỉnh như một kỹ thuật và xem tính khả thi của nó.
Để tránh mất nhiều ngày hoặc nhiều tuần tinh chỉnh một mô hình trên máy tính của tôi, vốn có một card đồ họa khá cũ, tôi đã sử dụng Runpod, một dịch vụ trực tuyến dành cho các nhà phát triển AI cung cấp các pod theo yêu cầu với GPU và công cụ được cấu hình sẵn với mức giá (tương đối) nhỏ. Ví dụ, với chưa đến 6 USD mỗi giờ, bạn có thể thuê một card đồ họa mạnh mẽ, Nvidia B200 (bộ nhớ 192GB). Dịch vụ này có một API tiện lợi với các cơ chế tự động nạp tiền và kiểm soát chi phí có thể cấu hình.
Bước vào một thế giới đầy những thuật ngữ bí ẩn
Sau khi quyết định tinh chỉnh một mô hình, tôi đã tham khảo Claude về các phương pháp hợp lý nhất để đạt được điều đó. Chúng tôi đã chọn QLoRA (Quantized Low-Rank Adaptation), phương pháp này thực hiện tinh chỉnh không phải bằng cách thay đổi từng trọng số của một LLM, mà bằng cách "đóng băng" chúng và đặt một bộ điều hợp lên trên, đây là một tệp nhỏ định hình lại hành vi của mô hình (một chút giống như một mặt nạ, nếu bạn muốn). Chữ Q trong QLoRA có nghĩa là kết quả được lượng tử hóa, tức là nén, giảm yêu cầu bộ nhớ.
Bạn vẫn đang theo dõi chứ? Tốt. Nếu bạn nghĩ điều này phức tạp, thì đúng là như vậy.
Thực hiện bất cứ điều gì với LLM tại nhà ngày nay là một bài tập về sự thỏa hiệp: bạn hoặc hy sinh thời gian, chi tiền, hoặc hạn chế các mục tiêu đầy tham vọng của mình. Tôi đã cố gắng tìm sự cân bằng để đạt được điều gì đó có ý nghĩa trong vòng chưa đầy một cuối tuần. Tôi đã chọn thử tinh chỉnh trên hai mô hình, Llama 3.1 8B Instruct và Qwen 2.5 7B Instruct. Với kích thước của chúng (khoảng 8B), chúng chạy thoải mái trên Macbook Air. Tôi cũng đã thử nghiệm một mô hình cơ sở Llama (chưa được đào tạo để trả lời câu hỏi).
Tôi đã thử nghiệm tinh chỉnh trong một số điều kiện khác nhau: thay đổi khối lượng tài liệu đào tạo (một tập con so với toàn bộ kho dữ liệu), số lượng epoch (vòng đào tạo) và các tham số cấu trúc như rank. Tôi chỉ có kiến thức hời hợt về tất cả những điều này, nhưng tôi tin tưởng Claude sẽ đưa ra những lựa chọn đúng đắn, điều mà tôi vui vẻ đặt câu hỏi ở mỗi bước. Ví dụ, 3 epoch có thể dẫn đến "quá khớp" (overfitting) trong một số trường hợp; trong thế giới LLM, điều đó có nghĩa là đào tạo quá mức. Thật thú vị.
Run
Base
Data
Epochs
Rank


Nguồn tin: Hacker News LLM — Tác giả: theletterf. Bản dịch tiếng Việt do AI thực hiện, có thể có sai sót.