2 Commits

Author SHA1 Message Date
d0e260c322 Keep image generic; move startup settings into run.sh/compose
All checks were successful
Docker Build and Push / docker (push) Successful in 1h29m12s
2026-10-26 18:53:54 +08:00
9f523e208a Use unique ModelHub framework name vllm_llama_4
Some checks failed
Docker Build and Push / docker (push) Has been cancelled
2026-10-26 18:33:01 +08:00
5 changed files with 27 additions and 19 deletions

View File

@@ -1,3 +1,3 @@
FRAMEWORK=vllm FRAMEWORK=vllm_llama_4
GPU_TYPE=Iluvatar_bi-150 GPU_TYPE=Iluvatar_bi-150
TASK_TYPE=text-generation TASK_TYPE=text-generation

View File

@@ -4,13 +4,13 @@
# - Llama-4-Scout-17B-16E-Instruct(BF16,TP8,8 卡) # - Llama-4-Scout-17B-16E-Instruct(BF16,TP8,8 卡)
# - Llama-4-Maverick-17B-128E-Instruct-FP8(FP8,TP8+PP2,16 卡) # - Llama-4-Maverick-17B-128E-Instruct-FP8(FP8,TP8+PP2,16 卡)
# #
# 模型权重不打进镜像,运行时挂载模型目录;容器启动后读取 config.json # 镜像只包含运行时依赖和 Llama 4 补丁,不设置启动命令、ENV、WORKDIR 或 EXPOSE;
# 自动判断 Scout / Maverick,并选择对应的 TP / PP / 端口。 # 模型路径、端口、TP/PP、GPU、挂载等全部由 run.sh / docker-compose.yml 在启动时传入。
# #
# 构建: # 构建:
# docker build -t llama4-bi150:2026-10-26 . # docker build -t llama4-bi150:2026-10-26 .
# #
# 运行: # 运行(由 run.sh 传入 entrypoint 和全部参数):
# ./run.sh /mnt/disk0/models/LLM-Research/Llama-4-Scout-17B-16E-Instruct # ./run.sh /mnt/disk0/models/LLM-Research/Llama-4-Scout-17B-16E-Instruct
# ./run.sh /mnt/disk0/models/LLM-Research/Llama-4-Maverick-17B-128E-Instruct-FP8 # ./run.sh /mnt/disk0/models/LLM-Research/Llama-4-Maverick-17B-128E-Instruct-FP8
# #
@@ -35,16 +35,5 @@ RUN chmod +x /usr/local/bin/llama4-entrypoint.sh \
&& chmod +x /opt/llama4/detect_model.py \ && chmod +x /opt/llama4/detect_model.py \
&& python3 /opt/llama4/apply_patch.py && python3 /opt/llama4/apply_patch.py
ENV MODEL_PATH=/models/llama4 \ # 故意不设置 ENV / WORKDIR / EXPOSE / ENTRYPOINT / CMD:
AUTO_DETECT=1 \ # 镜像保持通用,启动方式由 run.sh 或 docker-compose.yml 决定。
HOST=0.0.0.0 \
MAX_MODEL_LEN=4096 \
MAX_NUM_SEQS=1 \
GPU_MEM_UTIL=0.90 \
ENFORCE_EAGER=1 \
PYTHONUNBUFFERED=1
WORKDIR /opt/llama4
EXPOSE 8091 8092
ENTRYPOINT ["/usr/local/bin/llama4-entrypoint.sh"]

View File

@@ -78,6 +78,11 @@ MODEL_HOST_DIR=/mnt/disk0/models/LLM-Research/Llama-4-Maverick-17B-128E-Instruct
GPUs : 0,1,2,...,15 GPUs : 0,1,2,...,15
``` ```
> 镜像本身不设置 `ENTRYPOINT` / `CMD` / `ENV` / `WORKDIR` / `EXPOSE`,
> 启动方式、模型路径、端口、TP/PP、GPU 和挂载全部由 `run.sh` 或 `docker-compose.yml` 传入。
> 如果直接 `docker run`,需要显式指定:
> `--entrypoint /usr/local/bin/llama4-entrypoint.sh --workdir /opt/llama4`。
### 2.1 自动检测规则 ### 2.1 自动检测规则
`detect_model.py` 读取 `config.json`: `detect_model.py` 读取 `config.json`:
@@ -258,7 +263,7 @@ CI 会:
`task_info.env`: `task_info.env`:
```bash ```bash
FRAMEWORK=vllm FRAMEWORK=vllm_llama_4
GPU_TYPE=Iluvatar_bi-150 GPU_TYPE=Iluvatar_bi-150
TASK_TYPE=text-generation TASK_TYPE=text-generation
``` ```

View File

