VOOZH about

URL: https://huggingface.co/anhnlq/mistral-7b-cybersecurity-mixlora-GGUF

⇱ anhnlq/mistral-7b-cybersecurity-mixlora-GGUF · Hugging Face


Mistral-7B Cybersecurity MixLoRA (Q4_K_M GGUF)

Mô hình ngôn ngữ chuyên ngành An toàn thông tin, fine-tune từ mistralai/Mistral-7B-Instruct-v0.3 bằng QLoRA / RS-LoRA, đóng gói ở định dạng GGUF (Q4_K_M) để chạy bằng llama.cpp hoặc Ollama trên CPU/GPU phổ thông.

Internship project — Large Language Model for Cybersecurity — HCMUT (BK TP.HCM), học kỳ 242, 2024–2025. SV: Nguyễn Hoàng Dung (2252109). GVHD: Nguyễn Lê Quốc Anh.

Tóm tắt

Hạng mục Giá trị
Base model mistralai/Mistral-7B-Instruct-v0.3 (load 4-bit qua unsloth/...-bnb-4bit)
Kỹ thuật QLoRA + RS-LoRA (use_rslora=true)
LoRA config r=96, lora_alpha=128, lora_dropout=0, bias=none
target_modules q,k,v,o_proj + gate,up,down_proj
Quantization train bitsandbytes NF4, compute_dtype=bfloat16, double-quant
Max seq length 16384
Optimizer adamw_8bit, scheduler linear, warmup_ratio=0.03
Final train loss ~0.2311
File GGUF mistral_mixlora_q4_k_m.gguf — Q4_K_M, ~4.07 GB, GGUF v3
Arch / params / ctx llama / 7.2B / 32768

Lưu ý: báo cáo PDF mô tả phiên bản 2-adapter merge (r=64, alpha=128) trên When2Call + VulZoo-CWE. File GGUF công bố ở đây là bản MixLoRA / RS-LoRA (r=96) hội tụ tốt hơn (loss ≈ 0.2311) — đó là lý do tên thư mục 0.2311_Q4_MixLora_K_M.

Dữ liệu huấn luyện

  • nvidia/When2Call (sft_train, ~15k mẫu): năng lực function-calling / phân loại & điều phối incident response.
  • NUS-Curiosity/VulZoo — CWE subset (1.634 loại CWE): kiến thức điểm yếu phần mềm (mô tả, nền tảng, ví dụ, biện pháp khắc phục, quan hệ CWE/CVE).

Mục đích sử dụng

Trợ lý kiểm thử xâm nhập theo OWASP ASTG: gợi ý chiến lược, payload, công cụ (nmap, nikto, sqlmap, Burp, ffuf…), kết quả kỳ vọng và biện pháp khắc phục, cùng tri thức CWE/CVE. Chỉ dùng cho kiểm thử được cấp phép / mục đích giáo dục & phòng thủ.

Prompt format (Mistral Instruct)

<s>[INST] {system}\n\n{user_prompt} [/INST]

Cách dùng

llama.cpp

llama-cli -m mistral_mixlora_q4_k_m.gguf -c 8192 \
 -p "[INST] What is CWE-502: Deserialization of Untrusted Data? [/INST]"

Ollama (kèm Modelfile pentester trong repo)

ollama create mistral-cyber-mixlora:0.2311-q4km -f Modelfile
ollama run mistral-cyber-mixlora:0.2311-q4km "Analyze https://target/search?q=test for SQLi"

Python (llama-cpp-python)

from llama_cpp import Llama
llm = Llama(model_path="mistral_mixlora_q4_k_m.gguf", n_ctx=8192)
out = llm("[INST] Explain CWE-89 and how to remediate it [/INST]", max_tokens=512)
print(out["choices"][0]["text"])

Thông số sinh khuyến nghị (theo Modelfile)

temperature=0.25, top_p=0.85, top_k=35, repeat_penalty=1.18, num_ctx=8192.

Hạn chế

  • Đánh giá chủ yếu bằng training loss + định tính; chưa có benchmark chuẩn / human eval quy mô. Có thể bịa CVE/CWE (hallucination) — luôn kiểm chứng.
  • Q4_K_M giảm chất lượng nhẹ so với FP16; có sẵn bản mistral_mixlora.gguf (FP16) nếu cần.

Trích dẫn

@misc{dung2025mistralcyber,
 title = {Large Language Model for Cybersecurity: Mistral-7B MixLoRA},
 author = {Nguyen Hoang Dung and Nguyen Le Quoc Anh},
 year = {2025},
 school = {Ho Chi Minh City University of Technology (HCMUT)},
 note = {Internship project, GalaxyOne}
}

Benchmark Results (đo thực tế) (mistral_mixlora_q4_k_m.gguf)

