| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657 |
- #!/bin/bash
- # 这是一个用于启动 vLLM (Very Large Language Model) 服务器的 Bash 脚本片段。vLLM 是一个高性能的大语言模型推理和服务框架,专门用于部署和提供大型语言模型的 API 服务。
- # 这个脚本使用 `vllm serve` 命令来启动一个模型服务器,其中 `${hf_model_path}` 是一个环境变量,指向 Hugging Face 格式的模型路径。服务器配置为监听所有网络接口(`--host 0.0.0.0`)的 8101 端口,这意味着可以从外部访问这个服务。
- # 在资源管理方面,脚本配置了几个重要参数:GPU 内存利用率设置为 95%(`--gpu-memory-utilization 0.95`),这是一个相当激进的设置,几乎使用了所有可用的 GPU 内存。最大模型长度和批处理令牌数都设置为 32,768,这意味着模型可以处理相当长的输入序列。
- # 对于多模态处理,脚本包含了特殊的配置:`--limit-mm-per-prompt image=10` 限制每个提示最多包含 10 张图像,而 `--mm-processor-kwargs` 参数配置了多模态处理器,设置最大动态补丁数为 12。这些设置表明这个模型可能是一个视觉-语言模型,能够同时处理文本和图像输入。
- # 脚本还包含了一些运行时配置:启用了对远程代码的信任(`--trust-remote-code`),设置了 uvicorn 日志级别为 info,并将张量并行大小设置为 1(表示使用单个 GPU)。最后,通过 `${model_name}` 环境变量设置了服务模型的名称,这在客户端调用 API 时会用到。
- # 需要注意的是,脚本中的 `--chat-template-content-format string` 行缺少行尾的反斜杠(`\`),这可能会导致 Bash 解析错误。在多行命令中,每行末尾都需要反斜杠来表示命令的继续。
- # 如果只有一个 GPU 或模型较小
- # --tensor-parallel-size 1
- # data_parallel_size=2, # 数据并行,每张GPU独立处理请求
- # distributed_executor_backend="mp" # 使用multiprocessing后端
- # enable_prefix_caching=True, # 启用前缀缓存
- ######################################################
- # download model to /path/to/model
- # if [ -z "$NODOWNLOAD" ]; then
- # python3 tools/download_model.py
- # fi
- # register model to vllm
- hf_model_path="/home/ubuntu/zhch/dots.ocr/weights/DotsOCR" # Path to your downloaded model weights
- export PYTHONPATH=$(dirname "$hf_model_path"):$PYTHONPATH
- # 只需运行一次
- # sed -i '/^from vllm\.entrypoints\.cli\.main import main$/a\
- # from DotsOCR import modeling_dots_ocr_vllm' `which vllm`
- # launch vllm server
- model_name="DotsOCR"
- # CUDA_VISIBLE_DEVICES=0 vllm serve ${hf_model_path} --tensor-parallel-size 1 --gpu-memory-utilization 0.95 --chat-template-content-format string --served-model-name ${model_name} --trust-remote-code
- # --tensor-parallel-size 1 \
- vllm serve ${hf_model_path} \
- --host 0.0.0.0 \
- --port 8101 \
- --gpu-memory-utilization 0.85 \
- --max-log-len 1000 \
- --trust-remote-code \
- --max-model-len 65536 \
- --max-num-batched-tokens 65536 \
- --uvicorn-log-level info \
- --limit-mm-per-prompt '{"image": 3}' \
- --chat-template-content-format string \
- --data-parallel-size 3 \
- --max-num-seqs 32 \
- --enable-prefix-caching \
- --served-model-name ${model_name}
- # # run python demo after launch vllm server
- # python demo/demo_vllm.py
|