大模型部署中服务配置错误导致的问题排查
在大模型生产环境部署过程中,我们遇到了一个典型的配置错误问题。项目使用的是基于FastAPI构建的推理服务,在部署到K8s集群后,服务启动正常但无法处理任何请求。
问题现象
服务日志显示:
INFO: Uvicorn running on http://0.0.0.0:8000 (Press CTRL+C to quit)
INFO: Started server process [1]
INFO: Waiting for application startup.
ERROR: Application startup failed. Error: ConfigError: Invalid config
排查过程
通过逐步调试发现,问题出在环境变量配置上。具体代码如下:
# config.py
import os
from pydantic import BaseSettings
class ModelConfig(BaseSettings):
model_path: str = os.getenv("MODEL_PATH", "/models")
port: int = int(os.getenv("PORT", "8000"))
workers: int = int(os.getenv("WORKERS", "1"))
config = ModelConfig()
复现步骤
- 在Dockerfile中设置:
ENV WORKERS=4 - 服务启动命令:
uvicorn main:app --host 0.0.0.0 --port 8000 --workers $WORKERS - 部署到K8s时,配置了环境变量:
WORKERS=2
根本原因
由于环境变量解析顺序问题,当WORKERS设置为字符串'2'而非数字时,导致在启动参数中传递给uvicorn的值出错。最终应该将配置项改为:
workers: int = int(os.getenv("WORKERS", "1")) # 确保类型转换
解决方案
建议所有部署环境统一使用配置类进行参数验证,并添加类型转换,避免此类问题再次发生。

讨论