build(CRITICAL): complete .so build + deploy pipeline for competition submission
Dockerfile was missing ALL .so compilation steps: Step 1: build.sh → ex_factor_0.so (MoE topk), ex_factor_2.so (MoE GEMM), libex_registry.so Step 2: precompile_moe_topk.py → moe_topk_softmax_v3.so (CUB BlockReduce) Step 3: precompile_moe_kernels.py → moe_ops_v055.so (vllm v0.5.5 MoE kernels) Step 4: patch_ops.sh → deploy all Python + .so + serving layer Step 5: precompile_gdn.py → flash_qla GDN .so patch_ops.sh was missing .so deployment: Added section 8: Deploy ex_engine package + .so to Python site-packages Added section 9: Deploy precompiled MoE .so to site-packages Both system path (/usr/local/corex/lib/python3/dist-packages/) and vllm path (model_executor/models/ex_engine/) covered .so inventory for competition: - ex_factor_0.so: MoE topk_softmax CUDA kernel (corex clang, ivcore10) - ex_factor_2.so: MoE fused GEMM CUDA kernel - libex_registry.so: dlopen registry - moe_topk_softmax_v3.so: JIT compiled via torch.utils.cpp_extension - moe_ops_v055.so: vllm v0.5.5 compatible MoE kernels - flash_qla_sm70 GDN .so: GatedDeltaNet fused kernel
This commit is contained in:
20
Dockerfile
20
Dockerfile
@@ -3,10 +3,30 @@ FROM git.modelhub.org.cn:9443/enginex-iluvatar/bi100-3.2.3-x86-ubuntu20.04-py3.1
|
||||
RUN mkdir -p /workspace
|
||||
WORKDIR /workspace/
|
||||
|
||||
# Copy all sources
|
||||
COPY ./qwen3_6_scripts /workspace/qwen3_6_scripts
|
||||
COPY ./computility-run.yaml /workspace/computility-run.yaml
|
||||
COPY ./ex_engine /workspace/ex_engine
|
||||
|
||||
# Step 1: Build EX Engine .so libraries
|
||||
RUN chmod +x /workspace/ex_engine/build.sh && \
|
||||
bash /workspace/ex_engine/build.sh --corex 2>&1 | tee /workspace/ex_build.log ; \
|
||||
echo "[Dockerfile] ex_engine build exit code: $?"
|
||||
|
||||
# Step 2: Precompile MoE CUDA kernels
|
||||
RUN python3 /workspace/ex_engine/precompile_moe_topk.py 2>&1 | tee -a /workspace/ex_build.log ; \
|
||||
echo "[Dockerfile] moe_topk precompile exit code: $?"
|
||||
|
||||
# Step 3: Precompile vllm v0.5.5 MoE kernels
|
||||
RUN python3 /workspace/ex_engine/precompile_moe_kernels.py 2>&1 | tee -a /workspace/ex_build.log ; \
|
||||
echo "[Dockerfile] moe_v055 precompile exit code: $?"
|
||||
|
||||
# Step 4: Deploy patches (serving + engine fixes)
|
||||
RUN chmod +x /workspace/qwen3_6_scripts/patch_ops.sh && \
|
||||
bash /workspace/qwen3_6_scripts/patch_ops.sh 2>&1 | tee /workspace/patch_ops.log ; \
|
||||
echo "[Dockerfile] patch_ops exit code: $?"
|
||||
|
||||
# Step 5: Precompile GDN kernel (needs vllm in path, so after patch_ops)
|
||||
RUN python3 /workspace/qwen3_6_scripts/precompile_gdn.py \
|
||||
/workspace/qwen3_6_scripts/flash_qla_sm70 2>&1 | tee -a /workspace/ex_build.log ; \
|
||||
echo "[Dockerfile] gdn precompile exit code: $?"
|
||||
|
||||
@@ -167,3 +167,66 @@ if [ -d "$_FLASH_SRC" ]; then
|
||||
fi
|
||||
|
||||
echo "[patch_ops] DONE"
|
||||
|
||||
# ---- 8. Deploy ex_engine package + compiled .so to Python path ----
|
||||
_SITE="/usr/local/corex/lib/python3/dist-packages"
|
||||
if [ -d "$_SITE" ]; then
|
||||
# Deploy ex_engine as importable package
|
||||
_EX_DST="$_SITE/ex_engine"
|
||||
mkdir -p "$_EX_DST/python" "$_EX_DST/build" "$_EX_DST/csrc"
|
||||
|
||||
# Python files
|
||||
cp /workspace/ex_engine/python/*.py "$_EX_DST/python/" 2>/dev/null || true
|
||||
touch "$_EX_DST/__init__.py"
|
||||
touch "$_EX_DST/python/__init__.py"
|
||||
|
||||
# Compiled .so files from build.sh
|
||||
if [ -d "/workspace/ex_engine/build" ]; then
|
||||
cp /workspace/ex_engine/build/*.so "$_EX_DST/build/" 2>/dev/null || true
|
||||
# Also copy to package root for easy loading
|
||||
cp /workspace/ex_engine/build/*.so "$_EX_DST/" 2>/dev/null || true
|
||||
echo "[patch_ops] ex_engine .so files deployed: $(ls /workspace/ex_engine/build/*.so 2>/dev/null | wc -l) files"
|
||||
fi
|
||||
|
||||
# C++ sources for JIT compilation at runtime
|
||||
cp /workspace/ex_engine/csrc/ix_full_bridge.cpp "$_EX_DST/csrc/" 2>/dev/null || true
|
||||
cp /workspace/ex_engine/csrc/moe_topk_softmax_v3.cu "$_EX_DST/csrc/" 2>/dev/null || true
|
||||
if [ -d "/workspace/ex_engine/csrc/moe_v055" ]; then
|
||||
cp -r /workspace/ex_engine/csrc/moe_v055 "$_EX_DST/csrc/" 2>/dev/null || true
|
||||
fi
|
||||
|
||||
# Also deploy to vllm models dir for import compatibility
|
||||
_EX_VLLM="$VLLM/model_executor/models/ex_engine"
|
||||
mkdir -p "$_EX_VLLM/python" "$_EX_VLLM/csrc"
|
||||
cp /workspace/ex_engine/python/*.py "$_EX_VLLM/python/" 2>/dev/null || true
|
||||
touch "$_EX_VLLM/__init__.py"
|
||||
touch "$_EX_VLLM/python/__init__.py"
|
||||
cp /workspace/ex_engine/csrc/ix_full_bridge.cpp "$_EX_VLLM/csrc/" 2>/dev/null || true
|
||||
if [ -d "/workspace/ex_engine/build" ]; then
|
||||
cp /workspace/ex_engine/build/*.so "$_EX_VLLM/" 2>/dev/null || true
|
||||
fi
|
||||
|
||||
echo "[patch_ops] ex_engine deployed to $_SITE and $VLLM"
|
||||
fi
|
||||
|
||||
# ---- 9. Deploy precompiled MoE .so ----
|
||||
# moe_topk_softmax_v3.so (from precompile_moe_topk.py)
|
||||
for _SO in /workspace/ex_engine/moe_topk_softmax_v3*.so /tmp/torch_extensions/*/moe_topk_softmax_v3*.so; do
|
||||
if [ -f "$_SO" ]; then
|
||||
cp "$_SO" "$_SITE/" 2>/dev/null || true
|
||||
echo "[patch_ops] MoE topk .so deployed: $(basename $_SO)"
|
||||
break
|
||||
fi
|
||||
done
|
||||
|
||||
# moe_v055 kernels .so (from precompile_moe_kernels.py)
|
||||
for _SO in /workspace/ex_engine/moe_ops_v055*.so /tmp/torch_extensions/*/moe_ops_v055*.so; do
|
||||
if [ -f "$_SO" ]; then
|
||||
cp "$_SO" "$_SITE/" 2>/dev/null || true
|
||||
echo "[patch_ops] MoE v055 .so deployed: $(basename $_SO)"
|
||||
break
|
||||
fi
|
||||
done
|
||||
|
||||
echo "[patch_ops] FINAL: all .so and Python packages deployed"
|
||||
ls -la "$_EX_DST/build/"*.so 2>/dev/null || echo "[patch_ops] WARNING: no .so in ex_engine/build/"
|
||||
|
||||
Reference in New Issue
Block a user