第二章(补充):环境配置实战
学习目标
- 掌握 Anaconda 在 Windows、Mac、Linux 上的安装与配置方法
- 理解 Python 虚拟环境的作用,熟练使用 conda 创建和管理环境
- 能够根据硬件条件选择并安装 CPU 或 GPU 版本的 PyTorch
- 熟悉 Jupyter Notebook 的启动方式、基本操作及 VS Code 集成使用
- 完成第一个基于 PyTorch 的简单神经网络搭建与运行
前置要求
- 具备基本的命令行操作能力(Windows CMD/PowerShell、Mac/Linux Terminal)
- 了解 Python 基础语法(变量、函数、基本数据结构)
- 计算机至少拥有 8GB 内存和 20GB 可用磁盘空间
- 如需使用 GPU 加速,需配备 NVIDIA 独立显卡(GTX 10 系列或更高)
Anaconda 安装
Anaconda 是一个集成了 Python、常用科学计算库以及包管理工具的数据科学平台。它内置了 conda 包管理器,能极大简化环境配置流程。
Windows 安装步骤
- 访问 Anaconda 官网 下载 Windows 安装包
- 双击运行安装程序,选择 "Add Anaconda3 to my PATH environment variable"(建议勾选)
- 完成安装后,打开 Anaconda Prompt 或 CMD
Mac 安装步骤
- 下载 macOS 图形安装包(Intel 芯片选 x86,Apple Silicon 选 arm64)
- 双击 .pkg 文件按向导安装,或下载命令行版本使用以下命令安装:
bash Anaconda3-2024.XX-MacOSX-arm64.sh
Linux 安装步骤
- 下载 Linux 版本的 sh 安装脚本
- 在终端中执行以下命令:
wget https://repo.anaconda.com/archive/Anaconda3-2024.XX-Linux-x86_64.sh
bash Anaconda3-2024.XX-Linux-x86_64.sh
source ~/.bashrc
验证安装
conda --version
python --version
Python 虚拟环境
虚拟环境是 Python 开发中的核心实践,它能让你在同一台机器上维护多个相互隔离的 Python 环境。
- 不同项目可能依赖同一库的不同版本(如项目A需要 PyTorch 1.x,项目B需要 2.x)
- 避免全局环境被污染,保持系统 Python 的纯净
- 便于复现和分享环境配置(通过 environment.yml)
- 方便部署时精确还原依赖
conda 环境管理常用命令
# 创建新环境(指定 Python 版本)
conda create -n ai-env python=3.10
# 激活环境
conda activate ai-env
# 退出当前环境
conda deactivate
# 查看所有环境
conda env list
# 删除环境
conda remove -n ai-env --all
# 导出环境配置
conda env export > environment.yml
# 从配置文件创建环境
conda env create -f environment.yml
PyTorch 安装
PyTorch 是目前最流行的深度学习框架之一。根据你的硬件条件,选择 CPU 版本或 GPU 版本进行安装。
CPU 版本安装
适用于没有 NVIDIA 显卡或仅需学习基础概念的场景:
conda activate ai-env
conda install pytorch torchvision torchaudio cpuonly -c pytorch
GPU 版本安装(CUDA)
适用于配备 NVIDIA 显卡且希望利用 GPU 加速训练的场景:
# CUDA 12.1 版本(推荐)
conda install pytorch torchvision torchaudio pytorch-cuda=12.1 -c pytorch -c nvidia
# 或 CUDA 11.8 版本(旧显卡兼容)
conda install pytorch torchvision torchaudio pytorch-cuda=11.8 -c pytorch -c nvidia
验证安装
import torch
# 检查 PyTorch 版本
print(f"PyTorch version: {torch.__version__}")
# 检查是否可以使用 GPU
print(f"CUDA available: {torch.cuda.is_available()}")
if torch.cuda.is_available():
print(f"CUDA version: {torch.version.cuda}")
print(f"GPU name: {torch.cuda.get_device_name(0)}")
print(f"GPU count: {torch.cuda.device_count()}")
Jupyter Notebook
Jupyter Notebook 是一个交互式编程环境,非常适合数据分析、模型调试和学习记录。
安装 Jupyter
conda install jupyter
启动 Jupyter Notebook
# 在指定目录启动(会自动打开浏览器)
jupyter notebook
# 指定端口启动
jupyter notebook --port 8888
# 不自动打开浏览器
jupyter notebook --no-browser
基本操作
- 新建单元格:点击工具栏 "+" 按钮或使用快捷键 B(下方插入)/ A(上方插入)
- 运行单元格:Shift + Enter
- 切换模式:Esc 进入命令模式,Enter 进入编辑模式
- 单元格类型:Y(代码)、M(Markdown)、R(原始文本)
- 保存:Ctrl + S
- 重启内核:Kernel > Restart Kernel(可清除所有变量)
在 VS Code 中使用 Jupyter
- 安装 VS Code 扩展:Jupyter 和 Python
- 打开任意 .ipynb 文件,或新建文件并保存为 .ipynb 格式
- 点击右上角选择 Python 内核(选择你创建的 conda 环境)
- 即可在 VS Code 中直接运行 Notebook 单元格
常用库安装
以下列出了 AI 开发中最常用的 Python 库及其安装命令:
# 科学计算与数据处理
conda install numpy pandas matplotlib scikit-learn
# 或使用 pip 安装
pip install numpy pandas matplotlib scikit-learn
# 深度学习框架(PyTorch 已在前文安装)
pip install torch torchvision torchaudio
# Hugging Face 生态(预训练模型与数据集)
pip install transformers datasets accelerate
# 大模型应用开发
pip install langchain langchain-openai
# 其他常用工具
pip install tqdm tensorboard jupyterlab seaborn
| 库名 | 用途 | 安装命令 |
|---|---|---|
| numpy | 数值计算、多维数组操作 | pip install numpy |
| pandas | 数据读取、处理与分析 | pip install pandas |
| matplotlib | 数据可视化绘图 | pip install matplotlib |
| scikit-learn | 传统机器学习算法与工具 | pip install scikit-learn |
| transformers | Hugging Face 预训练模型库 | pip install transformers |
| torch | 深度学习框架(PyTorch) | conda install pytorch -c pytorch |
| langchain | 大语言模型应用开发框架 | pip install langchain |
GPU 环境检查
在进行深度学习训练前,确认 GPU 环境是否正常工作是至关重要的一步。
检查 NVIDIA 驱动与 CUDA
# 查看 GPU 信息
nvidia-smi
# 查看 CUDA 编译器版本
nvcc --version
PyTorch GPU 验证代码
import torch
# 1. 检查 CUDA 是否可用
print(f"CUDA available: {torch.cuda.is_available()}")
# 2. 获取 GPU 数量
print(f"GPU count: {torch.cuda.device_count()}")
# 3. 获取当前 GPU 名称
if torch.cuda.is_available():
print(f"Current GPU: {torch.cuda.get_device_name(0)}")
# 4. 测试张量是否能放到 GPU 上
if torch.cuda.is_available():
x = torch.rand(3, 3).cuda()
print(f"Tensor device: {x.device}")
print("GPU 测试通过!")
else:
print("CUDA 不可用,将使用 CPU 运行。")
第一个 AI 程序
让我们用 PyTorch 创建一个最简单的神经网络——一个单隐藏层的全连接网络,用于解决经典的 XOR 问题。
import torch
import torch.nn as nn
import torch.optim as optim
# 设置随机种子,保证结果可复现
torch.manual_seed(42)
# 定义神经网络模型
class SimpleNet(nn.Module):
def __init__(self):
super(SimpleNet, self).__init__()
self.layer1 = nn.Linear(2, 4) # 输入层 -> 隐藏层
self.activation = nn.ReLU() # 激活函数
self.layer2 = nn.Linear(4, 1) # 隐藏层 -> 输出层
self.sigmoid = nn.Sigmoid() # 输出层激活
def forward(self, x):
x = self.layer1(x)
x = self.activation(x)
x = self.layer2(x)
x = self.sigmoid(x)
return x
# 准备 XOR 数据集
X = torch.tensor([[0., 0.], [0., 1.], [1., 0.], [1., 1.]])
y = torch.tensor([[0.], [1.], [1.], [0.]])
# 创建模型实例
model = SimpleNet()
# 定义损失函数和优化器
criterion = nn.MSELoss()
optimizer = optim.Adam(model.parameters(), lr=0.1)
# 训练模型
print("开始训练...")
for epoch in range(1000):
# 前向传播
outputs = model(X)
loss = criterion(outputs, y)
# 反向传播和优化
optimizer.zero_grad()
loss.backward()
optimizer.step()
if (epoch + 1) % 200 == 0:
print(f"Epoch [{epoch+1}/1000], Loss: {loss.item():.6f}")
# 测试模型
print("\n预测结果:")
with torch.no_grad():
predictions = model(X)
for i in range(4):
input_vals = X[i].tolist()
pred = predictions[i].item()
actual = y[i].item()
print(f"输入: {input_vals} -> 预测: {pred:.4f}, 实际: {actual}")
print("\n恭喜你,成功运行了第一个神经网络!")
练习题
-
环境搭建实践
按照本章步骤,在你的电脑上完成以下操作:安装 Anaconda、创建名为 my-ai 的虚拟环境(Python 3.10)、安装 PyTorch CPU 版本,并在 Jupyter Notebook 中运行本章的 "第一个 AI 程序"。 -
虚拟环境管理
尝试导出你当前的环境配置为 environment.yml 文件,然后删除原环境并使用该配置文件重新创建环境,验证环境是否能正确还原。 -
扩展神经网络
修改 "第一个 AI 程序" 中的网络结构:将隐藏层神经元数量从 4 个增加到 8 个,添加第二个隐藏层,观察训练 loss 的变化和最终预测精度是否有提升。
章节小结
本章系统介绍了 AI 开发环境的搭建流程,涵盖 Anaconda 安装、虚拟环境管理、PyTorch 安装、Jupyter Notebook 使用以及常用库的配置。通过完成本章学习,你应该已经具备了以下能力:
- 能够独立搭建完整的 Python AI 开发环境
- 理解虚拟环境的重要性并熟练进行环境管理
- 根据硬件条件选择合适的 PyTorch 版本并完成安装验证
- 使用 Jupyter Notebook 或 VS Code 进行交互式编程
- 运行并理解一个简单的神经网络完整代码
环境配置是 AI 学习的第一步,也是后续所有实践的基础。建议在继续后续章节前,确保本章的所有工具和库都已正确安装并能正常运行。
附录C:常见问题(FAQ)
CUDA out of memory 怎么办?
GPU 显存不足是深度学习训练中最常见的问题,可通过以下方法解决:
- 减小 batch size:将训练批次大小减半或更小,这是最直接有效的方法
- 使用混合精度训练:PyTorch 提供自动混合精度(AMP)功能,可节省约一半显存
from torch.cuda.amp import autocast, GradScaler scaler = GradScaler() with autocast(): outputs = model(inputs) loss = criterion(outputs, targets) - 清理缓存:在训练循环中定期清理不需要的缓存
import torch torch.cuda.empty_cache() - 减少模型尺寸:使用更小的模型或减少输入数据分辨率
- 梯度累积:用多次小 batch 的梯度累积模拟大 batch 效果
模型下载慢/失败怎么办?
由于网络原因,从 Hugging Face 下载模型可能较慢或失败,可尝试以下方案:
- 使用国内镜像:设置环境变量使用镜像站点
export HF_ENDPOINT=https://hf-mirror.com - 使用 huggingface-cli 下载:
pip install huggingface-hub huggingface-cli download --resume-download meta-llama/Llama-2-7b --local-dir ./models - 在代码中设置镜像:
import os os.environ['HF_ENDPOINT'] = 'https://hf-mirror.com' from transformers import AutoModel model = AutoModel.from_pretrained("bert-base-chinese") - 手动下载:从镜像网站手动下载模型文件后放到本地缓存目录
ModuleNotFoundError 怎么解决?
模块未找到错误通常由以下原因导致:
- 未安装模块:使用 pip 或 conda 安装缺失的库
pip install 模块名 # 或 conda install 模块名 - 环境未激活:确认当前终端已激活正确的 conda 环境
conda activate ai-env - 路径问题:检查 Python 解释器路径是否正确
import sys print(sys.executable) # 查看当前 Python 路径 print(sys.path) # 查看模块搜索路径 - 名称拼写错误:检查 import 语句中的模块名是否拼写正确
API Key 怎么申请和管理?
使用大模型 API 需要申请对应的 API Key,以下是主要平台的申请入口和管理建议:
- OpenAI:访问 platform.openai.com/api-keys 注册并创建 API Key
- Claude (Anthropic):访问 console.anthropic.com 申请
- DeepSeek:访问 platform.deepseek.com 注册获取
管理建议:
- 使用 .env 文件存储密钥,避免硬编码到代码中
# .env 文件 OPENAI_API_KEY=sk-xxxxxxxx DEEPSEEK_API_KEY=sk-xxxxxxxx - 使用 python-dotenv 加载环境变量
from dotenv import load_dotenv import os load_dotenv() api_key = os.getenv("OPENAI_API_KEY") - 将 .env 文件添加到 .gitignore,防止密钥泄露
没有 GPU 可以学 AI 吗?
完全可以!虽然没有 GPU 会限制大规模模型的训练速度,但学习 AI 理论和运行中小规模模型完全可以在 CPU 上进行。此外,还有多种免费/低成本的 GPU 资源可用:
- CPU 运行:适合学习基础概念、小规模数据集实验、模型推理
- Google Colab:免费提供 Tesla T4 GPU,适合学习和原型验证
# 在 Colab 中切换运行时类型为 GPU import torch print(torch.cuda.get_device_name(0)) # 输出 Tesla T4 - Kaggle:每周提供 30 小时免费的 NVIDIA T4/P100 GPU
- AutoDL:国内 GPU 租用平台,按小时计费,价格相对实惠
Python 版本应该选哪个?
Python 版本的选择需要考虑兼容性和稳定性:
- 推荐版本:3.9 - 3.11
- Python 3.9:成熟稳定,几乎所有库都支持
- Python 3.10:主流选择,语法改进(如 match-case)
- Python 3.11:性能提升明显,大部分新库已支持
- 不推荐:Python 3.12(部分科学计算库尚未完全适配)、Python 3.8 及以下(即将或已经停止维护)
conda 和 pip 有什么区别?
| 特性 | conda | pip |
|---|---|---|
| 包来源 | Anaconda 仓库、conda-forge | PyPI(Python Package Index) |
| 非 Python 依赖 | 支持(C 库、CUDA 等) | 不支持(需手动安装系统依赖) |
| 环境管理 | 内置环境管理功能 | 需配合 virtualenv/venv 使用 |
| 安装速度 | 预编译二进制包,通常更快 | 部分包需本地编译,较慢 |
| 适用场景 | 数据科学、深度学习环境搭建 | 纯 Python 包安装 |
建议:优先使用 conda 安装基础依赖(如 PyTorch、CUDA),pip 作为补充安装 PyPI 上的专用库。两者可在同一环境中混合使用。
Jupyter Notebook 卡顿怎么办?
Notebook 运行缓慢或卡顿可从以下方面排查和优化:
- 清理输出:大量图像或日志输出会拖慢浏览器,定期清理单元格输出
from IPython.display import clear_output clear_output(wait=True) - 重启内核:长时间运行后内存可能累积,重启内核可释放资源
菜单栏:Kernel > Restart Kernel - 减少内存占用:及时删除不再使用的大变量
del large_tensor import gc gc.collect() - 增加内存:如果经常内存不足,考虑使用配置更高的机器或云服务器
- 关闭自动保存:大文件自动保存可能造成卡顿,可调整保存间隔
如何查看模型是否加载成功?
加载预训练模型后,可通过以下方式验证模型状态:
from transformers import AutoModel, AutoTokenizer
model_name = "bert-base-chinese"
model = AutoModel.from_pretrained(model_name)
tokenizer = AutoTokenizer.from_pretrained(model_name)
# 1. 打印模型结构(前5层)
print(model)
# 2. 统计模型参数量
total_params = sum(p.numel() for p in model.parameters())
trainable_params = sum(p.numel() for p in model.parameters() if p.requires_grad)
print(f"总参数量: {total_params:,}")
print(f"可训练参数量: {trainable_params:,}")
print(f"模型大小: {total_params * 4 / 1024 / 1024:.2f} MB (FP32)")
# 3. 测试前向传播
text = "这是一个测试"
inputs = tokenizer(text, return_tensors="pt")
outputs = model(**inputs)
print(f"输出形状: {outputs.last_hidden_state.shape}")
print("模型加载成功并可以正常推理!")
训练时 loss 不下降怎么办?
Loss 不下降说明模型没有有效学习,需要从多个维度排查:
- 检查学习率:学习率过大导致震荡,过小导致更新缓慢。尝试学习率范围 1e-5 到 1e-2 之间的不同值
- 数据预处理:检查输入数据是否归一化、标签是否正确、是否存在数据泄漏
- 模型结构:确认激活函数、损失函数与任务类型匹配(如分类任务用 CrossEntropyLoss)
- 梯度检查:确认反向传播正常执行,梯度没有消失或爆炸
for name, param in model.named_parameters(): if param.grad is not None: print(f"{name}: grad norm = {param.grad.norm().item()}") - 简化验证:先用很小的数据集(甚至单个样本)过拟合,确认模型有能力学习
如何选择合适的模型?
模型选择需要综合考虑任务需求、数据规模和计算资源:
- 任务类型:
- 文本分类:BERT、RoBERTa、DistilBERT
- 文本生成:GPT 系列、LLaMA、ChatGLM
- 图像分类:ResNet、EfficientNet、ViT
- 目标检测:YOLO、DETR
- 数据量:数据少选小模型或进行迁移学习,数据充足可训练大模型
- 计算资源:资源有限选择轻量级模型(DistilBERT、MobileNet)
- 精度要求:高精度场景选大模型,实时推理场景选轻量化模型
AI 学习需要多强的电脑?
不同学习阶段对硬件的要求差异很大,以下是配置建议:
| 学习阶段 | CPU | 内存 | GPU | 适用场景 |
|---|---|---|---|---|
| 入门学习 | 任意现代 CPU | 8GB+ | 无需 / 核显 | 理论学习、小规模代码实验 |
| 基础实践 | i5/R5 及以上 | 16GB+ | GTX 1060 6GB | 经典模型训练、Kaggle 入门竞赛 |
| 进阶开发 | i7/R7 及以上 | 32GB+ | RTX 3060 12GB+ | 微调大模型、中等规模项目 |
| 专业研究 | 服务器级 CPU | 64GB+ | RTX 4090 / A100 | 大规模训练、论文复现 |
建议:入门阶段不必追求高配,善用 Google Colab、Kaggle 等免费 GPU 资源。确定长期方向后再投资硬件。