AI Engineering · Chip Huyen · Chương 7AI Engineering · Chip Huyen · Chương 7AI Engineering · Chip Huyen · Chapter 7
Chương 7 · Tinh chỉnhChương 7 · Tinh chỉnhChapter 7 · Finetuning

Sửa trọng số, không sửa lời dặnDạy lại máy bằng cách sửa chính nóChange the weights, not the prompt

Tinh chỉnh là quá trình thích ứng một mô hình cho một tác vụ cụ thể bằng cách huấn luyện tiếp toàn bộ hoặc một phần của nó. Chương 5 và 6 thích ứng mô hình bằng chỉ dẫn, ngữ cảnh và công cụ; chương này thích ứng nó bằng cách chỉnh trọng số.1 Huyen viết rằng đây là chương khó viết nhất của bà — không vì khái niệm phức tạp, mà vì phạm vi quá rộng.1

Từ đầu tới giờ ta chỉ nói chuyện với máy: ra lệnh khéo hơn, đưa thêm tài liệu cho nó đọc. Bài này làm một việc khác hẳn — mở nắp máy ra và chỉnh lại bên trong. Việc đó mạnh hơn, nhưng cũng tốn kém hơn rất nhiều. Nhớ nhé: sửa lời dặn thì dễ, sửa chính cái máy thì khó.

Finetuning is the process of adapting a model to a specific task by further training the whole model or part of it. Chapters 5 and 6 adapt a model through instructions, context, and tools; this chapter adapts it by adjusting its weights.1 Huyen notes this was the most technically challenging chapter for her to write — not because the concepts are complex, but because of their breadth.1

Luận đề của chương Điều quan trọng nhất The chapter’s thesis

Tinh chỉnh sửa hình thức, còn RAG cung cấp sự thật — đó là câu chốt của Huyen khi người ta hỏi nên chọn cái nào.1 Và vì tinh chỉnh ở quy mô mô hình nền tảng thường cần nhiều bộ nhớ hơn một GPU đơn lẻ có, gần như toàn bộ lịch sử kỹ thuật tinh chỉnh hiện đại là một cuộc chiến chống lại đúng một ràng buộc: bộ nhớ.1

Nếu máy trả lời sai vì không biết, hãy đưa tài liệu cho nó đọc. Nếu máy biết nhưng trả lời lộn xộn, sai định dạng, hãy dạy lại nó. Nhớ nhé: tinh chỉnh dạy cách nói, chứ không dạy sự thật mới.

Finetuning is for form, and RAG is for facts — that is Huyen’s answer to the question she says she is asked most often.1 And because finetuning at foundation-model scale usually needs more memory than a single GPU has, nearly the whole modern history of finetuning technique is a war against one constraint: memory.1

Phần một · Quyết địnhPhần một · Quyết địnhPart one · The decision

Tinh chỉnh sửa hình thức, RAG cung cấp sự thậtKhi nào thì nên dạy lại máyFinetuning is for form, RAG is for facts

Trước khi bàn kỹ thuật, Huyen đặt câu hỏi đứng trước tất cả: bạn có thật sự cần tinh chỉnh không. So với các phương pháp dựa trên prompt, tinh chỉnh đòi hỏi nhiều tài nguyên hơn hẳn — không chỉ dữ liệu và phần cứng, mà cả nhân lực có chuyên môn học máy. Vì vậy nó thường chỉ được thử sau khi đã thí nghiệm kỹ với prompt.1

Trước khi học cách dạy lại máy, hãy hỏi: có cần không đã? Dạy lại tốn tiền, tốn máy móc, tốn người biết việc. Nhớ nhé: thử nói chuyện cho khéo trước, dạy lại sau.

Before any technique, Huyen asks the question that comes first: do you actually need to finetune? Compared to prompt-based methods, finetuning requires significantly more resources — not just data and hardware, but ML talent. It is therefore generally attempted only after extensive prompt experiments.1

Nếu mô hình sai vì thiếu thông tin, hãy dùng RAG. Nếu nó sai vì hành vi — đúng sự thật nhưng lạc đề, sai định dạng, sai văn phong — hãy tinh chỉnh.

Máy sai vì không biết thì cho nó tài liệu. Máy sai vì nói không đúng kiểu thì dạy lại nó.

If the model fails because it lacks information, use RAG. If it fails on behavior — factually right but irrelevant, malformatted, off-style — finetune.

Huyen nói thêm: nếu mô hình mắc cả hai loại lỗi, hãy bắt đầu bằng RAG, vì RAG thường dễ hơn — bạn không phải lo chuẩn bị dữ liệu huấn luyện hay tự vận hành mô hình đã tinh chỉnh. Và khi bắt đầu RAG, hãy dùng giải pháp dựa trên từ khóa như BM25 trước, đừng nhảy ngay vào cơ sở dữ liệu vector.1

