目录

应用程序最佳实践

TorchX 应用程序可以使用任何语言以及任何一组 库以实现最大的灵活性。但是,我们确实有一套标准 的推荐库和实践,以便为用户提供一个起点,并 在内置组件和应用程序之间提供一致性。

有关如何处理组件的信息,请参阅 组件最佳实践 管理和 AppDefs。

数据传递和存储

我们建议使用 fsspec.fsspec 允许可插入的文件系统,因此应用程序可以编写一次并在大多数应用程序上运行 基础架构。

TorchX 内置组件使用 fsspec 进行所有存储访问,以使其成为可能 要使用不同的 fsspec 后端或添加 新的 。

Pytorch Lightning 支持开箱即用的 fsspec,因此在其他地方使用 fsspec 会使 与您的培训师无缝集成。

使用远程存储还可以更轻松地将应用程序转换为正在运行的 通过 torch.distributed.elastic 等库提供分布式支持。

火车环线

有很多方法可以构建训练循环,这在很大程度上取决于您 模型类型和架构,这就是为什么我们不提供开箱即用的模型。

一些常见的选择是:

有关更多信息,请参阅训练

指标

对于日志记录指标和监控作业,我们建议使用 standalone Tensorboard,因为它由 Pytorch tensorboard 集成Pytorch Lightning 日志记录原生支持。

由于 Tensorboard 可以记录到 s3 或 gcs 等远程存储,因此您可以查看复杂的 有关模型的信息。

有关指标处理的更多信息,请参阅指标 在 TorchX 中。

检查点

定期检查点允许您的应用程序从故障中恢复,在某些情况下 cases允许您使用不同的参数重新启动您的训练器而不会丢失 培训进度。

Pytorch Lighting 提供了一种标准化的方法来检查模型。

微调

为了支持迁移学习、微调和从 checkpoints 我们建议为您的应用程序设置一个命令行参数,该参数将 从检查点文件恢复。

这将允许您从瞬态错误中恢复,继续训练新的 data 进行更新,或者稍后调整学习率而不会丢失训练进度。

具有加载支持可以减少代码并提高可维护性,因为 可以让一个应用程序执行许多类似的任务。

可解释性

我们建议使用 captum 来实现模型可解释性,并使用 captum 来确保模型可解释性 分析模型结果。这可以从 Jupyter 笔记本以交互方式使用 或从组件。

有关更多信息,请参阅解释

模型打包

pytorch 社区尚未对一种包格式进行标准化。这里有几个 的选项以及何时可能需要使用它们。

Python + 保存的权重

这是打包模型的最常见格式。要使用,您需要加载 model 定义,然后您将加载权重和状态 dict 的 OR 文件。.ckpt.pt

这就是 Pytorch Lightning 的 ModelCheckpoint 钩子的工作原理。

这是最常见的,但会使制作可重用的应用程序变得更加困难,因为您的 Trainer App 需要包含模型定义代码。

TorchScript 模型

TorchScript 是一种创建可序列化和优化的 Pytorch 模型的方法,该模型 可以在没有 Python 的情况下执行。这可用于 performant 方式,而不依赖 Python 的 GIL。

这些模型文件是完全自描述的,但并非所有 pytorch 模型都可以 会自动转换为 TorchScript。

请参阅 TorchScript 文档

TorchServe 模型存档器 (.mar)

如果要使用 TorchServe 进行推理,则需要将模型导出到 this 格式。对于推理,通常使用模型的量化版本 因此,最好让您的 Trainer 导出一个完整的 precision 模型以进行精细 tuning 以及供 TorchServe 使用的量化文件。.mar

请参阅 Model Archiver 文档

torch.package

这是 pytorch 1.9.0 的新格式,可用于保存和加载模型 definitions 及其权重,因此您无需管理模型定义 分别。

请参阅 torch.package 文档

它是相当新的,没有得到广泛的采用或支持。

服务/推理

对于服务和推理,我们建议在常见使用案例中使用 TorchServe。 我们提供了一个组件,允许您通过 管理 API。

有关更多信息,请参阅 Serve 内置组件。

对于更复杂的服务和性能原因,您可能需要编写自己的 自定义推理逻辑。torchscript 和 torch::d eploy 是一些标准的 实用程序,您可以使用它来构建自己的推理服务器。

测试

由于 TorchX 应用程序通常是标准 python,因此您可以为 它们就像使用任何其他 Python 代码一样。

import unittest
from your.custom.app import main

class CustomAppTest(unittest.TestCase):
    def test_main(self) -> None:
        main(["--src", "src", "--dst", "dst"])
        self.assertTrue(...)

文档

访问 PyTorch 的全面开发人员文档

查看文档

教程

获取面向初学者和高级开发人员的深入教程

查看教程

资源

查找开发资源并解答您的问题

查看资源