对应设计:同目录《llama.cpp docker本地算力部署》(方案B / 分片走A / sidecar 穿透)。只做设计不启动,首次 up 由用户执行。
写了什么(/s500data/docker/llama/)
- docker-compose.yml:llama(server-cuda,GPU 透传,--models-preset /config/qwen3.8-flash-next.ini,ghost_net 外部网)+ llama-frpc sidecar(snowdreamtech/frpc:0.70.1-alpine,network_mode: service:llama,吃 frpc4060.toml 的 127.0.0.1:8080,无需改 toml)。docker compose config 通过。
- hf.yml + hf_download.py + .env:单次下载服务。配置全在 .env(改那里,不改 yml;文件名去仓库 Files 页照抄仓内相对路径,子目录带上);用法:docker compose -f hf.yml up(全默认)或 HF_FILES='xxx.gguf' docker compose -f hf.yml up(shell 覆盖优先)。落点 = /models/<HF_REPO>/<仓内相对路径>(repo 的 / 原样当子目录,无转义、无别名层),config 实证 .env 默认与 shell 覆盖双向有效。
- data/config/qwen3.8-flash-next.ini:A 方案(model 指 -00001-of-00002 + mmproj 本地路径,load-on-startup=1,8GB 显存参数;两处路径与下载落点逐字对过)。
关键设计点
- mmproj 是视觉投影头,不能独立 serving,必须配同仓主 LLM;仓内主模型全是两分片(Q2_0/IQ2_XS/IQ3_S/IQ3_XXS),故 INI 走 A 不走方案B。默认 Q2_0,换量化改 INI 两行 + .env 的 HF_FILES(注释里有 IQ3_XXS 示例)。
- frpc 镜像与挂载定式沿用本机 v100(0.70.1-alpine + ./x.toml:/etc/frp/frpc.toml:ro,无需 command)。代理名 name=4060 沿用 frpc4060.toml(frps 全局唯一规则仍有效)。
- rootless 现状:daemon 无 nvidia runtime(Default=runc,无 nvidia-ctk)——用户 up 前需先配 NVIDIA Container Toolkit(CDI),判据见 compose 文件尾注释。
- 落点用 HF_REPO 原样当目录(library 原生 local_dir 语义只保证“保持仓内原结构写进指定目录”,目录定成 repo 原样在语义内;原生 snapshot 布局有 sha 目录会导致 INI 悬空,故不用)。换仓改 .env 两处,INI 路径机械拼接同步改(注释已写明)。
待用户执行
- R01:配 toolkit/CDI,docker run --rm --gpus all … nvidia-smi 见 4060。
- R02:docker compose -f hf.yml up 下齐三件套。
- R03:docker compose up -d,/v1/models 与视觉问答冒烟。