Lỗi thông tinInformation failureCâu trả lời sai sự thật hoặc lỗi thời → RAGMáy không biết → cho nó đọc thêmOutputs factually wrong or outdated → RAG
Lỗi hành viBehavior failureĐúng nhưng lạc đề, sai cú pháp, sai văn phong → tinh chỉnhMáy nói sai kiểu → dạy lạiRight but irrelevant or malformatted → finetune
Cả haiBothBắt đầu bằng RAG, rồi mới tính tới tinh chỉnhCho đọc tài liệu trước, dạy lại sauStart with RAG, then consider finetuning
Thứ tự chuẩnThe default orderPrompt → thêm ví dụ → RAG đơn giản → RAG nâng cao hoặc tinh chỉnhNói khéo → cho ví dụ → cho tài liệu → dạy lạiPrompt → add examples → simple RAG → advanced RAG or finetuning
  1. Transfer learning · Sample efficiency

    Học chuyển giao — vì sao vài trăm ví dụ là đủMáy đã biết sẵn rất nhiều rồiTransfer learning — why a few hundred examples suffice

    Tinh chỉnh là một dạng học chuyển giao, khái niệm được Bozinovski và Fulgosi giới thiệu từ năm 1976: chuyển tri thức học được từ một tác vụ sang một tác vụ mới có liên quan.1 Lợi ích thực dụng của nó là hiệu quả mẫu: Huyen viết rằng huấn luyện từ đầu cho hỏi đáp pháp lý có thể cần hàng triệu ví dụ, nhưng tinh chỉnh một mô hình nền tốt có khi chỉ cần vài trăm.1

    Giống như ai đã biết chơi piano thì học đàn khác nhanh hơn. Mô hình nền đã đọc cả núi sách rồi, nên để nó làm việc mới, ta chỉ cần đưa vài trăm ví dụ chứ không phải hàng triệu. Nhớ nhé: dạy người đã biết nhiều thì nhanh hơn dạy người chưa biết gì.

    Finetuning is a form of transfer learning, a concept first introduced by Bozinovski and Fulgosi in 1976: transferring knowledge gained on one task to a new, related one.1 Its practical payoff is sample efficiency — Huyen writes that training from scratch for legal question answering may need millions of examples, while finetuning a good base model might require only a few hundred.1

    Thấy ở đâuWhere you see it Grammarly cho biết các mô hình Flan-T5 đã tinh chỉnh của họ vượt một biến thể GPT-3 chuyên biên tập văn bản trên nhiều tác vụ trợ lý viết, dù nhỏ hơn 60 lần — với chỉ 82.000 cặp (chỉ dẫn, đầu ra).115 Một mô hình nhỏ được dạy kỹ có thể thắng một mô hình to gấp 60 lần, nếu chỉ xét đúng việc của nó. Grammarly found their finetuned Flan-T5 models outperformed a GPT-3 variant specialized in text editing across a wide range of writing-assistant tasks despite being 60 times smaller — using only 82,000 (instruction, output) pairs.115

    Tinh chỉnh tự giám sát

    Trước khi dùng dữ liệu chú thích đắt tiền, có thể tinh chỉnh tiếp bằng dữ liệu thô liên quan tới lĩnh vực — ví dụ tài liệu pháp lý chưa chú thích. Cách này gọi là tiền huấn luyện tiếp tục.1

    Mở khóa, không phải thêm mới

    Bài báo InstructGPT của OpenAI (2022) đề nghị xem tinh chỉnh như việc mở khóa những năng lực mô hình đã có sẵn nhưng người dùng khó gọi ra bằng prompt.1

  2. Finetuning versus RAG

    Tinh chỉnh so với RAG — bằng chứng thực nghiệmCho đọc tài liệu thường ăn đứt dạy lạiFinetuning versus RAG — the evidence

    Bài báo “Fine-Tuning or Retrieval?” của Ovadia và cộng sự (2024) cho thấy với các tác vụ cần thông tin cập nhật, RAG vượt các mô hình đã tinh chỉnh — và RAG trên mô hình gốc còn vượt cả RAG trên mô hình đã tinh chỉnh.17 Với Mistral-7B trên bộ câu hỏi về sự kiện thời sự, mô hình gốc đạt 0,481; cộng RAG lên 0,875; còn hai cách tinh chỉnh chỉ đạt 0,504 và 0,588.17

    Có người thử cả hai cách trên cùng một bài kiểm tra về tin tức mới. Cho máy đọc tài liệu giúp điểm nhảy vọt; dạy lại máy thì gần như không giúp gì. Nhớ nhé: chuyện mới xảy ra thì phải cho máy đọc, dạy lại không thay được.

    “Fine-Tuning or Retrieval?” by Ovadia et al. (2024) showed that for tasks requiring up-to-date information, RAG outperformed finetuned models — and RAG on the base model even outperformed RAG on finetuned ones.17 On their current-events QA set, Mistral-7B scored 0.481 as the base model, 0.875 with RAG, but only 0.504 and 0.588 under two finetuning regimes.17

    Thấy ở đâuWhere you see it Hai cách không loại trừ nhau: cùng thí nghiệm đó cho thấy cộng RAG lên một mô hình đã tinh chỉnh cải thiện kết quả MMLU trong 43% số trường hợp — nghĩa là 57% còn lại, chỉ dùng RAG là đủ hoặc tốt hơn.17 Đôi khi làm cả hai cùng lúc thì tốt hơn, nhưng không phải lúc nào cũng vậy. The two aren’t mutually exclusive: the same experiment showed adding RAG on top of a finetuned model boosted MMLU performance 43% of the time — meaning that for the other 57%, RAG alone was as good or better.17
  3. Regression on other tasks

    Cái giá ẩn — giỏi việc này, dở việc kiaDạy giỏi một việc, quên mất việc khácThe hidden cost — better here, worse there

    Lý do đầu tiên để không tinh chỉnh, theo Huyen: tinh chỉnh cho một tác vụ có thể làm giảm hiệu năng ở các tác vụ khác.1 Ví dụ của bà: một mô hình xử lý tốt gợi ý sản phẩm và phản hồi chung nhưng kém ở việc đổi đơn hàng; tinh chỉnh riêng cho đổi đơn hàng có thể khiến hai việc kia tệ đi.1

    Giống như luyện mãi một môn thể thao thì các môn khác kém dần. Máy cũng vậy: dạy nó thật giỏi một việc, nó có thể quên bớt những việc cũ. Nhớ nhé: dạy thêm cũng là làm quên bớt.

    The first reason not to finetune, per Huyen: finetuning for one task can degrade performance on others.1 Her example: a model that handles product recommendations and general feedback well but fails at order changes; finetuning it on order-change data may indeed fix that query type while making the other two worse.1

    Thấy ở đâuWhere you see it Cách xử lý: tinh chỉnh trên tất cả các loại truy vấn bạn quan tâm, hoặc dùng mô hình riêng cho từng tác vụ rồi hợp nhất chúng lại — chủ đề của phần ba.1 Cách chữa: dạy nó cả ba việc cùng lúc, hoặc nuôi ba máy nhỏ rồi ghép lại. The fix: finetune on all the query types you care about, or keep separate models per task and merge them — the subject of part three.1

    Chi phí duy trì

    Huyen nhấn mạnh gánh nặng sau khi tinh chỉnh: bạn cần chính sách và ngân sách để theo dõi, bảo trì, cập nhật mô hình — trong khi các mô hình nền mới ra đời nhanh hơn tốc độ bạn cải thiện mô hình riêng của mình.1

    Prompt bị bỏ dở

    Bà kể một mô-típ quen thuộc: ai đó than prompt không hiệu quả và đòi tinh chỉnh; kiểm tra lại thì thí nghiệm prompt rất sơ sài — chỉ dẫn mơ hồ, ví dụ không giống dữ liệu thật, chỉ số đo kém định nghĩa. Sau khi làm lại quy trình prompt cho tử tế, chất lượng đủ dùng.1

  4. Domain-specific models

    Huyền thoại mô hình chuyên ngànhMáy “chuyên ngành” chưa chắc đã hơnThe domain-specific model myth

    Huyen cảnh báo lập luận rằng mô hình tổng quát không làm tốt tác vụ chuyên ngành nên buộc phải tự huấn luyện. BloombergGPT ra mắt tháng 3 năm 2023 với 50 tỉ tham số, tốn 1,3 triệu giờ GPU A100, chi phí tính toán ước tính từ 1,3 đến 2,6 triệu đô la, chưa kể chi phí dữ liệu.18 Cùng tháng đó OpenAI phát hành GPT-4-0314.1

    Một công ty tài chính bỏ ra hàng triệu đô để tự dạy một cái máy riêng cho ngành của mình. Ngay tháng đó, một máy tổng quát ra mắt và làm tốt hơn. Nhớ nhé: máy tổng quát ngày càng giỏi, đừng vội tự làm máy riêng.

    Huyen warns against the argument that general-purpose models don’t work for domain-specific tasks. BloombergGPT launched in March 2023 with 50 billion parameters, required 1.3 million A100 GPU hours, and cost an estimated $1.3–2.6 million in compute alone, excluding data.18 That same month, OpenAI released GPT-4-0314.1

    Thấy ở đâuWhere you see it Nghiên cứu của Li và cộng sự (2023) cho thấy GPT-4-0314 ở chế độ không ví dụ vượt BloombergGPT trên các thước đo tài chính: 87,15 so với 75,07 ở phân tích cảm xúc FiQA, và 76,48 so với 43,41 ở ConvFinQA.19 Máy tổng quát được 87 điểm, máy chuyên ngành được 75 điểm — ở đúng bài kiểm tra chuyên ngành. Li et al. (2023) showed zero-shot GPT-4-0314 significantly outperformed BloombergGPT on financial benchmarks: 87.15 versus 75.07 on FiQA sentiment analysis, and 76.48 versus 43.41 on ConvFinQA.19

    Công bằng với Bloomberg

    Huyen ghi chú rằng vì các thước đo chuẩn không nắm hết hiệu năng thực tế, BloombergGPT vẫn có thể hoạt động tốt cho chính các ca sử dụng của Bloomberg — và đội ngũ ấy thu được kinh nghiệm vô giá khi tự huấn luyện.1

    Bối cảnh đã đổi

    Từ đó tới nay đã có nhiều mô hình cỡ trung với hiệu năng sánh GPT-4, trong đó Llama 3-70B-Instruct và Qwen2-72B-Instruct là mô hình mở trọng số, tự vận hành được — điều Bloomberg không có khi bắt đầu.1

