|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
import sys
|
|
|
print(f"Python version: {sys.version}")
|
|
|
|
|
|
import torch
|
|
|
print(f"PyTorch version: {torch.__version__}")
|
|
|
print(f"CUDA available: {torch.cuda.is_available()}")
|
|
|
if torch.cuda.is_available():
|
|
|
print(f"CUDA device: {torch.cuda.get_device_name(0)}")
|
|
|
|
|
|
import transformers
|
|
|
print(f"Transformers version: {transformers.__version__}")
|
|
|
|
|
|
from datasets import load_dataset
|
|
|
from peft import LoraConfig
|
|
|
from trl import SFTTrainer, SFTConfig
|
|
|
|
|
|
print("Loading dataset...")
|
|
|
ds = load_dataset("trl-lib/Capybara", split="train[:50]")
|
|
|
print(f"Loaded {len(ds)} examples")
|
|
|
|
|
|
config = SFTConfig(
|
|
|
output_dir="test-output",
|
|
|
num_train_epochs=1,
|
|
|
per_device_train_batch_size=1,
|
|
|
gradient_accumulation_steps=1,
|
|
|
logging_steps=5,
|
|
|
report_to="none",
|
|
|
push_to_hub=True,
|
|
|
hub_model_id="luiscosio/qwen25-test-v2",
|
|
|
bf16=True,
|
|
|
)
|
|
|
|
|
|
peft_config = LoraConfig(
|
|
|
r=8,
|
|
|
lora_alpha=16,
|
|
|
task_type="CAUSAL_LM",
|
|
|
target_modules=["q_proj", "v_proj"]
|
|
|
)
|
|
|
|
|
|
print("Creating trainer with Qwen2.5-0.5B...")
|
|
|
trainer = SFTTrainer(
|
|
|
model="Qwen/Qwen2.5-0.5B",
|
|
|
train_dataset=ds,
|
|
|
args=config,
|
|
|
peft_config=peft_config,
|
|
|
)
|
|
|
|
|
|
print("Training...")
|
|
|
trainer.train()
|
|
|
trainer.push_to_hub()
|
|
|
print("Done!")
|
|
|
|