Docker运行Django机器学习项目报libcublas.so.10缺失如何修复
问题原因
你当前使用的普通Python官方基础镜像未预装CUDA 10.2运行环境,而依赖文件里的cupy-cuda102、CUDA版本的PyTorch都需要调用系统层面的CUDA动态链接库,所以启动时找不到libcublas.so.10这个CUDA核心库文件。
修改方案
前置环境配置
Windows 10设备需要先完成WSL2安装配置,升级Docker Desktop到最新版本并开启WSL2后端,同时安装NVIDIA Docker运行时组件,确保Docker可以正常调用宿主机的NVIDIA显卡资源。
1. 修改Dockerfile
替换原基础镜像为NVIDIA官方预装CUDA10.2的运行时镜像,同时适配Python版本需求:
# 替换原普通Python镜像,采用适配cu102版本的CUDA官方运行时镜像 FROM nvidia/cuda:10.2-cudnn7-runtime-ubuntu18.04 ENV PYTHONUNBUFFERED 1 # 关闭安装过程的交互提示 ENV DEBIAN_FRONTEND=noninteractive WORKDIR /app # 安装Python3.9及对应pip,和原环境版本保持一致 RUN apt-get update && apt-get install -y \ python3.9 \ python3-pip \ python3.9-dev \ && rm -rf /var/lib/apt/lists/* \ && update-alternatives --install /usr/bin/python3 python3 /usr/bin/python3.9 1 \ && update-alternatives --set python3 /usr/bin/python3.9 \ && python3 -m pip install --upgrade pip setuptools wheel COPY ./requirements.txt /app/requirements.txt RUN pip install --no-cache-dir -r requirements.txt COPY . /app
2. 修改docker-compose.yml
增加NVIDIA运行时声明,修正挂载路径匹配Dockerfile配置:
version: '3' services: web: build: . # 指定使用NVIDIA运行时,才能正常调用CUDA资源 runtime: nvidia # 配置CUDA运行所需环境变量 environment: - NVIDIA_VISIBLE_DEVICES=all - NVIDIA_DRIVER_CAPABILITIES=compute,utility command: python manage.py runserver 0.0.0.0:8000 volumes: # 修正挂载路径,和Dockerfile的WORKDIR保持一致,保证代码修改可以实时生效 - .:/app ports: - "8000:8000"
3. 启动验证
执行以下命令重新构建并启动服务即可:
- 重新构建镜像:
docker-compose build --no-cache - 启动服务:
docker-compose up
如果不需要GPU加速,也可以临时替换依赖包规避CUDA配置:将requirements.txt里的cupy-cuda102==9.1.0替换为cupy==9.1.0,同时将PyTorch相关依赖替换为CPU版本torch==1.8.1+cpu、torchvision==0.9.1+cpu,使用原普通Python镜像也可正常运行,仅运算性能会下降。
内容的提问来源于stack exchange,提问作者wsm
相关产品推荐
相关产品推荐

