用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
直接命令不会经过审查 Prompt;运行前请先检查来源。
npx skills add https://github.com/cxcscmu/SkillLearnBench --skill run2-simpo-trainer-initialization命令会保持在同一行。复制前请横向滚动并检查完整内容。
想先保存到本地?可下载 SkillsMP 当前能够提供的文件。
正在显示 SKILL.md
基于 SOC 职业分类
| name | run2_simpo-trainer-initialization |
| description | Proper initialization of SimPOTrainer with model loading and args setup |
The SimPOTrainer extends HuggingFace's Trainer and requires proper initialization to function:
super().__init__(
model=model,
args=args,
data_collator=data_collator,
train_dataset=train_dataset,
eval_dataset=eval_dataset,
tokenizer=tokenizer,
model_init=model_init,
compute_metrics=compute_metrics,
callbacks=callbacks,
optimizers=optimizers,
preprocess_logits_for_metrics=preprocess_logits_for_metrics,
)
Why Critical: Sets up self.args which is required by all loss functions and training logic.
If model is a string (model ID), it must be loaded before passing to parent:
if isinstance(model, str):
model_init_kwargs = args.model_init_kwargs or {}
model = AutoModelForCausalLM.from_pretrained(model, **model_init_kwargs)
Why: The parent Trainer class expects a loaded model instance, not a string ID.
The args parameter must be a SimPOConfig instance with at minimum:
args = SimPOConfig(
output_dir="./simpo_output", # REQUIRED
beta=2.0, # Reward scaling (default: 2.0)
gamma_beta_ratio=0.25, # Margin ratio (default: 0.25)
)
SimPOConfig with output_dirsuper().__init__() with all required parametersself.args is accessible after initself.model is on correct deviceCause: super().__init__() not called
Fix: Uncomment the super().init() block in init
Cause: Passing string model ID without loading it first Fix: Uncomment the model loading logic that converts string to loaded model
Cause: tokenizer parameter is None Fix: Pass a valid PreTrainedTokenizerBase instance (or handle gracefully)
import torch
from scripts.simpo_trainer import SimPOTrainer
from scripts.simpo_config import SimPOConfig
# Create minimal config
config = SimPOConfig(output_dir="./test_output")
# Initialize trainer with model ID
trainer = SimPOTrainer(
model="sshleifer/tiny-gpt2", # Will auto-load
args=config
)
# Verify initialization
assert hasattr(trainer, 'args'), "args not set"
assert hasattr(trainer, 'model'), "model not set"
assert trainer.args.beta == 2.0, "default beta not set"
print("Initialization successful!")
Once properly initialized, any method can access config values:
def some_method(self):
beta = self.args.beta # Get beta parameter
gamma_ratio = self.args.gamma_beta_ratio # Get gamma ratio
device = self.args.device # Get device
lr = self.args.learning_rate # Get learning rate
This is essential for the simpo_loss() method to compute gamma correctly.