Text Generation
PEFT
Safetensors
PyTorch
English
causal-lm
lora
qwen
sft
dpo
seal
self-adaptation
hitl
Instructions to use aaronr43210/MiniSEAL with libraries, inference providers, notebooks, and local apps. Follow these links to get started.
- Libraries
- PEFT
How to use aaronr43210/MiniSEAL with PEFT:
Task type is invalid.
- Notebooks
- Google Colab
- Kaggle
File size: 18,605 Bytes
f3ab765 | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 324 325 326 327 328 329 330 331 332 333 334 335 336 337 338 339 340 341 342 343 344 345 346 347 348 349 350 351 352 353 354 355 356 357 358 359 360 361 362 363 364 365 366 367 368 369 370 371 372 373 374 375 376 377 378 379 380 381 382 383 384 385 386 387 388 389 390 391 392 393 394 395 396 397 398 399 400 401 | """
Generates a professional capstone project proposal DOCX for MiniSEAL.
"""
from docx import Document
from docx.shared import Pt, RGBColor, Inches
from docx.enum.text import WD_ALIGN_PARAGRAPH
from docx.oxml.ns import qn
from docx.oxml import OxmlElement
DARK_BLUE = RGBColor(0x1A, 0x36, 0x5D)
MED_BLUE = RGBColor(0x2C, 0x52, 0x82)
BLACK = RGBColor(0x00, 0x00, 0x00)
# Helpers
def heading(doc, text, level=1):
p = doc.add_paragraph()
p.paragraph_format.space_before = Pt(16 if level == 1 else 10)
p.paragraph_format.space_after = Pt(4)
r = p.add_run(text)
r.bold = True
r.font.color.rgb = DARK_BLUE if level == 1 else MED_BLUE
r.font.size = Pt(15 if level == 1 else 12)
return p
def body(doc, text):
p = doc.add_paragraph()
p.paragraph_format.space_after = Pt(7)
p.paragraph_format.line_spacing = Pt(15)
r = p.add_run(text)
r.font.size = Pt(11)
r.font.color.rgb = BLACK
return p
def bullet(doc, text, bold_lead=None):
"""bullet_lead: optional bold prefix text before the rest."""
p = doc.add_paragraph(style="List Bullet")
p.paragraph_format.space_after = Pt(4)
if bold_lead:
rb = p.add_run(bold_lead)
rb.bold = True
rb.font.size = Pt(11)
rn = p.add_run(text)
rn.font.size = Pt(11)
else:
r = p.add_run(text)
r.font.size = Pt(11)
def numbered(doc, text, bold_lead=None):
p = doc.add_paragraph(style="List Number")
p.paragraph_format.space_after = Pt(5)
if bold_lead:
rb = p.add_run(bold_lead)
rb.bold = True
rb.font.size = Pt(11)
rn = p.add_run(text)
rn.font.size = Pt(11)
else:
r = p.add_run(text)
r.font.size = Pt(11)
def rule(doc):
p = doc.add_paragraph()
pPr = p._p.get_or_add_pPr()
pBdr = OxmlElement("w:pBdr")
bot = OxmlElement("w:bottom")
bot.set(qn("w:val"), "single")
bot.set(qn("w:sz"), "6")
bot.set(qn("w:space"), "1")
bot.set(qn("w:color"), "BBBBBB")
pBdr.append(bot)
pPr.append(pBdr)
p.paragraph_format.space_after = Pt(8)
# Document
doc = Document()
for sec in doc.sections:
sec.top_margin = Inches(1.0)
sec.bottom_margin = Inches(1.0)
sec.left_margin = Inches(1.25)
sec.right_margin = Inches(1.25)
# COVER
tp = doc.add_paragraph()
tp.alignment = WD_ALIGN_PARAGRAPH.CENTER
tp.paragraph_format.space_before = Pt(20)
tp.paragraph_format.space_after = Pt(6)
tr = tp.add_run("MiniSEAL")
tr.bold = True
tr.font.size = Pt(28)
tr.font.color.rgb = DARK_BLUE
sp = doc.add_paragraph()
sp.alignment = WD_ALIGN_PARAGRAPH.CENTER
sp.paragraph_format.space_after = Pt(4)
sr = sp.add_run(
"A Human-Supervised, Self-Adapting Language Model with\n"
"SEAL-Inspired Continuous Learning and LoRA-Based Adaptation"
)
sr.font.size = Pt(13)
sr.font.color.rgb = MED_BLUE
cat = doc.add_paragraph()
cat.alignment = WD_ALIGN_PARAGRAPH.CENTER
cr = cat.add_run("Capstone Project Proposal | Department of Computer Science")
cr.font.size = Pt(10)
cr.font.color.rgb = RGBColor(0x77, 0x77, 0x77)
cr.italic = True
doc.add_paragraph()
rule(doc)
# 1. TITLE
heading(doc, "1. Title")
body(doc,
"MiniSEAL: A Human-Supervised, Self-Adapting Language Model with SEAL-Inspired Continuous Learning "
"and LoRA-Based Adaptation.")
rule(doc)
# 2. INTRODUCTION
heading(doc, "2. Introduction")
body(doc,
"Large Language Models have fundamentally transformed the landscape of artificial intelligence, "
"demonstrating strong performance across natural language understanding, question answering, "
"summarisation, and dialogue. Models such as GPT-4, Llama-3, and Claude have set new benchmarks "
"for what is achievable with large-scale Transformer architectures trained on vast corpora. "
"Despite these advances, a critical limitation persists: once a model is trained and deployed, "
"its weights are frozen. It cannot incorporate new knowledge, adapt to evolving institutional "
"contexts, or correct factual errors without undergoing an expensive and time-consuming full "
"retraining cycle.")
body(doc,
"This limitation is particularly pronounced in institutional deployments. A university assistant, "
"for example, must remain current with changes to course curricula, departmental policies, "
"research developments, and campus events β none of which a static model can accommodate. "
"Similarly, in enterprise environments, proprietary knowledge evolves continuously, and relying "
"on a commercially hosted model introduces significant data privacy risks. There is therefore a "
"strong need for a locally owned, continuously learning language model that can adapt to new "
"information safely and efficiently.")
body(doc,
"This project, MiniSEAL, addresses this need by designing and implementing a complete, private "
"language model pipeline from first principles. The system covers every layer of the modern LLM "
"stack β from a custom Byte-Pair Encoding tokeniser and a decoder-only Transformer architecture "
"to a four-stage training pipeline comprising Pretraining, Supervised Fine-Tuning, Direct "
"Preference Optimisation, and SEAL-inspired Continuous Adaptation. The self-adaptation engine, "
"which forms the central novelty of this project, is directly inspired by the Self-Adapting "
"Language Models framework published by MIT CSAIL in 2025. Unlike the original SEAL framework, "
"which employs an autonomous Reinforcement Learning feedback loop, this project replaces that "
"loop with a Human-in-the-Loop safety quarantine system, ensuring that every proposed weight "
"update is reviewed and approved by a human administrator before being applied β making "
"continuous learning safe, auditable, and suitable for real-world institutional deployment.")
rule(doc)
# 3. LITERATURE SURVEY
heading(doc, "3. Literature Survey")
body(doc,
"The theoretical and methodological foundation of MiniSEAL is drawn from four seminal research "
"contributions that directly inform its architecture, training methodology, and adaptation "
"strategy.")
# β Paper 1
heading(doc, "3.1 Attention Is All You Need β Vaswani et al. (2017)", level=2)
body(doc,
"Vaswani et al. introduced the Transformer architecture, proposing that sequence-to-sequence "
"tasks could be solved entirely through self-attention mechanisms, dispensing with recurrent "
"or convolutional networks. The paper formalised scaled dot-product attention, multi-head "
"attention, and the encoder-decoder structure that became the basis for all subsequent large "
"language models. The decoder-only variant of this architecture, used in autoregressive models "
"such as GPT and LLaMA, forms the core model structure of this project.")
# β Paper 2
heading(doc, "3.2 Self-Adapting Language Models (SEAL) β Zweiger et al., MIT CSAIL (2025)", level=2)
body(doc,
"This paper represents the primary research motivation for this project. Zweiger et al. "
"propose a framework in which a deployed language model autonomously generates structured "
"self-edits β synthetic training examples derived from a raw passage of text β and applies "
"supervised fine-tuning on its own weights to incorporate new factual knowledge persistently. "
"The framework uses a Reinforcement Learning feedback loop in which the reward signal is the "
"model's performance improvement on a downstream task following the self-edit. The authors "
"demonstrate strong results in knowledge incorporation and few-shot generalisation tasks, while "
"identifying catastrophic forgetting as a key open challenge. This project adopts the SEAL "
"self-edit generation paradigm but replaces the autonomous RL loop with a human-supervised "
"approval gate, mitigating the risk of adversarial or erroneous self-edits corrupting model weights.")
# β Paper 3
heading(doc, "3.3 LoRA: Low-Rank Adaptation β Hu et al., Microsoft Research (2022)", level=2)
body(doc,
"Hu et al. proposed Low-Rank Adaptation as a parameter-efficient approach to fine-tuning large "
"language models. Rather than updating all model weights during adaptation, LoRA freezes the "
"pretrained weights and injects small, trainable low-rank matrix pairs into each targeted layer. "
"The effective update is expressed as ΞW = BA, where the rank r is far smaller than the original "
"weight dimensions, reducing trainable parameters by over 98% relative to full fine-tuning while "
"achieving comparable performance. This technique is employed in this project as the exclusive "
"mechanism for continuous adaptation, ensuring that the base model remains intact and that "
"individual knowledge updates remain modular, versioned, and independently removable.")
# β Paper 4
heading(doc, "3.4 Direct Preference Optimisation β Rafailov et al., Stanford University (2023)", level=2)
body(doc,
"Rafailov et al. introduced Direct Preference Optimisation as a stable, mathematically grounded "
"alternative to Reinforcement Learning from Human Feedback for aligning language model behaviour "
"with human preferences. DPO reformulates the preference alignment objective as a closed-form "
"classification loss operating over pairs of preferred and rejected model responses, eliminating "
"the need for a separately trained reward model. The resulting training procedure is significantly "
"more stable and computationally efficient than RLHF. In this project, DPO is applied following "
"Supervised Fine-Tuning to ensure that the model produces responses that are helpful, safe, and "
"appropriately toned before continuous self-adaptation begins.")
rule(doc)
# 4. AIM
heading(doc, "4. Aim of the Project")
body(doc,
"The overarching aim of this project is to design, implement, and train a complete, privately "
"owned language model that is capable of continuous, human-supervised self-adaptation. "
"The specific objectives are:")
numbered(doc,
"To design and implement a decoder-only Transformer language model and a custom Byte-Pair "
"Encoding tokeniser entirely from scratch, without relying on any pre-built foundational model "
"or commercial API.")
numbered(doc,
"To establish a complete, sequential four-stage training pipeline β Pretraining on raw corpora, "
"Supervised Fine-Tuning on instruction-response pairs, Direct Preference Optimisation on "
"preference data, and SEAL-inspired Continuous Adaptation β each implemented as a modular, "
"independently executable service.")
numbered(doc,
"To implement a SEAL-inspired self-adaptation engine in which the model generates its own "
"structured training data from raw passages and updates its weights persistently and efficiently "
"using Low-Rank Adaptation (LoRA).")
numbered(doc,
"To engineer a Human-in-the-Loop safety system that intercepts every model-generated self-edit, "
"automatically assesses its risk level, stages it in a quarantine database, and requires explicit "
"human approval before any weight update is committed β preventing model poisoning and ensuring "
"auditability.")
numbered(doc,
"To train and validate the complete pipeline on an NVIDIA A100 GPU, demonstrating that the system "
"is scalable to research-grade hardware and suitable for institutional deployment.")
rule(doc)
# 5. METHODOLOGY
heading(doc, "5. Methodology and Planned Process")
body(doc,
"The project follows a structured, sequential development methodology. Each stage builds directly "
"on the outputs of the previous stage, mirroring the training pipeline used by leading AI "
"research organisations.")
# Step 1
heading(doc, "Step 1 β Architecture Design and Tokeniser Training", level=2)
body(doc,
"The first step involves designing the core model architecture: a decoder-only Transformer with "
"pre-norm RMSNorm, Rotary Positional Embedding (RoPE), and a SwiGLU feed-forward network. "
"In parallel, a custom Byte-Pair Encoding tokeniser is trained on the project corpus, producing "
"a vocabulary tailored to the target domain. This step establishes the foundational components "
"on which all subsequent training stages depend.")
# Step 2
heading(doc, "Step 2 β Pretraining", level=2)
body(doc,
"The model is pretrained using next-token prediction on a curated raw text corpus. This stage "
"teaches the model the statistical structure of language, building a general-purpose language "
"understanding capability. Training is performed on an NVIDIA A100 GPU using the causal "
"cross-entropy loss. The output is a base model checkpoint that serves as the starting point "
"for all subsequent alignment and adaptation stages.")
# Step 3
heading(doc, "Step 3 β Supervised Fine-Tuning and Preference Alignment", level=2)
body(doc,
"The pretrained base model undergoes two sequential alignment stages. First, Supervised "
"Fine-Tuning trains the model on instruction-response pairs, transforming it from a raw "
"next-token predictor into an instruction-following assistant. Second, Direct Preference "
"Optimisation aligns the model's tone and behaviour with human preferences by training it "
"to prefer high-quality responses over low-quality ones. After this stage, the model is "
"safe, helpful, and appropriately calibrated.")
# Step 4
heading(doc, "Step 4 β SEAL-Inspired Continuous Self-Adaptation", level=2)
body(doc,
"This is the core novelty of the project. The aligned model is given a raw passage of text "
"and generates its own structured question-and-answer pairs β self-edits β describing the "
"key facts contained in the passage. These self-edits are automatically scored for risk and "
"staged in a quarantine database. A human administrator reviews each self-edit on a web "
"dashboard and approves or rejects it. Approved self-edits are used to train a LoRA adapter "
"on the aligned model's Q and V projection layers, permanently incorporating the new knowledge "
"without modifying the base model weights.")
# Step 5
heading(doc, "Step 5 β Validation and Evaluation", level=2)
body(doc,
"The complete system is evaluated end-to-end on the NVIDIA A100 cluster. Evaluation metrics "
"include training loss curves across all stages, perplexity on held-out validation sets, "
"factual accuracy on knowledge incorporation tasks, and a qualitative assessment of the "
"model's responses before and after LoRA adaptation.")
rule(doc)
# 6. EXPECTED OUTCOMES
heading(doc, "6. Expected Outcomes")
body(doc,
"Upon successful completion, the project is expected to produce the following outcomes:")
bullet(doc,
"A working, trained language model capable of generating coherent, factually grounded responses "
"to natural language queries.",
bold_lead="Trained Language Model: ")
bullet(doc,
"A demonstrated self-adaptation pipeline in which the model successfully reads a new passage, "
"generates self-edits, and incorporates the new knowledge through LoRA fine-tuning.",
bold_lead="Demonstrated Continuous Learning: ")
bullet(doc,
"Measurable improvement in factual accuracy on domain-specific questions following the "
"application of approved LoRA adapters.",
bold_lead="Factual Accuracy Improvement: ")
bullet(doc,
"A validated Human-in-the-Loop safety gate that successfully intercepts, scores, and flags "
"high-risk self-edits before any model weights are updated.",
bold_lead="Safety Gate Validation: ")
bullet(doc,
"A scalable, enterprise-ready MLOps architecture demonstrating that the entire pipeline can "
"be reproducibly executed on GPU cluster hardware.",
bold_lead="Reproducible MLOps Pipeline: ")
rule(doc)
# 7. DELIVERABLES
heading(doc, "7. Deliverables")
numbered(doc,
"Complete source code for the end-to-end pipeline, including the Transformer model, "
"BPE tokeniser, training services, and self-adaptation engine.",
bold_lead="Source Code Repository: ")
numbered(doc,
"Trained model checkpoints from each stage of the training pipeline (Pretrained, SFT-aligned, "
"DPO-aligned, and LoRA-adapted), stored as versioned artefacts.",
bold_lead="Model Checkpoints: ")
numbered(doc,
"A web-accessible Human-in-the-Loop administration dashboard for reviewing, approving, and "
"rejecting model-generated self-edits.",
bold_lead="Admin Dashboard: ")
numbered(doc,
"A comprehensive technical report documenting the system architecture, training methodology, "
"evaluation results, and a comparison between the SEAL RL approach and the Human-in-the-Loop "
"quarantine approach implemented in this project.",
bold_lead="Technical Report: ")
numbered(doc,
"A project presentation and live demonstration of the self-adaptation pipeline, including a "
"real-time demonstration of a new passage being incorporated into the model's knowledge base "
"through the approval dashboard.",
bold_lead="Project Presentation and Demo: ")
rule(doc)
# REFERENCES
heading(doc, "References")
refs = [
"[1] Vaswani, A., Shazeer, N., Parmar, N., Uszkoreit, J., Jones, L., Gomez, A. N., Kaiser, Ε., & Polosukhin, I. (2017). Attention Is All You Need. Advances in Neural Information Processing Systems (NeurIPS). arXiv:1706.03762.",
"[2] Zweiger, A., Pari, J., Guo, H., AkyΓΌrek, E., Kim, Y., & Agrawal, P. (2025). Self-Adapting Language Models. MIT CSAIL. arXiv:2506.10943.",
"[3] Hu, E. J., Shen, Y., Wallis, P., Allen-Zhu, Z., Li, Y., Wang, S., Wang, L., & Chen, W. (2022). LoRA: Low-Rank Adaptation of Large Language Models. International Conference on Learning Representations (ICLR). arXiv:2106.09685.",
"[4] Rafailov, R., Sharma, A., Mitchell, E., Ermon, S., Manning, C. D., & Finn, C. (2023). Direct Preference Optimization: Your Language Model is Secretly a Reward Model. Advances in Neural Information Processing Systems (NeurIPS). arXiv:2305.18290.",
]
for ref in refs:
p = doc.add_paragraph()
p.paragraph_format.space_after = Pt(5)
r = p.add_run(ref)
r.font.size = Pt(10)
r.font.color.rgb = RGBColor(0x33, 0x33, 0x33)
# Save
output_path = "/Users/aaronr/Desktop/DUK/GENAI/self_owned_llm/Capstone_Project_Description.docx"
doc.save(output_path)
print(f" Saved β {output_path}")
|