torch 0.10.0

torch v0.10.0 现已在 CRAN 上发布。此版本将底层 LibTorch 升级到 1.13.1,并增加了对自动混合精度的支持。作为一项实验性功能,我们现在还支持预构建的二进制文件,因此您可以安装 torch,而无需处理 CUDA 安装。

来源:RStudio AI博客

我们很高兴地宣布,torch v0.10.0 现已在 CRAN 上发布。在这篇博文中,我们重点介绍了此版本中引入的一些更改。您可以在此处查看完整的更改日志。

此处

自动混合精度

自动混合精度 (AMP) 是一种技术,它能够更快地训练深度学习模型,同时通过使用单精度 (FP32) 和半精度 (FP16) 浮点格式的组合来保持模型准确性。

为了将自动混合精度与 torch 结合使用,您需要使用 with_autocastcontext 切换器来允许 torch 使用可以以半精度运行的不同操作实现。一般来说,还建议缩放损失函数以保留较小的梯度,因为它们在半精度下更接近零。

with_autocast

这是一个最小示例,省略了数据生成过程。您可以在 amp 文章中找到更多信息。

amp 文章
...loss_fn <- nn_mse_loss()$cuda()net <- make_model(in_size, out_size, num_layers)opt <- optim_sgd(net$parameters, lr=0.1)scaler <- cuda_amp_grad_scaler()for (epoch in seq_len(epochs)) { for (i in seq_along(data)) { with_autocast(device_type = "cuda", { output <- net(data[[i]]) loss <- loss_fn(output, target[[i]]) }) scaler$scale(loss)$backward() scaler$step(opt) scaler$update() opt$zero_grad() }}
...loss_fn <- nn_mse_loss()$cuda()net <- make_model(in_size, out_size, num_layers)opt <- optim_sgd(net$parameters, lr=0.1)scaler <- cuda_amp_grad_scaler()for (epoch in seq_len(epochs)) { for (i in seq_along(data)) { with_autocast(device_type = "cuda", { output <- net(data[[i]]) loss <- loss_fn(output, target[[i]]) }) scaler$scale(loss)$backward() scaler$step(opt) scaler$update() opt$zero_grad() }}

在此示例中,使用混合精度可使速度提高约 40%。如果您只是运行推理,即不需要缩放损失,则此速度会更大。

预构建二进制文件

600 c