CodePin-SFT-Qwen3.5-0.8B

CodePin-SFT-Qwen3.5-0.8B 是基于 Qwen/Qwen3.5-0.8B 全参数微调的代码定位模型。它通过纯文本工具轨迹学习仓库搜索、文件阅读与证据归纳,面向大型代码仓库中的文件、类和函数定位。

CodePin Collection · SFT Dataset · SWE-smith Code Search

Highlights

  • 5,676 条完整训练轨迹,最长 8,192 tokens;不使用会破坏工具调用闭环的硬截断。
  • 4 × V100 32GB、FSDP FP16、全参数训练,共 710 optimizer steps / 20.49M 有效 tokens。
  • 最终 train loss 0.1577,validation loss 0.2157;训练权重已通过 V100 加载、finite 检查和生成测试。
  • 发布逐 step 指标、矢量图、训练配置与完整性验证,便于复核和二次分析。

Quick start

建议使用支持 Qwen3.5 的较新 transformers 版本。

import torch
from transformers import AutoModelForCausalLM, AutoTokenizer

model_id = "LeeXugar/CodePin-SFT-Qwen3.5-0.8B"
tokenizer = AutoTokenizer.from_pretrained(model_id)
model = AutoModelForCausalLM.from_pretrained(
    model_id,
    dtype=torch.float16,
    attn_implementation="sdpa",
    device_map="auto",
)

messages = [{
    "role": "user",
    "content": "Locate the files and functions that implement request authentication. Return concise evidence.",
}]
prompt = tokenizer.apply_chat_template(messages, tokenize=False, add_generation_prompt=True)
inputs = tokenizer(prompt, return_tensors="pt").to(model.device)

with torch.inference_mode():
    output = model.generate(**inputs, max_new_tokens=512, do_sample=False)

print(tokenizer.decode(output[0], skip_special_tokens=True))

模型训练目标包含工具语义,但权重本身不提供仓库访问能力。实际使用时需要接入与训练数据兼容的搜索、读取和结果提交工具,并对路径、权限与调用参数做隔离校验。

Training

Item Configuration
Base model Qwen/Qwen3.5-0.8B
Dataset LeeXugar/CodePin-SFT-Qwen3.5-35B-A3B
Data train 5,676 / 5,700;validation 294 / 300
Objective 全部 assistant messages 的 causal LM loss
Context 最大 8,192 tokens,仅保留完整轨迹
Batch microbatch 1/GPU,global batch 8
Optimizer AdamW,peak LR 5e-5,weight decay 0.01
Schedule 71-step warmup + cosine decay
Runtime 4 × Tesla V100-PCIE-32GB,FSDP FP16
Training budget 710 steps,20,487,244 effective tokens

代码定位是多步行为任务:工具调用、返回结果和最终提交需要形成闭合轨迹,因此本次选择过滤超长样本,而不是在 8,192 tokens 处截断。对变长轨迹,样本数也不足以描述单步成本;本次 padded length 为 3,305–8,164,序列长度与 step time 的 Pearson r=0.944,说明训练预算与显存边界更适合用 token 数、最长序列和 padding efficiency 共同衡量。

训练保留完整 Adam 状态和更新顺序;优化器状态的分层放置只改变张量驻留位置,不清空动量或二阶矩。导出时 token embedding 与 LM head 已物化为两组独立训练张量,因此配置明确使用 tie_word_embeddings=false,忠实保存最终训练状态。模型实际可加载参数量为 1,006,672,704

Training dynamics

CodePin SFT training dynamics

710 个唯一成功 optimizer step 作为一条连续训练轨迹展示。前 50 步和后 50 步 loss 中位数分别为 0.29190.1896,下降 35.0%;gradient norm 在 warmup 初期达到峰值 34.69,后 50 步中位数稳定在 1.31。最终 train/eval loss 为 0.1577/0.2157,可支持“训练过程稳定且终点可用”的结论,但由于没有周期性 validation curve,不能据此断言最后一步是泛化最优 checkpoint。

Length-dependent systems behavior

本次 padded length 中位数为 5,156,共有 10 个 batch 达到或超过 7,500 tokens;每 GPU throughput 中位数为 248.7 tokens/s,non-padding ratio 中位数为 68.7%。长尾 batch 决定显存安全边界,而约 31% 的中位 padding 空间也表明下一轮最直接的优化是 length-aware bucketing 或动态 token-budget batching。这里的 loss 用于判断优化健康度;代码定位能力仍应在独立数据上报告 file/function Recall@k、工具调用成功率和轨迹完成率。

Artifacts

Path Description
model.safetensors 完整 HF 模型权重
assets/*.png, assets/*.pdf 训练过程图及矢量版本
training/sft_training_metrics.csv 710 steps 的逐步训练指标
training/sft_training_summary.json 聚合统计与证据边界
training/training_config.json 训练配置
training/data_filter_summary.json 完整轨迹过滤结果
training/final_hf_validation.json 权重加载与生成验证
training/public_blob_validation.json 公开权重匿名回读验证
scripts/gen_fig_sft_training_dynamics.py 图表与统计生成脚本

Validation and integrity

File Size SHA-256
model.safetensors 4,026,732,464 bytes d97009d9e41838a2eb8ce0e6275ac41cf80f1186915628f31662d3ba0b67e48e

最终模型在 Tesla V100 上以 FP16 加载,321 个 safetensors 张量全部为有限值,并通过 16-token greedy generation smoke test。发布后又在无 Hugging Face 凭据的条件下完整回读公开权重,重新计算的大小和 SHA-256 与上表一致。

Limitations

  • 数据由教师模型生成,可能继承其搜索偏好、冗余步骤与错误模式。
  • 数据主要覆盖英文软件工程任务;其他语言和非代码领域不在目标分布内。
  • 当前仅发布最终 validation loss,尚无独立下游代码定位 benchmark 结果。
  • 输出不保证正确或可执行;真实仓库中的工具调用需要权限隔离与参数验证。
  • 这是代码定位 SFT checkpoint,不是通用编程助手或自主代码修改系统。

License

模型权重继承 Qwen3.5 基座的 Apache License 2.0。训练数据和相关项目文件同时受各自来源的许可约束。

Acknowledgements

Qwen · Transformers · PyTorch FSDP · SkyRL

Downloads last month
-
Safetensors
Model size
1B params
Tensor type
F32
·
Inference Providers NEW
This model isn't deployed by any Inference Provider. 🙋 Ask for provider support

Model tree for LeeXugar/CodePin-SFT-Qwen3.5-0.8B

Finetuned
(336)
this model

Dataset used to train LeeXugar/CodePin-SFT-Qwen3.5-0.8B

Collection including LeeXugar/CodePin-SFT-Qwen3.5-0.8B

Evaluation results