用途:在 SGLang 中调试 CUDA 崩溃与错误。CUDA 错误常在正常调试输出刷新前就终止程序,该技能通过内核 API 日志在崩溃前记录输入,便于事后分析原因。
主要能力:覆盖 register_custom_op、register_custom_op_from_extern 注册的自定义算子,LLM 的 attention、linear、量化及多平台包装入口,Diffusion 的 attention、linear、rotary 等入口,以及部分 torch.ops.sglang.* 热点。不自动覆盖仓库中所有纯 PyTorch 调用。
使用方式:设置环境变量 SGLANG_KERNEL_API_LOGLEVEL 与 SGLANG_KERNEL_API_LOGDEST。级别 1 仅记录函数名;级别 3 记录输入元数据(shape、dtype、device、连续性);级别 5 增加张量统计(min、max、mean、nan_count、inf_count);级别 10 在执行前保存输入到 SGLANG_KERNEL_API_DUMP_DIR,崩溃后仍保留 inputs.pt 与 metadata.json。多进程用 %i 区分日志与转储目录,可用 SGLANG_KERNEL_API_DUMP_INCLUDE/EXCLUDE 通配符过滤。
适用场景:非法内存访问、设备端断言、NaN/Inf、显存溢出、形状不匹配等排查;可配合 compute-sanitizer、cuda-gdb 及内核 printf 使用。
限制:CUDA graph 捕获期间会自动跳过张量转储;级别 10 转储不保证对所有方法一键重放,因部分方法依赖未序列化的模块状态;CUDA_LAUNCH_BLOCKING=1 会改变执行时序,非默认流程。