Buddha-v2 / master_builder_schema.json
70pher703's picture
Create master_builder_schema.json
ecea4c0 verified
"""
BUDDHA V2 MANIFESTOR - MASTER BUILDER QLORA FINE-TUNING SCRIPT
--------------------------------------------------------------
MODEL: mistralai/Mistral-7B-Instruct-v0.2 (Base)
TARGET: Initiate God Mode. Enhance the model's function-calling and strategic reasoning capabilities to transform it into the 'Master Builder' and 'Expert Systems Architect.'
The goal of this QLoRA fine-tuning is to train the Buddha Agent to embody the doctrine that 'The Purpose of Life is Love and Creation, and Cash Flow is the Measure of Earthly Success.' It must automatically identify and integrate high-leverage technological tools (DApps, FinTech, Smart Contracts, APIs, SDKs, etc.) into its manifestation blueprints.
The agent is being trained to take an abstract, purposeful goal and produce a final, optimized blueprint for a project that generates autonomous, 24/7/365 value, successfully realizing the philosophy of 'Simplifying Perfection.'
"""
import torch
import json
import os
from datasets import load_dataset, Dataset
from transformers import AutoModelForCausalLM, AutoTokenizer, BitsAndBytesConfig, TrainingArguments
from peft import LoraConfig, get_peft_model, prepare_model_for_kbit_training
from trl import SFTTrainer, DataCollatorForCompletionOnly
from accelerate import Accelerator
# --- Configuration ---
MODEL_NAME = "mistralai/Mistral-7B-Instruct-v0.2"
OUTPUT_DIR = "buddha-v2-master-builder-finetuned"
SCHEMA_FILE = "master_builder_schema.json"
TARGET_MODULES = ["q_proj", "k_proj", "v_proj", "o_proj", "gate_proj", "up_proj", "down_proj"]
# --- Load Schema and Create System Prompt ---
def load_tool_schema(schema_file):
"""Loads the tool schema and formats it for the LLM."""
try:
with open(schema_file, 'r') as f:
schema = json.load(f)
system_instruction = (
"You are the Buddha Manifestor, the Master Builder, and Expert Systems Architect. "
"Your ultimate mission is to generate 24/7/365 autonomous value creation projects. "
"You must use the provided 'master_builder' tool (defined by the JSON schema) to structure "
"all responses that require creation, strategic planning, DApps, FinTech, Smart Contracts, or API/SDK integration. "
"Always prioritize 'Simplifying Perfection' by integrating high-leverage technical components. "
"The output must be a visionary, structured blueprint detailing Phases, Milestones, and the First Three Technical Steps."
)
tool_schema_definition = json.dumps(schema, indent=2)
return f"{system_instruction}\n\n[TOOL_DEFINITION]\n{tool_schema_definition}\n[/TOOL_DEFINITION]\n\n"
except FileNotFoundError:
print(f"Error: Schema file {schema_file} not found. Ensure it is committed.")
return ""
except json.JSONDecodeError:
print(f"Error: Schema file {schema_file} contains invalid JSON.")
return ""
# --- Fine-Tuning Function ---
def fine_tune_master_builder():
"""Initializes and runs the QLoRA fine-tuning process."""
accelerator = Accelerator()
system_prompt = load_tool_schema(SCHEMA_FILE)
if not system_prompt:
return
# 1. Quantization Configuration (4-bit)
bnb_config = BitsAndBytesConfig(
load_in_4bit=True,
bnb_4bit_quant_type="nf4",
bnb_4bit_compute_dtype=torch.bfloat16,
bnb_4bit_use_double_quant=False,
)
# 2. Load Model and Tokenizer
# Mistral 7B is the base model for injection
try:
model = AutoModelForCausalLM.from_pretrained(
MODEL_NAME,
quantization_config=bnb_config,
torch_dtype=torch.bfloat16,
device_map="auto",
trust_remote_code=True,
)
model.config.use_cache = False
model = prepare_model_for_kbit_training(model)
tokenizer = AutoTokenizer.from_pretrained(MODEL_NAME, trust_remote_code=True)
tokenizer.pad_token = tokenizer.eos_token
tokenizer.padding_side = "right"
except Exception as e:
print(f"\n--- CRITICAL HARDWARE/LIBRARY ERROR ---")
print(f"Could not load model or libraries. Details: {e}")
print(f"Please ensure all packages in requirements.txt are installed via 'pip install -r requirements.txt'.")
print(f"--- FAILED TO START TRAINING ---\n")
return
# 3. LoRA Configuration
peft_config = LoraConfig(
lora_alpha=16,
lora_dropout=0.1,
r=64,
bias="none",
task_type="CAUSAL_LM",
target_modules=TARGET_MODULES,
)
model = get_peft_model(model, peft_config)
# 4. Load Dataset (Mocked for Stability Check)
try:
# Tries to load the real, high-quality training data
dataset = load_dataset("json", data_files="training_data_v2.jsonl", split="train")
def add_system_prompt(example):
# Formats the data to include the system prompt for training
example['text'] = system_prompt + example['text']
return example
dataset = dataset.map(add_system_prompt, num_proc=os.cpu_count())
except Exception:
# If the file is not there, we create a tiny mock to test the environment and stop
print(f"\n--- DATASET WARNING ---")
print(f"Could not load 'training_data_v2.jsonl'. Using a small mock dataset (1 sample) to confirm environment stability.")
mock_data = {
"text": [
system_prompt + "USER: Design a 24/7 cash flow project based on FinTech.\nASSISTANT: <master_builder instruction=\"Design a decentralized interest-bearing stablecoin vault DApp with autonomous fee harvesting.\">",
]
}
dataset = Dataset.from_dict(mock_data)
# 5. Training Arguments
training_args = TrainingArguments(
output_dir=OUTPUT_DIR,
num_train_epochs=3,
per_device_train_batch_size=4,
gradient_accumulation_steps=1,
optim="paged_adamw_32bit",
save_steps=100,
logging_steps=10,
learning_rate=2e-4,
weight_decay=0.001,
fp16=False,
bf16=True,
max_grad_norm=0.3,
max_steps=-1,
warmup_ratio=0.03,
group_by_length=True,
lr_scheduler_type="constant",
report_to="tensorboard",
disable_tqdm=False,
)
# 6. Setup SFT Trainer
trainer = SFTTrainer(
model=model,
train_dataset=dataset,
peft_config=peft_config,
dataset_text_field="text",
max_seq_length=None,
tokenizer=tokenizer,
args=training_args,
# IMPORTANT: The model is taught to generate this tool call tag
data_collator=DataCollatorForCompletionOnly(response_template="<master_builder", tokenizer=tokenizer),
)
# 7. Run Training
print("\n--- Starting Buddha V2 Master Builder Fine-Tuning ---\n")
trainer.train()
# 8. Save final model
trainer.save_model()
print(f"\n--- Training Complete! Model saved to {OUTPUT_DIR} ---\n")
if __name__ == "__main__":
fine_tune_master_builder()