--- license: apache-2.0 base_model: HuggingFaceTB/SmolLM2-1.7B-Instruct tags: - text-generation-inference - transformers - lora - trl - smollm2 - aptitude datasets: - Prathamesh25/aptitude-qa-dataset language: - en pipeline_tag: text-generation --- # SmolLM2 1.7B Aptitude QA This model is a fine-tuned version of `HuggingFaceTB/SmolLM2-1.7B-Instruct` optimized for technical aptitude question-answering tasks, including basic programming concepts (C, Python, loops) and fundamental AI/ML reasoning logic. It was trained using LoRA parameters in pure Float16 precision on a free Google Colab T4 GPU node to handle the target dataset schema formatting seamlessly. ## Model Description - **Developed by:** Prathamesh25 - **Base Model:** [HuggingFaceTB/SmolLM2-1.7B-Instruct](https://huggingface.co) - **Dataset Used:** [Prathamesh25/aptitude-qa-dataset](https://huggingface.co) - **Language:** English - **License:** Apache 2.0 ## Training Information & Hyperparameters - **Precision:** Pure Float16 (`fp16=True`) - **Optimizer:** `adamw_torch` - **Learning Rate:** 2e-4 - **Per Device Train Batch Size:** 4 - **Gradient Accumulation Steps:** 4 - **LoRA Configuration:** Rank ($r$)=16, Alpha ($lpha$)=32, Dropout=0.05 - **Target Modules:** `q_proj`, `k_proj`, `v_proj`, `o_proj`, `gate_proj`, `up_proj`, `down_proj` ### Loss Progression Metrics The training process showed highly stable optimization across epochs: - **Step 10:** 1.955 - **Step 30:** 0.709 - **Step 100:** 0.412 - **Step 200:** 0.323 - **Step 330:** 0.281 ## How to Use ```python import torch from transformers import AutoModelForCausalLM, AutoTokenizer model_id = "Prathamesh25/smollm2-1.7b-aptitude-qa-v1" tokenizer = AutoTokenizer.from_pretrained(model_id) model = AutoModelForCausalLM.from_pretrained( model_id, torch_dtype=torch.float16, device_map="auto" ) test_prompt = [ { "role": "user", "content": "subject: 06 technical aptitude (basic programming and aiml concepts)\nlevel: 01 basic\ncategory: loops\nquestion: what is the output of this c code: `int sum = 0; for(int i=1; i<=3; i++) { sum += i; } printf(\"%d\", sum);`?" } ] text_prompt = tokenizer.apply_chat_template(test_prompt, tokenize=False, add_generation_prompt=True) model_inputs = tokenizer([text_prompt], return_tensors="pt").to("cuda") input_token_len = model_inputs.input_ids.shape[1] with torch.no_grad(): generated_ids = model.generate( input_ids=model_inputs.input_ids, attention_mask=model_inputs.attention_mask, max_new_tokens=150, temperature=0.1, do_sample=True, eos_token_id=tokenizer.eos_token_id, pad_token_id=tokenizer.eos_token_id ) final_tokens = generated_ids[0][input_token_len:] print(tokenizer.decode(final_tokens, skip_special_tokens=True)) ``` ---