localaiforum
Đăng nhập
Hướng dẫn › Làm việc với mô hình

Khắc phục sự cố: triệu chứng → nguyên nhân → cách sửa

Suy luận cục bộ thất bại theo khuôn mẫu. Cùng chục triệu chứng chiếm gần hết các câu hỏi cầu cứu, và mỗi cái có một nguyên nhân nhàm chán và cách sửa hai phút. Quét bảng, áp cách sửa, rồi đọc các con số xác nhận bạn thật sự đã sửa.

Bảng chẩn đoán

Triệu chứng Nguyên nhân khả dĩ Cách sửa
Đầu ra chứa token vai trò (user:, `< im_start >`)
Trả lời rỗng tức thì Template dựng một chat "hoàn tất", hoặc token EOS sai Sửa template; kiểm tra EOS: prompting
Lặp lại câu hỏi thay vì trả lời Mô hình base, không phải instruct Dùng GGUF instruct/chat
Hết bộ nhớ lúc nạp Trọng số + lượng hóa vượt VRAM Lượng hóa nhỏ hơn hoặc mô hình nhỏ hơn: toán VRAM
Hết bộ nhớ giữa chừng sinh KV cache lớn quá dư địa Ngữ cảnh ngắn hơn, KV cache q8_0: KV cache
1–3 tok/s dù có GPU Tầng vẫn trên CPU Offload toàn bộ (n_gpu_layers): tham số engine
Token đầu chậm, luồng sau nhanh Chặn-bở-prefill: prompt rất dài Rút ngắn prompt, gộp lô, prefill nhanh hơn: tốc độ
Lặp vô tận, vòng cụm từ Sampler quá dễ dãi, phạt tắt temp ≤ 0.8, repeat_penalty 1.05–1.1: lấy mẫu
Đầu ra tiếng Hàn vô nghĩa hoặc cứng ngắc Mô hình yếu tiếng Hàn Các họ đa ngôn ngữ (Qwen, Gemma): các họ mô hình
Đầu ra cắt cụt giữa câu Cửa sổ ngữ cảnh đầy hoặc max_tokens quá thấp Cắt ngữ cảnh hoặc nâng giới hạn đầu ra
JSON không hợp lệ từ mô hình tốt Lấy mẫu tự do Decode ràng buộc: đầu ra có cấu trúc
Mô hình lờ chỉ dẫn của bạn Lost in the middle trên prompt dài Mục tiêu trước, phần tải sau, nhắc lại yêu cầu: prompting
Sập hoặc coredump lúc nạp Tải về bị hỏng Xác minh checksum, tải lại

Đọc theo triệu-chứng-trước, không nguyên-nhân-trước: khớp thứ bạn thấy, áp cách sửa, đo lại. Đa số báo cáo "mô hình tôi hỏng" kết thúc ở hàng 1, 2, hoặc 6.

Năm phút kiểm tra trước khi vào sâu

Trước khi gỡ lỗi sâu, thu thập sự thật:

nvidia-smi --query-gpu=name,memory.total,memory.used --format=csv   # GPU + VRAM
ls -lh model.gguf                                                   # cỡ so với VRAM
llama-server --version                                              # phiên bản engine

Nếu tệp mô hình lớn hơn VRAM trống, hàng 4 là câu trả lời của bạn và không flag nào cứu nổi. Nếu memory.used leo đều trong lúc sinh, đó là KV cache, không phải rò rỉ.

Chuẩn bình thường trông thế nào

Trước khi gỡ lỗi hiệu năng, biết mức ước chừng. Tốc độ decode cho mô hình 7–8B Q4_K_M, lô 1:

Phần cứng Decode tok/s
GPU tầm trung (hạng RTX 3060/4060) 30–60
GPU cao cấp (hạng RTX 3090/4090) 100–150
Apple M-series (bộ nhớ hợp nhất) 20–40
Chỉ CPU (8 lõi hiện đại) 3–8

Hai công thức giải thích phần lớn:

decode tok/s ≈ băng thông bộ nhớ (GB/s) ÷ kích thước mô hình (GB)
VRAM cần    ≈ trọng số + KV cache + 1–2 GB phụ phí

Một bản lượng hóa 7B 4.5 GB trên card 288 GB/s chạm trần gần 64 tok/s lý thuyết; kỳ vọng ~45–55 thực. Nếu bạn trong khoảng 2 lần của bảng, phần cứng không phải con bug.

Thời gian đến token đầu (TTFT) nên dưới một giây rõ rệt cho prompt ngắn; nó tăng theo độ dài prompt chia thông lượng prefill (chạy 10–100 lần tốc độ decode). Một prompt 10k-token mất 20 s trước token đầu là chặn-bở-prefill, không phải hỏng.

Kế toán VRAM: nếu trọng số nạp ngon mà bạn OOM sau đó, đó là KV cache hoặc độ dài ngữ cảnh, không phải mức lượng hóa — KV cache.

Quy trình: hoán đổi một biến số

Bug trốn khi bạn đổi hai thứ cùng lúc. Cô lập dọc chuỗi này — mô hình → engine → cấu hình → prompt:

  1. Chuẩn. Mô-hình-biết-tốt, engine-biết-tốt, flag mặc định. Chat chạy không? Vậy chồng tầng ổn.
  2. Đổi mô hình (cùng engine, cùng flag). Vỡ? Đó là tệp hoặc template của nó.
  3. Đổi engine (cùng mô hình). Vỡ? Bug engine hoặc dịch flag.
  4. Chia đôi flag. Phục hồi mặc định, thêm lại flag mỗi lần một cái đến khi vỡ.
  5. Đổ prompt đã dựng. Khi đầu ra lạ-nhưng-vẫn-chạy, template đã dựng là nơi sự thật cư ngụ.

Ghi chép khi đi — "chạy ở temp 0.8, vỡ với min_p 0.2" là một chẩn đoán; "thử đủ thứ, vẫn tệ" thì không.

Cách hỏi trợ giúp cho tử tế

Một bài cầu cứu tốt là một báo cáo phòng thí nghiệm. Gồm:

  • Tệp mô hình: tên chính xác, mức lượng hóa, nguồn (qwen2.5-7b-instruct-q4_k_m.gguf, repo nào).
  • Engine và phiên bản: ngày build llama.cpp, phiên bản Ollama, bản phát hành vLLM — engine đổi hằng tuần.
  • Flag hoặc cuộc gọi API chính xác: nguyên dòng lệnh hoặc thân request, không diễn đạt lại.
  • Phần cứng: GPU + VRAM (hoặc Mac + RAM), CPU nếu nó gánh tầng.
  • Số quan sát: tok/s, TTFT, VRAM đã dùng, và nguyên văn lỗi nếu có.
  • Những gì đã thử và cái gì đổi nhờ đó.

Bộ khung sao-chép-dán:

Model:    qwen2.5-7b-instruct-q4_k_m.gguf (bartowski repo)
Engine:   llama.cpp b4321 (llama-server)
Flags:    -ngl 99 -c 8192 --temp 0.7
Hardware: RTX 4060 8GB / Ryzen 7 / 32GB RAM
Observed: loads in 21s, ~35 tok/s, TTFT ~1.2s, then OOM at ~6k ctx
Tried:    -c 4096 → no crash; q8_0 KV → no crash

Với sáu sự kiện đó, đa số vấn đề ánh xạ vào một hàng của bảng trên chỉ sau một câu trả lời. Diễn đàn này tồn tại đúng cho những bài thế này — mang báo cáo phòng thí nghiệm đến và bạn sẽ nhận được cách sửa.

Liên quan: tham số engine · toán vram · kv cache · lấy mẫu