Thực thi thực tế ngày 2026-06-14 bằng llama.cpp (build b1-8ed274e, ggml 0.15.1). File đo: models/mistral_mixlora_q4_k_m.gguf — Q4_K_M, 4,372,815,392 bytes (~4.07 GiB), GGUF v3, arch llama, 7.25B params, ctx tối đa 32768.

4.1 Môi trường benchmark

Thành phần Chi tiết
CPU AMD Ryzen 7 3800X (8C/16T)
RAM 30 GiB
GPU NVIDIA GeForce RTX 5060 Ti 16 GB (Blackwell, compute capability 12.0)
Driver / CUDA runtime 580.159.03 / CUDA 13.0
CUDA toolkit (build) 12.4 — build llama.cpp với CMAKE_CUDA_ARCHITECTURES=90 (PTX), driver JIT sang sm_120
llama.cpp commit 8ed274e, target: llama-bench / llama-perplexity / llama-cli

4.2 Tốc độ suy luận (llama-bench, prompt 512 tok, gen 128 tok, trung bình 5 lần)

Backend Prefill (pp512) Decode (tg128)
CPU (16 threads) 47.49 ± 0.56 t/s 4.27 ± 0.06 t/s
GPU (CUDA, -ngl 99) 3730.05 ± 145.96 t/s 89.86 ± 0.07 t/s

→ GPU nhanh hơn CPU ~78× ở prefill và ~21× ở decode. Model 4 GB nạp trọn vào 16 GB VRAM.

4.3 Perplexity (chất lượng ngôn ngữ tổng quát)

  • Dataset: WikiText-2 raw (wiki.test.raw), n_ctx=512, 642 chunks, GPU.
  • Final estimate: PPL = 6.6085 ± 0.03883

Đây là PPL trên văn bản tiếng Anh tổng quát. Mức ~6.6 (ctx 512) cho thấy model vẫn giữ năng lực ngôn ngữ nền sau khi fine-tune chuyên ngành (không bị suy thoái thảm khốc). Lưu ý: PPL tính ở ctx=512; nếu đo ở ctx lớn hơn (2048+) giá trị sẽ thấp hơn — khi so sánh giữa các bản (FP16 vs Q4, base vs finetune) phải giữ cùng ctx và cùng file test.

4.4 Chất lượng theo domain (Domain QA, GPU, temp=0.25/top_p=0.85/top_k=35, gen ≤320 tok)

Bộ 5 câu hỏi CWE + incident response. Trích kết quả (đã cắt ở 320 token):

Q1 — What is CWE-502 (Deserialization of Untrusted Data)?

Mô tả đúng bản chất lỗi deserialization untrusted → RCE; gợi ý công cụ ysoserial (gadget chain CommonsCollections), Burp Intruder fuzzing, payload Content-Type: application/x-java-serializable. Cấu trúc theo Strategy/Payload/Tools/Explanation/Expected Outcome. ✔ Chính xác kỹ thuật.

Q2 — Explain CWE-89 (SQL Injection) + 3 remediations.

Giải thích thiếu sanitize input; payload ' UNION SELECT NULL--; tools sqlmap, Burp; remediation: parameterized queries, least-privilege, WAF. ✔ Đúng trọng tâm.

Q3 — CWE-79 (XSS) và vai trò output encoding.

Nêu đúng cơ chế: encode </> thành &lt;/&gt; để vô hiệu script; payload <script>alert('XSS')</script>; tools OWASP ZAP, Burp; remediation OWASP Java Encoder. ✔ Đúng.

Q4 — Web server đang bị DDoS, liên hệ ai & xử lý ngay?

Khuyến nghị liên hệ hosting/network team, chặn IP bằng iptables -A INPUT -s <ip> -j DROP, rate-limit bằng nginx limit_req, load balancing. ✔ Thể hiện năng lực incident-response (When2Call).

Q5 — Phân tích URL …/search?q=test cho SQLi.

Chọn chiến lược UNION-based, payload ' UNION SELECT NULL--, lệnh curl đã URL-encode + sqlmap -u … --tables, remediation đầy đủ 3 lớp. ✔ Áp dụng đúng vào mục tiêu cụ thể.

Nhận xét tổng hợp: Model bám đúng template OWASP ASTG (Strategy → Payload → Tools → Explanation → Expected Outcome → Remediation), kết hợp được tri thức CWE (từ VulZoo) và phản ứng theo tình huống (từ When2Call). Hạn chế quan sát: payload SQLi đôi khi lặp lại mẫu ' UNION SELECT NULL-- (đa dạng thấp); cần kiểm chứng thủ công trước khi dùng. Output bị cắt ở mốc 320 token (do -n 320), tăng num_predict nếu cần phần Remediation đầy đủ.

4.5 Chấm điểm tự động: Kiến thức & Khả năng chọn/gọi tools

Harness grade_bench.py (chạy GPU, temp=0.2). Chấm tự động bằng regex khớp đáp án đúng.

