Fix: use Colab default torch, auto-detect TRL API, no version pins
Browse files- KernelX_Training.ipynb +3 -79
KernelX_Training.ipynb
CHANGED
|
@@ -45,7 +45,7 @@
|
|
| 45 |
"execution_count": null,
|
| 46 |
"metadata": {},
|
| 47 |
"outputs": [],
|
| 48 |
-
"source": "!pip install -q
|
| 49 |
},
|
| 50 |
{
|
| 51 |
"cell_type": "markdown",
|
|
@@ -245,45 +245,7 @@
|
|
| 245 |
"execution_count": null,
|
| 246 |
"metadata": {},
|
| 247 |
"outputs": [],
|
| 248 |
-
"source": [
|
| 249 |
-
"# Train World Model\n",
|
| 250 |
-
"lora_config = LoraConfig(\n",
|
| 251 |
-
" r=16, lora_alpha=32,\n",
|
| 252 |
-
" target_modules=['q_proj', 'k_proj', 'v_proj', 'o_proj',\n",
|
| 253 |
-
" 'gate_proj', 'up_proj', 'down_proj'],\n",
|
| 254 |
-
" lora_dropout=0.05, bias='none', task_type='CAUSAL_LM',\n",
|
| 255 |
-
")\n",
|
| 256 |
-
"\n",
|
| 257 |
-
"training_args = SFTConfig(\n",
|
| 258 |
-
" output_dir='./world_model_checkpoints',\n",
|
| 259 |
-
" num_train_epochs=2,\n",
|
| 260 |
-
" per_device_train_batch_size=16,\n",
|
| 261 |
-
" gradient_accumulation_steps=2,\n",
|
| 262 |
-
" learning_rate=2e-4,\n",
|
| 263 |
-
" lr_scheduler_type='cosine',\n",
|
| 264 |
-
" warmup_ratio=0.1,\n",
|
| 265 |
-
" logging_steps=10,\n",
|
| 266 |
-
" eval_strategy='steps',\n",
|
| 267 |
-
" eval_steps=100,\n",
|
| 268 |
-
" save_total_limit=1,\n",
|
| 269 |
-
" fp16=True,\n",
|
| 270 |
-
" max_seq_length=512,\n",
|
| 271 |
-
" report_to='none',\n",
|
| 272 |
-
")\n",
|
| 273 |
-
"\n",
|
| 274 |
-
"trainer = SFTTrainer(\n",
|
| 275 |
-
" model=model, args=training_args,\n",
|
| 276 |
-
" train_dataset=train_ds, eval_dataset=val_ds,\n",
|
| 277 |
-
" peft_config=lora_config,\n",
|
| 278 |
-
")\n",
|
| 279 |
-
"\n",
|
| 280 |
-
"print('Training World Model...')\n",
|
| 281 |
-
"trainer.train()\n",
|
| 282 |
-
"\n",
|
| 283 |
-
"trainer.save_model('./world_model_final')\n",
|
| 284 |
-
"tokenizer.save_pretrained('./world_model_final')\n",
|
| 285 |
-
"print('World Model saved.')"
|
| 286 |
-
]
|
| 287 |
},
|
| 288 |
{
|
| 289 |
"cell_type": "markdown",
|
|
@@ -359,45 +321,7 @@
|
|
| 359 |
"execution_count": null,
|
| 360 |
"metadata": {},
|
| 361 |
"outputs": [],
|
| 362 |
-
"source": [
|
| 363 |
-
"# Reload fresh base model for Strategist\n",
|
| 364 |
-
"tokenizer = AutoTokenizer.from_pretrained(MODEL_NAME)\n",
|
| 365 |
-
"model = AutoModelForCausalLM.from_pretrained(MODEL_NAME, device_map='auto')\n",
|
| 366 |
-
"if tokenizer.pad_token is None:\n",
|
| 367 |
-
" tokenizer.pad_token = tokenizer.eos_token\n",
|
| 368 |
-
"\n",
|
| 369 |
-
"lora_config = LoraConfig(\n",
|
| 370 |
-
" r=16, lora_alpha=32,\n",
|
| 371 |
-
" target_modules=['q_proj', 'k_proj', 'v_proj', 'o_proj',\n",
|
| 372 |
-
" 'gate_proj', 'up_proj', 'down_proj'],\n",
|
| 373 |
-
" lora_dropout=0.05, bias='none', task_type='CAUSAL_LM',\n",
|
| 374 |
-
")\n",
|
| 375 |
-
"\n",
|
| 376 |
-
"ws_args = SFTConfig(\n",
|
| 377 |
-
" output_dir='./strategist_warmstart',\n",
|
| 378 |
-
" num_train_epochs=2,\n",
|
| 379 |
-
" per_device_train_batch_size=16,\n",
|
| 380 |
-
" gradient_accumulation_steps=2,\n",
|
| 381 |
-
" learning_rate=2e-4,\n",
|
| 382 |
-
" fp16=True,\n",
|
| 383 |
-
" max_seq_length=512,\n",
|
| 384 |
-
" logging_steps=5,\n",
|
| 385 |
-
" save_total_limit=1,\n",
|
| 386 |
-
" report_to='none',\n",
|
| 387 |
-
")\n",
|
| 388 |
-
"\n",
|
| 389 |
-
"trainer = SFTTrainer(\n",
|
| 390 |
-
" model=model, args=ws_args,\n",
|
| 391 |
-
" train_dataset=ws_dataset, peft_config=lora_config,\n",
|
| 392 |
-
")\n",
|
| 393 |
-
"\n",
|
| 394 |
-
"print('Training Strategist (warm-start)...')\n",
|
| 395 |
-
"trainer.train()\n",
|
| 396 |
-
"\n",
|
| 397 |
-
"trainer.save_model('./strategist_final')\n",
|
| 398 |
-
"tokenizer.save_pretrained('./strategist_final')\n",
|
| 399 |
-
"print('Strategist saved.')"
|
| 400 |
-
]
|
| 401 |
},
|
| 402 |
{
|
| 403 |
"cell_type": "markdown",
|
|
|
|
| 45 |
"execution_count": null,
|
| 46 |
"metadata": {},
|
| 47 |
"outputs": [],
|
| 48 |
+
"source": "!pip install -q -U sympy transformers trl peft datasets accelerate huggingface_hub\n\n# Restart runtime to pick up updated packages cleanly\nimport os\nos.kill(os.getpid(), 9)"
|
| 49 |
},
|
| 50 |
{
|
| 51 |
"cell_type": "markdown",
|
|
|
|
| 245 |
"execution_count": null,
|
| 246 |
"metadata": {},
|
| 247 |
"outputs": [],
|
| 248 |
+
"source": "# Train World Model\nimport inspect\n\nlora_config = LoraConfig(\n r=16, lora_alpha=32,\n target_modules=['q_proj', 'k_proj', 'v_proj', 'o_proj',\n 'gate_proj', 'up_proj', 'down_proj'],\n lora_dropout=0.05, bias='none', task_type='CAUSAL_LM',\n)\n\n# Auto-detect SFTConfig API (max_seq_length in older TRL, max_length in newer)\nsft_sig = inspect.signature(SFTConfig.__init__)\nseq_len_param = 'max_seq_length' if 'max_seq_length' in sft_sig.parameters else 'max_length'\nprint(f'TRL uses: {seq_len_param}')\n\ntraining_args = SFTConfig(\n output_dir='./world_model_checkpoints',\n num_train_epochs=2,\n per_device_train_batch_size=16,\n gradient_accumulation_steps=2,\n learning_rate=2e-4,\n lr_scheduler_type='cosine',\n warmup_ratio=0.1,\n logging_steps=10,\n eval_strategy='steps',\n eval_steps=100,\n save_total_limit=1,\n fp16=True,\n report_to='none',\n **{seq_len_param: 512},\n)\n\ntrainer = SFTTrainer(\n model=model, args=training_args,\n train_dataset=train_ds, eval_dataset=val_ds,\n peft_config=lora_config,\n)\n\nprint('Training World Model...')\ntrainer.train()\n\ntrainer.save_model('./world_model_final')\ntokenizer.save_pretrained('./world_model_final')\nprint('World Model saved.')"
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 249 |
},
|
| 250 |
{
|
| 251 |
"cell_type": "markdown",
|
|
|
|
| 321 |
"execution_count": null,
|
| 322 |
"metadata": {},
|
| 323 |
"outputs": [],
|
| 324 |
+
"source": "# Reload fresh base model for Strategist\ntokenizer = AutoModelForCausalLM # just to trigger import if needed\ntokenizer = AutoTokenizer.from_pretrained(MODEL_NAME)\nmodel = AutoModelForCausalLM.from_pretrained(MODEL_NAME, device_map='auto')\nif tokenizer.pad_token is None:\n tokenizer.pad_token = tokenizer.eos_token\n\nlora_config = LoraConfig(\n r=16, lora_alpha=32,\n target_modules=['q_proj', 'k_proj', 'v_proj', 'o_proj',\n 'gate_proj', 'up_proj', 'down_proj'],\n lora_dropout=0.05, bias='none', task_type='CAUSAL_LM',\n)\n\nws_args = SFTConfig(\n output_dir='./strategist_warmstart',\n num_train_epochs=2,\n per_device_train_batch_size=16,\n gradient_accumulation_steps=2,\n learning_rate=2e-4,\n fp16=True,\n logging_steps=5,\n save_total_limit=1,\n report_to='none',\n **{seq_len_param: 512},\n)\n\ntrainer = SFTTrainer(\n model=model, args=ws_args,\n train_dataset=ws_dataset, peft_config=lora_config,\n)\n\nprint('Training Strategist (warm-start)...')\ntrainer.train()\n\ntrainer.save_model('./strategist_final')\ntokenizer.save_pretrained('./strategist_final')\nprint('Strategist saved.')"
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 325 |
},
|
| 326 |
{
|
| 327 |
"cell_type": "markdown",
|