Phần hai · Nút thắtPhần hai · Nút thắtPart two · The bottleneck

Toán bộ nhớ: bốn thứ phải nhét vừa một con chipMáy cần bao nhiêu chỗ để họcThe memory math: four things that must fit on one chip

Huyen dành hẳn một mục cho các công thức tính nhẩm bộ nhớ, vì chúng giúp bạn ước lượng cần phần cứng nào để vận hành hoặc tinh chỉnh một mô hình. Ba yếu tố chính quyết định dấu chân bộ nhớ khi tinh chỉnh: số tham số, số tham số khả huấn, và cách biểu diễn số.1

Phần này là toán, nhưng là toán rất dễ: nhân vài con số để biết máy của bạn có đủ chỗ hay không. Nhớ nhé: cứ nhân số tham số với số byte mỗi tham số là ra.

Huyen devotes a section to back-of-the-napkin memory formulas, because they let you estimate what hardware you need to serve or finetune a model. Three factors dominate the finetuning memory footprint: the parameter count, the number of trainable parameters, and the numerical representation.1

Bộ nhớ huấn luyện = trọng số mô hình + giá trị kích hoạt + gradient + trạng thái bộ tối ưu. Suy luận chỉ cần hai thứ đầu; chính hai thứ sau khiến tinh chỉnh đắt hơn nhiều.

Chỗ nhớ để học = chỗ chứa cái máy + chỗ ghi nháp + chỗ ghi “sai bao nhiêu” + chỗ ghi “lần trước đã sửa thế nào”.

Training memory = model weights + activations + gradients + optimizer states. Inference needs only the first two; it is the last two that make finetuning so much more expensive.

Huyen lưu ý rằng công thức trên giả định bộ nhớ cho kích hoạt nhỏ hơn bộ nhớ cho trọng số, nhưng trong thực tế kích hoạt có thể lấn át hẳn trọng số nếu được lưu lại để tính gradient — như bài báo “Reducing Activation Recomputation in Large Transformer Models” của Korthikanti và cộng sự (2022) cho thấy với các mô hình Megatron.114 Một cách giảm là không lưu mà tính lại khi cần — kỹ thuật gradient checkpointing, đánh đổi bộ nhớ lấy thời gian huấn luyện.1