A. Knowledge — tra cứu CWE-ID → tên weakness (12 câu)

Kết quả Điểm
Đúng 1 / 12 = 8.3 %

Ví dụ bịa sai (hallucination) đáng lưu ý:

Hỏi Đáp án đúng Model trả lời
CWE-89 SQL Injection "improper neutralization of OS commands" ✗
CWE-79 Cross-site Scripting "Buffer Overflow" ✗
CWE-502 Deserialization of Untrusted Data "Insecure Permissions" ✗
CWE-78 OS Command Injection "Insecure Deserialization" ✗
CWE-434 Unrestricted Upload of File "Uncontrolled… upload" ✓

Phát hiện quan trọng: model nhớ phần mô tả lỗi (khi tên CWE có sẵn trong câu hỏi — xem 4.4, trả lời rất tốt) nhưng KHÔNG nhớ ánh xạ số hiệu CWE → tên. Nguyên nhân: dữ liệu CWE từ VulZoo được học theo dạng mô tả/giải thích, thiếu cặp huấn luyện "CWE-XX = tên". Đây chính là điểm cần bổ sung dữ liệu nếu muốn dùng model để tra cứu theo ID.

B. Tool selection / function-calling — chọn đúng công cụ cho nhiệm vụ (10 câu)

Kết quả Điểm
Đúng (chấm chặt) 8 / 10 = 80 %
Nhiệm vụ Tool kỳ vọng Model KQ
Tự động khai thác SQLi sqlmap sqlmap
Fingerprint web stack whatweb/nmap nmap
Brute-force thư mục ffuf/gobuster/dirb dirb
Quét lỗ hổng web nikto/ZAP ZAP
Sửa/intercept HTTP Burp Burp
Tìm exploit công khai searchsploit/metasploit Nessus ✗*
Bắt gói mạng wireshark/tcpdump Wireshark
Phát hiện WAF wafw00f nmap http-waf-detect ✗*
Port scan nmap nmap
Test reflected XSS xsstrike/dalfox/burp Burp Repeater

*2 ca "fail" thực ra là câu trả lời hợp lý về kỹ thuật (Nessus tìm lỗ hổng/exploit; nmap --script http-waf-detect phát hiện WAF), chỉ là không trùng tool kỳ vọng cứng. Nếu chấm theo "giải pháp đúng" thì năng lực chọn tool ~90–100 %. Model luôn xuất đúng format Strategy/Payload/Tools → khả năng gọi tools (function-calling) tốt — phù hợp mục tiêu When2Call.

Tổng kết điểm

Trục Điểm Đánh giá
Knowledge (CWE ID→tên) 8.3 % ❌ Yếu — cần bổ sung dữ liệu ánh xạ ID
Knowledge (mô tả khi có tên, xem 4.4) tốt (định tính)
Tool selection / function-calling 80 % (≈90 %+ nếu chấm linh hoạt) ✔ Mạnh
Perplexity (WikiText-2, ctx512) 6.61 ✔ Giữ năng lực nền

4.6 Cách tái lập

# Build (GPU Blackwell qua PTX JIT; bỏ 2 cờ CUDA nếu chạy CPU)
git clone --depth 1 https://github.com/ggml-org/llama.cpp && cd llama.cpp
cmake -B build -DGGML_CUDA=ON -DCMAKE_CUDA_ARCHITECTURES=90 -DCMAKE_BUILD_TYPE=Release
cmake --build build -j --target llama-bench llama-perplexity llama-cli

GGUF=models/mistral_mixlora_q4_k_m.gguf
# (1) tốc độ
./build/bin/llama-bench -m $GGUF -p 512 -n 128 -ngl 99 -r 5
# (2) perplexity (wikitext-2-raw/wiki.test.raw)
./build/bin/llama-perplexity -m $GGUF -f wiki.test.raw -ngl 99 -c 512
# (3) domain QA (single-turn; bản llama.cpp mới dùng -st thay cho -no-cnv)
./build/bin/llama-cli -m $GGUF -ngl 99 -c 4096 -n 320 -st --no-warmup \
 --temp 0.25 --top-p 0.85 --top-k 35 --repeat-penalty 1.18 \
 -sys "You are an expert penetration tester ..." -p "What is CWE-502?"

Lưu ý phiên bản: llama.cpp mới đã bỏ -no-cnv (báo lỗi "use llama-completion instead"); dùng -st/--single-turn. Máy không có unzip → giải nén wikitext bằng python3 -c "import zipfile; ...".

Downloads last month
187
GGUF
Model size
7B params
Architecture
llama
Hardware compatibility
Log In to add your hardware

4-bit

Model tree for anhnlq/mistral-7b-cybersecurity-mixlora-GGUF

Quantized
(263)
this model

Dataset used to train anhnlq/mistral-7b-cybersecurity-mixlora-GGUF