1c1g 和 1c2g 技术详解与实践
本文将详细说明如何配置和管理 1c1g 和 1c2g 环境,包括环境搭建、配置步骤及关键命令。1c1g 指单 CPU 单 GPU 环境,1c2g 指单 CPU 双 GPU 环境,适用于不同的并行计算需求。
1c1g 环境搭建与配置
1c1g 环境适用于单任务并行计算,需要配置单块 GPU。以下是详细步骤:
1. 硬件与软件要求
- CPU:任意现代多核处理器
- GPU:NVIDIA GPU (需安装 CUDA)
- 操作系统:Linux (推荐 Ubuntu 20.04)
- 开发语言:Python 3.8+
2. 安装 CUDA 与 cuDNN
确保 GPU 驱动已安装,然后执行以下命令:
sudo apt update
sudo apt install -y build-essential dkms
sudo apt install -y cuda-11.0
sudo apt install -y cudnn8
环境变量配置:
echo 'export PATH=/usr/local/cuda-11.0/bin:$PATH' >> ~/.bashrc
echo 'export LD_LIBRARY_PATH=/usr/local/cuda-11.0/lib64:$LD_LIBRARY_PATH' >> ~/.bashrc
source ~/.bashrc

3. 安装深度学习框架
以 PyTorch 为例:
pip install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu110
1c2g 环境搭建与配置
1c2g 环境适用于需要数据并行或模型并行的任务,以下为配置步骤:
1. 硬件与软件要求
- CPU:任意现代多核处理器
- GPU:两块 NVIDIA GPU (需安装 CUDA)
- 操作系统:Linux (推荐 Ubuntu 20.04)
- 开发语言:Python 3.8+
2. GPU 插槽与驱动配置
检查 GPU 插槽并配置驱动:
lspci | grep -i nvidia
sudo nvidia-smi
确保两块 GPU 均被识别,然后更新驱动:
sudo apt update
sudo apt install -y nvidia-driver-470
sudo reboot
3. 多 GPU 数据并行配置
以 PyTorch 为例,启用数据并行:
import torch
import torch.nn as nn
# 检查 GPU 数量
print(f'Number of GPUs: {torch.cuda.device_count()}')
# 创建模型
model = nn.Sequential(
nn.Linear(10, 20),
nn.ReLU(),
nn.Linear(20, 10)
).cuda()
# 启用数据并行
if torch.cuda.device_count() > 1:
model = nn.DataParallel(model)
4. 模型并行配置 (可选)
对于更大模型,可使用模型并行:
from torch.nn.parallel import DistributedDataParallel as DDP
# 初始化分布式环境
torch.cuda.set_device(rank)
model.to(device)
ddp_model = DDP(model)
# 训练循环
for data, target in dataloader:
data, target = data.to(device), target.to(device)
output = ddp_model(data)
loss = criterion(output, target)
...
性能优化技巧
1. 内存管理
避免 GPU 内存溢出,可使用以下策略:
- 梯度累积:在多个批次中累积梯度再更新权重
- 半精度训练 (FP16):减少内存占用
model.half() # 将模型转换为 FP16
optimizer.zero_grad(set_to_none=True)
output = model(data.half())
loss = criterion(output, target)
loss.backward()
optimizer.step()
2. 批量大小调整
根据 GPU 内存调整批量大小,推荐值:
# 1c1g
batch_size = 32
# 1c2g
batch_size = 64
3. 硬件加速
使用 NVIDIA Collective Communications Library (NCCL) 提升通信效率:
export NCCL_DEBUG=INFO