99 lines
3.2 KiB
Bash
Executable File
99 lines
3.2 KiB
Bash
Executable File
#!/bin/bash
|
|
# probe_ix_unified_bridge.sh — cat ix_unified_bridge的完整接口
|
|
set -e
|
|
|
|
echo "=== ix_unified_bridge.so 函数列表 ==="
|
|
python3 -c "
|
|
import importlib.util, sys
|
|
|
|
# 方法1: 直接import
|
|
for path in [
|
|
'/usr/local/corex/lib/python3/dist-packages/vllm/ix_unified_bridge.cpython-310-x86_64-linux-gnu.so',
|
|
'/usr/local/corex/lib/python3/dist-packages/vllm/ix_unified_bridge.so',
|
|
]:
|
|
try:
|
|
spec = importlib.util.spec_from_file_location('ix_unified_bridge', path)
|
|
mod = importlib.util.module_from_spec(spec)
|
|
spec.loader.exec_module(mod)
|
|
fns = [x for x in dir(mod) if not x.startswith('_')]
|
|
print(f'loaded from: {path}')
|
|
print(f'functions ({len(fns)}):')
|
|
for f in sorted(fns):
|
|
print(f' {f}')
|
|
break
|
|
except Exception as e:
|
|
print(f' {path}: {e}')
|
|
"
|
|
|
|
echo ""
|
|
echo "=== ixformer 里跟vllm相关的函数签名 ==="
|
|
python3 -c "
|
|
import ixformer
|
|
import inspect
|
|
|
|
# 列出所有vllm_开头的函数
|
|
for name in sorted(dir(ixformer)):
|
|
if 'vllm' in name.lower() or name in ['silu_and_mul', 'fused_add_rms_norm', 'rms_norm', 'flash_attn_func', 'linear', 'matmul', 'gemv', 'rotary_embedding']:
|
|
obj = getattr(ixformer, name)
|
|
if callable(obj):
|
|
try:
|
|
sig = inspect.signature(obj)
|
|
print(f'{name}{sig}')
|
|
except:
|
|
print(f'{name}(...)')
|
|
"
|
|
|
|
echo ""
|
|
echo "=== corex_moe_topk_softmax.so 函数列表 ==="
|
|
python3 -c "
|
|
import importlib.util
|
|
path = '/usr/local/corex/lib/python3/dist-packages/vllm/corex_moe_topk_softmax.so'
|
|
try:
|
|
spec = importlib.util.spec_from_file_location('corex_moe_topk_softmax', path)
|
|
mod = importlib.util.module_from_spec(spec)
|
|
spec.loader.exec_module(mod)
|
|
fns = [x for x in dir(mod) if not x.startswith('_')]
|
|
print(f'functions ({len(fns)}):')
|
|
for f in sorted(fns):
|
|
print(f' {f}')
|
|
except Exception as e:
|
|
print(f'FAIL: {e}')
|
|
"
|
|
|
|
echo ""
|
|
echo "=== 所有corex_*.so的函数列表 ==="
|
|
python3 -c "
|
|
import importlib.util, os, glob
|
|
for so in sorted(glob.glob('/usr/local/corex/lib/python3/dist-packages/vllm/corex_*.so')):
|
|
name = os.path.basename(so).replace('.so','')
|
|
try:
|
|
spec = importlib.util.spec_from_file_location(name, so)
|
|
mod = importlib.util.module_from_spec(spec)
|
|
spec.loader.exec_module(mod)
|
|
fns = [x for x in dir(mod) if not x.startswith('_')]
|
|
print(f'{name}: {fns}')
|
|
except Exception as e:
|
|
print(f'{name}: FAIL {e}')
|
|
"
|
|
|
|
echo ""
|
|
echo "=== base镜像 _custom_ops.py 完整内容 ==="
|
|
VLLM_BASE="/usr/local/corex/lib/python3/dist-packages/vllm"
|
|
if [ -f "$VLLM_BASE/_custom_ops.py" ]; then
|
|
cat "$VLLM_BASE/_custom_ops.py"
|
|
else
|
|
echo "NOT FOUND at $VLLM_BASE/_custom_ops.py"
|
|
# 搜索
|
|
find /usr/local/corex -name "_custom_ops.py" -path "*/vllm/*" 2>/dev/null | head -5
|
|
fi
|
|
|
|
echo ""
|
|
echo "=== base镜像 qwen3_5.py MoE forward ==="
|
|
BASE_QWEN="$VLLM_BASE/model_executor/models/qwen3_5.py"
|
|
if [ -f "$BASE_QWEN" ]; then
|
|
grep -n "topk_softmax\|FusedMoE\|fused_moe\|_pure_pytorch\|corex_moe\|ix_unified" "$BASE_QWEN" | head -30
|
|
else
|
|
echo "NOT FOUND"
|
|
find /usr/local/corex -name "qwen3_5.py" -path "*/models/*" 2>/dev/null | head -5
|
|
fi
|