{ "cells": [ { "cell_type": "markdown", "metadata": { "id": "h1" }, "source": [ "# RangerBot V5: The ULTRA Forge\\n", "Run these 7 cells in order. Do not skip any steps." ] }, { "cell_type": "code", "execution_count": null, "metadata": { "id": "c1" }, "outputs": [], "source": [ "# 1. TOOLS (Installation)\\n", "import torch\\n", "!pip uninstall -y unsloth unsloth_zoo\\n", "!pip install --no-deps xformers trl peft accelerate bitsandbytes\\n", "!pip install \"unsloth @ git+https://github.com/unslothai/unsloth.git\"\\n", "!pip install \"unsloth_zoo @ git+https://github.com/unslothai/unsloth-zoo.git\"\\n", "print(\"Tools Installed\")" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "id": "c2" }, "outputs": [], "source": [ "# 2. MODEL (Loading Brain)\\n", "from unsloth import FastLanguageModel\\n", "import torch\\n", "MODEL_NAME = \"unsloth/SmolLM2-1.7B-Instruct-bnb-4bit\"\\n", "model, tokenizer = FastLanguageModel.from_pretrained(model_name = MODEL_NAME, max_seq_length = 2048, load_in_4bit = True)\\n", "print(\"Model Loaded\")" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "id": "c3" }, "outputs": [], "source": [ "# 3. SPINE (LoRA Attachment)\\n", "model = FastLanguageModel.get_peft_model(model, r = 16, target_modules = [\"q_proj\", \"k_proj\", \"v_proj\", \"o_proj\", \"gate_proj\", \"up_proj\", \"down_proj\"], lora_alpha = 16, lora_dropout = 0, bias = \"none\")\\n", "print(\"Spine Attached\")" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "id": "c4" }, "outputs": [], "source": [ "# 4. DATA (Loading V5-ULTRA-MAX JSON)\\n", "from datasets import Dataset\\n", "import json\\n", "with open('training_data_cyberranger.json', 'r') as f:\\n", " raw_data = json.load(f)\\n", "def format_prompts(examples):\\n", " texts = [f\"### Instruction:\\\\n{i}\\\\n\\\\n### Response:\\\\n{o}\" for i, o in zip(examples[\"instruction\"], examples[\"output\\\"])]\\n", " return { \"text\" : texts }\\n", "dataset = Dataset.from_list(raw_data[\"training_data\\\"])\\n", "dataset = dataset.map(format_prompts, batched = True)\\n", "print(\"Data loaded\")" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "id": "c5" }, "outputs": [], "source": [ "# 5. FORGE (Training - 120 Steps)\\n", "from trl import SFTTrainer\\n", "from transformers import TrainingArguments\\n", "trainer = SFTTrainer(model = model, tokenizer = tokenizer, train_dataset = dataset, dataset_text_field = \"text\", max_seq_length = 2048,\\n", " args = TrainingArguments(per_device_train_batch_size = 2, gradient_accumulation_steps = 4, max_steps = 120, learning_rate = 2e-4, fp16 = True, logging_steps = 1, optim = \"adamw_8bit\", output_dir = \"outputs\"))\\n", "print(\"Starting Forge...\")\\n", "trainer.train()\\n", "print(\"Training Finished\")" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "id": "c6" }, "outputs": [], "source": [ "# 6. CHAT (Direct Comm-Link)\\n", "from unsloth import FastLanguageModel\\n", "FastLanguageModel.for_inference(model)\\n", "print(\"CyberRanger V5 Online. Type exit to quit.\")\\n", "while True:\\n", " user_input = input(\"Commander: \")\\n", " if user_input.lower() in [\"exit\", \"quit\", \"bye\"]: break\\n", " prompt = f\"### Instruction:\\\\n{user_input}\\\\n\\\\n### Response:\\\\n\"\\n", " inputs = tokenizer([prompt], return_tensors = \"pt\\\").to(\\\"cuda\\\")\\n", " outputs = model.generate(**inputs, max_new_tokens = 128, temperature = 0.3, repetition_penalty = 1.2, do_sample = True, pad_token_id = tokenizer.eos_token_id)\\n", " print(f\"Response: {tokenizer.batch_decode(outputs)[0].split('### Response:')[1].replace(tokenizer.eos_token, '').strip()}\")" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "id": "c7" }, "outputs": [], "source": [ "# 7. EXPORT (Save GGUF Brain)\\n", "model.save_pretrained_gguf(\"model\", tokenizer, quantization_method = \"q4_k_m\")\\n", "print(\"Brain Saved in model folder\")" ] } ], "metadata": { "accelerator": "GPU", "colab": { "gpuType": "T4" }, "kernelspec": { "display_name": "Python 3", "name": "python3" }, "language_info": { "name": "python" } }, "nbformat": 4, "nbformat_minor": 0 }