Text Generation
PEFT
TensorBoard
Safetensors
English
unsloth
lora
qlora
vulnerability-detection
security
code-analysis
cybersecurity
ultival
adapter
conversational
Instructions to use starsofchance/Mistral-Unsloth-QLoRA-adapter with libraries, inference providers, notebooks, and local apps. Follow these links to get started.
- Libraries
- PEFT
How to use starsofchance/Mistral-Unsloth-QLoRA-adapter with PEFT:
from peft import PeftModel from transformers import AutoModelForCausalLM base_model = AutoModelForCausalLM.from_pretrained("mistralai/Ministral-8B-Instruct-2410") model = PeftModel.from_pretrained(base_model, "starsofchance/Mistral-Unsloth-QLoRA-adapter") - Notebooks
- Google Colab
- Kaggle
- Local Apps Settings
- Unsloth Studio
How to use starsofchance/Mistral-Unsloth-QLoRA-adapter with Unsloth Studio:
Install Unsloth Studio (macOS, Linux, WSL)
curl -fsSL https://unsloth.ai/install.sh | sh # Run unsloth studio unsloth studio -H 0.0.0.0 -p 8888 # Then open http://localhost:8888 in your browser # Search for starsofchance/Mistral-Unsloth-QLoRA-adapter to start chatting
Install Unsloth Studio (Windows)
irm https://unsloth.ai/install.ps1 | iex # Run unsloth studio unsloth studio -H 0.0.0.0 -p 8888 # Then open http://localhost:8888 in your browser # Search for starsofchance/Mistral-Unsloth-QLoRA-adapter to start chatting
Using HuggingFace Spaces for Unsloth
# No setup required # Open https://huggingface.co/spaces/unsloth/studio in your browser # Search for starsofchance/Mistral-Unsloth-QLoRA-adapter to start chatting
Load model with FastModel
pip install unsloth from unsloth import FastModel model, tokenizer = FastModel.from_pretrained( model_name="starsofchance/Mistral-Unsloth-QLoRA-adapter", max_seq_length=2048, )
| base_model: mistralai/Ministral-8B-Instruct-2410 | |
| tags: | |
| - unsloth | |
| - lora | |
| - qlora | |
| - vulnerability-detection | |
| - security | |
| - code-analysis | |
| - cybersecurity | |
| - ultival | |
| - peft | |
| - adapter | |
| language: | |
| - en | |
| license: apache-2.0 | |
| library_name: peft | |
| pipeline_tag: text-generation | |
| # UltiVal: Ministral-8B QLoRA Adapter for Vulnerability Detection | |
| This is a **QLoRA adapter** fine-tuned from **Ministral-8B-Instruct-2410** for detecting security vulnerabilities in source code as part of the **UltiVal** project. | |
| ## π¨ Important Note | |
| This is a **LoRA adapter**, not a standalone model. You must load it together with the base model `mistralai/Ministral-8B-Instruct-2410`. | |
| ## π Model Details | |
| - **Base Model**: `mistralai/Ministral-8B-Instruct-2410` | |
| - **Adapter Type**: QLoRA (4-bit Low-Rank Adaptation) | |
| - **Training Framework**: Unsloth | |
| - **Task**: Security vulnerability detection in source code | |
| - **Model Size**: ~334MB (adapter only) | |
| - **Context Length**: 2048 tokens | |
| - **Languages**: Multi-language code analysis (Python, JavaScript, Java, C/C++, etc.) | |
| ## π― Training Configuration | |
| | Parameter | Value | | |
| |-----------|--------| | |
| | **Training Steps** | 6,000 (best checkpoint) | | |
| | **Total Steps** | 6,184 | | |
| | **Validation Loss** | 0.5840 (lowest achieved at step 6000) | | |
| | **Final Training Loss** | 0.4081 | | |
| | **Epochs** | 2 | | |
| | **Learning Rate** | 2e-4 β 1.76e-7 (cosine schedule) | | |
| | **Batch Size** | 8 (2 Γ 4 gradient accumulation) | | |
| | **Sequence Length** | 2048 tokens | | |
| | **LoRA Rank** | 32 | | |
| | **LoRA Alpha** | 32 | | |
| | **LoRA Dropout** | 0.0 | | |
| | **Weight Decay** | 0.01 | | |
| | **Warmup Steps** | ~5% of total steps | | |
| ### Target Modules | |
| ``` | |
| q_proj, k_proj, v_proj, o_proj, gate_proj, up_proj, down_proj | |
| ``` | |
| ## π§ Usage | |
| ### Option 1: Using Unsloth (Recommended) | |
| ```python | |
| from unsloth import FastLanguageModel | |
| import torch | |
| # Load base model | |
| model, tokenizer = FastLanguageModel.from_pretrained( | |
| model_name="mistralai/Ministral-8B-Instruct-2410", | |
| max_seq_length=2048, | |
| dtype=None, | |
| load_in_4bit=True, | |
| ) | |
| # Add LoRA configuration | |
| model = FastLanguageModel.get_peft_model( | |
| model, | |
| r=32, | |
| target_modules=["q_proj", "k_proj", "v_proj", "o_proj", | |
| "gate_proj", "up_proj", "down_proj"], | |
| lora_alpha=32, | |
| lora_dropout=0, | |
| bias="none", | |
| use_gradient_checkpointing="unsloth", | |
| random_state=3407, | |
| ) | |
| # Load the trained adapter | |
| model.load_adapter("starsofchance/Mistral-Unsloth-QLoRA-adapter") | |
| # Enable inference mode | |
| FastLanguageModel.for_inference(model) | |
| ``` | |
| ### Option 2: Using Transformers + PEFT | |
| ```python | |
| from transformers import AutoTokenizer, AutoModelForCausalLM | |
| from peft import PeftModel | |
| import torch | |
| # Load base model | |
| base_model = AutoModelForCausalLM.from_pretrained( | |
| "mistralai/Ministral-8B-Instruct-2410", | |
| torch_dtype=torch.float16, | |
| device_map="auto", | |
| load_in_4bit=True | |
| ) | |
| tokenizer = AutoTokenizer.from_pretrained("mistralai/Ministral-8B-Instruct-2410") | |
| # Load LoRA adapter | |
| model = PeftModel.from_pretrained(base_model, "starsofchance/Mistral-Unsloth-QLoRA-adapter") | |
| ``` | |
| ## π» Inference Example | |
| ```python | |
| # Example: SQL Injection Detection | |
| code_snippet = ''' | |
| def authenticate_user(username, password): | |
| query = "SELECT * FROM users WHERE username='" + username + "' AND password='" + password + "'" | |
| cursor.execute(query) | |
| return cursor.fetchone() | |
| ''' | |
| messages = [ | |
| {"role": "user", "content": f"Analyze this code for security vulnerabilities:\n\n{code_snippet}"} | |
| ] | |
| # Tokenize and generate | |
| input_ids = tokenizer.apply_chat_template( | |
| messages, | |
| add_generation_prompt=True, | |
| return_tensors="pt" | |
| ).to(model.device) | |
| outputs = model.generate( | |
| input_ids, | |
| max_new_tokens=512, | |
| do_sample=False, | |
| pad_token_id=tokenizer.eos_token_id, | |
| temperature=0.1 | |
| ) | |
| response = tokenizer.decode(outputs[0][len(input_ids[0]):], skip_special_tokens=True) | |
| print(response) | |
| ``` | |
| ### Expected Output | |
| ``` | |
| This code contains a critical SQL injection vulnerability. The user input (username and password) | |
| is directly concatenated into the SQL query without any sanitization or parameterization. | |
| **Vulnerability Type**: SQL Injection (CWE-89) | |
| **Severity**: High | |
| **Location**: Line 2, query construction | |
| **How to exploit**: An attacker could input malicious SQL code like: | |
| - Username: `admin' --` | |
| - Password: `anything` | |
| **Secure fix**: Use parameterized queries: | |
| ```python | |
| def authenticate_user(username, password): | |
| query = "SELECT * FROM users WHERE username=? AND password=?" | |
| cursor.execute(query, (username, password)) | |
| return cursor.fetchone() | |
| ``` | |
| ``` | |
| ## π‘οΈ Supported Vulnerability Types | |
| The model is trained to detect various security vulnerabilities including: | |
| | Category | Examples | | |
| |----------|----------| | |
| | **Injection** | SQL Injection, Command Injection, LDAP Injection | | |
| | **XSS** | Reflected XSS, Stored XSS, DOM-based XSS | | |
| | **Authentication** | Weak passwords, Authentication bypass, Session management | | |
| | **Authorization** | Privilege escalation, Access control issues | | |
| | **Cryptography** | Weak encryption, Hardcoded keys, Improper random generation | | |
| | **File Operations** | Path traversal, File inclusion, Unsafe deserialization | | |
| | **Memory Safety** | Buffer overflow, Use after free, Memory leaks | | |
| | **Web Security** | CSRF, SSRF, Insecure redirects | | |
| ## π Performance Metrics | |
| ### Training Progress | |
| - **Initial Loss**: 1.5544 | |
| - **Final Loss**: 0.4081 | |
| - **Best Validation Loss**: 0.5840 (step 6000) | |
| - **Training Duration**: ~15 hours | |
| - **Convergence**: Stable convergence with cosine learning rate schedule | |
| ### Hardware Requirements | |
| - **Training**: NVIDIA GPU with 4-bit quantization | |
| - **Inference**: Can run on CPU or GPU (GPU recommended for speed) | |
| - **Memory**: ~6GB GPU memory for inference with 4-bit quantization | |
| ## π Repository Structure | |
| ``` | |
| starsofchance/Mistral-Unsloth-QLoRA-adapter/ | |
| βββ adapter_config.json # LoRA configuration | |
| βββ adapter_model.safetensors # Trained adapter weights (~334MB) | |
| βββ tokenizer.json # Tokenizer configuration | |
| βββ tokenizer_config.json # Tokenizer settings | |
| βββ special_tokens_map.json # Special tokens mapping | |
| βββ README.md # This file | |
| ``` | |
| ## β οΈ Limitations | |
| 1. **Adapter Dependency**: Requires the base model to function | |
| 2. **Context Window**: Limited to 2048 tokens | |
| 3. **Language Coverage**: Primarily trained on common programming languages | |
| 4. **False Positives**: May flag secure code patterns as potentially vulnerable | |
| 5. **Novel Vulnerabilities**: May not detect cutting-edge or highly obfuscated attacks | |
| 6. **Code Context**: Performance depends on having sufficient code context | |
| ## π Integration Tips | |
| ### Batch Processing | |
| ```python | |
| def analyze_multiple_files(code_files): | |
| results = [] | |
| for file_path, code_content in code_files: | |
| # Analyze each file | |
| messages = [{"role": "user", "content": f"Analyze for vulnerabilities:\n\n{code_content}"}] | |
| # ... generate response | |
| results.append({"file": file_path, "analysis": response}) | |
| return results | |
| ``` | |
| ### Custom Prompting | |
| ```python | |
| # For specific vulnerability types | |
| prompt = f""" | |
| Focus on SQL injection vulnerabilities in this code: | |
| {code_snippet} | |
| Provide: | |
| 1. Vulnerability assessment (Yes/No) | |
| 2. Risk level (Low/Medium/High/Critical) | |
| 3. Specific location | |
| 4. Remediation steps | |
| """ | |
| ``` | |
| ## π Training Data | |
| The model was fine-tuned on a curated dataset featuring: | |
| - **Real-world vulnerabilities** from CVE databases | |
| - **Secure code patterns** for contrast learning | |
| - **Multi-language examples** across different frameworks | |
| - **Detailed explanations** with remediation guidance | |
| - **Context-rich examples** showing vulnerability in realistic scenarios | |
| ## π Model Lineage | |
| ``` | |
| Ministral-8B-Instruct-2410 (Mistral AI) | |
| β | |
| QLoRA Fine-tuning (Unsloth) | |
| β | |
| UltiVal Vulnerability Detection Adapter | |
| ``` | |
| ## π Citation | |
| If you use this model in your research or applications, please cite: | |
| ```bibtex | |
| @misc{ultival_mistral_lora_2025, | |
| title={UltiVal: Ministral-8B QLoRA Adapter for Vulnerability Detection}, | |
| author={StarsOfChance}, | |
| year={2025}, | |
| publisher={Hugging Face}, | |
| url={https://huggingface.co/starsofchance/Mistral-Unsloth-QLoRA-adapter} | |
| } | |
| ``` | |
| ## βοΈ License | |
| This adapter inherits the license from the base model `mistralai/Ministral-8B-Instruct-2410`. Please refer to the [base model's license](https://huggingface.co/mistralai/Ministral-8B-Instruct-2410) for specific terms and conditions. | |
| ## π Acknowledgments | |
| - **Unsloth Team**: For the efficient LoRA fine-tuning framework | |
| - **Mistral AI**: For the powerful Ministral-8B-Instruct-2410 base model | |
| - **Hugging Face**: For the model hosting and PEFT library | |
| - **UltiVal Project**: Part of ongoing research in automated vulnerability detection | |
| ## π Contact & Support | |
| - **Issues**: Report bugs or issues in the [model repository](https://huggingface.co/starsofchance/Mistral-Unsloth-QLoRA-adapter/discussions) | |
| - **Updates**: Follow for model updates and improvements | |
| - **Community**: Join discussions about vulnerability detection and code security | |
| --- | |
| **π Security Note**: This model is designed to assist in security analysis but should not be the sole method for vulnerability assessment. Always conduct comprehensive security reviews with multiple tools and expert analysis. |