之前的 Dockerfile 有 40+ 行,包含 8 个独立 patch 脚本的 RUN 步骤。 这些 patch 之间有执行顺序冲突: - patch_ops.sh 部署 paged_attn.py (use_v1=True, PyTorch fallback) - patch_ixformer_native.py 修改 _custom_ops.py (V2 fallback) - patch_paged_attention_v2.py 注释掉 use_v1=True (启用 V2) - patch_enable_triton.py 启用 Triton prefill (覆盖 patch_ops.sh 的禁用) - patch_head256_triton.py 修改 BLOCK_N (必须在 enable_triton 之后) 这些 patch 的交互导致最终状态不确定,是功能测试 fail 的潜在原因。 基础引擎原版 Dockerfile 只有 4 行: FROM base_image RUN mkdir /workspace COPY ./qwen3_6_scripts /workspace/qwen3_6_scripts RUN cd ./qwen3_6_scripts && ./patch_ops.sh 所有适配逻辑集中在 patch_ops.sh 里,一个脚本完成所有工作。 额外的 patch 脚本(V2、Triton enable 等)如果需要,应该集成到 patch_ops.sh 中。 CCCL 架构启示 (cc_dispatch.cuh): CCCL 的 dispatch 是一个单一入口点 dispatch_compute_cap, 不是多个独立的 dispatch 层互相覆盖。 Dockerfile 也应该是一个单一入口点 (patch_ops.sh)。
7 lines
238 B
Docker
7 lines
238 B
Docker
FROM git.modelhub.org.cn:9443/enginex-iluvatar/bi100-3.2.3-x86-ubuntu20.04-py3.10-poc-llm-infer:v1.2.3
|
|
|
|
RUN mkdir /workspace
|
|
WORKDIR /workspace/
|
|
COPY ./qwen3_6_scripts /workspace/qwen3_6_scripts
|
|
RUN cd ./qwen3_6_scripts && ./patch_ops.sh
|