优化 Python 深度学习代码通常可以从计算性能、内存占用、代码结构、训练策略和工程实践几个层面入手。下面按“由浅入深”的方式给你一个系统性的优化思路。
❌ 不推荐:
for i in range(len(x)):
y[i] = x[i] * 2
✅ 推荐:
y = x * 2
device = "cuda" if torch.cuda.is_available() else "cpu"
model.to(device)
x = x.to(device)
DistributedDataParallelMirroredStrategy大幅减少显存 & 加速训练
PyTorch 示例:
scaler = torch.cuda.amp.GradScaler()
with torch.cuda.amp.autocast():
output = model(x)
loss = criterion(output, y)
scaler.scale(loss).backward()
scaler.step(optimizer)
scaler.update()
DataLoader(
dataset,
batch_size=32,
num_workers=4,
pin_memory=True,
prefetch_factor=2
)
num_workers 一般 = CPU 核心数torchvision.transformsalbumentations.npy, lmdb)适合大规模数据:
torch.quantization.quantize_dynamic(model, {nn.Linear}, dtype=torch.qint8)
loss = loss / accum_steps
loss.backward()
if step % accum_steps == 0:
optimizer.step()
optimizer.zero_grad()
print / wandb.log 不要太频繁train.pymodel.pyconfig.yaml@torch.no_grad() 推理with torch.cuda.amp.autocast()deltorch.cuda.empty_cache()(谨慎)你可以逐条检查:
你可以直接发:
我可以针对你的代码做具体优化建议。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。