为PyTorch提供GPU支持

本文详细介绍了如何在Ubuntu上安装Docker并配置GPU支持,包括Nvidia驱动的安装和PyTorch的Docker环境部署,以及使用GPU进行函数拟合的示例。通过实际操作演示了如何在PyTorch中利用GPU进行高效计算。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

PyTorch-GPU安装

安装docker及nvidia-docker

在Ubuntu上安装Docker并使得Docker支持GPU

安装PyTorch

在宿主机上安装GPU驱动

  • 查找合适的Nvidia驱动器版本并安装
    sudo ubuntu-drivers devices
    sudo ubuntu-drivers autoinstall
    

在Docker安装PyTorch

  • 根据驱动满足的最大cuda版本来查找合适版本的pytorch,不需要单独安装cuda
    pip install torch==1.12.1+cu102 torchvision==0.13.1+cu102 torchaudio==0.12.1 --extra-index-url https://download.pytorch.org/whl/cu102
    

    Start Locally | PyTorch

  • 测试pytorch
    import torch
    print(torch.__version__)
    print(torch.cuda.is_available())
    for i in range(torch.cuda.device_count()):
    	print(torch.cuda.get_device_name(i))
    
    • tensor默认存储在内存中供CPU使用,通过访问其.device成员变量查看其所处设备
      • 创建tensor时,通过devic 参数指定其运行的设备
      • 调用tensor.to(device)将tensor转移到指定设备
      • 调用tensor.cuda(i)将tensor转移到第 i 块GPU及相应的显存(i从0开始,0可省略不写)
      • 调用tensor.cpu() 将tensor转移到CPU
    import torch
    
    device = torch.device('cuda' if torch.cuda.is_available() else 'cpu')
    y = torch.tensor([1, 2, 3], device=device)
    print(y.device)
    # cuda:0
    
    x = torch.tensor([1, 2, 3])
    print(x.device)
    # cpu
    x = x.cuda(0)
    print(x.device)
    # cuda:0
    
    z = torch.tensor([1, 2, 3]).to(device)
    print(z.device)
    # cuda:0
    z = z.cpu()
    print(z.device)
    # cpu
    

    Pytorch入门(5)—— 使用 GPU 进行计算

PyTorch案例

函数拟合

# -*- coding: utf-8 -*-

import torch
import math


dtype = torch.float
#device = torch.device("cpu")
device = torch.device("cuda:0")

# Create random input and output data
x = torch.linspace(-math.pi, math.pi, 2000, device=device, dtype=dtype)
y = torch.sin(x)

# Randomly initialize weights
a = torch.randn((), device=device, dtype=dtype)
b = torch.randn((), device=device, dtype=dtype)
c = torch.randn((), device=device, dtype=dtype)
d = torch.randn((), device=device, dtype=dtype)

learning_rate = 1e-6
for t in range(2000):
    # Forward pass: compute predicted y
    y_pred = a + b * x + c * x ** 2 + d * x ** 3

    # Compute and print loss
    loss = (y_pred - y).pow(2).sum().item()
    if t % 100 == 99:
        print(t, loss)

    # Backprop to compute gradients of a, b, c, d with respect to loss
    grad_y_pred = 2.0 * (y_pred - y)
    grad_a = grad_y_pred.sum()
    grad_b = (grad_y_pred * x).sum()
    grad_c = (grad_y_pred * x ** 2).sum()
    grad_d = (grad_y_pred * x ** 3).sum()

    # Update weights using gradient descent
    a -= learning_rate * grad_a
    b -= learning_rate * grad_b
    c -= learning_rate * grad_c
    d -= learning_rate * grad_d


print(f'Result: y = {a.item()} + {b.item()} x + {c.item()} x^2 + {d.item()} x^3')

Learning PyTorch with Examples

