launch_model_vllm.sh 3.3 KB

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