使用标准的模型结构和优化器,但后续会配合混合精度工具。
model = MyModel()
optimizer = torch.optim.Adam(model.parameters(), lr=1e-3)在 PyTorch 中通常使用 torch.cuda.amp。
from torch.cuda.amp import autocast, GradScalerscaler = GradScaler()使用 autocast() 上下文管理器:
for data, target in dataloader:
data, target = data.cuda(), target.cuda()
optimizer.zero_grad()
with autocast(): # 自动混合精度
output = model(data)
loss = criterion(output, target)scaler.scale(loss).backward()scaler.step(optimizer)
scaler.update()scaler.step() 会自动处理 unscalingscaler.update() 根据梯度情况动态调整缩放因子for epoch in range(epochs):
for data, target in dataloader:
data, target = data.cuda(), target.cuda()
optimizer.zero_grad()
with autocast():
output = model(data)
loss = criterion(output, target)
scaler.scale(loss).backward()
scaler.step(optimizer)
scaler.update()| 步骤 | 说明 |
|---|---|
| autocast | 自动在前向传播中使用 FP16 |
| GradScaler | 防止梯度下溢 |
| scaler.scale(loss) | 放大损失 |
| scaler.step | 安全更新参数 |
| scaler.update | 动态调整缩放策略 |
✅ 适合:
⚠️ 注意:
如果你需要 TensorFlow 的混合精度步骤 或 具体框架(如 HuggingFace、MMDetection)示例,也可以告诉我。