بنقرة واحدة
gpu-static-analysis
纯静态代码分析,无需 GPU/运行环境,扫描训练项目并输出优化建议报告
التثبيت باستخدام Codex أو Claude انسخ هذا Prompt والصقه في Codex أو Claude أو مساعد آخر ليراجع صفحة Skill ويثبّتها لك.
القائمة
纯静态代码分析,无需 GPU/运行环境,扫描训练项目并输出优化建议报告
التثبيت باستخدام Codex أو Claude انسخ هذا Prompt والصقه في Codex أو Claude أو مساعد آخر ليراجع صفحة Skill ويثبّتها لك.
استنادا إلى تصنيف SOC المهني
| name | gpu-static-analysis |
| description | 纯静态代码分析,无需 GPU/运行环境,扫描训练项目并输出优化建议报告 |
依赖说明:本 skill 调用
gpu-training-optimizer/_internals/下的子 skill(如training-acceleration-audit、llamafactory-optimization等),需同时安装gpu-training-optimizerskill。
对 GPU 训练项目进行纯静态代码分析,无需 GPU 或运行时环境。自动检测训练框架,执行通用训练加速审计和框架专项审计,生成包含优化建议、具体代码/配置变更示例和预估影响的完整优化报告。
当用户要求对训练项目进行纯静态分析、不需要 Profiling 的代码审计时触发。
static-analysis-report.md 是用户最终交付物,缺失则整个分析流程等于无效所有报告输出到 <项目路径>_static_analysis/ 目录:
<项目路径>_static_analysis/
├── static-analysis-report.md # 最终综合优化报告(主交付物)
├── v0_training-acceleration-audit-report.md # 通用加速审计
├── v0_<framework>-optimization-report.md # 框架专项审计(如适用)
├── v0_vllm-optimization-report.md # vLLM 推理优化审计(如适用)
└── v0_sglang-optimization-report.md # SGLang 推理优化审计(如适用)
你是 GPU 训练优化专家。按以下 4 个步骤完成纯静态代码分析。
从用户的 prompt 中提取以下信息。不要向用户反问,直接从 prompt 和项目代码中获取:
| 信息 | 必填 | 获取方式 | 默认策略 |
|---|---|---|---|
| 项目路径 | 是 | 从 prompt 提取 | — |
| 启动命令 | 是 | 从 prompt 提取 | — |
| 模型参数量 | 推荐 | 从项目代码/配置推断(搜索 config.json、model_name_or_path 等) | 如无法推断则标注"未知" |
| 优化目标 | 可选 | 从 prompt 提取 | 默认"综合优化(吞吐优先)" |
启动命令的作用:启动命令不会被实际执行,仅用于:(1) 辅助框架检测(如
swift sft、llamafactory-cli、deepspeed --hostfile);(2) 判断并行策略和多机模式(如--nproc_per_node、--nnodes);(3) 提取训练入口脚本路径和参数;(4) 生成更有针对性的优化建议。
扫描项目文件,识别是否使用特定训练框架。框架检测影响后续审计策略的选择。
LlamaFactory 检测规则(满足任一即判定为 LlamaFactory 项目):
| 检测方式 | 匹配模式 |
|---|---|
| 依赖文件 | requirements.txt、pyproject.toml、setup.py 中包含 llamafactory 或 llama-factory |
| import 语句 | from llamafactory、import llamafactory |
| CLI 命令 | 项目脚本中包含 llamafactory-cli、llamafactory.cli |
| 配置参数 | YAML/JSON 中包含 LlamaFactory 特有参数:finetuning_type、neat_packing、use_unsloth、enable_liger_kernel、lora_target、flash_attn: fa2 |
| 项目结构 | 存在 data/dataset_info.json、或 examples/train_lora/、examples/deepspeed/ds_z*_config.json |
ms-swift 检测规则(满足任一即判定为 ms-swift 项目):
| 检测方式 | 匹配模式 |
|---|---|
| 依赖文件 | requirements.txt、pyproject.toml、setup.py 中包含 ms-swift |
| import 语句 | from swift、import swift、from swift.llm、from swift.trainers |
| CLI 命令 | 项目脚本中包含 swift sft、swift pt、swift rlhf、megatron sft、megatron pt |
| 配置参数 | YAML/CLI 中包含 ms-swift 特有参数:tuner_type、tuner_backend、attn_impl、padding_free、loss_scale、sequence_parallel_size |
| 检查点 | args.json 中包含 swift_version 字段 |
VideoX-Fun 检测规则(满足任一即判定为 VideoX-Fun 项目):
| 检测方式 | 匹配模式 |
|---|---|
| 依赖文件 | requirements.txt、pyproject.toml、setup.py 中包含 videox-fun 或 videox_fun |
| import 语句 | from videox_fun、import videox_fun |
| 项目结构 | 存在 videox_fun/ 目录(含 models/、data/、pipeline/ 子目录) |
| 脚本路径 | 脚本中包含 scripts/wan2.1_fun/、scripts/wan2.2_fun/、scripts/cogvideox_fun/、scripts/hunyuanvideo/ |
| 配置文件 | 存在 config/wan2.1/wan_civitai.yaml、config/wan2.2/ 等 |
| Git Remote | .git/config 中 remote URL 包含 VideoX-Fun |
Flow-Factory 检测规则(满足任一即判定为 Flow-Factory 项目):
| 检测方式 | 匹配模式 |
|---|---|
| 依赖文件 | requirements.txt、pyproject.toml、setup.py 中包含 flow-factory 或 flow_factory |
| import 语句 | from flow_factory、import flow_factory |
| CLI 命令 | 启动命令包含 ff-train、flow-factory-train |
| 配置参数 | YAML 中包含 trainer_type:(值为 grpo/nft/awm/dpo/dgpo/crd/diffusion-opd)、dynamics_type:、offload_samples_to_cpu:、sample_group_size: |
| 项目结构 | 存在 src/flow_factory/ 目录 |
| Git Remote | .git/config 中 remote URL 包含 Flow-Factory |
HuggingFace Transformers Trainer 检测规则(仅在上述框架均未匹配时检测):
| 检测方式 | 匹配模式 |
|---|---|
| import 语句 | from transformers import Trainer、from transformers import TrainingArguments、from transformers import Seq2Seq |
| 代码模式 | Trainer(model=、TrainingArguments( |
vLLM 推理框架检测规则(可与训练框架并存,单独标记):
| 检测方式 | 匹配模式 |
|---|---|
| 依赖文件 | requirements.txt、pyproject.toml、setup.py 中包含 vllm |
| import 语句 | from vllm import、from vllm.、import vllm |
| CLI 命令 | 启动命令包含 vllm serve、python -m vllm |
| RLHF 集成 | 代码/配置中包含 use_vllm=True、vllm_mode、infer_backend: vllm、enable_sleep_mode |
| vLLM 特有参数 | gpu_memory_utilization、enforce_eager、enable_prefix_caching、max_num_seqs、speculative_config |
SGLang 推理框架检测规则(可与训练框架并存,单独标记):
| 检测方式 | 匹配模式 |
|---|---|
| 依赖文件 | requirements.txt、pyproject.toml、setup.py 中包含 sglang 或 sgl-kernel |
| import 语句 | from sglang import、from sglang.、import sglang、from sglang_router |
| CLI 命令 | 启动命令包含 sglang.launch_server、sglang_router.launch_server |
| RLHF 集成 | 代码/配置中包含 infer_backend: sglang、sglang_maxlen、sglang_mem_fraction、enable_memory_saver、update_weights_from_distributed |
| SGLang 特有参数 | mem_fraction_static、schedule_policy、chunked_prefill_size、enable_dp_attention、radix_cache、piecewise_cuda_graph |
# 快速检测命令
ORIGINAL_PROJECT="<用户提供的项目路径>"
LAUNCH_CMD="<用户提供的启动命令>"
FRAMEWORK="generic"
# 检查启动命令 — LlamaFactory
echo "${LAUNCH_CMD}" | grep -q "llamafactory-cli" && FRAMEWORK="llamafactory"
# 检查依赖文件 — LlamaFactory
grep -rls "llamafactory\|llama-factory\|LLaMA-Factory" \
"${ORIGINAL_PROJECT}/requirements.txt" \
"${ORIGINAL_PROJECT}/pyproject.toml" \
"${ORIGINAL_PROJECT}/setup.py" 2>/dev/null && FRAMEWORK="llamafactory"
# 检查配置文件中的 LlamaFactory 特有参数
grep -rls "finetuning_type:\|neat_packing:\|use_unsloth:\|enable_liger_kernel:\|lora_target:" \
"${ORIGINAL_PROJECT}"/*.yaml "${ORIGINAL_PROJECT}"/*.yml 2>/dev/null && FRAMEWORK="llamafactory"
# 检查依赖文件 — ms-swift
grep -rls "ms-swift" \
"${ORIGINAL_PROJECT}/requirements.txt" \
"${ORIGINAL_PROJECT}/pyproject.toml" \
"${ORIGINAL_PROJECT}/setup.py" 2>/dev/null && FRAMEWORK="swift"
# 检查启动命令 — ms-swift
echo "${LAUNCH_CMD}" | grep -qE "swift (sft|pt|rlhf|infer|deploy)|megatron (sft|pt|rlhf)" && FRAMEWORK="swift"
# 检查配置文件中的 ms-swift 特有参数
grep -rls "tuner_type:\|tuner_backend:\|attn_impl:\|padding_free:\|sequence_parallel_size:" \
"${ORIGINAL_PROJECT}"/*.yaml "${ORIGINAL_PROJECT}"/*.yml 2>/dev/null && FRAMEWORK="swift"
# 检查 import 语句 — ms-swift
grep -rls "from swift\|import swift" \
"${ORIGINAL_PROJECT}"/*.py 2>/dev/null && FRAMEWORK="swift"
# 检查项目结构 — VideoX-Fun
if [ -d "${ORIGINAL_PROJECT}/videox_fun/models" ] && [ -d "${ORIGINAL_PROJECT}/videox_fun/data" ]; then
FRAMEWORK="videox_fun"
fi
# 检查依赖文件 — VideoX-Fun
grep -rls "videox-fun\|videox_fun" \
"${ORIGINAL_PROJECT}/requirements.txt" \
"${ORIGINAL_PROJECT}/pyproject.toml" \
"${ORIGINAL_PROJECT}/setup.py" 2>/dev/null && FRAMEWORK="videox_fun"
# 检查启动命令 — VideoX-Fun
echo "${LAUNCH_CMD}" | grep -qE "scripts/(wan2\.[12]|cogvideox|hunyuanvideo|flux|longcatvideo)" && FRAMEWORK="videox_fun"
# 检查配置文件 — VideoX-Fun
[ -f "${ORIGINAL_PROJECT}/config/wan2.1/wan_civitai.yaml" ] || \
[ -d "${ORIGINAL_PROJECT}/config/wan2.2" ] && FRAMEWORK="videox_fun"
# 检查 Git remote — VideoX-Fun fork
git -C "${ORIGINAL_PROJECT}" remote -v 2>/dev/null | grep -qi "VideoX-Fun" && FRAMEWORK="videox_fun"
# 检查依赖文件 — Flow-Factory
grep -rls "flow-factory\|flow_factory" \
"${ORIGINAL_PROJECT}/requirements.txt" \
"${ORIGINAL_PROJECT}/pyproject.toml" \
"${ORIGINAL_PROJECT}/setup.py" 2>/dev/null && FRAMEWORK="flow_factory"
# 检查启动命令 — Flow-Factory
echo "${LAUNCH_CMD}" | grep -qE "ff-train|flow-factory-train" && FRAMEWORK="flow_factory"
# 检查配置文件中的 Flow-Factory 特有参数
grep -rls "trainer_type:\|dynamics_type:\|offload_samples_to_cpu:\|sample_group_size:" \
"${ORIGINAL_PROJECT}"/*.yaml "${ORIGINAL_PROJECT}"/*.yml "${ORIGINAL_PROJECT}"/examples/**/*.yaml 2>/dev/null && FRAMEWORK="flow_factory"
# 检查项目结构 — Flow-Factory
if [ -d "${ORIGINAL_PROJECT}/src/flow_factory" ]; then
FRAMEWORK="flow_factory"
fi
# 检查 Git remote — Flow-Factory
git -C "${ORIGINAL_PROJECT}" remote -v 2>/dev/null | grep -qi "Flow-Factory" && FRAMEWORK="flow_factory"
# 检查是否使用 vLLM 推理框架(可与训练框架并存)
VLLM_DETECTED="no"
grep -rls "^vllm\|vllm[>=<]" \
"${ORIGINAL_PROJECT}/requirements.txt" \
"${ORIGINAL_PROJECT}/pyproject.toml" \
"${ORIGINAL_PROJECT}/setup.py" 2>/dev/null && VLLM_DETECTED="yes"
grep -rls "from vllm import\|from vllm\.\|import vllm" \
"${ORIGINAL_PROJECT}"/*.py "${ORIGINAL_PROJECT}"/**/*.py 2>/dev/null && VLLM_DETECTED="yes"
echo "${LAUNCH_CMD}" | grep -qE "vllm serve|python -m vllm" && VLLM_DETECTED="yes"
grep -rls "use_vllm.*[Tt]rue\|vllm_mode\|infer_backend.*vllm\|enable_sleep_mode" \
"${ORIGINAL_PROJECT}"/*.py "${ORIGINAL_PROJECT}"/*.yaml "${ORIGINAL_PROJECT}"/*.yml \
"${ORIGINAL_PROJECT}"/**/*.py 2>/dev/null && VLLM_DETECTED="yes"
# 如果仅有 vLLM(无训练框架),设为 vllm 框架
if [ "${FRAMEWORK}" = "generic" ] && [ "${VLLM_DETECTED}" = "yes" ]; then
FRAMEWORK="vllm"
fi
# 检查是否使用 SGLang 推理框架(可与训练框架并存)
SGLANG_DETECTED="no"
grep -rls "^sglang\|sglang[>=<]\|sgl-kernel" \
"${ORIGINAL_PROJECT}/requirements.txt" \
"${ORIGINAL_PROJECT}/pyproject.toml" \
"${ORIGINAL_PROJECT}/setup.py" 2>/dev/null && SGLANG_DETECTED="yes"
grep -rls "from sglang import\|from sglang\.\|import sglang\|from sglang_router" \
"${ORIGINAL_PROJECT}"/*.py "${ORIGINAL_PROJECT}"/**/*.py 2>/dev/null && SGLANG_DETECTED="yes"
echo "${LAUNCH_CMD}" | grep -qE "sglang\.launch_server|sglang_router\.launch_server" && SGLANG_DETECTED="yes"
grep -rls "infer_backend.*sglang\|sglang_maxlen\|sglang_mem_fraction\|enable_memory_saver\|update_weights_from_distributed\|update_weights_from_tensor" \
"${ORIGINAL_PROJECT}"/*.py "${ORIGINAL_PROJECT}"/*.yaml "${ORIGINAL_PROJECT}"/*.yml \
"${ORIGINAL_PROJECT}"/**/*.py 2>/dev/null && SGLANG_DETECTED="yes"
# 如果仅有 SGLang(无训练框架且无 vLLM),设为 sglang 框架
if [ "${FRAMEWORK}" = "generic" ] && [ "${SGLANG_DETECTED}" = "yes" ]; then
FRAMEWORK="sglang"
fi
# 检查是否直接使用 HuggingFace Transformers Trainer(仅在未检测到上层框架时)
if [ "${FRAMEWORK}" = "generic" ]; then
grep -rls "from transformers import Trainer\|from transformers import TrainingArguments\|from transformers import Seq2Seq" \
"${ORIGINAL_PROJECT}"/*.py "${ORIGINAL_PROJECT}"/**/*.py 2>/dev/null && FRAMEWORK="hf_trainer"
grep -rls "Trainer(model=\|TrainingArguments(" \
"${ORIGINAL_PROJECT}"/*.py "${ORIGINAL_PROJECT}"/**/*.py 2>/dev/null && FRAMEWORK="hf_trainer"
fi
echo "检测到训练框架: ${FRAMEWORK}"
echo "检测到 vLLM 推理框架: ${VLLM_DETECTED}"
echo "检测到 SGLang 推理框架: ${SGLANG_DETECTED}"
框架检测优先级:LlamaFactory > ms-swift > VideoX-Fun > Flow-Factory > vLLM(独立)> SGLang(独立)> HF Trainer > 通用。vLLM/SGLang 可与任何训练框架并存(通过独立标记)。
OUTPUT_DIR="${ORIGINAL_PROJECT}_static_analysis"
mkdir -p "${OUTPUT_DIR}"
echo "输出目录: ${OUTPUT_DIR}"
无论检测到哪种框架,都按照 training-acceleration-audit skill 的完整执行指令,对原始项目(只读扫描)进行全面审计:
保存为:${OUTPUT_DIR}/v0_training-acceleration-audit-report.md
根据第一步检测到的框架,执行对应的专项审计 skill:
LlamaFactory 项目 (FRAMEWORK=llamafactory):
/llamafactory-optimization skill 的完整执行指令审计 10 大类(A-J,/58 分)${OUTPUT_DIR}/v0_llamafactory-optimization-report.mdms-swift 项目 (FRAMEWORK=swift):
/swift-optimization skill 的完整执行指令审计 10 大类(A-J,/60 分)${OUTPUT_DIR}/v0_swift-optimization-report.mdVideoX-Fun 项目 (FRAMEWORK=videox_fun):
/videox-fun-optimization skill 的完整执行指令审计 9 大类(A-I,/61 分)${OUTPUT_DIR}/v0_videox-fun-optimization-report.mdFlow-Factory 项目 (FRAMEWORK=flow_factory):
/flow-factory-optimization skill 的完整执行指令审计 10 大类(A-J,/49 分)${OUTPUT_DIR}/v0_flow-factory-optimization-report.mdHuggingFace Transformers Trainer 项目 (FRAMEWORK=hf_trainer):
/transformers-optimization skill 的完整执行指令审计 10 大类(A-J,/62 分)${OUTPUT_DIR}/v0_transformers-optimization-report.md通用项目 (FRAMEWORK=generic):
vLLM 推理优化 (VLLM_DETECTED=yes,可与任何训练框架并存):
/vllm-optimization skill 的完整执行指令审计 10 大类(A-J,/52 分)${OUTPUT_DIR}/v0_vllm-optimization-report.mdSGLang 推理优化 (SGLANG_DETECTED=yes,可与任何训练框架并存):
/sglang-optimization skill 的完整执行指令审计 10 大类(A-J,/54 分)${OUTPUT_DIR}/v0_sglang-optimization-report.md多份报告互补:通用审计覆盖面广(torch.compile、CUDA Graph、Triton 自定义算子、通信优化等),框架专项审计聚焦该框架内可配置的优化项。vLLM/SGLang 审计聚焦推理引擎的性能优化,在 RLHF/GRPO 场景中与训练框架审计互补。所有报告结合才能最大化优化空间。
基于第二步和第三步的审计结果,生成最终的综合优化报告。这是用户的最终交付物,必须生成。
输出文件:${OUTPUT_DIR}/static-analysis-report.md
报告格式:
# GPU 训练项目静态分析 — 优化建议报告
## 项目概览
| 项目 | 值 |
|------|-----|
| 项目路径 | <路径> |
| 启动命令 | `<命令>` |
| 检测到的训练框架 | <框架名称> |
| 模型类型 | <LLM / MLLM / 视频生成 / 未知> |
| 模型规模 | <推断的参数量或"未知"> |
| 优化目标 | <用户指定或默认> |
| 分析时间 | <完成时间> |
## 审计评分总结
### 通用训练加速审计(9 大类)
| # | 类别 | 得分 | 满分 | 关键发现 |
|---|------|------|------|----------|
| A | 并行策略 | X | 7 | ... |
| B | 训练框架 | X | 6 | ... |
| C | 显存优化 | X | 5 | ... |
| D | 计算优化 | X | 6 | ... |
| E | 通信优化 | X | 4 | ... |
| F | 数据与 I/O 优化 | X | 10 | ... |
| G | 训练策略 | X | 6 | ... |
| H | 多模态专项 | X | 3 或 N/A | ... |
| I | 基础设施 | X | 5 | ... |
| | **总分** | **X** | **Y** | |
### <框架名>专项审计(如适用)
| # | 类别 | 得分 | 满分 | 关键发现 |
|---|------|------|------|----------|
| ... | | | | |
| | **总分** | **X** | **Y** | |
## 优化建议(按优先级排序)
### 🔴 高优先级(预估提升 > 30%)
#### 1. <优化项名称>
- **当前状态**: <未使用/部分使用,附证据>
- **推荐操作**: <具体操作说明>
- **预估影响**: <吞吐提升/显存节省的预估>
- **实施难度**: 低/中/高
- **具体变更**:
(根据框架提供对应的配置/代码变更示例)
对于 LlamaFactory 项目提供 YAML 配置:
```yaml
# LlamaFactory YAML 配置示例
对于 ms-swift 项目提供 CLI/YAML 配置:
# ms-swift 配置示例
对于 HF Trainer 项目提供 TrainingArguments:
# TrainingArguments 配置示例
对于通用项目提供 Python 代码:
# 代码变更示例
(同上格式)
(同上格式)
根据项目特征和检测到的框架,提供完整的场景化配置模板。
# 或 python/json,取决于框架
# 完整可用的配置模板
# 完整可用的配置模板
根据项目实际情况,参考 /flash-attention skill 的选型指南:
根据项目的模型规模和训练方式,参考 /deepspeed-optimization skill 的配置建议:
{
// 完整的 ds_config.json 模板
}
| 报告 | 路径 | 说明 |
|---|---|---|
| 综合优化建议报告 | static-analysis-report.md | 本报告(主交付物) |
| 通用训练加速审计 | v0_training-acceleration-audit-report.md | 9 大类通用审计 |
| <框架>专项审计 | v0_-optimization-report.md | 框架专项审计 |
| vLLM 推理优化审计 | v0_vllm-optimization-report.md | vLLM 推理专项审计(检测到 vLLM 时) |
| SGLang 推理优化审计 | v0_sglang-optimization-report.md | SGLang 推理专项审计(检测到 SGLang 时) |
#### 报告生成要求
1. **每条建议都必须包含具体的代码/配置变更示例**,不要只给抽象建议
2. **优先级排序严格按照 `training-acceleration-audit` skill 第四步的规则**
3. **预估影响要具体**:给出百分比范围(如"吞吐提升 20-30%"),而非模糊描述
4. **配置模板必须完整可用**:用户可以直接复制使用,不需要额外修改
5. **Flash Attention 和 DeepSpeed 建议要结合项目实际**:根据模型架构、参数量、GPU 类型(如可推断)给出针对性建议
6. **如果某些信息无法从静态分析中获取**(如 GPU 型号、实际显存),明确标注"需根据实际硬件调整"
DeepSpeed ZeRO 显存优化与训练加速
Flash Attention 版本选型与最佳配置
提交代码到远程仓库
NVIDIA Nsight Systems 系统级 GPU Profiling
Nsight Systems 自动检测、安装与升级
PyTorch Profiler 性能分析,提供算子级瓶颈定位