N × MBộ nhớ nạp trọng số: số tham số nhân bộ nhớ mỗi tham sốSố tham số nhân số byte mỗi tham sốWeights: parameter count × memory per parameter
N × M × 1,2Suy luận: cộng khoảng 20% cho kích hoạt và vector khóa–giá trịChạy thôi thì cộng thêm khoảng 20%Inference: add roughly 20% for activations and key-value vectors
13B × 2 B = 26 GBMô hình 13 tỉ tham số ở 2 byte mỗi tham số; tổng suy luận 31,2 GBMáy 13 tỉ tham số cần 26 GB, chạy thật thì 31,2 GBA 13B model at 2 bytes per parameter; 31.2 GB total for inference
13B × 3 × 2 B = 78 GBGradient và trạng thái Adam khi toàn bộ 13 tỉ tham số đều khả huấnNếu dạy lại toàn bộ máy, cần thêm 78 GB nữaGradients and Adam states when all 13B parameters are trainable
1B × 3 × 2 B = 6 GBCũng mô hình ấy, nhưng chỉ 1 tỉ tham số khả huấn — đây chính là lý do PEFT tồn tạiNếu chỉ dạy một góc nhỏ, chỉ cần 6 GBSame model, only 1B trainable parameters — this is exactly why PEFT exists
  1. Trainable parameters · Backpropagation

    Tham số khả huấn — nguồn gốc của mọi chi phíMỗi chỗ được sửa đều tốn thêm chỗ nhớTrainable parameters — the source of every cost

    Tham số khả huấn là tham số được cập nhật trong lúc tinh chỉnh; những tham số giữ nguyên gọi là tham số đóng băng. Khi tiền huấn luyện, mọi tham số đều được cập nhật; khi suy luận, không tham số nào được cập nhật; khi tinh chỉnh, một phần hoặc toàn bộ.1

    Trong máy có hàng tỉ cái núm vặn. Chạy bình thường thì không vặn núm nào. Dạy lại thì vặn một số núm — và mỗi núm được phép vặn lại cần thêm giấy nháp riêng. Nhớ nhé: càng vặn nhiều núm, càng tốn chỗ.

    A trainable parameter is one that can be updated during finetuning; parameters kept unchanged are frozen. During pre-training all parameters are updated, during inference none are, and during finetuning some or all may be.1

    Thấy ở đâuWhere you see it Mỗi tham số khả huấn cần một giá trị gradient cộng thêm từ không tới hai giá trị trạng thái bộ tối ưu: SGD thuần không có trạng thái, bộ tối ưu quán tính lưu một giá trị, còn Adam lưu hai. Với mô hình transformer, Adam là lựa chọn phổ biến nhất — nên con số nhân ba là mặc định thực tế.1 Mỗi núm được vặn cần tới ba ô giấy nháp, chứ không phải một. Each trainable parameter needs one gradient value plus zero to two optimizer-state values: vanilla SGD has no state, a momentum optimizer stores one, and Adam stores two. For transformer models Adam is by far the most widely used — so the ×3 factor is the practical default.1

    Lượt truyền tiến và lùi

    Lượt tiến tính đầu ra từ đầu vào; lượt lùi so đầu ra với đáp án để có loss, rồi tính gradient — đạo hàm của loss theo từng tham số khả huấn — và giao cho bộ tối ưu quyết định mức điều chỉnh.1

    Tham số đóng băng thì rẻ

    Nếu một tham số không khả huấn thì không cần cập nhật, nên cũng không cần tính gradient cho nó — đó chính là cánh cửa mà mọi kỹ thuật ở phần ba đi qua.1

  2. Numerical representations

    Định dạng số — dải giá trị đổi lấy độ chính xácGhi số càng ngắn càng tốn ít chỗNumerical formats — range traded against precision

    FP32 dùng 32 bit (4 byte), FP16 dùng 16 bit (2 byte), FP64 dùng 64 bit. Ngoài họ FP còn có BF16 do Google thiết kế cho TPU và TF32 do NVIDIA thiết kế cho GPU, cùng các định dạng số nguyên INT8 và INT4.1 Mỗi định dạng dành một bit cho dấu, phần còn lại chia giữa dải giá trị và độ chính xác.1

    Giống như ghi giá tiền: ghi đủ mọi chữ số thì chính xác nhưng dài, làm tròn thì ngắn mà hơi sai. Máy cũng chọn giữa ghi dài chính xác và ghi ngắn tiết kiệm. Nhớ nhé: ghi ngắn tiết kiệm chỗ, nhưng mỗi lần làm tròn là một lần sai một chút.

    FP32 uses 32 bits (4 bytes), FP16 uses 16 bits (2 bytes), FP64 uses 64. Beyond the FP family there is BF16, designed by Google for TPUs, and TF32, designed by NVIDIA for GPUs, plus the integer formats INT8 and INT4.1 Each format spends one bit on sign and splits the rest between range and precision.1

    Thấy ở đâuWhere you see it Huyen kể rằng Llama 2 được phát hành với trọng số ở BF16, nhưng nhiều đội nạp nhầm sang FP16 rồi thất vọng vì chất lượng kém hẳn so với quảng cáo. Hãy luôn nạp mô hình đúng định dạng mà nó được thiết kế.1 Từng có chuyện cả loạt người dùng sai kiểu ghi số rồi tưởng máy dở — trong khi lỗi là ở họ. Huyen recounts that Llama 2 shipped with BF16 weights, yet many teams loaded it in FP16 and were frustrated to find quality far below what was advertised. Always load a model in the format it was intended for.1

    BF16 so với FP16

    Cùng 16 bit, nhưng BF16 dành nhiều bit hơn cho dải giá trị và ít hơn cho độ chính xác. Trong bảng của Huyen, 1234,56789 thành 1235,0 ở FP16 (lệch 0,035%) nhưng thành 1232,0 ở BF16 (lệch 0,208%) — đổi lại BF16 biểu diễn được những giá trị lớn mà FP16 tràn thành vô cực.1

    Vì sao gọi là TF32

    Huyen ghi chú vui rằng tên định dạng thường cho biết số bit, nhưng TF32 thật ra có 19 bit chứ không phải 32 — bà đoán nó được đặt tên vậy để gợi tính tương thích chức năng với FP32.1

  3. Quantization

    Lượng tử hóa — cách rẻ nhất để giảm một nửaGhi số ngắn lại, tốn một nửa chỗQuantization — the cheapest way to halve everything

    Huyen mô tả giảm độ chính xác là cách rẻ và cực kỳ hiệu quả để giảm dấu chân bộ nhớ: dễ làm và khái quát được qua nhiều tác vụ lẫn kiến trúc.1 Với mô hình 13 tỉ tham số, FP32 nghĩa là 4 byte mỗi trọng số, tức 52 GB cho toàn bộ trọng số; giảm xuống 2 byte thì còn 26 GB.1

    Thay vì ghi 3,14159265 thì ghi 3,14 — vẫn dùng được mà tốn ít chỗ hơn nhiều. Máy làm đúng như vậy với hàng tỉ con số của nó. Nhớ nhé: cắt một nửa số chữ số là tiết kiệm một nửa chỗ.

    Huyen calls reduced precision a cheap and extremely effective way to shrink a model’s memory footprint: straightforward to do and general across tasks and architectures.1 For a 13B-parameter model, FP32 means 4 bytes per weight, or 52 GB for the whole weights; at 2 bytes per value that drops to 26 GB.1

    Thấy ở đâuWhere you see it Suy luận thường dùng càng ít bit càng tốt — 16, 8, thậm chí 4 bit. Apple (2024) dùng một lược đồ trộn 2 bit và 4 bit, trung bình 3,5 bit mỗi trọng số, để chạy mô hình ngay trên thiết bị; cùng năm NVIDIA công bố kiến trúc Blackwell hỗ trợ suy luận ở số thực 4 bit.1 Điện thoại của bạn chạy AI được là nhờ mẹo này: ghi số thật ngắn. Inference is typically done in as few bits as possible — 16, 8, even 4. Apple (2024) used a scheme mixing 2-bit and 4-bit formats, averaging 3.5 bits per weight, to serve models on-device; the same year NVIDIA announced its Blackwell architecture supporting 4-bit float inference.1

    Huấn luyện nhạy cảm hơn

    Huấn luyện khó hạ độ chính xác hơn suy luận vì lan truyền ngược nhạy cảm với sai số: các thay đổi làm tròn nhỏ tích lũy qua nhiều bước, và loss cần tính chính xác để không chỉ sai hướng cập nhật. Vì thế huấn luyện thường ở độ chính xác hỗn hợp.1

    Giới hạn dưới

    Không thể ít hơn 1 bit mỗi giá trị. Năm 2024, nhóm Microsoft (Ma và cộng sự) giới thiệu BitNet b1.58, chỉ cần 1,58 bit mỗi tham số và có hiệu năng sánh Llama 2 ở 16 bit cho tới quy mô 3,9 tỉ tham số — tên bài báo tuyên bố “kỷ nguyên LLM 1 bit”, nhưng con số thực trong bảng là 1,58 bit, một khác biệt đáng ghi nhớ.110

  4. Post-training quantization · QAT

    Lượng tử hóa lúc nào — sau huấn luyện hay trong khi huấn luyệnRút gọn lúc nào cho đúngWhen to quantize — after training or during

    Có hai câu hỏi: lượng tử hóa cái gì và khi nào. Trọng số được lượng tử hóa phổ biến hơn kích hoạt, vì tác động lên hiệu năng ổn định hơn và mất mát độ chính xác ít hơn. Về thời điểm, lượng tử hóa sau huấn luyện là cách phổ biến nhất, và cũng liên quan nhất tới người phát triển ứng dụng — những người thường không tự huấn luyện mô hình.1

    Có thể rút gọn sau khi dạy xong, hoặc rút gọn ngay trong lúc dạy. Cách thứ nhất dễ hơn và hầu hết mọi người dùng cách đó. Nhớ nhé: dạy xong rồi rút gọn là cách thông thường.

    There are two questions: what to quantize and when. Weight quantization is more common than activation quantization, since it has a more stable impact on performance with less accuracy loss. As for timing, post-training quantization (PTQ) is by far the most common — and the most relevant to application developers, who usually don’t train models.1

    Thấy ở đâuWhere you see it Các khung chính — PyTorch, TensorFlow, thư viện transformers của Hugging Face — đều cung cấp lượng tử hóa sau huấn luyện miễn phí với vài dòng mã.1 Các bộ công cụ phổ biến đều làm sẵn việc này cho bạn, chỉ vài dòng lệnh. Major frameworks — PyTorch, TensorFlow, Hugging Face’s transformers — all offer PTQ for free in a few lines of code.1

    Hai mục tiêu khác nhau

    Lượng tử hóa khi huấn luyện có hai mục tiêu tách biệt: tạo ra mô hình chạy tốt ở độ chính xác thấp khi suy luận, và giảm chính thời gian cùng chi phí huấn luyện. QAT nhắm mục tiêu thứ nhất nhưng không rút ngắn thời gian huấn luyện — thậm chí kéo dài thêm vì phải mô phỏng hành vi độ chính xác thấp.1

    Huấn luyện thẳng ở INT8

    Character.AI (2024) chia sẻ họ huấn luyện toàn bộ mô hình ở INT8, nhờ đó xóa được sự lệch pha giữa độ chính xác lúc huấn luyện và lúc phục vụ, đồng thời cải thiện đáng kể hiệu suất huấn luyện.1

