Những núm chỉnh engine quan trọng
Phần lớn mặc định engine là lành mạnh cho demo và sai cho dùng thật. Ba bốn núm thay đổi kết cục: độ dài ngữ cảnh, offload GPU, kiểu KV cache, và flash attention. Mọi thứ khác là tinh chỉnh ở biên. Trang này dùng tên flag llama.cpp, kèm tương đương Ollama ở cuối — khái niệm chuyển sang mọi engine.
Độ dài ngữ cảnh: bẫy mặc định im lặng
Các engine xuất xưởng mặc định bảo thủ: llama.cpp lịch sử là 512 rồi 4096, Ollama 2048–4096 tùy phiên bản (tại thời điểm viết OLLAMA_CONTEXT_LENGTH đáp khoảng 4k). Trong khi đó mô hình của bạn có thể hỗ trợ nguyên bản 32k–128k. Dán một tài liệu 20k-token vào ngữ cảnh 4k và một trong hai chuyện xảy ra, cả hai đều tệ: lỗi cứng ("request vượt ngữ cảnh khả dụng") hoặc cắt cụt âm thầm những tin nhắn cũ nhất. Không thông báo lỗi nào tự giải thích cho người mới.
Ví dụ minh họa: bạn nạp một hợp đồng ~12k token cộng một câu hỏi, vào cửa sổ mặc định 4096. Engine giữ nội dung mới nhất, bỏ phần đầu tài liệu, và mô hình tự tin trả lời câu hỏi về nửa sai của tệp. Trông như mô hình ngu; thật ra là prompt bị cắt cụt.
Cách sửa cơ học: truyền kích thước ngữ cảnh tường minh mỗi lần khởi động, theo cỡ prompt thật cộng đầu ra dự kiến, rồi xác minh log khởi động hiển thị n_ctx = 16384 (hoặc gì bạn chọn). Ghi chú tiếng Hàn: văn bản tiếng Hàn thường token hóa thưa hơn tiếng Anh trong cùng tokenizer — một trang tiếng Hàn có thể tốn nhiều token hơn một trang tiếng Anh (xem token) — nên áp lực ngữ cảnh đến sớm hơn bạn nghĩ.
# cái bẫy: mặc định khác theo engine và theo phiên bản
llama-server -m model.gguf # khởi động với n_ctx = 4096 đại khái
# cách sửa: tường minh, và xác minh trong log khởi động
llama-server -m model.gguf -c 16384 # log in: n_ctx = 16384
Offload GPU: n_gpu_layers
-ngl / --n-gpu-layers đặt bao nhiêu tầng transformer sống trên GPU; dùng số lớn như 99 (hoặc -1 nơi được hỗ trợ) để nghĩa là "tất cả". Triệu chứng của offload một phần rất đặc trưng: 3–10 tok/s trên máy có GPU khá. Xác minh bằng dòng log nạp, ví dụ offloaded 33/33 layers to GPU. Nếu VRAM không nắm nổi mô hình cộng KV cache, các lựa chọn trung thực là mức lượng hóa nhỏ hơn, KV cache lượng hóa, hoặc ít tầng offload hơn — nhưng biết rằng mỗi tầng để lại trên CPU kéo cả vòng lặp về nhịp CPU (xem tốc độ). Offload nửa vời một mô hình gần vừa thường tệ hơn hạ một nấc lượng hóa.
Kiểm tra tỉnh táo theo chiều ngược lại nữa: -ngl 0 ép thuần CPU, và nếu nó chạy bằng tốc độ cấu hình "GPU" của bạn, thì GPU đã chẳng làm gì.
Luồng (chỉ chế độ CPU)
Ở chế độ CPU đặt -t bằng số lõi vật lý, không phải luồng SMT: trên chip 8-lõi/16-luồng, dùng 8. Nhiều luồng hơn lõi vật lý gây tranh chấp và làm decode chậm. Xử lý prompt có núm riêng (--threads-batch); cùng quy tắc áp dụng.
Bộ nhớ: mmap và --mlock
llama.cpp memory-map tệp mô hình theo mặc định: khởi động nhanh và tầng không đụng tới không tốn RAM. Cái giá là HĐH có thể đẩy trang ra dưới áp lực bộ nhớ, gây những khoảng dừng bí ẩn nhiều giờ vào một phiên. --mlock ghim mô hình để không bị đẩy ra — hữu dụng trên máy bận rộn, với cái giá khóa mấy gigabyte khỏi mọi thứ khác. Ollama xử lý việc này nội bộ; người dùng llama.cpp trần trên máy dùng chung nên biết flag này tồn tại.
Flash attention
-fa / --flash-attn giảm lưu lượng bộ nhớ trong bước attention và bật (hoặc auto) mặc định trong bản llama.cpp gần đây. Nó quan trọng nhất ở ngữ cảnh dài, và lượng hóa cache V yêu cầu nó trong bản hiện tại. Nếu một bản build mới cư xử sai trên backend GPU của bạn, đây là flag đầu tiên để gạt — và trên bất kỳ bản build gần đây, việc đầu tiên cần kiểm tra là nó không tự tắt âm thầm.
Lượng hóa KV cache
--cache-type-k q8_0 --cache-type-v q5_0 lưu KV cache ở 8-bit/5-bit thay vì số thực 16-bit, cắt bộ nhớ KV khoảng một nửa hoặc hơn với chi phí chất lượng nhỏ — nghĩa là ngữ cảnh dài hơn trong cùng VRAM. KV cache là gì và phép tính kích thước chính xác: KV cache.
Lợi điển hình: K q8_0 cộng V q5_0 xấp xỉ giảm một nửa kích thước KV với thay đổi gần như không thấy trên tác vụ chat — xác minh trên khối lượng công việc của bạn trước khi tin.
Kích thước lô prompt
-b / --batch-size là kích thước mảnh cho prefill (xử lý prompt). Lô lớn hơn nghĩa là thời gian đến token đầu nhanh hơn trên prompt dài, đổi bằng chút VRAM đỉnh. Nếu bản dán dài cảm giác chậm khởi động, tăng nó trước khi đổ lỗi mô hình.
Giãn ngữ cảnh: rope scaling và YaRN
--rope-scaling yarn --rope-factor 2.0 giãn một mô hình nguyên-bản-32k về phía 64k bằng cách co giãn lại tần số vị trí. Nó hoạt động, với dốc chất lượng: suy thoái nhỏ gần cửa sổ nguyên bản và lớn dần khi bạn giãn qua nó. Với bất cứ gì quan trọng, ưu tiên mô hình có ngữ cảnh nguyên bản đã phủ nhu cầu của bạn hơn là giãn một cửa sổ nhỏ hơn (xem chọn mô hình).
Tại thời điểm viết Ollama không lộ rope scaling trong Modelfile của nó; thí nghiệm giãn-ngữ-cảnh nghĩa là khởi động llama.cpp trực tiếp.
Một dòng khởi động có chú thích
llama-server -m qwen3-8b-q4_k_m.gguf --host 127.0.0.1 --port 8080 -c 16384 -ngl 99 -fa on -b 2048 --cache-type-k q8_0 --cache-type-v q5_0
| Flag | Nó làm gì | Cẩn thận |
|---|---|---|
-c 16384 |
Cửa sổ ngữ cảnh (prompt + đầu ra chia chung) | Không bao giờ dựa vào mặc định; đặt tường minh |
-ngl 99 |
Tầng offload lên GPU (99 = tất cả) | Kiểm tra dòng log offloaded N/N |
-fa on |
Flash attention | Mặc định auto trong bản gần đây; cần cho lượng hóa cache V |
-b 2048 |
Lô xử lý prompt | Nâng VRAM đỉnh nhẹ; giúp TTFT |
--cache-type-k/-v |
dtype KV cache | Lượng hóa V yêu cầu flash attention |
--host 127.0.0.1 |
Chỉ buộc loopback | Quy tắc phơi bày ở phục vụ |
Tương đương Ollama
# theo mô hình, trong Modelfile:
PARAMETER num_ctx 16384
PARAMETER num_gpu 99
# hoặc toàn cục, trước khi dịch vụ khởi động:
export OLLAMA_CONTEXT_LENGTH=16384
export OLLAMA_FLASH_ATTENTION=1
export OLLAMA_KV_CACHE_TYPE=q8_0
Ollama ghi cảnh báo khi một request vượt num_ctx — đọc log một lần sau khi đổi bất cứ thứ nào trong số này. Thay đổi qua biến môi trường yêu cầu khởi động lại dịch vụ.
Để xem Ollama thực sự áp dụng gì: ollama show model --modelfile in các tham số đã giải, và OLLAMA_DEBUG=1 khiến dịch vụ ghi ngữ cảnh và số offload thật.
Sampler không phải núm chỉnh engine
Temperature, top-p, phạt lặp lại — chúng định hình token nào được chọn, không phải nhanh bao nhiêu hay vừa bao nhiêu trong bộ nhớ. Chúng sống ở lấy mẫu. Nếu đầu ra lạ mà tốc độ và bộ nhớ ổn, bạn cần trang kia, không phải trang này.
Quy tắc
Đặt ngữ cảnh tường minh. Xác minh bằng một dòng log — n_ctx = ... và offloaded N/N layers — mỗi lần đổi cấu hình khởi động. Mặc định được chỉnh để bản demo đầu tiên khởi động được, không phải để khối lượng công việc của bạn được phục vụ.
llm_load_tensors: offloaded 33/33 layers to GPU
n_ctx = 16384
Cả hai dòng in trong vài giây sau khởi động. Grep chúng một lần và cấu hình ngừng là truyền thuyết.
Liên quan: Tốc độ · KV cache · Lấy mẫu · Phục vụ endpoint