@@ -6,6 +6,13 @@ services:
image: llama4-bi150:${TAG:-2026-10-26} image: llama4-bi150:${TAG:-2026-10-26}
container_name: llama4 container_name: llama4
# 镜像本身不设置启动命令,启动方式全部由这里决定。
entrypoint: ["/usr/local/bin/llama4-entrypoint.sh"]
working_dir: /opt/llama4
expose:
- "8091"
- "8092"
# vLLM 多卡 NCCL / 端口直通 # vLLM 多卡 NCCL / 端口直通
network_mode: host network_mode: host
ipc: host ipc: host
@@ -21,7 +28,7 @@ services:
environment: environment:
MODEL_PATH: /models/llama4 MODEL_PATH: /models/llama4
AUTO_DETECT: "${AUTO_DETECT:-1}" AUTO_DETECT: "${AUTO_DETECT:-1}"
HOST: 0.0.0.0 HOST: "${HOST:-0.0.0.0}"
# 默认暴露全部 16 张卡;entrypoint 会根据模型选择实际 TP*PP。 # 默认暴露全部 16 张卡;entrypoint 会根据模型选择实际 TP*PP。
CUDA_VISIBLE_DEVICES: "${GPUS:-0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15}" CUDA_VISIBLE_DEVICES: "${GPUS:-0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15}"
@@ -37,6 +44,7 @@ services:
MAX_NUM_SEQS: "${MAX_NUM_SEQS:-1}" MAX_NUM_SEQS: "${MAX_NUM_SEQS:-1}"
GPU_MEM_UTIL: "${GPU_MEM_UTIL:-0.90}" GPU_MEM_UTIL: "${GPU_MEM_UTIL:-0.90}"
ENFORCE_EAGER: "${ENFORCE_EAGER:-1}" ENFORCE_EAGER: "${ENFORCE_EAGER:-1}"
PYTHONUNBUFFERED: "1"
EXTRA_ARGS: "${EXTRA_ARGS:-}" EXTRA_ARGS: "${EXTRA_ARGS:-}"
ulimits: ulimits:

6
run.sh
View File

@@ -77,6 +77,7 @@ eval "${DETECT_OUTPUT}"
MODEL_KIND="${DETECTED_MODEL_KIND}" MODEL_KIND="${DETECTED_MODEL_KIND}"
IMAGE="${IMAGE:-llama4-bi150:2026-10-26}" IMAGE="${IMAGE:-llama4-bi150:2026-10-26}"
NAME="${NAME:-llama4-${MODEL_KIND}}" NAME="${NAME:-llama4-${MODEL_KIND}}"
HOST="${HOST:-0.0.0.0}"
PORT="${PORT:-${DETECTED_PORT}}" PORT="${PORT:-${DETECTED_PORT}}"
MODEL_MOUNT="${MODEL_MOUNT:-/models/llama4}" MODEL_MOUNT="${MODEL_MOUNT:-/models/llama4}"
SERVED_NAME="${SERVED_NAME:-${DETECTED_SERVED_NAME}}" SERVED_NAME="${SERVED_NAME:-${DETECTED_SERVED_NAME}}"
@@ -122,6 +123,9 @@ fi
DOCKER_RUN=( DOCKER_RUN=(
docker run -d --name "${NAME}" docker run -d --name "${NAME}"
--entrypoint /usr/local/bin/llama4-entrypoint.sh
--workdir /opt/llama4
--expose "${PORT}"
--privileged --privileged
--pid host --pid host
--network host --network host
@@ -134,6 +138,7 @@ DOCKER_RUN=(
-e MODEL_PATH="${MODEL_MOUNT}" -e MODEL_PATH="${MODEL_MOUNT}"
-e AUTO_DETECT="${AUTO_DETECT}" -e AUTO_DETECT="${AUTO_DETECT}"
-e MODEL_KIND="${MODEL_KIND}" -e MODEL_KIND="${MODEL_KIND}"
-e HOST="${HOST}"
-e SERVED_NAME="${SERVED_NAME}" -e SERVED_NAME="${SERVED_NAME}"
-e PORT="${PORT}" -e PORT="${PORT}"
-e TP="${TP}" -e TP="${TP}"
@@ -142,6 +147,7 @@ DOCKER_RUN=(
-e MAX_NUM_SEQS="${MAX_NUM_SEQS}" -e MAX_NUM_SEQS="${MAX_NUM_SEQS}"
-e GPU_MEM_UTIL="${GPU_MEM_UTIL}" -e GPU_MEM_UTIL="${GPU_MEM_UTIL}"
-e ENFORCE_EAGER="${ENFORCE_EAGER}" -e ENFORCE_EAGER="${ENFORCE_EAGER}"
-e PYTHONUNBUFFERED=1
-e EXTRA_ARGS="${EXTRA_ARGS}" -e EXTRA_ARGS="${EXTRA_ARGS}"
"${DOCKER_EXTRA[@]}" "${DOCKER_EXTRA[@]}"
--restart unless-stopped --restart unless-stopped