Phần ba · Kỹ thuậtPhần ba · Kỹ thuậtPart three · Techniques

PEFT, LoRA, và nghệ thuật hợp nhất mô hìnhSửa một góc nhỏ, được cả cỗ máyPEFT, LoRA, and the art of merging models

Huyen viết rằng tinh chỉnh càng tốn bộ nhớ thì càng ít người đủ sức làm; các kỹ thuật giảm dấu chân bộ nhớ vì thế mở rộng số người có thể thích ứng mô hình cho ứng dụng của mình.1 Phần này đi qua PEFT, LoRA, LoRA lượng tử hóa, và một hướng mà bà gọi là thú vị nhưng còn thực nghiệm: hợp nhất mô hình.1

Nếu dạy lại cả cỗ máy thì quá tốn, hãy chỉ dạy lại một góc rất nhỏ — mà kết quả vẫn gần như tốt bằng. Nhớ nhé: mẹo hay nhất trong bài này là sửa ít mà được nhiều.

Huyen writes that the more memory finetuning requires, the fewer people can afford it; techniques that shrink the footprint therefore widen the circle of people who can adapt models to their applications.1 This part walks through PEFT, LoRA, quantized LoRA, and a direction she calls exciting but experimental: model merging.1

Một kỹ thuật được coi là hiệu quả tham số nếu nó đạt hiệu năng gần bằng tinh chỉnh toàn phần trong khi dùng ít hơn vài bậc độ lớn số tham số khả huấn.

Một mẹo được coi là giỏi nếu nó chỉ vặn một phần rất nhỏ số núm mà máy vẫn học được gần như y hệt.

A technique counts as parameter-efficient if it achieves performance close to full finetuning while using several orders of magnitude fewer trainable parameters.

Huyen lưu ý không có ngưỡng rõ ràng nào để một phương pháp được gọi là hiệu quả tham số — đây là mô tả tương đối, không phải định nghĩa chính xác.1 Bà cũng phân PEFT thành hai nhóm: phương pháp dựa trên bộ điều hợp (thêm mô-đun vào trọng số, nên còn gọi là phương pháp cộng thêm) và phương pháp dựa trên prompt mềm (thêm các token khả huấn không đọc được, được tối ưu qua lan truyền ngược).1 Để ước lượng phương pháp nào thật sự được dùng, Huyen phân tích hơn 1.000 issue mở trên kho huggingface/peft vào tháng 10 năm 2024 và thấy LoRA áp đảo; prompt mềm ít gặp hơn nhưng có dấu hiệu được quan tâm dần.113

