当前位置: 首页 > news >正文

开源深度学习框架PyTorch

一、PyTorch 介绍

PyTorch 是一个开源的深度学习框架,由 Facebook 的人工智能研究团队(FAIR)开发。它以动态图计算(Dynamic Computation Graph)为核心,提供灵活的深度学习建模能力,广泛评估计算机视觉、自然语言处理、强化学习等领域。

PyTorch 的主要特点

1.动态图计算(动态计算图)

  • 计算图在运行时构建,支持动态调整,适用于复杂任务。

2.强大的GPU加速

  • 使用CUDA加速计算,支持多GPU训练。

3.丰富的资源与生态

  • 如TorchVision(计算机)、TorchText(自然语言处理)、TorchAudio(音频处理)等。

4.与 NumPy 兼容

  • PyTorch 的张量(Tensor)操作方式类似于 NumPy,易于上手。

5.研讨

  • 高效配备的数据家具和模型家具能力,适合大规模训练任务。

二、本地部署 PyTorch

本地部署PyTorch主要包括以下步骤:

1. 安装PyTorch

进行安装PyTorch 支持 Windows、Linux 和 macOS,可使用pipconda进行安装。

(1)使用 pip 安装

在官网PyTorch官网选择合适的安装命令。以下是一些常见的安装方式:

CPU版本(适用于无GPU的情况):

pip install torch torchvision torchaudio

GPU 版本(NVIDIA 显卡,需安装 CUDA):

pip install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu121

其中 cu121 代表 CUDA 12.1,对应不同 CUDA 版本,请参考 PyTorch 官网。

(2)使用 conda 安装

如果你使用 Anaconda,可以通过以下命令安装:

conda install pytorch torchvision torchaudio pytorch-cuda=12.1 -c pytorch -c nvidia

2. 验证安装

安装完成后,使用以下命令检查 PyTorch 是否正确安装:

import torch
print(torch.__version__)  # 查看 PyTorch 版本
print(torch.cuda.is_available())  # 检查是否检测到 GPU

 如果返回 True,说明 PyTorch 已正确识别 GPU。

3. 运行 PyTorch 代码

以下是一个简单的 PyTorch 代码示例:

import torch

# 创建一个随机张量
x = torch.rand(3, 3)
print("随机张量:\n", x)

# 检查是否有 GPU 并在 GPU 上运行
device = torch.device("cuda" if torch.cuda.is_available() else "cpu")
x = x.to(device)
print("张量所在设备:", x.device)

4. 训练模型

可以使用 PyTorch 训练一个简单的神经网络。以下是一个示例,使用 PyTorch 训练一个 MNIST 手写数字分类模型:

import torch
import torch.nn as nn
import torch.optim as optim
import torchvision
import torchvision.transforms as transforms

# 数据加载
transform = transforms.Compose([transforms.ToTensor(), transforms.Normalize((0.5,), (0.5,))])
trainset = torchvision.datasets.MNIST(root='./data', train=True, download=True, transform=transform)
trainloader = torch.utils.data.DataLoader(trainset, batch_size=64, shuffle=True)

# 定义简单的神经网络
class SimpleNN(nn.Module):
    def __init__(self):
        super(SimpleNN, self).__init__()
        self.fc = nn.Sequential(
            nn.Linear(28 * 28, 128),
            nn.ReLU(),
            nn.Linear(128, 10)
        )

    def forward(self, x):
        x = x.view(-1, 28 * 28)  # Flatten
        return self.fc(x)

# 训练
device = torch.device("cuda" if torch.cuda.is_available() else "cpu")
model = SimpleNN().to(device)
criterion = nn.CrossEntropyLoss()
optimizer = optim.Adam(model.parameters(), lr=0.001)

