宝塔面板部署AI模型需创建独立Python环境、配置FastAPI服务脚本、启用CUDA GPU加速、设置反向代理与HTTPS、并实现模型热更新与进程守护。

如果您在宝塔面板中已安装Python项目管理器,但希望部署需多依赖、GPU支持或自定义服务入口的AI算法模型,则可能面临环境隔离不足、启动脚本兼容性差或端口绑定异常等问题。以下是实现该目标的具体操作路径:
一、创建独立Python环境并安装核心依赖
为避免与系统Python或其他站点环境冲突,需使用宝塔Python项目管理器新建专用虚拟环境,并精确指定AI模型所需版本的torch、transformers、onnxruntime等包。
1、进入宝塔面板【软件商店】,确认已安装【Python项目管理器】并启动服务。
2、点击【Python项目管理器】→【添加项目】,填写项目名称(如ai-model-serving),选择Python版本(建议3.9或3.10)。
立即学习“Python免费学习笔记(深入)”;
3、在【项目路径】中指定一个全新空目录(如/www/wwwroot/ai-model-serving),勾选【创建虚拟环境】。
4、在【依赖文件】字段粘贴requirements.txt内容,例如:
torch==2.0.1+cu118
transformers==4.30.2
fastapi==0.104.1
uvicorn==0.23.2
psutil==5.9.5
5、点击【提交】,等待环境创建及依赖自动安装完成;安装日志中出现Successfully installed即表示关键包就绪。
二、配置模型加载与API服务启动脚本
宝塔Python项目管理器默认执行app.py,需将AI模型加载逻辑、推理接口封装为符合WSGI/ASGI规范的可运行脚本,并处理模型首次加载耗时与内存驻留问题。
1、在项目根目录下新建main.py,内容包含模型预加载与FastAPI实例化:
2、在main.py顶部添加if __name__ == "__main__": uvicorn.run("main:app", host="0.0.0.0", port=8001, workers=1)。
3、确保项目根目录存在pyproject.toml或setup.py以声明ASGI服务器依赖,否则宝塔可能无法识别启动方式。
4、在【Python项目管理器】对应项目编辑页,将【启动文件】改为main.py,【启动命令】设为python main.py。
三、启用GPU加速并验证CUDA可用性
若AI模型依赖NVIDIA GPU运算,需确保宝塔所在服务器已安装nvidia-driver与cuda-toolkit,并在Python环境中显式启用CUDA后端。
1、SSH登录服务器,执行nvidia-smi确认GPU设备在线且驱动正常。
2、在Python项目虚拟环境中执行python -c "import torch; print(torch.cuda.is_available())",返回True方可继续。
3、修改main.py中模型加载代码,在model.to("cuda")前插入torch.backends.cudnn.enabled = True以启用优化。
4、在宝塔【Python项目管理器】项目设置中,于【环境变量】区域添加:
CUDA_VISIBLE_DEVICES=0
TORCH_CUDA_ARCH_LIST="8.6"
四、配置反向代理与HTTPS访问通道
AI服务通常监听本地端口(如8001),需通过宝塔网站配置反向代理,将其映射至域名路径,并启用SSL保障请求安全。
1、在宝塔【网站】中新建一个站点(如ai.yourdomain.com),不创建FTP与数据库。
2、进入该站点【设置】→【反向代理】→【添加反向代理】,目标URL填http://127.0.0.1:8001。
3、在【SSL】选项卡中申请并强制HTTPS,确保所有POST请求(含模型输入数据)加密传输。
4、在【配置文件】中手动追加以下内容以支持大请求体和长连接:
client_max_body_size 512M;
proxy_read_timeout 300;
proxy_send_timeout 300;
五、设置模型热更新与进程守护机制
当需替换模型权重或更新推理逻辑时,应避免手动重启导致服务中断,需借助宝塔进程管理与文件监控能力实现平滑切换。
1、在项目目录下新建reload_trigger.py,调用os.kill(os.getpid(), signal.SIGUSR1)触发uvicorn重载(需启用--reload参数)。
2、在【Python项目管理器】项目编辑页,将【启动命令】改为uvicorn main:app --host 0.0.0.0 --port 8001 --workers 1 --reload --reload-dir /www/wwwroot/ai-model-serving/models。
3、将模型文件(.bin/.pt/.onnx)统一存放于models子目录,修改任一文件时间戳即可触发自动重载。
4、在【计划任务】中添加每5分钟执行一次的脚本:
ps aux | grep "uvicorn main:app" | grep -v grep || cd /www/wwwroot/ai-model-serving && python main.py &