7B toàn phần7B, full14 GB trọng số + 42 GB gradient và trạng thái Adam = 56 GB, vượt hầu hết GPU tiêu dùng (12–24 GB)Dạy lại toàn bộ máy 7 tỉ tham số cần 56 GB — máy để bàn không kham nổi14 GB of weights + 42 GB of gradients and Adam states = 56 GB, beyond most consumer GPUs (12–24 GB)
W′ = W + (α/r)·WABLoRA: chỉ A và B được cập nhật, W giữ nguyên; α quyết định mức đóng gópChỉ sửa hai bảng nhỏ, bảng lớn giữ nguyênLoRA: only A and B are updated, W stays intact; α sets how much they contribute
1,68B → 23,3M100 khách hàng, ma trận 4096 × 4096, rank 8: giữ adapter tách rời thay vì 100 bản đầy đủThay vì 100 bản sao cả máy, chỉ cần 1 bản gốc và 100 miếng vá nhỏ100 customers, a 4096 × 4096 matrix, rank 8: separate adapters instead of 100 full copies
QLoRAQLoRATrọng số lưu ở 4 bit NF4, giải lượng tử về BF16 khi tính — đủ để tinh chỉnh mô hình 65 tỉ tham số trên một GPU 48 GBNén trọng số xuống 4 bit, dạy máy khổng lồ trên đúng một cardWeights stored in 4-bit NF4, dequantized to BF16 for computation — enough to finetune a 65B model on a single 48 GB GPU
  1. Full · Partial · Parameter-efficient

    Từ toàn phần tới hiệu quả tham sốBa mức dạy lại: cả máy, một phần, một gócFrom full finetuning to parameter efficiency

    Tinh chỉnh toàn phần cập nhật mọi tham số — về kỹ thuật giống hệt huấn luyện, chỉ khác là khởi đầu từ trọng số đã học thay vì trọng số ngẫu nhiên.1 Tinh chỉnh một phần đóng băng phần lớn các lớp và chỉ cập nhật vài lớp cuối; nó giảm bộ nhớ nhưng, theo Huyen, không hiệu quả về tham số.1

    Có ba mức: vặn hết mọi núm, vặn vài núm cuối, hoặc gắn thêm mấy cái núm mới rất nhỏ rồi chỉ vặn chúng. Cách thứ ba là cách khôn nhất. Nhớ nhé: không phải cứ vặn nhiều là học giỏi hơn.

    Full finetuning updates every parameter — technically identical to training, except it starts from learned weights rather than random ones.1 Partial finetuning freezes most layers and updates only the last few; it lowers memory but, in Huyen’s framing, is parameter-inefficient.1

    Thấy ở đâuWhere you see it Nghiên cứu của Houlsby và cộng sự (2019) cho thấy với BERT large, tinh chỉnh một phần cần cập nhật khoảng 25% số tham số mới đạt hiệu năng sánh tinh chỉnh toàn phần trên thước đo GLUE. Ngược lại, chèn hai mô-đun bộ điều hợp vào mỗi khối transformer đạt hiệu năng chênh 0,4% so với toàn phần với chỉ 3% số tham số khả huấn.15 Vặn 25% số núm mới bằng vặn hết. Nhưng gắn thêm núm mới rồi chỉ vặn 3% thì gần như bằng luôn. Houlsby et al. (2019) showed that with BERT large, partial finetuning needs roughly 25% of parameters updated to match full finetuning on GLUE. By contrast, inserting two adapter modules into each transformer block reached within 0.4% of full finetuning using only 3% of the trainable parameters.15

    Cái giá của bộ điều hợp đời đầu

    Nhược điểm của phương pháp Houlsby là tăng độ trễ suy luận: các bộ điều hợp thêm lớp mới, tức thêm bước tính trong lượt truyền tiến. Chính vấn đề này là thứ LoRA giải quyết.1

    Hiệu quả mẫu đi kèm

    Huyen ghi nhận các phương pháp PEFT không chỉ hiệu quả tham số mà còn hiệu quả mẫu: tinh chỉnh toàn phần có thể cần hàng chục nghìn tới hàng triệu ví dụ, trong khi một số phương pháp PEFT cho kết quả tốt với vài nghìn ví dụ.1

  2. LoRA · Low-Rank Adaptation

    LoRA — tách một ma trận lớn thành hai ma trận nhỏChẻ bảng to thành hai bảng nhỏLoRA — split one big matrix into two small ones

    Cho ma trận trọng số W kích thước n × m, LoRA chọn một giá trị r rồi dựng hai ma trận A (n × r) và B (r × m). Tích của chúng, WAB, cùng kích thước với W và được cộng vào W. Trong lúc tinh chỉnh chỉ A và B được cập nhật; W giữ nguyên.14

    Thay vì sửa cả một bảng khổng lồ, ta dựng hai bảng bé xíu, nhân chúng với nhau rồi cộng kết quả vào bảng lớn. Chỉ hai bảng bé được sửa. Nhớ nhé: bảng gốc không hề bị đụng vào, nên sửa sai cũng quay lại được.

    Given a weight matrix W of dimension n × m, LoRA picks a value r and constructs two matrices A (n × r) and B (r × m). Their product WAB has the same dimension as W and is added to it. During finetuning only A and B are updated; W is kept intact.14

    Thấy ở đâuWhere you see it Bài báo LoRA cho thấy với GPT-3, phương pháp này đạt hiệu năng sánh bằng hoặc tốt hơn tinh chỉnh toàn phần trên một số tác vụ, chỉ với khoảng 4,7 triệu tham số khả huấn — tức 0,0027% so với tinh chỉnh toàn phần.14 Chỉ vặn 0,0027% số núm mà kết quả vẫn ngang bằng vặn hết. The LoRA paper showed that for GPT-3 the method matched or beat full finetuning on several tasks using only about 4.7M trainable parameters — 0.0027% of full finetuning.14

    Áp vào ma trận nào

    LoRA thường được áp cho bốn ma trận trong mô-đun chú ý: truy vấn, khóa, giá trị và chiếu đầu ra. Với ngân sách 18 triệu tham số khả huấn trên GPT-3 175B, Hu và cộng sự thấy áp cho cả bốn ma trận ở rank 2 cho kết quả tốt nhất — 73,7 trên WikiSQL và 91,7 trên MultiNLI; nếu chỉ chọn được hai, họ khuyên chọn truy vấn và giá trị.14

    Vì sao nó chạy được

    Nhiều bài báo lập luận rằng LLM tuy nhiều tham số nhưng có intrinsic dimension rất thấp, và tiền huấn luyện ngầm làm giảm chiều nội tại ấy — mô hình được huấn luyện càng tốt thì càng dễ tinh chỉnh bằng ít tham số và ít dữ liệu.116

  3. Multi-LoRA serving · QLoRA

    Tính mô-đun — một mô hình gốc, trăm miếng váMột cỗ máy, trăm miếng vá nhỏModularity — one base model, a hundred patches

    Có hai cách phục vụ mô hình đã tinh chỉnh bằng LoRA: hợp nhất A và B vào W trước khi phục vụ (không thêm độ trễ), hoặc giữ W, A, B tách rời và hợp nhất lúc suy luận (thêm độ trễ nhưng giảm mạnh dung lượng lưu trữ).1 Cách thứ hai còn giúp chuyển giữa các tác vụ nhanh hơn: chỉ cần nạp bộ điều hợp mới thay vì cả ma trận đầy đủ.1

    Hãy tưởng tượng một chiếc áo và nhiều miếng vá khác nhau. Muốn đổi kiểu, chỉ cần gỡ miếng vá này gắn miếng vá kia, không cần may áo mới. Nhớ nhé: giữ miếng vá riêng thì đổi việc rất nhanh.

    There are two ways to serve a LoRA-finetuned model: merge A and B into W before serving (no added latency), or keep W, A, and B separate and merge at inference time (extra latency, far less storage).1 The second also makes task switching faster: you load only the new adapter instead of a full weight matrix.1

    Thấy ở đâuWhere you see it Apple (2024) dùng nhiều bộ điều hợp LoRA để thích ứng cùng một mô hình nền 3 tỉ tham số cho các tính năng iPhone khác nhau, kết hợp lượng tử hóa để chạy tất cả ngay trên thiết bị.1 Điện thoại chỉ chứa một cỗ máy, nhưng làm được nhiều việc nhờ đổi miếng vá. Apple (2024) used multiple LoRA adapters to adapt the same 3B-parameter base model to different iPhone features, combining quantization so all of them fit on-device.1

    QLoRA

    QLoRA (Dettmers và cộng sự, 2023) lưu trọng số ở 4 bit theo định dạng NF4 — dựa trên nhận xét rằng trọng số đã tiền huấn luyện thường phân phối chuẩn quanh trung vị bằng không — rồi giải lượng tử về BF16 khi tính lượt tiến và lượt lùi. Cộng với bộ tối ưu phân trang, kỹ thuật này cho phép tinh chỉnh mô hình 65 tỉ tham số trên một GPU 48 GB.16

    Guanaco và cái giá của NF4

    Họ mô hình Guanaco sinh ra từ QLoRA đạt Elo 1022 theo đánh giá của GPT-4 tháng 5 năm 2023, so với 966 của ChatGPT và 1348 của GPT-4.16 Hạn chế chính: lượng tử hóa NF4 tốn kém, nên QLoRA giảm bộ nhớ nhưng có thể kéo dài thời gian huấn luyện.1

  4. Model merging

    Hợp nhất mô hình — cộng, xếp chồng, nốiGhép nhiều máy thành mộtModel merging — summing, stacking, concatenating

    Nếu tinh chỉnh tạo mô hình riêng bằng cách sửa một mô hình, hợp nhất tạo mô hình riêng bằng cách kết hợp nhiều mô hình. Không bắt buộc phải tinh chỉnh thêm sau khi hợp nhất, nên hợp nhất có thể làm mà không cần GPU — điều khiến nó hấp dẫn với các nhà phát triển độc lập ít tài nguyên tính toán.1

    Thay vì dạy lại một máy, ta lấy hai máy đã giỏi hai việc khác nhau rồi trộn chúng thành một. Cái hay là trộn thì không cần máy tính mạnh. Nhớ nhé: đôi khi ghép lại còn rẻ hơn dạy lại.

    If finetuning creates a custom model by altering one model, merging creates one by combining several. You don’t have to finetune the merged model afterwards, so merging can be done without GPUs — which makes it attractive to indie developers without much compute.1

    Thấy ở đâuWhere you see it Hợp nhất là một cách làm tinh chỉnh đa tác vụ mà không vấp phải quên thảm họa: thay vì huấn luyện tuần tự tác vụ A rồi tác vụ B — khiến mô hình quên A — ta tinh chỉnh song song rồi hợp nhất kết quả.1 Dạy hai việc một lúc thì máy hay quên việc cũ. Dạy riêng rồi ghép lại thì không. Merging is a way to do multi-task finetuning without catastrophic forgetting: instead of training sequentially on task A then task B — where the model forgets A — you finetune in parallel and merge the results.1

    Cộng và cắt tỉa

    Cách cộng gồm tổ hợp tuyến tính (trung bình có trọng số) và nội suy tuyến tính cầu SLERP. Trong bài “TIES-Merging”, Yadav và cộng sự (2023) cho thấy giữ lại 20% tham số vector tác vụ hàng đầu cho hiệu năng sánh với giữ 100% — và cắt tỉa trước khi hợp nhất giúp cải thiện đáng kể chất lượng mô hình cuối.111

    Xếp chồng lớp và nối

    Xếp chồng lấy các lớp từ nhiều mô hình chồng lên nhau; Goliath-120B ghép hai mô hình Llama 2-70B đã tinh chỉnh, lấy 72 trong 80 lớp từ mỗi mô hình. Kim và cộng sự (2023) dùng mở rộng theo chiều sâu để tạo SOLAR 10.7B từ một mô hình 7 tỉ tham số 32 lớp: nhân đôi rồi cộng 16 lớp, còn lại 32 × 2 − 16 = 48 lớp. Nối thì Huyen không khuyến nghị, vì nó không giảm dấu chân bộ nhớ so với phục vụ riêng từng mô hình.112

