Linux平台上PyTorch应用案例精选
一 环境搭建与验证
- 系统与工具:建议使用 Ubuntu 20.04/22.04 或 CentOS 7/8,搭配 Python 3.8+、Anaconda/Miniconda 或 venv 管理依赖。
- 安装 PyTorch(示例命令,按你的 CUDA 版本选择其一):
- CPU 版(pip):pip3 install torch torchvision torchaudio
- GPU 版(pip):pip3 install torch torchvision torchaudio --extra-index-url https://download.pytorch.org/whl/cu118
- CPU 版(conda):conda install pytorch torchvision torchaudio cpuonly -c pytorch
- GPU 版(conda):conda install pytorch torchvision torchaudio pytorch-cuda=11.8 -c pytorch -c nvidia
- 验证:python3 - <<‘PY’
import torch
print(“PyTorch version:”, torch.version)
print(“CUDA available:”, torch.cuda.is_available())
PY
以上流程适用于 Ubuntu/CentOS 等主流发行版,能快速完成环境准备与可用性验证。
二 案例一 图像分类 CNN 训练与推理(CIFAR-10)
- 任务目标:在 CIFAR-10 上训练一个小型 CNN,完成 10 类图像分类,并保存权重用于推理。
- 关键步骤与代码要点:
- 数据预处理与加载
transform = transforms.Compose([transforms.ToTensor(), transforms.Normalize((0.5,0.5,0.5),(0.5,0.5,0.5))])
trainset = torchvision.datasets.CIFAR10(root=‘./data’, train=True, download=True, transform=transform)
trainloader = DataLoader(trainset, batch_size=4, shuffle=True, num_workers=2)
- 定义模型
class Net(torch.nn.Module):
def init(self):
super().init(); self.conv1=torch.nn.Conv2d(3,6,5); self.pool=torch.nn.MaxPool2d(2,2)
self.conv2=torch.nn.Conv2d(6,16,5); self.fc1=torch.nn.Linear(1655,120)
self.fc2=torch.nn.Linear(120,84); self.fc3=torch.nn.Linear(84,10)
def forward(self,x):
x=self.pool(torch.relu(self.conv1(x))); x=self.pool(torch.relu(self.conv2(x)))
x=x.view(-1,1655); x=torch.relu(self.fc1(x)); x=torch.relu(self.fc2(x)); return self.fc3(x)
- 训练循环(示例:2 个 epoch)
net=Net(); criterion=torch.nn.CrossEntropyLoss(); optimizer=torch.optim.SGD(net.parameters(),lr=0.001,momentum=0.9)
for epoch in range(2):
for i,data in enumerate(trainloader,0):
inputs,labels=data; optimizer.zero_grad(); outputs=net(inputs); loss=criterion(outputs,labels)
loss.backward(); optimizer.step()
- 保存与推理
torch.save(net.state_dict(),‘cifar_cnn.pth’)
推理:net.load_state_dict(torch.load(‘cifar_cnn.pth’)); net.eval(); …
该案例展示了从数据到训练再到保存的完整闭环,适合作为 Linux 上的入门图像任务模板。
三 案例二 文本情感分析 BERT 快速上手
- 任务目标:使用 HuggingFace Transformers 的 BERT 对英文句子进行二分类情感分析(正/负)。
- 关键步骤与代码要点:
- 环境与依赖:pip install torch transformers
- 分词与编码
from transformers import BertTokenizer, BertForSequenceClassification
tokenizer=BertTokenizer.from_pretrained(‘bert-base-uncased’)
model=BertForSequenceClassification.from_pretrained(‘bert-base-uncased’, num_labels=2)
text=“PyTorch is a great framework for deep learning.”
inputs=tokenizer(text, return_tensors=‘pt’, max_length=512, truncation=True)
- 推理
with torch.no_grad(): outputs=model(**inputs); pred=torch.argmax(outputs.logits,dim=1).item()
print(f’Predicted class: {pred}')
- GPU 训练简例(简化版)
device=torch.device(‘cuda’ if torch.cuda.is_available() else ‘cpu’); model.to(device)
encoded=tokenizer(texts, padding=True, truncation=True, return_tensors=‘pt’)
labels=torch.tensor([1,0]); dataset=TensorDataset(encoded[‘input_ids’],encoded[‘attention_mask’],labels)
loader=DataLoader(dataset,batch_size=2)
optimizer=torch.optim.AdamW(model.parameters(),lr=5e-5)
model.train();
for batch in loader: ids,masks,lbls=[b.to(device) for b in batch];
out=model(input_ids=ids,attention_mask=masks,labels=lbls); loss=out.loss; loss.backward(); optimizer.step()
该流程在 Ubuntu/CentOS 均可直接运行,适合作为 NLP 入门与快速验证的基线。
四 案例三 大模型本地部署与 Web 演示(Qwen-7B-Chat)
- 任务目标:在 Ubuntu 20.04 上部署 Qwen-7B-Chat,并启动 Web 演示。
- 环境要点:Python 3.9、PyTorch 2.2+cu121、CUDA 12.1、RTX 2080 Ti。
- 关键步骤与代码要点:
- 创建环境并安装 PyTorch(示例):
conda create -n Chat python=3.9
pip install torch-2.2.0+cu121-cp39-cp39-linux_x86_64.whl
pip install torchvision==0.17.0+cu121 -f https://download.pytorch.org/whl/torch_stable.html
- 安装依赖与模型
pip install modelscope transformers
git clone https://github.com/QwenLM/Qwen.git && cd Qwen
pip install -r requirements.txt -r requirements_web_demo.txt
- 运行 Web 演示(示例):
在 Qwen 目录执行
pip install -r requirements_web_demo.txt
python web_demo.py --model qwen/Qwen-7B-Chat --trust-remote-code
该示例展示了在 Linux 上落地 7B 级大模型并进行在线演示的完整链路,适合作为企业内测或产品原型验证的起点。