Spec-Zone.ru › PyTorch 2.14

Спецификация архива PT2

Дата создания: 16 июля 2025 г. | Дата последнего обновления: 3 декабря 2025 г.

В следующей спецификации определяется формат архива, который можно создать с помощью следующих методов:

  • torch.export вызовом torch.export.save()
  • AOTInductor вызовом torch._inductor.aoti_compile_and_package()

Архив представляет собой zip-файл, с которым можно работать с помощью стандартных API zipfile.

Ниже представлен пример архива. Мы рассмотрим его папку за папкой.

.
├── archive_format
├── byteorder
├── .data
│   ├── serialization_id
│   └── version
├── data
│   ├── aotinductor
│   │   └── model1
│   │       ├── cf5ez6ifexr7i2hezzz4s7xfusj4wtisvu2gddeamh37bw6bghjw.kernel_metadata.json
│   │       ├── cf5ez6ifexr7i2hezzz4s7xfusj4wtisvu2gddeamh37bw6bghjw.kernel.cpp
│   │       ├── cf5ez6ifexr7i2hezzz4s7xfusj4wtisvu2gddeamh37bw6bghjw.wrapper_metadata.json
│   │       ├── cf5ez6ifexr7i2hezzz4s7xfusj4wtisvu2gddeamh37bw6bghjw.wrapper.cpp
│   │       ├── cf5ez6ifexr7i2hezzz4s7xfusj4wtisvu2gddeamh37bw6bghjw.wrapper.so
│   │       ├── cg7domx3woam3nnliwud7yvtcencqctxkvvcafuriladwxw4nfiv.cubin
│   │       └── cubaaxppb6xmuqdm4bej55h2pftbce3bjyyvljxbtdfuolmv45ex.cubin
│   ├── weights
│   │  ├── model1_weights_config.json
│   │  ├── model2_weights_config.json
│   │  ├── weight_0
│   │  ├── weight_1
│   │  ├── weight_2
│   └── constants
│   │  ├── model1_constants_config.json
│   │  ├── model2_constants_config.json
│   │  ├── tensor_0
│   │  ├── tensor_1
│   │  ├── custom_obj_0
│   │  ├── custom_obj_1
│   └── sample_inputs
│       ├── model1.pt
│       └── model2.pt
├── extra
│   └── ....json
└── models
    ├── model1.json
    └── model2.json

Содержимое

Заголовки архива

  • archive_format указывает формат, используемый в этом архиве. В настоящее время допускается только «pt2».
  • byteorder. Одно из значений «little» или «big», используемое средством чтения zip-файлов
  • /.data/version содержит версию архива. (Обратите внимание, что это не версия схемы сериализации export и не версия набора операторов Aten.)
  • /.data/serialization_id — хеш, созданный для текущего архива и используемый для проверки.

Скомпилированный артефакт AOTInductor

Путь: /data/aotinductor/<model_name>-<backend>/

Артефакты компиляции AOTInductor сохраняются для каждой пары «модель — бэкенд». Например, артефакты компиляции модели model1 для A100 и H100 будут сохранены отдельно в папках model1-a100 и model1-h100.

Обычно папка содержит:

  • <uuid>.wrapper.so: динамическая библиотека, скомпилированная из .cpp.
  • <uuid>.wrapper.cpp: файл-обёртка cpp, созданный AOTInductor.
  • <uuid>.kernel.cpp: файл ядра cpp, созданный AOTInductor.
  • *.cubin: ядра Triton, скомпилированные из ядер, созданных Triton codegen
  • <uuid>.wrapper_metadata.json: метаданные, переданные из конфигурации inductor aot_inductor.metadata
  • (необязательно) <uuid>.json: внешние резервные узлы для пользовательских операторов, которые должны выполняться с помощью ProxyExecutor и сериализуются в соответствии со структурой ExternKernelNode. Если модель не использует пользовательские операторы/ProxyExecutor, этот файл не включается.

Веса

Путь: /data/weights/*

Параметры и буферы модели сохраняются в папке /data/weights/. Каждый тензор сохраняется в отдельном файле. Файл содержит только необработанный двоичный блок данных; метаданные тензора и соответствие между полным именем веса модели (FQN) и сохранённым необработанным блоком данных хранятся отдельно в <model_name>_weights_config.json.

Константы

Путь: /data/constants/*

TensorConstants, непостоянные буферы и объекты TorchBind сохраняются в папке /data/constants/. Метаданные и соответствие между полным именем константы модели (FQN) и сохранённым необработанным блоком данных хранятся отдельно в <model_name>_constants_config.json

Примеры входных данных

Путь: /data/sample_inputs/<model_name>.pt

Архив может содержать sample_input, используемые torch.export, для последующего использования. Обычно это плоский список тензоров, объединяющий args и kwargs функции forward().

Файл .pt создаётся с помощью torch.save(sample_input); его можно загрузить в Python с помощью torch.load(), а в C++ — с помощью torch::pickle_load().

Если у модели несколько копий примеров входных данных, они упаковываются как <model_name>_<index>.pt.

Определения моделей

Путь: /models/<model_name>.json

Определение модели представляет собой сериализованный JSON-объект ExportedProgram из torch.export.save и другие метаданные уровня модели.

Несколько моделей

Эта спецификация архива поддерживает сосуществование нескольких определений моделей в одном файле. Идентификатором моделей служит <model_name>; на него ссылаются в других папках архива.

API более низкого уровня, такие как torch.export.pt2_archive._package.package_pt2() и torch.export.pt2_archive._package.load_pt2(), позволяют точнее управлять процессом упаковки и загрузки.

© 2026, PyTorch Contributors
PyTorch has a BSD-style license, as found in the LICENSE file.
https://docs.pytorch.org/docs/2.14/user_guide/torch_compiler/export/pt2_archive.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API