Instructions to use mohitsharma9761/my-cpp-chatbot with libraries, inference providers, notebooks, and local apps. Follow these links to get started.
- Libraries
- PEFT
How to use mohitsharma9761/my-cpp-chatbot with PEFT:
from peft import PeftModel from transformers import AutoModelForCausalLM base_model = AutoModelForCausalLM.from_pretrained("Qwen/Qwen2.5-Coder-7B-Instruct") model = PeftModel.from_pretrained(base_model, "mohitsharma9761/my-cpp-chatbot") - Notebooks
- Google Colab
- Kaggle
|
Download README.md from mohitsharma9761/my-cpp-chatbot: direct link, hf CLI and curl.
- Browser
- Download file 7.01 kB
-
https://huggingface.co/mohitsharma9761/my-cpp-chatbot/resolve/main/README.md
- Command line
-
hf download hf://mohitsharma9761/my-cpp-chatbot/README.md
-
curl -L -o README.md https://huggingface.co/mohitsharma9761/my-cpp-chatbot/resolve/main/README.md
7.01 kB
| library_name: peft | |
| tags: | |
| - lora | |
| - qlora | |
| - cpp | |
| - c++ | |
| - code | |
| - chatbot | |
| license: apache-2.0 | |
| language: | |
| - en | |
| base_model: | |
| - Qwen/Qwen2.5-Coder-7B-Instruct | |
| pipeline_tag: text-generation | |
| # CppBuddy: a C++ tutor chatbot (QLoRA adapter for Qwen2.5-Coder-7B-Instruct) | |
| CppBuddy is a small **LoRA adapter** that turns [Qwen2.5-Coder-7B-Instruct](https://huggingface.co/Qwen/Qwen2.5-Coder-7B-Instruct) into a friendly C++ tutor. It answers C++ concept questions and coding questions in a consistent style: a short explanation, a compilable code example, and a tip. It politely redirects off-topic questions back to C++. | |
| This repository contains **only the adapter weights**, not the base model. You load it on top of Qwen2.5-Coder-7B-Instruct (see below). | |
| ## Model Details | |
| - **Developed by:** mohitsharma9761 | |
| - **Model type:** LoRA adapter (QLoRA fine-tune) for a causal language model | |
| - **Language:** English (code in C++) | |
| - **License:** Apache-2.0 (same as the base model; please check the base model page for its current terms) | |
| - **Fine-tuned from:** [Qwen/Qwen2.5-Coder-7B-Instruct](https://huggingface.co/Qwen/Qwen2.5-Coder-7B-Instruct) | |
| ## Uses | |
| ### Direct use | |
| - Asking C++ concept questions (pointers, RAII, smart pointers, STL, templates, move semantics, undefined behavior, and similar) | |
| - Getting short C++ code examples for common tasks (searching, sorting, string handling, containers) | |
| - Learning and interview practice | |
| ### Out-of-scope use | |
| - Production or safety-critical code without human review | |
| - General-knowledge chat. It was trained to redirect non-C++ questions, though this is not fully reliable. | |
| - Anything that needs verified correctness. Always compile, test, and read the code it writes. | |
| ## Bias, Risks, and Limitations | |
| - **It can be wrong.** Generated code may compile and still contain logic errors, or give outdated or unsafe advice. | |
| - **Small fine-tuning dataset** (about 250 examples). The adapter mostly teaches *answer style and scope*; the C++ knowledge comes from the base model, so it inherits the base model's gaps. | |
| - **Evaluation is small** (see below), so treat the numbers as a rough signal, not a benchmark. | |
| - Off-topic redirection is learned from a handful of examples, so it will sometimes answer non-C++ questions anyway. | |
| ## How to Get Started with the Model | |
| The system prompt below is the one used in training. Using a different one will make answers worse. | |
| ````python | |
| import torch | |
| from transformers import AutoModelForCausalLM, AutoTokenizer, BitsAndBytesConfig | |
| from peft import PeftModel | |
| BASE = "Qwen/Qwen2.5-Coder-7B-Instruct" | |
| ADAPTER = "mohitsharma9761/my-cpp-chatbot" | |
| SYSTEM_PROMPT = "You are CppBuddy, a friendly expert C++ tutor and coding assistant (C++11 to C++23). Explain simply first, then show short, correct, compilable code in ```cpp blocks. Prefer modern C++ (smart pointers, STL, RAII). Point out undefined behavior and common mistakes. If a question is not about C++ or programming, politely steer back to C++." | |
| bnb = BitsAndBytesConfig( | |
| load_in_4bit=True, | |
| bnb_4bit_quant_type="nf4", | |
| bnb_4bit_compute_dtype=torch.float16, | |
| bnb_4bit_use_double_quant=True, | |
| ) | |
| tokenizer = AutoTokenizer.from_pretrained(BASE) | |
| model = AutoModelForCausalLM.from_pretrained(BASE, quantization_config=bnb, device_map="auto") | |
| model = PeftModel.from_pretrained(model, ADAPTER) | |
| model.eval() | |
| messages = [ | |
| {"role": "system", "content": SYSTEM_PROMPT}, | |
| {"role": "user", "content": "what is RAII?"}, | |
| ] | |
| inputs = tokenizer.apply_chat_template( | |
| messages, add_generation_prompt=True, return_tensors="pt", return_dict=True | |
| ).to(model.device) | |
| with torch.no_grad(): | |
| out = model.generate(**inputs, max_new_tokens=600, do_sample=True, temperature=0.4, top_p=0.9) | |
| print(tokenizer.decode(out[0][inputs["input_ids"].shape[1]:], skip_special_tokens=True)) | |
| ```` | |
| A 4-bit load fits on a free 16 GB GPU such as a Colab T4. | |
| ## Training Details | |
| ### Training data | |
| About **250 curated question and answer pairs** about C++ (247 used for training, 10 held out for validation): | |
| - Explanation-plus-code answers (short explanation, compilable example, tip). The built-in examples with code were shown twice per epoch so the model keeps writing code. | |
| - Short definition-style answers for basic concepts. | |
| - A small set of polite redirects for off-topic questions. | |
| - A few corrective examples for topics where an earlier version of the model gave a confused answer (for example `new` vs `malloc`). | |
| Full C++ programs in the answers were checked with `g++ -std=c++20 -fsyntax-only` and any that failed to compile were dropped. | |
| ### Training procedure | |
| - **Method:** QLoRA (4-bit NF4 base model with double quantization, LoRA adapters) | |
| - **LoRA:** r = 16, alpha = 32, dropout = 0.05, applied to `q_proj`, `k_proj`, `v_proj`, `o_proj`, `gate_proj`, `up_proj`, `down_proj` | |
| - **Loss:** computed on the assistant reply only (prompt tokens masked) | |
| - **Epochs:** 2 | |
| - **Learning rate:** 2e-4 | |
| - **Batch size:** 1 per device, gradient accumulation 4 (effective batch size 4) | |
| - **Optimizer:** `paged_adamw_8bit` | |
| - **Max sequence length:** 1024 tokens | |
| - **Training regime:** fp16 mixed precision with gradient checkpointing | |
| - **Frameworks:** Transformers (`Trainer`), PEFT, bitsandbytes | |
| #### Speeds, sizes, times | |
| Roughly 10 minutes on a single Colab T4 GPU. The adapter file is small (tens of MB) compared with the 7B base model. | |
| ## Evaluation | |
| ### Training and validation loss | |
| | Epoch | Training loss | Validation loss | | |
| |---|---|---| | |
| | 1 | 0.839 | 0.973 | | |
| | 2 | 0.431 | 1.061 | | |
| The validation set is only 10 short examples, so the validation loss is noisy. The small rise from epoch 1 to 2 hints at mild overfitting, which is why training was stopped at 2 epochs. | |
| ### Compile test | |
| 8 coding prompts that were **not** in the training data (for example merging sorted vectors, counting vowels, a stack class using `std::vector`, word frequency with `unordered_map`). Each reply's `cpp` code blocks were checked with `g++ -std=c++20 -fsyntax-only`. | |
| - **7 of 8 code blocks compiled** | |
| - **0 of 8 answers** were missing code | |
| This is a syntax and type check only. It does not test whether the program gives correct output. It is a single sampled run (temperature 0.4) on a small prompt set, and it has not yet been compared against the plain base model. | |
| ## Environmental Impact | |
| - **Hardware type:** NVIDIA T4 GPU (Google Colab) | |
| - **Hours used:** about 0.2 hours per training run (approximate) | |
| - **Cloud provider:** Google Colab | |
| - **Carbon emitted:** not measured | |
| ## Technical Specifications | |
| - **Architecture:** Qwen2.5 decoder-only transformer (7B parameters) with LoRA adapters | |
| - **Objective:** causal language modeling (supervised fine-tuning on chat-formatted examples) | |
| - **Software:** Transformers, PEFT, bitsandbytes, Datasets, PyTorch | |
| ## Acknowledgements | |
| Built on [Qwen2.5-Coder-7B-Instruct](https://huggingface.co/Qwen/Qwen2.5-Coder-7B-Instruct) by the Qwen team. | |
| ## Model Card Contact | |
| mohitsharma9761 on Hugging Face (use the Community tab of this repo). |