<think>我们正在使用Miniforge(适用于ARM架构,如Jetson设备)来部署YOLOv8环境,并需要安装支持GPUPyTorch版本。根据引用[1]和[4],我们知道在Jetson设备上(ARM架构)不能直接使用Anaconda,而Miniforge是替代方案。同时,引用[1]提供了创建虚拟环境和安装YOLOv8的步骤,但我们需要特别关注GPUPyTorch的安装。 步骤分解: 1. 安装Miniforge(如果尚未安装)。 2. 创建虚拟环境(Python 3.8,因为YOLOv8要求Python>=3.8,且Jetson设备上TensorRT对Python版本有要求)。 3. 激活虚拟环境。 4. 安装支持GPUPyTorch(针对Jetson设备,需要从PyTorch官网获取适用于ARM架构的CUDA版本)。 5. 安装YOLOv8(ultralytics)和其他依赖。 注意:Jetson设备通常使用CUDA,因此我们需要安装对应CUDA版本的PyTorch。根据引用[2]和[4],在Jetson上安装PyTorch需要下载预编译的wheel文件(因为直接pip安装可能不提供ARM架构的版本)。但根据PyTorch官网,现在为Jetson提供了直接通过pip安装的命令(指定额外的索引URL)。 具体步骤: 1. 安装Miniforge(如果已经安装可跳过): 下载Miniforge安装脚本(适用于Linux aarch64)并安装。 ```bash wget https://github.com/conda-forge/miniforge/releases/latest/download/Miniforge3-Linux-aarch64.sh bash Miniforge3-Linux-aarch64.sh ``` 按照提示完成安装,然后激活conda环境(可能需要重启终端或运行`source ~/.bashrc`)。 2. 创建虚拟环境并激活: ```bash conda create -n yolov8 python=3.8 conda activate yolov8 ``` 3. 安装支持GPUPyTorch: 根据PyTorch官网的Jetson安装说明(https://forums.developer.nvidia.com/t/pytorch-for-jetson/72048),我们可以使用预编译的wheel。例如,对于JetPack 5.x(CUDA 11.4)和Python 3.8,我们可以使用以下命令: ```bash pip3 install --no-cache-dir torch torchvision torchaudio --extra-index-url https://download.pytorch.org/whl/cu118 ``` 注意:这里我们使用CUDA 11.8的版本(因为YOLOv8可能需要较新的PyTorch版本,且Jetson Orin支持CUDA 11.4及以上,但PyTorch为Jetson提供的预编译版本通常标为cu11x,我们可以选择与JetPack中CUDA版本兼容的版本)。如果JetPack版本是5.0.2(CUDA 11.4),则可能需要安装CUDA 11.3版本的PyTorch(但注意,PyTorch官网为Jetson提供的预编译版本通常只有少数几个版本)。因此,我们最好根据设备上JetPack的CUDA版本选择对应的PyTorch版本。 但是,根据引用[4]和[1],我们可以直接使用PyTorch官方提供的适用于Linux on ARM的安装命令。目前PyTorch 1.13.0及以上版本提供了对Jetson的预编译包。我们可以使用以下命令(以PyTorch 2.0.0为例,适用于CUDA 11.7和11.8): ```bash pip3 install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu118 ``` 或者(如果上述不行,可以尝试使用适用于JetPack 5.x的预编译包,如来自NVIDIA论坛的链接): ```bash pip3 install --pre torch torchvision torchaudio --extra-index-url https://download.pytorch.org/whl/nightly/cu118 ``` 但是,为了稳定,建议使用PyTorch官方提供的稳定版本。注意:我们使用的CUDA版本需要与JetPack中的CUDA版本兼容。一般来说,PyTorchcu118(CUDA 11.8)可以运行在JetPack 5.x(CUDA 11.4)上,因为CUDA具有向后兼容性。 4. 验证PyTorch是否支持GPU: 在激活的虚拟环境中运行Python,并输入: ```python import torch print(torch.__version__) print(torch.cuda.is_available()) # 应该输出True print(torch.cuda.get_device_name(0)) # 输出GPU设备名称 ``` 5. 安装YOLOv8: ```bash pip install ultralytics ``` 6. 安装其他依赖(如果需要): 根据引用[1],可能还需要安装一些依赖,但ultralytics应该会自动安装大部分依赖。如果遇到问题,可以手动安装: ```bash pip install numpy opencv-python ``` 7. 测试YOLOv8: ```bash yolo predict model=yolov8n.pt source='https://ultralytics.com/images/bus.jpg' ``` 注意:如果遇到TensorRT相关的问题(在Jetson上),可能需要单独安装TensorRT(通常JetPack已经包含,但需要Python绑定)。可以使用: ```bash pip install nvidia-tensorrt ``` 注意:确保虚拟环境中的Python版本与TensorRT绑定的Python版本一致(通常为3.8)。 总结:关键点是安装对应CUDA版本的PyTorch,确保PyTorch能够识别到Jetson的GPU。 引用说明: 创建虚拟环境和安装步骤参考了引用[1]和[4],安装PyTorch的步骤参考了PyTorch官方论坛和引用[2](虽然引用[2]是关于yolov5的,但PyTorch安装方法类似)。 因此,完整的安装步骤如上所述。 生成相关问题: 1. 如何验证PyTorch是否正确使用了Jetson的GPU? 2. 在Jetson设备上运行YOLOv8时如何启用TensorRT加速? 3. 如何为Jetson设备编译安装特定版本的PyTorch? 4. 在Miniforge环境中如何管理多个Python版本?</think>### 在 Miniforge 中部署 YOLOv8 并安装 GPUPyTorch #### 📥 1. 安装 Miniforge(如未安装) ```bash # 下载 ARM 架构专用版本(适用于 Jetson 设备) wget https://github.com/conda-forge/miniforge/releases/latest/download/Miniforge3-Linux-aarch64.sh # 执行安装(按提示操作) bash Miniforge3-Linux-aarch64.sh # 激活环境变量 source ~/.bashrc ``` #### 🐍 2. 创建 Python 3.8 虚拟环境 ```bash conda create -n yolov8 python=3.8 # 创建环境 conda activate yolov8 # 激活环境 ``` > *注意*:Python 3.8 是 Jetson 设备兼容 TensorRT 的最低要求[^1] #### ⚡ 3. 安装 GPUPyTorch(关键步骤) ```bash # 安装 Jetson 专用 PyTorchCUDA 11.8 版本) pip3 install torch torchvision torchaudio --extra-index-url https://download.pytorch.org/whl/cu118 ``` > *验证 GPU 支持*: > ```python > import torch > print(torch.__version__) # 应显示 ≥2.0.0 > print(torch.cuda.is_available()) # 应返回 True > ``` #### 🚀 4. 安装 YOLOv8 及相关依赖 ```bash # 安装核心库 pip install ultralytics # 安装必要依赖 pip install numpy opencv-python matplotlib tqdm seaborn pandas ``` #### 🔧 5. 安装 TensorRT(Jetson 加速) ```bash pip install nvidia-tensorrt # 需与 Python 3.8 兼容 ``` #### ✅ 6. 验证部署 ```bash # 运行测试推理(自动使用 GPU) yolo predict model=yolov8n.pt source='https://ultralytics.com/images/bus.jpg' ``` > 成功执行后结果保存在 `runs/detect/predict/` --- ### 常见问题解决 1. **PyTorch GPU 检测失败**: ```bash # 检查 CUDA 兼容性 nvcc --version # 应显示 CUDA ≥11.4 conda install cudatoolkit=11.8 # 补充 CUDA 工具包 ``` 2. **TensorRT 安装冲突**: ```bash pip uninstall tensorrt # 先卸载 sudo apt-get install python3-libnvinfer-dev # 安装基础库 pip install nvidia-pyindex && pip install nvidia-tensorrt ``` 3. **环境清理**: ```bash conda clean --all # 清除缓存 conda list | grep cuda # 验证 CUDA 相关包 ``` > *提示*:完整 Jetson 优化指南参考 [NVIDIA 官方文档](https://developer.nvidia.com/embedded/learn/jetson-ai-certification-programs) ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值