620. LMSYS - Chatbot Arena Human Preference Predictions | lmsys-chatbot-arena
非常感谢组织者和 Kaggle。虽然发生了一些意外事件,但总体上这是一场很棒的比赛。(本地 CV 和公共 LB 之间有明显的相关性,没有重大的洗牌。)
另外,我非常感谢 @emiz6413 公开分享的基础解决方案(Gemma2 训练 + 推理),这给了我很大的启发,是我获胜的关键。正是因为他的“开源精神”,我也将毫无保留地完全公开我的训练和推理解决方案。(这些只是在基础方案上做了部分修改。)
这里只提供需要修改部分的代码;其余代码严格遵循公开的 Gemma 2 训练方案:https://www.kaggle.com/code/emiz6413/training-gemma-2-9b-4-bit-qlora-fine-tuning
@dataclass
class Config:
output_dir: str = "output"
checkpoint: str = "unsloth/gemma-2-9b-it-bnb-4bit" # 4-bit 量化的 gemma-2-9b-instruct
max_length: int = 1024
n_splits: int = 800
fold_idx: int = 0
optim_type: str = "adamw_8bit"
per_device_train_batch_size: int = 4
gradient_accumulation_steps: int = 16 # 全局 batch size 为 8
per_device_eval_batch_size: int = 4
n_epochs: int = 1
freeze_layers: int = 0 # 总共有 42 层,我们不在前 16 层添加适配器
lr: float = 1e-5
warmup_steps: int = 20
lora_r: int = 64
lora_alpha: float = 32
lora_dropout: float = 0.05
lora_bias: str = "none"
config = Config()
lora_config = LoraConfig(
r=config.lora_r,
lora_alpha=config.lora_alpha,
# 仅目标自注意力
target_modules=["q_proj", "k_proj", "v_proj","o_proj","gate_proj"],
layers_to_transform=[i for i in range(42) if i >= config.freeze_layers],
lora_dropout=config.lora_dropout,
bias=config.lora_bias,
task_type=TaskType.SEQ_CLS,
)
我已经发布了推理部分的代码:https://www.kaggle.com/code/faykudbq/18th-inference-gemma2-max-length-2100-tta