Conversation
|
🤖 AI Code Review — PR #932 PR 概述Title: 核心目标修复 ROCm 平台 legacy 改动逻辑拆解GitHub 开源仓库变更(主要代码)1. do_sample 标志处理(核心逻辑)新增 2. filtered_probs clone 修复
3. sort() API 参数修正
4. top_p 过滤保留 top-1 token新增 5. cum_log_probs 计算修正原代码 Checklist 检查结果通用原则软件工程原则
架构审视
测试
代码质量与文档
领域检查A. 兼容性与配置 — 全部 ✅B. 正确性与逻辑
C. 线程安全与并发 — 全部 ✅D. 性能 — 全部 ✅(clone 引入一次额外拷贝,但仅在非 top_k=1 路径,可接受)E. 分布式 — 全部 ✅F. 跨平台(ROCm/ARM)
G. 语言与框架特有 — 全部 ✅H. 测试与 CI
I. 代码质量 — 全部 ✅Review 意见问题
小问题
整体评价本 PR 修复了 ROCm legacy 采样路径中的多个真实正确性问题,每项修复的方向都是正确的。 ❌ 存在阻塞/重要问题,不建议合入(P1 x 2) |
|
🤖 AI Code Review — PR #932 PR 概述Title: 核心目标修复 ROCm 平台 greedy sampling 路径的多个正确性问题,包括:缺少 改动逻辑拆解GitHub 开源仓库变更(主要代码)1. ROCm sampleGreedy — do_sample 标志检查(对齐 CUDA 路径)新增 2. ROCm sampleGreedy — filtered_probs clone将 3. ROCm sampleGreedy — top_p 过滤安全性
4. ROCm sampleGreedy — cum_log_probs 修复旧代码 Checklist 检查结果通用原则软件工程原则
架构审视
测试
代码质量与文档
领域检查A. 兼容性与配置 — 全部 ✅B. 正确性与逻辑
C. 线程安全与并发 — 全部 ✅D. 性能 — 全部 ✅E. 分布式 — 全部 ✅F. 跨平台(ROCm/ARM)
G. 语言与框架特有 — 全部 ✅H. 测试与 CI — ❌ 见 P1-1I. 代码质量 — 全部 ✅Review 意见问题
小问题
整体评价本 PR 修复了 ROCm greedy sampling 路径的多个真实正确性问题,特别是 top_p 过滤可能清零所有概率导致 coredump 的问题和 cum_log_probs 计算错误。修复方向正确,clone 和 mask[0]=false 的处理都是必要的。但 mixed batch 下 do_sample 的处理与 CUDA 路径存在行为差异(P1-2),且缺少测试覆盖(P1-1),建议补齐后合入。 ❌ 存在阻塞/重要问题,不建议合入 |
|
🤖 AI Code Review — PR #932 PR 概述Title: 核心目标修复 ROCm 平台 legacy Review 意见问题
小问题
纠正前次 AI Review 的错误前次 AI review 提到 整体评价本 PR 修复了 ROCm greedy sampling 路径的多个真实正确性问题,每项修复方向正确。PR description 质量好。主要风险在于:(1) mixed batch 下 do_sample 处理与 CUDA 路径不一致;(2) 缺少测试覆盖。 ❌ 存在重要问题,不建议合入(P1 x 2) |
LLLLKKKK
left a comment
There was a problem hiding this comment.
LGTM - testing CI gate workflow post-merge
Motivation
Fix ROCm greedy sampling coredump when requests include
top_pparameter. The ROCm sampling path was not aligned with the CUDA path, causing all token probabilities to be masked to zero during top_p filtering, which leads to a crash intorch::multinomial.Key Changes
1. Add
do_sampleFlag Check — Align with CUDA Pathneed_do_sampleis truehas_not_do_sampleandneed_do_sampleboolean checks based onparams.do_sample2. Fix Inplace Modification in Top-K Filtering
auto filtered_probs = probs_ttoauto filtered_probs = probs_t.clone()to avoid corrupting the original probability tensor, which is needed later forcum_log_probscomputation3. Fix Top-P Filtering Coredump (Root Cause)
dim=-1torow.sort()to ensure correct sorting behaviormask[0] = falseto always preserve the highest-probability token, preventing all tokens from being masked to zero — this is the direct cause of the coredump4. Fix
cum_log_probsComputationcum_log_probs_t.add_(probs_t.log())— applies log over entire distributioncum_log_probs_t.add_(token_probs.log())— gathers only the sampled token's probability viagather, then applies log.to(cum_log_probs_t.device())