Keep image generic; move startup settings into run.sh/compose
All checks were successful
Docker Build and Push / docker (push) Successful in 1h29m12s
All checks were successful
Docker Build and Push / docker (push) Successful in 1h29m12s
This commit is contained in:
21
Dockerfile
21
Dockerfile
@@ -4,13 +4,13 @@
|
||||
# - Llama-4-Scout-17B-16E-Instruct(BF16,TP8,8 卡)
|
||||
# - Llama-4-Maverick-17B-128E-Instruct-FP8(FP8,TP8+PP2,16 卡)
|
||||
#
|
||||
# 模型权重不打进镜像,运行时挂载模型目录;容器启动后读取 config.json
|
||||
# 自动判断 Scout / Maverick,并选择对应的 TP / PP / 端口。
|
||||
# 镜像只包含运行时依赖和 Llama 4 补丁,不设置启动命令、ENV、WORKDIR 或 EXPOSE;
|
||||
# 模型路径、端口、TP/PP、GPU、挂载等全部由 run.sh / docker-compose.yml 在启动时传入。
|
||||
#
|
||||
# 构建:
|
||||
# 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-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 \
|
||||
&& python3 /opt/llama4/apply_patch.py
|
||||
|
||||
ENV MODEL_PATH=/models/llama4 \
|
||||
AUTO_DETECT=1 \
|
||||
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"]
|
||||
# 故意不设置 ENV / WORKDIR / EXPOSE / ENTRYPOINT / CMD:
|
||||
# 镜像保持通用,启动方式由 run.sh 或 docker-compose.yml 决定。
|
||||
|
||||
@@ -78,6 +78,11 @@ MODEL_HOST_DIR=/mnt/disk0/models/LLM-Research/Llama-4-Maverick-17B-128E-Instruct
|
||||
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 自动检测规则
|
||||
|
||||
`detect_model.py` 读取 `config.json`:
|
||||
|
||||
@@ -6,6 +6,13 @@ services:
|
||||
image: llama4-bi150:${TAG:-2026-10-26}
|
||||
container_name: llama4
|
||||
|
||||
# 镜像本身不设置启动命令,启动方式全部由这里决定。
|
||||
entrypoint: ["/usr/local/bin/llama4-entrypoint.sh"]
|
||||
working_dir: /opt/llama4
|
||||
expose:
|
||||
- "8091"
|
||||
- "8092"
|
||||
|
||||
# vLLM 多卡 NCCL / 端口直通
|
||||
network_mode: host
|
||||
ipc: host
|
||||
@@ -21,7 +28,7 @@ services:
|
||||
environment:
|
||||
MODEL_PATH: /models/llama4
|
||||
AUTO_DETECT: "${AUTO_DETECT:-1}"
|
||||
HOST: 0.0.0.0
|
||||
HOST: "${HOST:-0.0.0.0}"
|
||||
|
||||
# 默认暴露全部 16 张卡;entrypoint 会根据模型选择实际 TP*PP。
|
||||
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}"
|
||||
GPU_MEM_UTIL: "${GPU_MEM_UTIL:-0.90}"
|
||||
ENFORCE_EAGER: "${ENFORCE_EAGER:-1}"
|
||||
PYTHONUNBUFFERED: "1"
|
||||
EXTRA_ARGS: "${EXTRA_ARGS:-}"
|
||||
|
||||
ulimits:
|
||||
|
||||
6
run.sh
6
run.sh
@@ -77,6 +77,7 @@ eval "${DETECT_OUTPUT}"
|
||||
MODEL_KIND="${DETECTED_MODEL_KIND}"
|
||||
IMAGE="${IMAGE:-llama4-bi150:2026-10-26}"
|
||||
NAME="${NAME:-llama4-${MODEL_KIND}}"
|
||||
HOST="${HOST:-0.0.0.0}"
|
||||
PORT="${PORT:-${DETECTED_PORT}}"
|
||||
MODEL_MOUNT="${MODEL_MOUNT:-/models/llama4}"
|
||||
SERVED_NAME="${SERVED_NAME:-${DETECTED_SERVED_NAME}}"
|
||||
@@ -122,6 +123,9 @@ fi
|
||||
|
||||
DOCKER_RUN=(
|
||||
docker run -d --name "${NAME}"
|
||||
--entrypoint /usr/local/bin/llama4-entrypoint.sh
|
||||
--workdir /opt/llama4
|
||||
--expose "${PORT}"
|
||||
--privileged
|
||||
--pid host
|
||||
--network host
|
||||
@@ -134,6 +138,7 @@ DOCKER_RUN=(
|
||||
-e MODEL_PATH="${MODEL_MOUNT}"
|
||||
-e AUTO_DETECT="${AUTO_DETECT}"
|
||||
-e MODEL_KIND="${MODEL_KIND}"
|
||||
-e HOST="${HOST}"
|
||||
-e SERVED_NAME="${SERVED_NAME}"
|
||||
-e PORT="${PORT}"
|
||||
-e TP="${TP}"
|
||||
@@ -142,6 +147,7 @@ DOCKER_RUN=(
|
||||
-e MAX_NUM_SEQS="${MAX_NUM_SEQS}"
|
||||
-e GPU_MEM_UTIL="${GPU_MEM_UTIL}"
|
||||
-e ENFORCE_EAGER="${ENFORCE_EAGER}"
|
||||
-e PYTHONUNBUFFERED=1
|
||||
-e EXTRA_ARGS="${EXTRA_ARGS}"
|
||||
"${DOCKER_EXTRA[@]}"
|
||||
--restart unless-stopped
|
||||
|
||||
Reference in New Issue
Block a user