论文
微调 Qwen3-27B 用于 C 到 Rust 代码翻译:预训练、调试感知 SFT 和特定于任务的 SFT 的三阶段课程
Fine-Tuning Qwen3-27B for C-to-Rust Code Translation: A Three-Stage Curriculum of Pretraining, Debugging-Aware SFT, and Task-Specific SFT
摘要
将 C 代码转换为安全、惯用的 Rust 是一个长期的软件工程目标,因为它可以消除整类内存安全漏洞,同时保留遗留系统的功能行为。 大语言模型 (LLM) 在这项任务中表现出了希望,但在现成应用时通常表现不佳,因为通用预训练很少强调惯用的 Rust 生成、跨语言语义等效性或推理和修复编译器/运行时反馈的能力。在本报告中,我们描述了应用于 Qwen3-27B 的三阶段 微调 课程,旨在逐步专门化 C 到 Rust (C2Rust) 翻译任务的模型:(1) 继续对以 Rust 为中心的语料库进行预训练,以加强模型优于惯用 Rust 语法和标准库使用的能力; (2) 在 microsoft/Verus_Training_Data 数据集上监督 微调 (SFT),以灌输 Rust 代码的调试和自我修复行为; (3) 针对源自 LeetCode 问题的配对 C/Rust 解决方案的特定于任务的 SFT,以教授直接语义翻译。我们使用 SACTOR 的代理、静态分析引导的验证框架来评估结果模型,该框架通过基于外部功能接口 (FFI) 的端到端 (E2E) 测试执行结构感知、两阶段(不惯用到惯用)转换。我们报告成功率、惯用性(Clippy lint 计数、不安全代码分数)和故障模式分析,并将我们的微调模型与基线 Qwen3-27B 和在同一框架下评估的其他 LLM 进行比较。