温馨提示×

如何在Ubuntu上运行PyTorch程序

小樊
31
2025-12-08 20:49:55
栏目: 智能运维

在 Ubuntu 上运行 PyTorch 的完整流程

一 准备环境

  • 更新系统并安装基础工具:
    • sudo apt update && sudo apt upgrade
    • sudo apt install -y python3 python3-pip build-essential
  • 建议使用虚拟环境隔离依赖:
    • 使用 venv:python3 -m venv venv && source venv/bin/activate
    • 或使用 conda:conda create -n pytorch python=3.10 -y && conda activate pytorch
  • 升级 pip:python -m pip install -U pip
  • 可选:如需多版本 Python,可用 pyenv 管理版本后再创建虚拟环境。

二 安装 PyTorch

  • 选择安装方式(CPU 或 GPU)。优先从 PyTorch 官网获取与你系统、CUDA 版本匹配的命令:https://pytorch.org/get-started/locally/
  • 常见安装命令示例:
    • CPU 版本:pip install torch torchvision torchaudio
    • GPU 版本(示例为 CUDA 11.8):pip install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu118
    • 使用 conda(GPU,含 cudatoolkit):conda install pytorch torchvision torchaudio cudatoolkit=11.8 -c pytorch
    • 使用 conda(CPU only):conda install pytorch torchvision torchaudio cpuonly -c pytorch
  • 安装完成后建议立即进行验证(见下一节)。

三 验证安装与运行第一个程序

  • 验证安装(在已激活的虚拟环境中执行):
    • python - <<‘PY’ import torch print(“PyTorch version:”, torch.version) print(“CUDA available:”, torch.cuda.is_available()) if torch.cuda.is_available(): print(“CUDA device count:”, torch.cuda.device_count()) print(“Current device:”, torch.cuda.current_device()) print(“Device name:”, torch.cuda.get_device_name(0)) PY
  • 运行示例脚本 test.py:
    • nano test.py
    • 粘贴以下内容并保存:
      • import torch x = torch.rand(5, 3) y = torch.rand(5, 3) z = torch.matmul(x, y) print(z)
    • 执行:python test.py
  • 启用 GPU(如果可用)的最小改动:
    • device = torch.device(“cuda” if torch.cuda.is_available() else “cpu”)
    • model.to(device); x = x.to(device); y = y.to(device)。

四 GPU 环境检查与常见问题

  • 检查 NVIDIA 驱动与工具链:
    • 驱动:nvidia-smi(能显示驱动版本与 GPU 列表)
    • CUDA 编译器:nvcc --version(若提示未找到,说明未安装或未加入 PATH)
  • 驱动与 CUDA/cuDNN 的关系与提示:
    • 使用 pip 安装 GPU 版 PyTorch 时,官方预编译包通常已包含所需 CUDA 运行时,一般无需单独安装完整 CUDA Toolkit;但需确保 NVIDIA 驱动版本满足要求。
    • 若选择 conda 安装并指定 cudatoolkit,conda 会管理对应版本的 CUDA 运行时依赖。
    • 若需要源码编译或特定版本,才可能需要自行配置 CUDA/cuDNN 与相应环境变量(如 PATH、LD_LIBRARY_PATH)。

五 部署与进阶

  • 以服务方式运行:
    • 使用 Flask/Django 将模型封装为 HTTP 服务,示例:
      • from flask import Flask, request, jsonify import torch app = Flask(name) @app.route(‘/predict’, methods=[‘POST’]) def predict(): data = request.json[‘data’] input_tensor = torch.tensor(data, dtype=torch.float32).unsqueeze(0) with torch.no_grad(): output = model(input_tensor) _, predicted = torch.max(output, 1) return jsonify({‘prediction’: predicted.item()}) if name == ‘main’: app.run(host=‘0.0.0.0’, port=5000)
  • 容器化部署:
    • 示例 Dockerfile:
      • FROM python:3.10-slim WORKDIR /app COPY requirements.txt . RUN pip install -r requirements.txt COPY . . CMD [“python”, “app.py”]
    • 构建与运行:
      • docker build -t my-pytorch-app .
      • docker run -p 5000:5000 my-pytorch-app
  • 生产建议:
    • 使用 Gunicorn/uWSGI + Nginx 托管 Flask 服务
    • 模型推理使用 torch.no_grad()、批处理与合适的 num_workers
    • 固定依赖版本(requirements.txt/conda env.yml),便于复现与回滚。

0