Ba ngộ nhận thường gặpThree common misconceptions

Ba niềm tin sai lầm mà người đọc lần đầu hay mắc — và điều chương này thật sự nói.

Three beliefs a first-time reader tends to pick up — and what the chapter actually says.

“Tinh chỉnh sẽ dạy mô hình kiến thức mới”“Finetuning teaches the model new facts”

Với các câu hỏi cần thông tin cập nhật, RAG vượt tinh chỉnh trong thí nghiệm của Ovadia và cộng sự — và tinh chỉnh có thể làm tệ đi ảo giác nếu dữ liệu kém chất lượng. Tinh chỉnh sửa hình thức; RAG cung cấp sự thật.17

For questions needing up-to-date information, RAG beat finetuning in Ovadia et al.’s experiments — and finetuning can worsen hallucinations if the data is low quality. Finetuning is for form; RAG is for facts.17

“Tác vụ chuyên ngành cần mô hình chuyên ngành”“Domain tasks need domain models”

BloombergGPT tốn 1,3 triệu giờ GPU A100 và ước tính 1,3–2,6 triệu đô la, nhưng GPT-4-0314 ở chế độ không ví dụ vượt nó trên các thước đo tài chính. Mô hình tổng quát càng mạnh thì càng giỏi cả việc chuyên ngành.19

BloombergGPT cost 1.3 million A100 GPU hours and an estimated $1.3–2.6 million, yet zero-shot GPT-4-0314 outperformed it on financial benchmarks. As general-purpose models get stronger, they get better at domain tasks too.19

