Спецификация архива 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: метаданные, переданные из конфигурации inductoraot_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