[第一天 4h]学习deep learning ,无GPU的PC,ubuntu24
使用PC和python编写深度学习代码,具体如何作?请人工智能专家回答
核心哲学:理解工作流程
编写深度学习代码不仅仅是写模型架构,它是一整套可重复、可实验的流程,通常包括以下几个核心步骤:
-
数据准备与预处理:获取数据、清洗、转换、增强、并封装成模型可用的格式。
-
模型构建:定义网络的结构(例如,层数、激活函数、连接方式)。
-
模型训练:将数据馈送给模型,计算损失,并通过优化器更新权重。
-
模型评估:在测试集上评估训练好的模型的性能。
-
模型部署与推理:使用训练好的模型对新数据进行预测。
第一步:环境与工具配置(搭建你的武器库)
|
好的,作为人工智能专家,为你详细介绍在 Ubuntu 24.04 LTS (Noble Numbat) 上搭建专业深度学习开发环境的完整流程。Ubuntu 是深度学习开发和研究的首选操作系统,因其对硬件和驱动程序的出色支持而备受青睐。 本指南将分为两大路径:
第1步:系统更新与基础工具安装首先,打开终端 ( ***ubuntu已设置为国内镜像。 # 更新软件包列表并升级所有已安装的包
sudo apt update && sudo apt upgrade -y
# 安装开发基础工具包、Python3及pip、venv
sudo apt install -y build-essential git wget curl python3 python3-pip python3-venv
# 验证安装
python3 --version # 应显示 Python 3.12.x
pip3 --version # 应显示 pip 版本
gcc --version # 应显示 gcc 版本
# 创建 .pip 目录
mkdir -p ~/.pip
# 创建 pip.conf 文件并写入清华源的配置
echo '[global]
index-url = https://pypi.tuna.tsinghua.edu.cn/simple
trusted-host = pypi.tuna.tsinghua.edu.cn' > ~/.pip/pip.conf
如果你想使用阿里云源,可以将
第2步:安装专业开发工具(IDE/编辑器)1. 安装 Visual Studio Code (推荐)这是目前最流行的选择,微软官方提供.deb安装包。 # 下载最新的 .deb 包
wget https://code.visualstudio.com/sha/download?build=stable&os=linux-deb-x64 -O vscode.deb
# 使用 apt 安装下载的包
sudo apt install ./vscode.deb
# 安装完成后,删除下载的包
rm vscode.deb
# 启动VSCode (也可以在应用程序菜单中查找)
code
2. (可选) 安装 PyCharm Professional专业版对数据科学和深度学习支持更好,但需要许可证(学生可免费申请)。社区版也足够使用。 # 使用Snap安装(最简单)
sudo snap install pycharm-professional --classic
# 或者使用Flatpak
# sudo flatpak install flathub com.jetbrains.PyCharm-Professional
第3步:创建独立的Python虚拟环境强烈建议为每个项目创建独立的虚拟环境,以避免包版本冲突。 # 为你深度学习项目创建一个目录并进入
mkdir ~/dl_projects && cd ~/dl_projects
# 创建一个名为 'dl_env' 的虚拟环境
python3 -m venv dl_env
# 激活虚拟环境
source ~/dl_projects/dl_env/bin/activate
# 激活后,命令行提示符前会出现 (dl_env)
# 要退出虚拟环境,执行:
# deactivate
第4步:安装深度学习核心库在激活的虚拟环境中,安装所需的Python包。 A. 路径一:仅使用CPU如果你的电脑没有NVIDIA GPU,或者你只是想先学习基础,安装CPU版本的库即可。 # 确保虚拟环境已激活: (dl_env) ~
# 升级pip
pip install --upgrade pip
# 安装核心数据科学库
pip install numpy pandas matplotlib scikit-learn jupyter notebook
# 安装PyTorch (CPU版本)
# 访问 https://pytorch.org/ 获取最新命令
pip install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cpu
# 安装TensorFlow (CPU版本)
pip install tensorflow
# 验证PyTorch安装
python -c "import torch; print(f'PyTorch版本: {torch.__version__}'); print(f'CUDA是否可用: {torch.cuda.is_available()}')"
# 输出 CUDA是否可用: False 是正常的
# 验证TensorFlow安装
python -c "import tensorflow as tf; print(f'TensorFlow版本: {tf.__version__}'); print(f'GPU是否可用: {tf.config.list_physical_devices(\"GPU\")}')"
B. 路径二:使用NVIDIA GPU进行加速 (强烈推荐)前提条件:你的PC必须有一块NVIDIA显卡。 1. 安装NVIDIA显卡驱动 Ubuntu 24.04 自带了一个开源驱动
2. 安装CUDA Toolkit和cuDNN 最省心的方法:通常不需要单独安装CUDA和cuDNN。PyTorch和TensorFlow的pip包现在通常内置了所需的CUDA和cuDNN库,我们只需要确保驱动版本足够新即可。 如果你想手动安装,可以参考以下步骤(但通常不是必须的): # 例如,安装CUDA 12.4
wget https://developer.download.nvidia.com/compute/cuda/12.4.0/local_installers/cuda_12.4.0_550.54.14_linux.run
sudo sh cuda_12.4.0_550.54.14_linux.run
# 安装时取消Driver的勾选(因为我们已经安装了驱动),只安装CUDA Toolkit。
# 将CUDA路径添加到环境变量
echo 'export PATH=/usr/local/cuda/bin:$PATH' >> ~/.bashrc
echo 'export LD_LIBRARY_PATH=/usr/local/cuda/lib64:$LD_LIBRARY_PATH' >> ~/.bashrc
source ~/.bashrc
3. 安装GPU版本的PyTorch和TensorFlow 在激活的虚拟环境中,安装GPU版本的库。 # 安装PyTorch (CUDA 12.1版本)
# 访问 https://pytorch.org/ 获取最新、最匹配的命令
pip install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu121
# 安装TensorFlow (GPU版本)
# TensorFlow会自动检测并使用已安装的CUDA环境
pip install tensorflow[and-cuda]
# 验证GPU是否可用
python -c "import torch; print(f'PyTorch CUDA可用: {torch.cuda.is_available()}'); print(f'PyTorch CUDA设备: {torch.cuda.get_device_name(0)}')"
python -c "import tensorflow as tf; print(f'TensorFlow GPU可用: {len(tf.config.list_physical_devices(\"GPU\")) > 0}')"
如果输出显示 第5步:测试你的环境创建一个简单的测试脚本 import torch
import tensorflow as tf
print("=" * 50)
print("PyTorch 信息:")
print(f"版本: {torch.__version__}")
print(f"CUDA 是否可用: {torch.cuda.is_available()}")
if torch.cuda.is_available():
print(f"GPU 设备名称: {torch.cuda.get_device_name(0)}")
print(f"当前设备: {torch.cuda.current_device()}")
print("\n" + "=" * 50)
print("TensorFlow 信息:")
print(f"版本: {tf.__version__}")
print(f"GPU 是否可用: {len(tf.config.list_physical_devices('GPU')) > 0}")
if tf.config.list_physical_devices('GPU'):
print(f"GPU 详情: {tf.config.list_physical_devices('GPU')}")
print("\n" + "=" * 50)
print("NumPy 和 CPU 测试:")
import numpy as np
a = np.random.rand(1000, 1000)
b = np.random.rand(1000, 1000)
c = a @ b # 矩阵乘法
print(f"NumPy 矩阵计算完成: {c.shape}")
if torch.cuda.is_available():
print("\n" + "=" * 50)
print("PyTorch GPU 测试:")
x = torch.rand(1000, 1000, device='cuda')
y = torch.rand(1000, 1000, device='cuda')
z = x @ y
print(f"PyTorch GPU 矩阵计算完成: {z.shape}")
运行它: python test_gpu.py 现在,你的Ubuntu 24.04系统已经拥有了一个非常专业且强大的深度学习开发环境。你可以开始运行和编写你的第一个深度学习模型了!
|
第二步:选择一个框架并编写你的第一个模型
这里我将用两个最流行的框架 PyTorch 和 TensorFlow/Keras 分别展示一个简单的图像分类模型(在MNIST数据集上)的代码。
MNIST :包含了0到9的手写数字图片,每个图片为28x28像素的灰度图。这个数据集广泛用于入门级的图像处理任务,如手写数字识别。
CIFAR-10 :是一个用于小图像分类的数据集,包含10个类别的60000张32x32彩色图像,每个类别有6000张图片。这个数据集对于理解卷积神经网络(CNN)等更高级的图像处理技术非常有用。
IMDB :是一个电影评论的情感分析数据集,包含了50000条评论,分为正面和负面两种情感倾向。这个数据集常用于文本处理和自然语言处理(NLP)任务。
示例一:使用 PyTorch
# 1. 导入必要的库 import torch import torch.nn as nn import torch.optim as optim import torchvision import torchvision.transforms as transforms from torch.utils.data import DataLoader import matplotlib.pyplot as plt # 2. 检查设备(CPU or GPU) device = torch.device('cuda' if torch.cuda.is_available() else 'cpu') print(f'Using device: {device}') # 3. 准备数据 transform = transforms.Compose([ transforms.ToTensor(), transforms.Normalize((0.5,), (0.5,)) ]) train_set = torchvision.datasets.MNIST(root='./data', train=True, download=True, transform=transform) train_loader = DataLoader(train_set, batch_size=64, shuffle=True) test_set = torchvision.datasets.MNIST(root='./data', train=False, download=True, transform=transform) test_loader = DataLoader(test_set, batch_size=1000, shuffle=False) # 4. 构建模型 class NeuralNet(nn.Module): def __init__(self): super(NeuralNet, self).__init__() self.flatten = nn.Flatten() self.linear_relu_stack = nn.Sequential( nn.Linear(28*28, 512), nn.ReLU(), nn.Linear(512, 512), nn.ReLU(), nn.Linear(512, 10), ) def forward(self, x): x = self.flatten(x) logits = self.linear_relu_stack(x) return logits model = NeuralNet().to(device) # 5. 定义损失函数和优化器 criterion = nn.CrossEntropyLoss() optimizer = optim.Adam(model.parameters(), lr=0.001) # 6. 训练循环 def train(model, dataloader, criterion, optimizer): model.train() running_loss = 0.0 for images, labels in dataloader: # 将数据移动到设备(GPU/CPU) images, labels = images.to(device), labels.to(device) # 前向传播 outputs = model(images) loss = criterion(outputs, labels) # 反向传播和优化 optimizer.zero_grad() # 清空之前的梯度 loss.backward() # 反向传播计算梯度 optimizer.step() # 更新参数 running_loss += loss.item() return running_loss / len(dataloader) # 7. 训练多个周期(Epoch) num_epochs = 5 for epoch in range(num_epochs): train_loss = train(model, train_loader, criterion, optimizer) print(f"Epoch [{epoch+1}/{num_epochs}], Loss: {train_loss:.4f}") print('Finished Training') # 8. 评估模型(简化版) def evaluate(model, dataloader): model.eval() correct = 0 total = 0 with torch.no_grad(): # 评估时不需要计算梯度 for images, labels in dataloader: images, labels = images.to(device), labels.to(device) outputs = model(images) _, predicted = torch.max(outputs.data, 1) total += labels.size(0) correct += (predicted == labels).sum().item() print(f"Accuracy on test set: {100 * correct / total:.2f}%") evaluate(model, test_loader)
示例二:使用 TensorFlow/Keras
第三步:专家建议与最佳实践
-
从小开始:不要一开始就试图训练ResNet-152 on ImageNet。从MNIST、CIFAR-10这样的标准数据集和小模型开始,确保你的 pipeline 是通的。
-
版本控制:使用 Git 管理你的代码。使用
.gitignore文件忽略大型数据集和模型文件。 -
迭代和实验:深度学习是高度实验性的。系统地改变超参数(学习率、批大小、层数等),并使用 TensorBoard 或 Weights & Biases 等工具来跟踪和可视化你的实验结果。
-
理解概念:不要只做“调包侠”。花时间理解背后的概念:梯度下降、反向传播、过拟合、正则化等。这能帮助你在模型出问题时有效调试。
-
利用预训练模型:对于现实世界的问题,几乎总是从 迁移学习 开始。使用在大型数据集(如ImageNet)上预训练好的模型(VGG, ResNet, BERT, GPT),并在你的数据上对其进行微调,这可以节省大量时间和计算资源。
-
关注硬件:如果认真起来,一块好的GPU(NVIDIA RTX 3060及以上)是性价比最高的投资。使用云GPU(如Google Colab, AWS, Lambda Labs)也是一个非常好的选择,可以免去配置环境的烦恼。
学习路径推荐
-
基础:Python → NumPy → Pandas → Matplotlib
-
框架:先选择一个(PyTorch或TensorFlow)深入学习。PyTorch更受研究人员喜爱,TensorFlow在生产环境部署生态更成熟。
-
课程:跟随经典课程,如吴恩达的《深度学习专项课程》或Fast.ai的实用课程。
-
实践:在Kaggle上参加入门比赛(如Titanic, Digit Recognizer),看别人的代码(Kernels),这是学习的最佳方式之一。
希望这个详细的指南能为你提供一个清晰的路线图!祝你编码愉快!
#######################################################################

浙公网安备 33010602011771号