“Rank LoRA càng cao càng tốt”“Higher LoRA rank is better”

Chính các tác giả LoRA ngạc nhiên khi thấy tăng r không làm tăng hiệu năng tinh chỉnh; một r nhỏ, khoảng 4 tới 64, thường là đủ, và r quá lớn có thể dẫn tới quá khớp.14

The LoRA authors were themselves surprised that increasing r does not increase finetuning performance; a small r, roughly 4 to 64, is usually sufficient, and too large an r can lead to overfitting.14

Một điểm các nguồn không thống nhất. Về giá trị rank nên chọn, chương này dẫn hai hướng ngược nhau và không gộp chúng lại: Huyen theo quan sát của nhóm LoRA và báo cáo của Databricks rằng tăng r quá một ngưỡng nào đó không cho cải thiện rõ rệt về chất lượng đầu ra, nhưng bà cũng dẫn Raschka (2023), người thấy r = 256 cho kết quả tốt nhất trên các tác vụ của ông. Bà còn ghi chú rằng một số khung như Fireworks giới hạn rank tối đa ở 32, và ngờ rằng đó là ràng buộc phần cứng chứ không phải ràng buộc hiệu năng. Kết luận thực hành của chương: phải thí nghiệm để tìm cặp (r, α) hợp với ca sử dụng của bạn, với tỉ lệ α:r thường nằm giữa 1:8 và 8:1.14

Tự kiểmTự kiểmSelf-check

Bốn câu trước khi tinh chỉnhBốn câu hỏi cho bạnFour questions before you finetune

Không phải để chấm điểm, mà để xác định bạn đang ở đâu trên lộ trình thích ứng mô hình mà chương này vạch ra.

Không phải bài kiểm tra đâu. Chỉ là bốn câu giúp bạn biết mình nên làm gì tiếp theo. Nhớ nhé: trả lời được bốn câu này là bạn đã biết bước kế tiếp.

Not a test — a way to locate yourself on the adaptation path this chapter lays out.

Lỗi của bạn là lỗi thông tin hay lỗi hành vi? Hãy lấy hai mươi câu trả lời sai gần nhất và phân loại: sai vì mô hình không biết, hay sai vì mô hình biết nhưng nói lạc đề và sai định dạng? Nhóm thứ nhất thuộc về RAG, nhóm thứ hai thuộc về tinh chỉnh. Huyen nhấn mạnh nếu có cả hai, hãy bắt đầu bằng RAG vì nó dễ hơn — và bắt đầu RAG bằng tìm kiếm theo từ khóa trước khi đụng tới cơ sở dữ liệu vector.
Bạn đã thí nghiệm prompt đến đâu? Chỉ dẫn đã đủ rõ chưa, ví dụ đã giống dữ liệu thật chưa, chỉ số đo đã được định nghĩa tử tế chưa? Nếu chưa, chi phí tinh chỉnh có thể chỉ đang mua lại thứ một prompt tốt đã cho không. Bà mô tả một mô-típ lặp đi lặp lại: người ta than prompt không hiệu quả, nhưng khi kiểm tra thì thí nghiệm prompt rất sơ sài — và sau khi làm lại cho tử tế thì chất lượng đủ dùng.
Bạn có nhét vừa bộ nhớ không? Nhân thử: số tham số × số byte mỗi giá trị cho trọng số, rồi số tham số khả huấn × 3 × số byte cho gradient và trạng thái Adam. Nếu tổng vượt bộ nhớ của chip bạn có, câu trả lời không phải là mua chip to hơn mà là giảm số tham số khả huấn. Đừng quên phần kích hoạt: công thức nhân 1,2 chỉ đúng khi kích hoạt nhỏ hơn trọng số, còn khi lưu lại để tính gradient thì kích hoạt có thể lấn át hẳn.
Bạn định phục vụ bao nhiêu mô hình? Nếu chỉ một, hợp nhất trọng số LoRA vào mô hình trước khi phục vụ là gọn nhất. Nếu nhiều mô hình cùng chia sẻ một mô hình nền, hãy giữ các bộ điều hợp tách rời — khác biệt về dung lượng lưu trữ là hàng chục lần. Cách chọn phương pháp tinh chỉnh nên tính luôn khâu phục vụ ngay từ đầu, chứ không phải nghĩ tới sau khi đã huấn luyện xong.
Máy sai vì không biết, hay vì nói sai kiểu? Không biết thì cho đọc tài liệu. Nói sai kiểu thì dạy lại.
Bạn đã thử nói chuyện cho khéo chưa? Nhiều khi chỉ cần dặn rõ hơn là xong, không cần dạy lại gì cả.
Máy tính của bạn có đủ chỗ không? Nhân số tham số với số byte là ra. Không đủ chỗ thì sửa ít núm hơn.
Bạn cần bao nhiêu phiên bản? Một thì may luôn vào áo. Nhiều thì giữ riêng từng miếng vá.
Is your failure information-based or behavior-based? Take your last twenty wrong answers and sort them: wrong because the model didn’t know, or wrong because it knew but was irrelevant and malformatted? The first group belongs to RAG, the second to finetuning.
How far have your prompt experiments actually gone? Are the instructions clear, do the examples represent real data, are the metrics well defined? If not, the cost of finetuning may just be buying back what a good prompt would have given for free.
Does it fit in memory? Multiply: parameters × bytes per value for the weights, then trainable parameters × 3 × bytes for gradients and Adam states. If the total exceeds your chip, the answer isn’t a bigger chip — it’s fewer trainable parameters.
How many models will you serve? For just one, merging the LoRA weights into the model before serving is cleanest. For many sharing one base model, keep the adapters separate — the storage difference runs to tens of times.
Đọng lạiĐọng lạiWhat remains
Tinh chỉnh sửa hình thức, RAG cung cấp sự thật. Và mọi kỹ thuật trong chương này — PEFT, LoRA, lượng tử hóa, hợp nhất — đều là một câu trả lời cho cùng một câu hỏi: làm sao học được nhiều nhất trên ít bộ nhớ nhất. Máy không biết thì cho nó đọc. Máy nói sai kiểu thì dạy lại nó. Và mọi mẹo trong bài này đều để trả lời một câu: làm sao dạy được nhiều mà tốn ít chỗ nhớ nhất. Finetuning is for form, RAG is for facts. And every technique in this chapter — PEFT, LoRA, quantization, merging — answers the same question: how to learn the most on the least memory.