for epoch in range(3):
    for images, labels in trainloader:
        images, labels = images.to(device), labels.to(device)
        optimizer.zero_grad()
        outputs = model(images)
        loss = criterion(outputs, labels)
        loss.backward()
        optimizer.step()
    print(f'Epoch [{epoch+1}/3], Loss: {loss.item():.4f}')

5. 本地部署模型

PyTorch 模型可以本地部署用于推理(inference),常见方法如下:

(1)使用 PyTorch 自带的 .pt/.pth 格式

# 保存模型
torch.save(model.state_dict(), "model.pth")

# 加载模型
model = SimpleNN()
model.load_state_dict(torch.load("model.pth"))
model.eval()

(2)使用 TorchScript 加速推理

PyTorch 提供 torch.jit.trace 进行模型序列化,加速推理:

example_input = torch.randn(1, 28 * 28)
traced_model = torch.jit.trace(model, example_input)
torch.jit.save(traced_model, "traced_model.pt")

# 加载并推理
loaded_model = torch.jit.load("traced_model.pt")
loaded_model.eval()
output = loaded_model(example_input)
print(output)

(3)使用 Flask 进行 RESTful API 部署

如果需要本地部署为 Web API,可以结合 Flask:

from flask import Flask, request, jsonify
import torch

app = Flask(__name__)

# 加载模型
model = torch.jit.load("traced_model.pt")
model.eval()

@app.route('/predict', methods=['POST'])
def predict():
    data = request.get_json()
    input_tensor = torch.tensor(data["input"]).float()
    output = model(input_tensor).tolist()
    return jsonify({"prediction": output})

if __name__ == '__main__':
    app.run(port=5000)

然后可以通过 HTTP 请求调用:

curl -X POST http://127.0.0.1:5000/predict -H "Content-Type: application/json" -d '{"input": [0.1, 0.2, ..., 0.9]}'

6. PyTorch 部署的其他方案

除了本地部署,PyTorch 还可以用于:

1。使用 TorchServe

  • 适用于大规模 API 服务器部署。

2.导出为 ONNX

  • 用于在 TensorRT、ONNX Runtime、OpenVINO 等环境中优化推理速度。

torch.onnx.export(model, example_input, "model.onnx")

3.集成 FastAPI 进行高效 Web 部署

  • FastAPI 比 Flask 更快,适用于高性能服务。

7.总结

  • PyTorch 是一个灵活强大的深度学习框架,适用于研究和生产环境。

  • 本地部署 PyTorch 主要涉及安装、训练、保存和推理。

  • 可以通过 .pth、TorchScript 或 ONNX 部署模型,也可以结合 Flask 或 FastAPI 构建 API 服务。

相关文章:

  • 为什么要指针压缩,为什么能指针压缩?原理是什么?
  • 01小游戏
  • 3月31号
  • lib-zo,C语言另一个协程库,激活文件IO操作协程化
  • http知识点
  • 2025年浙江省中等职业学校职业能力大赛(学生技术技能类)“移动应用与开发”赛项技术文件
  • FFTW库在vs2022下编译lib库及在QT6.8中调用
  • LeetCode hot 100—二叉搜索树中第K小的元素
  • 【VUE2】综合练习——智慧商城
  • visio导出pdf公式变形
  • Embedding原理
  • zk基础—1.一致性原理和算法一
  • 《算法:递归+记忆化搜索》
  • 【计算机视觉】OpenCV实战项目- 抖音动态小表情
  • ESP32移植Openharmony外设篇(11) mfrc522射频读卡器
  • 数据处理与机器学习入门
  • MyBatisPlus不等于如何使用
  • qml 中的anchors
  • dfs复习
  • 内核自旋锁
  • 南丰网站建设/网页制作教程步骤
  • 做网站分为哪几个岗位/福州百度分公司
  • 报社网站开发做什么/网络推广推广
  • 海南省城乡建设部网站首页/谷歌搜索引擎入口2023
  • 网站制作公司起名/semir是什么意思
  • 返利网站怎么做的/代写