Views
No views yet
unsloth/Qwen2.5-7B using the RAFT (Retrieval-Augmented Fine-Tuning) approach on the MS MARCO v1.1 dataset. The model excels at answering questions based on retrieved passages and is optimized for RAG (Retrieval-Augmented Generation) workflows.| Attribute | Value |
|---|---|
| Base Model | unsloth/Qwen2.5-7B |
| Fine-tuning Method | LoRA + RAFT |
| Dataset | MS MARCO v1.1 (75k samples) |
| Training Steps | 9,128 |
| Task | Retrieval-Augmented Generation |
| Language | English |
| Model Size | ~7B parameters (24K context) |
| Adapter Size | ~10-50MB |
pip install transformers peft torch accelerate1from transformers import AutoTokenizer, AutoModelForCausalLM
2from peft import PeftModel
3import torch
4
5# Load base model
6base_model_id = "unsloth/Qwen2.5-7B"
7tokenizer = AutoTokenizer.from_pretrained(base_model_id)
8model = AutoModelForCausalLM.from_pretrained(
9 base_model_id,
10 torch_dtype=torch.float16,
11 device_map="auto"
12)
13
14# Load LoRA adapters
15model = PeftModel.from_pretrained(model, "DangIT02/qwen-msmarco-rag")
16
17# Generate response
18def generate_answer(question, context=""):
19 if context:
20 prompt = f"Context: {context}\n\nQuestion: {question}\n\nAnswer:"
21 else:
22 prompt = f"Question: {question}\n\nAnswer:"
23
24 inputs = tokenizer(prompt, return_tensors="pt").to(model.device)
25
26 with torch.no_grad():
27 outputs = model.generate(
28 **inputs,
29 max_length=512,
30 do_sample=True,
31 temperature=0.7,
32 top_p=0.9,
33 pad_token_id=tokenizer.eos_token_id
34 )
35
36 response = tokenizer.decode(outputs[0], skip_special_tokens=True)
37 return response.split("Answer:")[-1].strip()
38
39# Example usage
40question = "What is machine learning?"
41context = "Machine learning is a subset of artificial intelligence that focuses on algorithms that can learn from data."
42answer = generate_answer(question, context)
43print(answer)1def rag_pipeline(question, knowledge_base):
2 """
3 Complete RAG pipeline with retrieval and generation
4 """
5 # Step 1: Retrieval (add your retrieval method)
6 retrieved_passages = retrieve_passages(question, knowledge_base)
7
8 # Step 2: Generation using fine-tuned model
9 context = "\n\n".join([f"Document {i+1}:\n{p}" for i, p in enumerate(retrieved_passages)])
10 return generate_answer(question, context)
11
12# Example RAG usage
13def retrieve_passages(query, knowledge_base):
14 # Implement your retrieval (vector search, BM25, etc.)
15 # This is just a placeholder
16 return ["Retrieved passage 1...", "Retrieved passage 2..."]
17
18question = "How does photosynthesis work?"
19answer = rag_pipeline(question, your_knowledge_base)
20print(answer)1Base Model: unsloth/Qwen2.5-7B
2Dataset: microsoft/ms_marco (v1.1) - RAFT format
3Method: LoRA + RAFT Fine-tuning
4Training Steps: 9,128
5Hardware: RTX 5090 32GB
6
7Model Config:
8 - Max Sequence Length: 24,576 tokens (24K)
9 - Data Type: bfloat16
10 - Load in 4bit: False
11
12LoRA Config:
13 - Rank: 64
14 - Alpha: 128
15 - Dropout: 0.1
16 - Target Modules: ["q_proj", "k_proj", "v_proj", "o_proj", "gate_proj", "up_proj", "down_proj"]
17 - Use RSLoRA: True
18 - Gradient Checkpointing: unsloth
19
20Training Config:
21 - Epochs: 2
22 - Batch Size: 2
23 - Gradient Accumulation: 8 (Effective batch: 16)
24 - Learning Rate: 1e-4
25 - Weight Decay: 0.01
26 - Warmup Ratio: 0.1
27 - Scheduler: cosine
28 - Optimizer: adamw_torch
29 - Dataset Size: 75,000 samples1def optimal_usage(query, documents):
2 # 1. Ensure documents contain relevant information
3 relevant_docs = filter_relevant_documents(query, documents)
4
5 # 2. Use model for what it's trained for
6 if has_factual_content(relevant_docs):
7 answer = model.generate(query, relevant_docs)
8 return answer
9 else:
10 return "No relevant information found in provided documents"1@misc{qwen-raft-rag-2025,
2 author = {DangIT02},
3 title = {Qwen2.5-7B Fine-tuned for RAG using RAFT Approach},
4 year = {2025},
5 publisher = {Hugging Face},
6 url = {https://huggingface.co/DangIT02/qwen-msmarco-rag}
7}