onnxscript 0.1.0.dev20231122__tar.gz → 0.1.0.dev20231124__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {onnxscript-0.1.0.dev20231122/onnxscript.egg-info → onnxscript-0.1.0.dev20231124}/PKG-INFO +2 -2
- {onnxscript-0.1.0.dev20231122 → onnxscript-0.1.0.dev20231124}/onnxscript/function_libs/torch_lib/graph_building.py +153 -17
- {onnxscript-0.1.0.dev20231122 → onnxscript-0.1.0.dev20231124}/onnxscript/function_libs/torch_lib/ops/core.py +10 -7
- {onnxscript-0.1.0.dev20231122 → onnxscript-0.1.0.dev20231124}/onnxscript/function_libs/torch_lib/ops/special.py +4 -4
- {onnxscript-0.1.0.dev20231122 → onnxscript-0.1.0.dev20231124}/onnxscript/tests/function_libs/torch_lib/ops_test_common.py +4 -0
- {onnxscript-0.1.0.dev20231122 → onnxscript-0.1.0.dev20231124}/onnxscript/tests/function_libs/torch_lib/ops_test_data.py +101 -21
- {onnxscript-0.1.0.dev20231122 → onnxscript-0.1.0.dev20231124/onnxscript.egg-info}/PKG-INFO +2 -2
- {onnxscript-0.1.0.dev20231122 → onnxscript-0.1.0.dev20231124}/pyproject.toml +0 -1
- {onnxscript-0.1.0.dev20231122 → onnxscript-0.1.0.dev20231124}/setup.py +13 -1
- {onnxscript-0.1.0.dev20231122 → onnxscript-0.1.0.dev20231124}/LICENSE +0 -0
- {onnxscript-0.1.0.dev20231122 → onnxscript-0.1.0.dev20231124}/MANIFEST.in +0 -0
- {onnxscript-0.1.0.dev20231122 → onnxscript-0.1.0.dev20231124}/README.md +0 -0
- {onnxscript-0.1.0.dev20231122 → onnxscript-0.1.0.dev20231124}/VERSION +0 -0
- {onnxscript-0.1.0.dev20231122 → onnxscript-0.1.0.dev20231124}/onnxscript/__init__.py +0 -0
- {onnxscript-0.1.0.dev20231122 → onnxscript-0.1.0.dev20231124}/onnxscript/_internal/__init__.py +0 -0
- {onnxscript-0.1.0.dev20231122 → onnxscript-0.1.0.dev20231124}/onnxscript/_internal/analysis.py +0 -0
- {onnxscript-0.1.0.dev20231122 → onnxscript-0.1.0.dev20231124}/onnxscript/_internal/analysis_test.py +0 -0
- {onnxscript-0.1.0.dev20231122 → onnxscript-0.1.0.dev20231124}/onnxscript/_internal/ast_utils.py +0 -0
- {onnxscript-0.1.0.dev20231122 → onnxscript-0.1.0.dev20231124}/onnxscript/_internal/autocast.py +0 -0
- {onnxscript-0.1.0.dev20231122 → onnxscript-0.1.0.dev20231124}/onnxscript/_internal/deprecation.py +0 -0
- {onnxscript-0.1.0.dev20231122 → onnxscript-0.1.0.dev20231124}/onnxscript/_internal/param_manipulation.py +0 -0
- {onnxscript-0.1.0.dev20231122 → onnxscript-0.1.0.dev20231124}/onnxscript/_internal/param_manipulation_test.py +0 -0
- {onnxscript-0.1.0.dev20231122 → onnxscript-0.1.0.dev20231124}/onnxscript/_internal/runtime_typing.py +0 -0
- {onnxscript-0.1.0.dev20231122 → onnxscript-0.1.0.dev20231124}/onnxscript/_internal/utils.py +0 -0
- {onnxscript-0.1.0.dev20231122 → onnxscript-0.1.0.dev20231124}/onnxscript/_internal/version_utils.py +0 -0
- {onnxscript-0.1.0.dev20231122 → onnxscript-0.1.0.dev20231124}/onnxscript/backend/__init__.py +0 -0
- {onnxscript-0.1.0.dev20231122 → onnxscript-0.1.0.dev20231124}/onnxscript/backend/onnx_backend.py +0 -0
- {onnxscript-0.1.0.dev20231122 → onnxscript-0.1.0.dev20231124}/onnxscript/backend/onnx_backend_test.py +0 -0
- {onnxscript-0.1.0.dev20231122 → onnxscript-0.1.0.dev20231124}/onnxscript/backend/onnx_export.py +0 -0
- {onnxscript-0.1.0.dev20231122 → onnxscript-0.1.0.dev20231124}/onnxscript/backend/onnx_export_test.py +0 -0
- {onnxscript-0.1.0.dev20231122 → onnxscript-0.1.0.dev20231124}/onnxscript/converter.py +0 -0
- {onnxscript-0.1.0.dev20231122 → onnxscript-0.1.0.dev20231124}/onnxscript/converter_test.py +0 -0
- {onnxscript-0.1.0.dev20231122 → onnxscript-0.1.0.dev20231124}/onnxscript/diagnostics/infra/__init__.py +0 -0
- {onnxscript-0.1.0.dev20231122 → onnxscript-0.1.0.dev20231124}/onnxscript/diagnostics/infra/_infra.py +0 -0
- {onnxscript-0.1.0.dev20231122 → onnxscript-0.1.0.dev20231124}/onnxscript/diagnostics/infra/context.py +0 -0
- {onnxscript-0.1.0.dev20231122 → onnxscript-0.1.0.dev20231124}/onnxscript/diagnostics/infra/decorator.py +0 -0
- {onnxscript-0.1.0.dev20231122 → onnxscript-0.1.0.dev20231124}/onnxscript/diagnostics/infra/formatter.py +0 -0
- {onnxscript-0.1.0.dev20231122 → onnxscript-0.1.0.dev20231124}/onnxscript/diagnostics/infra/sarif/__init__.py +0 -0
- {onnxscript-0.1.0.dev20231122 → onnxscript-0.1.0.dev20231124}/onnxscript/diagnostics/infra/sarif/_address.py +0 -0
- {onnxscript-0.1.0.dev20231122 → onnxscript-0.1.0.dev20231124}/onnxscript/diagnostics/infra/sarif/_artifact.py +0 -0
- {onnxscript-0.1.0.dev20231122 → onnxscript-0.1.0.dev20231124}/onnxscript/diagnostics/infra/sarif/_artifact_change.py +0 -0
- {onnxscript-0.1.0.dev20231122 → onnxscript-0.1.0.dev20231124}/onnxscript/diagnostics/infra/sarif/_artifact_content.py +0 -0
- {onnxscript-0.1.0.dev20231122 → onnxscript-0.1.0.dev20231124}/onnxscript/diagnostics/infra/sarif/_artifact_location.py +0 -0
- {onnxscript-0.1.0.dev20231122 → onnxscript-0.1.0.dev20231124}/onnxscript/diagnostics/infra/sarif/_attachment.py +0 -0
- {onnxscript-0.1.0.dev20231122 → onnxscript-0.1.0.dev20231124}/onnxscript/diagnostics/infra/sarif/_code_flow.py +0 -0
- {onnxscript-0.1.0.dev20231122 → onnxscript-0.1.0.dev20231124}/onnxscript/diagnostics/infra/sarif/_configuration_override.py +0 -0
- {onnxscript-0.1.0.dev20231122 → onnxscript-0.1.0.dev20231124}/onnxscript/diagnostics/infra/sarif/_conversion.py +0 -0
- {onnxscript-0.1.0.dev20231122 → onnxscript-0.1.0.dev20231124}/onnxscript/diagnostics/infra/sarif/_edge.py +0 -0
- {onnxscript-0.1.0.dev20231122 → onnxscript-0.1.0.dev20231124}/onnxscript/diagnostics/infra/sarif/_edge_traversal.py +0 -0
- {onnxscript-0.1.0.dev20231122 → onnxscript-0.1.0.dev20231124}/onnxscript/diagnostics/infra/sarif/_exception.py +0 -0
- {onnxscript-0.1.0.dev20231122 → onnxscript-0.1.0.dev20231124}/onnxscript/diagnostics/infra/sarif/_external_properties.py +0 -0
- {onnxscript-0.1.0.dev20231122 → onnxscript-0.1.0.dev20231124}/onnxscript/diagnostics/infra/sarif/_external_property_file_reference.py +0 -0
- {onnxscript-0.1.0.dev20231122 → onnxscript-0.1.0.dev20231124}/onnxscript/diagnostics/infra/sarif/_external_property_file_references.py +0 -0
- {onnxscript-0.1.0.dev20231122 → onnxscript-0.1.0.dev20231124}/onnxscript/diagnostics/infra/sarif/_fix.py +0 -0
- {onnxscript-0.1.0.dev20231122 → onnxscript-0.1.0.dev20231124}/onnxscript/diagnostics/infra/sarif/_graph.py +0 -0
- {onnxscript-0.1.0.dev20231122 → onnxscript-0.1.0.dev20231124}/onnxscript/diagnostics/infra/sarif/_graph_traversal.py +0 -0
- {onnxscript-0.1.0.dev20231122 → onnxscript-0.1.0.dev20231124}/onnxscript/diagnostics/infra/sarif/_invocation.py +0 -0
- {onnxscript-0.1.0.dev20231122 → onnxscript-0.1.0.dev20231124}/onnxscript/diagnostics/infra/sarif/_location.py +0 -0
- {onnxscript-0.1.0.dev20231122 → onnxscript-0.1.0.dev20231124}/onnxscript/diagnostics/infra/sarif/_location_relationship.py +0 -0
- {onnxscript-0.1.0.dev20231122 → onnxscript-0.1.0.dev20231124}/onnxscript/diagnostics/infra/sarif/_logical_location.py +0 -0
- {onnxscript-0.1.0.dev20231122 → onnxscript-0.1.0.dev20231124}/onnxscript/diagnostics/infra/sarif/_message.py +0 -0
- {onnxscript-0.1.0.dev20231122 → onnxscript-0.1.0.dev20231124}/onnxscript/diagnostics/infra/sarif/_multiformat_message_string.py +0 -0
- {onnxscript-0.1.0.dev20231122 → onnxscript-0.1.0.dev20231124}/onnxscript/diagnostics/infra/sarif/_node.py +0 -0
- {onnxscript-0.1.0.dev20231122 → onnxscript-0.1.0.dev20231124}/onnxscript/diagnostics/infra/sarif/_notification.py +0 -0
- {onnxscript-0.1.0.dev20231122 → onnxscript-0.1.0.dev20231124}/onnxscript/diagnostics/infra/sarif/_physical_location.py +0 -0
- {onnxscript-0.1.0.dev20231122 → onnxscript-0.1.0.dev20231124}/onnxscript/diagnostics/infra/sarif/_property_bag.py +0 -0
- {onnxscript-0.1.0.dev20231122 → onnxscript-0.1.0.dev20231124}/onnxscript/diagnostics/infra/sarif/_rectangle.py +0 -0
- {onnxscript-0.1.0.dev20231122 → onnxscript-0.1.0.dev20231124}/onnxscript/diagnostics/infra/sarif/_region.py +0 -0
- {onnxscript-0.1.0.dev20231122 → onnxscript-0.1.0.dev20231124}/onnxscript/diagnostics/infra/sarif/_replacement.py +0 -0
- {onnxscript-0.1.0.dev20231122 → onnxscript-0.1.0.dev20231124}/onnxscript/diagnostics/infra/sarif/_reporting_configuration.py +0 -0
- {onnxscript-0.1.0.dev20231122 → onnxscript-0.1.0.dev20231124}/onnxscript/diagnostics/infra/sarif/_reporting_descriptor.py +0 -0
- {onnxscript-0.1.0.dev20231122 → onnxscript-0.1.0.dev20231124}/onnxscript/diagnostics/infra/sarif/_reporting_descriptor_reference.py +0 -0
- {onnxscript-0.1.0.dev20231122 → onnxscript-0.1.0.dev20231124}/onnxscript/diagnostics/infra/sarif/_reporting_descriptor_relationship.py +0 -0
- {onnxscript-0.1.0.dev20231122 → onnxscript-0.1.0.dev20231124}/onnxscript/diagnostics/infra/sarif/_result.py +0 -0
- {onnxscript-0.1.0.dev20231122 → onnxscript-0.1.0.dev20231124}/onnxscript/diagnostics/infra/sarif/_result_provenance.py +0 -0
- {onnxscript-0.1.0.dev20231122 → onnxscript-0.1.0.dev20231124}/onnxscript/diagnostics/infra/sarif/_run.py +0 -0
- {onnxscript-0.1.0.dev20231122 → onnxscript-0.1.0.dev20231124}/onnxscript/diagnostics/infra/sarif/_run_automation_details.py +0 -0
- {onnxscript-0.1.0.dev20231122 → onnxscript-0.1.0.dev20231124}/onnxscript/diagnostics/infra/sarif/_sarif_log.py +0 -0
- {onnxscript-0.1.0.dev20231122 → onnxscript-0.1.0.dev20231124}/onnxscript/diagnostics/infra/sarif/_special_locations.py +0 -0
- {onnxscript-0.1.0.dev20231122 → onnxscript-0.1.0.dev20231124}/onnxscript/diagnostics/infra/sarif/_stack.py +0 -0
- {onnxscript-0.1.0.dev20231122 → onnxscript-0.1.0.dev20231124}/onnxscript/diagnostics/infra/sarif/_stack_frame.py +0 -0
- {onnxscript-0.1.0.dev20231122 → onnxscript-0.1.0.dev20231124}/onnxscript/diagnostics/infra/sarif/_suppression.py +0 -0
- {onnxscript-0.1.0.dev20231122 → onnxscript-0.1.0.dev20231124}/onnxscript/diagnostics/infra/sarif/_thread_flow.py +0 -0
- {onnxscript-0.1.0.dev20231122 → onnxscript-0.1.0.dev20231124}/onnxscript/diagnostics/infra/sarif/_thread_flow_location.py +0 -0
- {onnxscript-0.1.0.dev20231122 → onnxscript-0.1.0.dev20231124}/onnxscript/diagnostics/infra/sarif/_tool.py +0 -0
- {onnxscript-0.1.0.dev20231122 → onnxscript-0.1.0.dev20231124}/onnxscript/diagnostics/infra/sarif/_tool_component.py +0 -0
- {onnxscript-0.1.0.dev20231122 → onnxscript-0.1.0.dev20231124}/onnxscript/diagnostics/infra/sarif/_tool_component_reference.py +0 -0
- {onnxscript-0.1.0.dev20231122 → onnxscript-0.1.0.dev20231124}/onnxscript/diagnostics/infra/sarif/_translation_metadata.py +0 -0
- {onnxscript-0.1.0.dev20231122 → onnxscript-0.1.0.dev20231124}/onnxscript/diagnostics/infra/sarif/_version_control_details.py +0 -0
- {onnxscript-0.1.0.dev20231122 → onnxscript-0.1.0.dev20231124}/onnxscript/diagnostics/infra/sarif/_web_request.py +0 -0
- {onnxscript-0.1.0.dev20231122 → onnxscript-0.1.0.dev20231124}/onnxscript/diagnostics/infra/sarif/_web_response.py +0 -0
- {onnxscript-0.1.0.dev20231122 → onnxscript-0.1.0.dev20231124}/onnxscript/diagnostics/infra/sarif/version.py +0 -0
- {onnxscript-0.1.0.dev20231122 → onnxscript-0.1.0.dev20231124}/onnxscript/diagnostics/infra/utils.py +0 -0
- {onnxscript-0.1.0.dev20231122 → onnxscript-0.1.0.dev20231124}/onnxscript/evaluator.py +0 -0
- {onnxscript-0.1.0.dev20231122 → onnxscript-0.1.0.dev20231124}/onnxscript/evaluator_test.py +0 -0
- {onnxscript-0.1.0.dev20231122 → onnxscript-0.1.0.dev20231124}/onnxscript/function_libs/tools/torch_lib/deduce_type_constraints.py +0 -0
- {onnxscript-0.1.0.dev20231122 → onnxscript-0.1.0.dev20231124}/onnxscript/function_libs/tools/torch_lib/deduce_type_constraints_test.py +0 -0
- {onnxscript-0.1.0.dev20231122 → onnxscript-0.1.0.dev20231124}/onnxscript/function_libs/tools/torch_lib/generate_aten_signatures.py +0 -0
- {onnxscript-0.1.0.dev20231122 → onnxscript-0.1.0.dev20231124}/onnxscript/function_libs/tools/torch_lib/generate_prims_signatures.py +0 -0
- {onnxscript-0.1.0.dev20231122 → onnxscript-0.1.0.dev20231124}/onnxscript/function_libs/torch_lib/__init__.py +0 -0
- {onnxscript-0.1.0.dev20231122 → onnxscript-0.1.0.dev20231124}/onnxscript/function_libs/torch_lib/_constants.py +0 -0
- {onnxscript-0.1.0.dev20231122 → onnxscript-0.1.0.dev20231124}/onnxscript/function_libs/torch_lib/_flags.py +0 -0
- {onnxscript-0.1.0.dev20231122 → onnxscript-0.1.0.dev20231124}/onnxscript/function_libs/torch_lib/graph_building_test.py +0 -0
- {onnxscript-0.1.0.dev20231122 → onnxscript-0.1.0.dev20231124}/onnxscript/function_libs/torch_lib/ops/__init__.py +0 -0
- {onnxscript-0.1.0.dev20231122 → onnxscript-0.1.0.dev20231124}/onnxscript/function_libs/torch_lib/ops/common.py +0 -0
- {onnxscript-0.1.0.dev20231122 → onnxscript-0.1.0.dev20231124}/onnxscript/function_libs/torch_lib/ops/fft.py +0 -0
- {onnxscript-0.1.0.dev20231122 → onnxscript-0.1.0.dev20231124}/onnxscript/function_libs/torch_lib/ops/linalg.py +0 -0
- {onnxscript-0.1.0.dev20231122 → onnxscript-0.1.0.dev20231124}/onnxscript/function_libs/torch_lib/ops/nested.py +0 -0
- {onnxscript-0.1.0.dev20231122 → onnxscript-0.1.0.dev20231124}/onnxscript/function_libs/torch_lib/ops/nn.py +0 -0
- {onnxscript-0.1.0.dev20231122 → onnxscript-0.1.0.dev20231124}/onnxscript/function_libs/torch_lib/ops/prims.py +0 -0
- {onnxscript-0.1.0.dev20231122 → onnxscript-0.1.0.dev20231124}/onnxscript/function_libs/torch_lib/ops/sparse.py +0 -0
- {onnxscript-0.1.0.dev20231122 → onnxscript-0.1.0.dev20231124}/onnxscript/function_libs/torch_lib/registration.py +0 -0
- {onnxscript-0.1.0.dev20231122 → onnxscript-0.1.0.dev20231124}/onnxscript/function_libs/torch_lib/tensor_typing.py +0 -0
- {onnxscript-0.1.0.dev20231122 → onnxscript-0.1.0.dev20231124}/onnxscript/irbuilder.py +0 -0
- {onnxscript-0.1.0.dev20231122 → onnxscript-0.1.0.dev20231124}/onnxscript/main.py +0 -0
- {onnxscript-0.1.0.dev20231122 → onnxscript-0.1.0.dev20231124}/onnxscript/onnx_opset/__init__.py +0 -0
- {onnxscript-0.1.0.dev20231122 → onnxscript-0.1.0.dev20231124}/onnxscript/onnx_opset/_impl/opset1.py +0 -0
- {onnxscript-0.1.0.dev20231122 → onnxscript-0.1.0.dev20231124}/onnxscript/onnx_opset/_impl/opset10.py +0 -0
- {onnxscript-0.1.0.dev20231122 → onnxscript-0.1.0.dev20231124}/onnxscript/onnx_opset/_impl/opset11.py +0 -0
- {onnxscript-0.1.0.dev20231122 → onnxscript-0.1.0.dev20231124}/onnxscript/onnx_opset/_impl/opset12.py +0 -0
- {onnxscript-0.1.0.dev20231122 → onnxscript-0.1.0.dev20231124}/onnxscript/onnx_opset/_impl/opset13.py +0 -0
- {onnxscript-0.1.0.dev20231122 → onnxscript-0.1.0.dev20231124}/onnxscript/onnx_opset/_impl/opset14.py +0 -0
- {onnxscript-0.1.0.dev20231122 → onnxscript-0.1.0.dev20231124}/onnxscript/onnx_opset/_impl/opset15.py +0 -0
- {onnxscript-0.1.0.dev20231122 → onnxscript-0.1.0.dev20231124}/onnxscript/onnx_opset/_impl/opset16.py +0 -0
- {onnxscript-0.1.0.dev20231122 → onnxscript-0.1.0.dev20231124}/onnxscript/onnx_opset/_impl/opset17.py +0 -0
- {onnxscript-0.1.0.dev20231122 → onnxscript-0.1.0.dev20231124}/onnxscript/onnx_opset/_impl/opset18.py +0 -0
- {onnxscript-0.1.0.dev20231122 → onnxscript-0.1.0.dev20231124}/onnxscript/onnx_opset/_impl/opset19.py +0 -0
- {onnxscript-0.1.0.dev20231122 → onnxscript-0.1.0.dev20231124}/onnxscript/onnx_opset/_impl/opset2.py +0 -0
- {onnxscript-0.1.0.dev20231122 → onnxscript-0.1.0.dev20231124}/onnxscript/onnx_opset/_impl/opset3.py +0 -0
- {onnxscript-0.1.0.dev20231122 → onnxscript-0.1.0.dev20231124}/onnxscript/onnx_opset/_impl/opset4.py +0 -0
- {onnxscript-0.1.0.dev20231122 → onnxscript-0.1.0.dev20231124}/onnxscript/onnx_opset/_impl/opset5.py +0 -0
- {onnxscript-0.1.0.dev20231122 → onnxscript-0.1.0.dev20231124}/onnxscript/onnx_opset/_impl/opset6.py +0 -0
- {onnxscript-0.1.0.dev20231122 → onnxscript-0.1.0.dev20231124}/onnxscript/onnx_opset/_impl/opset7.py +0 -0
- {onnxscript-0.1.0.dev20231122 → onnxscript-0.1.0.dev20231124}/onnxscript/onnx_opset/_impl/opset8.py +0 -0
- {onnxscript-0.1.0.dev20231122 → onnxscript-0.1.0.dev20231124}/onnxscript/onnx_opset/_impl/opset9.py +0 -0
- {onnxscript-0.1.0.dev20231122 → onnxscript-0.1.0.dev20231124}/onnxscript/onnx_opset/_impl/opset_ai_onnx_ml1.py +0 -0
- {onnxscript-0.1.0.dev20231122 → onnxscript-0.1.0.dev20231124}/onnxscript/onnx_opset/_impl/opset_ai_onnx_ml2.py +0 -0
- {onnxscript-0.1.0.dev20231122 → onnxscript-0.1.0.dev20231124}/onnxscript/onnx_opset/_impl/opset_ai_onnx_ml3.py +0 -0
- {onnxscript-0.1.0.dev20231122 → onnxscript-0.1.0.dev20231124}/onnxscript/onnx_opset/_impl/opset_ai_onnx_preview_training1.py +0 -0
- {onnxscript-0.1.0.dev20231122 → onnxscript-0.1.0.dev20231124}/onnxscript/onnx_types.py +0 -0
- {onnxscript-0.1.0.dev20231122 → onnxscript-0.1.0.dev20231124}/onnxscript/py.typed +0 -0
- {onnxscript-0.1.0.dev20231122 → onnxscript-0.1.0.dev20231124}/onnxscript/sourceinfo.py +0 -0
- {onnxscript-0.1.0.dev20231122 → onnxscript-0.1.0.dev20231124}/onnxscript/tensor.py +0 -0
- {onnxscript-0.1.0.dev20231122 → onnxscript-0.1.0.dev20231124}/onnxscript/tensor_test.py +0 -0
- {onnxscript-0.1.0.dev20231122 → onnxscript-0.1.0.dev20231124}/onnxscript/testing.py +0 -0
- {onnxscript-0.1.0.dev20231122 → onnxscript-0.1.0.dev20231124}/onnxscript/tests/__init__.py +0 -0
- {onnxscript-0.1.0.dev20231122 → onnxscript-0.1.0.dev20231124}/onnxscript/tests/common/__init__.py +0 -0
- {onnxscript-0.1.0.dev20231122 → onnxscript-0.1.0.dev20231124}/onnxscript/tests/common/onnx_script_test_case.py +0 -0
- {onnxscript-0.1.0.dev20231122 → onnxscript-0.1.0.dev20231124}/onnxscript/tests/common/testutils.py +0 -0
- {onnxscript-0.1.0.dev20231122 → onnxscript-0.1.0.dev20231124}/onnxscript/tests/eager_mode_test.py +0 -0
- {onnxscript-0.1.0.dev20231122 → onnxscript-0.1.0.dev20231124}/onnxscript/tests/eager_test.py +0 -0
- {onnxscript-0.1.0.dev20231122 → onnxscript-0.1.0.dev20231124}/onnxscript/tests/external_tensor_test.py +0 -0
- {onnxscript-0.1.0.dev20231122 → onnxscript-0.1.0.dev20231124}/onnxscript/tests/function_libs/torch_lib/error_reproduction.py +0 -0
- {onnxscript-0.1.0.dev20231122 → onnxscript-0.1.0.dev20231124}/onnxscript/tests/function_libs/torch_lib/extra_opinfo.py +0 -0
- {onnxscript-0.1.0.dev20231122 → onnxscript-0.1.0.dev20231124}/onnxscript/tests/function_libs/torch_lib/ops_test.py +0 -0
- {onnxscript-0.1.0.dev20231122 → onnxscript-0.1.0.dev20231124}/onnxscript/tests/functions/attr_test.py +0 -0
- {onnxscript-0.1.0.dev20231122 → onnxscript-0.1.0.dev20231124}/onnxscript/tests/functions/gemmgelu.py +0 -0
- {onnxscript-0.1.0.dev20231122 → onnxscript-0.1.0.dev20231124}/onnxscript/tests/functions/gemmgelu_test.py +0 -0
- {onnxscript-0.1.0.dev20231122 → onnxscript-0.1.0.dev20231124}/onnxscript/tests/functions/if_test.py +0 -0
- {onnxscript-0.1.0.dev20231122 → onnxscript-0.1.0.dev20231124}/onnxscript/tests/functions/onnxfns1A_test.py +0 -0
- {onnxscript-0.1.0.dev20231122 → onnxscript-0.1.0.dev20231124}/onnxscript/tests/functions/onnxfns2_test.py +0 -0
- {onnxscript-0.1.0.dev20231122 → onnxscript-0.1.0.dev20231124}/onnxscript/tests/functions/onnxfns_test.py +0 -0
- {onnxscript-0.1.0.dev20231122 → onnxscript-0.1.0.dev20231124}/onnxscript/tests/functions/ort_custom_ops.py +0 -0
- {onnxscript-0.1.0.dev20231122 → onnxscript-0.1.0.dev20231124}/onnxscript/tests/if_test.py +0 -0
- {onnxscript-0.1.0.dev20231122 → onnxscript-0.1.0.dev20231124}/onnxscript/tests/loop_test.py +0 -0
- {onnxscript-0.1.0.dev20231122 → onnxscript-0.1.0.dev20231124}/onnxscript/tests/models/__init__.py +0 -0
- {onnxscript-0.1.0.dev20231122 → onnxscript-0.1.0.dev20231124}/onnxscript/tests/models/attrref.py +0 -0
- {onnxscript-0.1.0.dev20231122 → onnxscript-0.1.0.dev20231124}/onnxscript/tests/models/cast_like.py +0 -0
- {onnxscript-0.1.0.dev20231122 → onnxscript-0.1.0.dev20231124}/onnxscript/tests/models/different_opset.py +0 -0
- {onnxscript-0.1.0.dev20231122 → onnxscript-0.1.0.dev20231124}/onnxscript/tests/models/dropout.py +0 -0
- {onnxscript-0.1.0.dev20231122 → onnxscript-0.1.0.dev20231124}/onnxscript/tests/models/eager_op.py +0 -0
- {onnxscript-0.1.0.dev20231122 → onnxscript-0.1.0.dev20231124}/onnxscript/tests/models/eg1.py +0 -0
- {onnxscript-0.1.0.dev20231122 → onnxscript-0.1.0.dev20231124}/onnxscript/tests/models/getitem.py +0 -0
- {onnxscript-0.1.0.dev20231122 → onnxscript-0.1.0.dev20231124}/onnxscript/tests/models/graph_attr.py +0 -0
- {onnxscript-0.1.0.dev20231122 → onnxscript-0.1.0.dev20231124}/onnxscript/tests/models/identity.py +0 -0
- {onnxscript-0.1.0.dev20231122 → onnxscript-0.1.0.dev20231124}/onnxscript/tests/models/if_statement.py +0 -0
- {onnxscript-0.1.0.dev20231122 → onnxscript-0.1.0.dev20231124}/onnxscript/tests/models/loops_break.py +0 -0
- {onnxscript-0.1.0.dev20231122 → onnxscript-0.1.0.dev20231124}/onnxscript/tests/models/loops_while.py +0 -0
- {onnxscript-0.1.0.dev20231122 → onnxscript-0.1.0.dev20231124}/onnxscript/tests/models/m1.py +0 -0
- {onnxscript-0.1.0.dev20231122 → onnxscript-0.1.0.dev20231124}/onnxscript/tests/models/multi.py +0 -0
- {onnxscript-0.1.0.dev20231122 → onnxscript-0.1.0.dev20231124}/onnxscript/tests/models/onnxfns1.py +0 -0
- {onnxscript-0.1.0.dev20231122 → onnxscript-0.1.0.dev20231124}/onnxscript/tests/models/onnxfns1A.py +0 -0
- {onnxscript-0.1.0.dev20231122 → onnxscript-0.1.0.dev20231124}/onnxscript/tests/models/onnxfns2.py +0 -0
- {onnxscript-0.1.0.dev20231122 → onnxscript-0.1.0.dev20231124}/onnxscript/tests/models/opt_input.py +0 -0
- {onnxscript-0.1.0.dev20231122 → onnxscript-0.1.0.dev20231124}/onnxscript/tests/models/opt_output.py +0 -0
- {onnxscript-0.1.0.dev20231122 → onnxscript-0.1.0.dev20231124}/onnxscript/tests/models/renaming.py +0 -0
- {onnxscript-0.1.0.dev20231122 → onnxscript-0.1.0.dev20231124}/onnxscript/tests/models/sequences.py +0 -0
- {onnxscript-0.1.0.dev20231122 → onnxscript-0.1.0.dev20231124}/onnxscript/tests/models/signal_dft.py +0 -0
- {onnxscript-0.1.0.dev20231122 → onnxscript-0.1.0.dev20231124}/onnxscript/tests/models/subfunction.py +0 -0
- {onnxscript-0.1.0.dev20231122 → onnxscript-0.1.0.dev20231124}/onnxscript/tests/models/type_double.py +0 -0
- {onnxscript-0.1.0.dev20231122 → onnxscript-0.1.0.dev20231124}/onnxscript/tests/onnx_types_test.py +0 -0
- {onnxscript-0.1.0.dev20231122 → onnxscript-0.1.0.dev20231124}/onnxscript/tests/operator_test.py +0 -0
- {onnxscript-0.1.0.dev20231122 → onnxscript-0.1.0.dev20231124}/onnxscript/type_annotation.py +0 -0
- {onnxscript-0.1.0.dev20231122 → onnxscript-0.1.0.dev20231124}/onnxscript/type_annotation_test.py +0 -0
- {onnxscript-0.1.0.dev20231122 → onnxscript-0.1.0.dev20231124}/onnxscript/values.py +0 -0
- {onnxscript-0.1.0.dev20231122 → onnxscript-0.1.0.dev20231124}/onnxscript/values_test.py +0 -0
- {onnxscript-0.1.0.dev20231122 → onnxscript-0.1.0.dev20231124}/onnxscript.egg-info/SOURCES.txt +0 -0
- {onnxscript-0.1.0.dev20231122 → onnxscript-0.1.0.dev20231124}/onnxscript.egg-info/dependency_links.txt +0 -0
- {onnxscript-0.1.0.dev20231122 → onnxscript-0.1.0.dev20231124}/onnxscript.egg-info/requires.txt +0 -0
- {onnxscript-0.1.0.dev20231122 → onnxscript-0.1.0.dev20231124}/onnxscript.egg-info/top_level.txt +0 -0
- {onnxscript-0.1.0.dev20231122 → onnxscript-0.1.0.dev20231124}/setup.cfg +0 -0
|
@@ -1,7 +1,8 @@
|
|
|
1
1
|
Metadata-Version: 2.1
|
|
2
2
|
Name: onnxscript
|
|
3
|
-
Version: 0.1.0.
|
|
3
|
+
Version: 0.1.0.dev20231124
|
|
4
4
|
Summary: Naturally author ONNX functions and models using a subset of Python
|
|
5
|
+
Home-page: https://onnxscript.ai/
|
|
5
6
|
Author-email: Microsoft Corporation <onnx@microsoft.com>
|
|
6
7
|
License: MIT License
|
|
7
8
|
|
|
@@ -25,7 +26,6 @@ License: MIT License
|
|
|
25
26
|
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
26
27
|
SOFTWARE.
|
|
27
28
|
|
|
28
|
-
Project-URL: Repository, https://github.com/microsoft/onnxscript
|
|
29
29
|
Classifier: Development Status :: 4 - Beta
|
|
30
30
|
Classifier: Environment :: Console
|
|
31
31
|
Classifier: Intended Audience :: Developers
|
|
@@ -90,11 +90,14 @@ def _rename_intermediate_value(name: str) -> str:
|
|
|
90
90
|
class TorchScriptTensor(onnxscript_tensor.Tensor):
|
|
91
91
|
"""A onnxscript tensor that wraps a torchscript Value."""
|
|
92
92
|
|
|
93
|
-
def __init__(
|
|
93
|
+
def __init__(
|
|
94
|
+
self,
|
|
95
|
+
value: torch.Value,
|
|
96
|
+
):
|
|
94
97
|
super().__init__(None)
|
|
95
98
|
self._torch_value: torch.Value = value
|
|
96
99
|
self._concrete_value: Optional[np.ndarray] = None
|
|
97
|
-
self._shape: Optional[Tuple[int | None, ...]] = None
|
|
100
|
+
self._shape: Optional[Tuple[int | str | None, ...]] = None
|
|
98
101
|
self._torch_dtype: Optional[torch.dtype] = None
|
|
99
102
|
self._name: Optional[str] = None
|
|
100
103
|
self._is_complex: bool = False
|
|
@@ -125,6 +128,9 @@ class TorchScriptTensor(onnxscript_tensor.Tensor):
|
|
|
125
128
|
|
|
126
129
|
@property # type: ignore[override]
|
|
127
130
|
def rank(self) -> int | None:
|
|
131
|
+
if self._shape is not None:
|
|
132
|
+
return len(self._shape)
|
|
133
|
+
|
|
128
134
|
value_type = self._torch_value.type()
|
|
129
135
|
if value_type is None:
|
|
130
136
|
return None
|
|
@@ -132,7 +138,7 @@ class TorchScriptTensor(onnxscript_tensor.Tensor):
|
|
|
132
138
|
return value_type.dim()
|
|
133
139
|
|
|
134
140
|
@property # type: ignore[override]
|
|
135
|
-
def shape(self) -> Tuple[int | None, ...] | None:
|
|
141
|
+
def shape(self) -> Tuple[int | str | None, ...] | None:
|
|
136
142
|
if self._shape is not None:
|
|
137
143
|
return self._shape
|
|
138
144
|
|
|
@@ -149,9 +155,17 @@ class TorchScriptTensor(onnxscript_tensor.Tensor):
|
|
|
149
155
|
return tuple(shape)
|
|
150
156
|
|
|
151
157
|
@shape.setter
|
|
152
|
-
def shape(self, shape: Tuple[int | None, ...]):
|
|
153
|
-
|
|
154
|
-
|
|
158
|
+
def shape(self, shape: Union[torch.Size, Tuple[int | str | None, ...]]):
|
|
159
|
+
# Normalize torch symbolic dimension size to str.
|
|
160
|
+
torch_sym_types = (torch.SymInt, torch.SymFloat, torch.SymBool)
|
|
161
|
+
self._shape = tuple(
|
|
162
|
+
str(dim.node) if isinstance(dim, torch_sym_types) else dim # type: ignore[union-attr]
|
|
163
|
+
for dim in shape
|
|
164
|
+
)
|
|
165
|
+
# jit api does not support assigning symbolic shapes,
|
|
166
|
+
# hence symbols are replaced as None.
|
|
167
|
+
jit_shape = tuple(dim if isinstance(dim, int) else None for dim in shape)
|
|
168
|
+
self._torch_value.setType(self._torch_value.type().with_sizes(list(jit_shape)))
|
|
155
169
|
|
|
156
170
|
@property # type: ignore[override]
|
|
157
171
|
def dtype(self) -> torch.dtype | None:
|
|
@@ -195,6 +209,15 @@ class TorchScriptTensor(onnxscript_tensor.Tensor):
|
|
|
195
209
|
"""The symbolic Value in torch.Graph."""
|
|
196
210
|
return self._torch_value
|
|
197
211
|
|
|
212
|
+
def value_info(self) -> Optional[onnx.ValueInfoProto]:
|
|
213
|
+
try:
|
|
214
|
+
dtype = self.onnx_dtype.value
|
|
215
|
+
except torch.onnx.errors.OnnxExporterError:
|
|
216
|
+
return None
|
|
217
|
+
if dtype == onnx.TensorProto.UNDEFINED:
|
|
218
|
+
return None
|
|
219
|
+
return onnx.helper.make_tensor_value_info(self.name, dtype, self.shape)
|
|
220
|
+
|
|
198
221
|
|
|
199
222
|
@runtime_typing.checked
|
|
200
223
|
def _unwrap_tensor_to_torch_value(
|
|
@@ -223,7 +246,12 @@ def _unwrap_tensor_to_torch_value(
|
|
|
223
246
|
|
|
224
247
|
@runtime_typing.checked
|
|
225
248
|
def _wrap_torch_value_to_tensor(
|
|
226
|
-
value: Union[
|
|
249
|
+
value: Union[
|
|
250
|
+
torch.Value, Mapping[str, ValidTorchValueType], Sequence[ValidTorchValueType]
|
|
251
|
+
],
|
|
252
|
+
*,
|
|
253
|
+
shape: Optional[Union[torch.Size, Tuple[Union[int, str, None], ...]]] = None,
|
|
254
|
+
dtype: Optional[torch.dtype] = None,
|
|
227
255
|
) -> Union[
|
|
228
256
|
ValidArgumentType,
|
|
229
257
|
Dict[str, ValidArgumentType],
|
|
@@ -232,7 +260,12 @@ def _wrap_torch_value_to_tensor(
|
|
|
232
260
|
]:
|
|
233
261
|
"""Wrap torch.Value to TorchScriptTensor."""
|
|
234
262
|
if isinstance(value, torch.Value):
|
|
235
|
-
|
|
263
|
+
tensor = TorchScriptTensor(value)
|
|
264
|
+
if shape is not None:
|
|
265
|
+
tensor.shape = shape
|
|
266
|
+
if dtype is not None:
|
|
267
|
+
tensor.dtype = dtype
|
|
268
|
+
return tensor
|
|
236
269
|
if isinstance(value, dict):
|
|
237
270
|
return {k: _wrap_torch_value_to_tensor(v) for k, v in value.items()} # type: ignore[misc,return-value]
|
|
238
271
|
if isinstance(value, list):
|
|
@@ -399,6 +432,16 @@ class TorchScriptGraph:
|
|
|
399
432
|
self._parent_torch_script_graph = parent_torch_script_graph
|
|
400
433
|
# Domain name of the graph. None if this is the top level graph.
|
|
401
434
|
self._domain_name: Optional[str] = domain_name
|
|
435
|
+
# Mapping from `torch.Value` to `TorchScriptTensor`.
|
|
436
|
+
# Because `torch.Value` does not provide API to set and retrieve symbolic shapes,
|
|
437
|
+
# and because `TorchScriptTensor` is not accessible through the `torch.Graph` graph,
|
|
438
|
+
# this mapping is used to keep track of the `TorchScriptTensor` associated with
|
|
439
|
+
# `torch.Value`.
|
|
440
|
+
# `TorchScriptTensor` records dtype and symbolic shapes.
|
|
441
|
+
# This info is later serialized as `ValueInfoProto` inside ONNX, to
|
|
442
|
+
# provide shape and dtype information for nodes within nested function calls.
|
|
443
|
+
# https://github.com/onnx/onnx/issues/5487
|
|
444
|
+
self._value_to_tensor: Dict[torch.Value, TorchScriptTensor] = {}
|
|
402
445
|
|
|
403
446
|
if self._domain_name is None and self._parent_torch_script_graph is not None:
|
|
404
447
|
raise RuntimeError(
|
|
@@ -441,7 +484,7 @@ class TorchScriptGraph:
|
|
|
441
484
|
def add_input(
|
|
442
485
|
self,
|
|
443
486
|
input_name: Optional[str],
|
|
444
|
-
shape: Optional[Union[torch.Size,
|
|
487
|
+
shape: Optional[Union[torch.Size, Tuple[Union[int, str, None], ...]]] = None,
|
|
445
488
|
dtype: Optional[torch.dtype] = None,
|
|
446
489
|
) -> TorchScriptTensor:
|
|
447
490
|
if input_name is None:
|
|
@@ -462,7 +505,11 @@ class TorchScriptGraph:
|
|
|
462
505
|
[dim if isinstance(dim, int) else None for dim in shape] # type: ignore[union-attr]
|
|
463
506
|
)
|
|
464
507
|
)
|
|
465
|
-
tensor_value = _wrap_torch_value_to_tensor(torch_value)
|
|
508
|
+
tensor_value = _wrap_torch_value_to_tensor(torch_value, shape=shape, dtype=dtype)
|
|
509
|
+
if isinstance(tensor_value, TorchScriptTensor):
|
|
510
|
+
# NOTE: Only track value that maps to tensor.
|
|
511
|
+
# Value that maps to Sequence/Dict of tensors is not tracked.
|
|
512
|
+
self._value_to_tensor[torch_value] = tensor_value
|
|
466
513
|
return tensor_value # type: ignore[return-value]
|
|
467
514
|
|
|
468
515
|
@runtime_typing.checked
|
|
@@ -486,16 +533,16 @@ class TorchScriptGraph:
|
|
|
486
533
|
self._initializers_inputs_from_parent[
|
|
487
534
|
name
|
|
488
535
|
] = self._parent_torch_script_graph.add_initializer(name, value)
|
|
489
|
-
|
|
490
|
-
|
|
491
|
-
tensor_value = _wrap_torch_value_to_tensor(torch_value)
|
|
492
|
-
self._initializers_inputs[name] = tensor_value # type: ignore[assignment]
|
|
493
|
-
return tensor_value # type: ignore[return-value]
|
|
536
|
+
else:
|
|
537
|
+
self._initializers[name] = value
|
|
494
538
|
|
|
495
|
-
self._initializers[name] = value
|
|
496
539
|
torch_value = self._torch_graph.addInput(name)
|
|
497
540
|
torch_value.setType(torch.TensorType.create_from_tensor(value))
|
|
498
|
-
tensor_value = _wrap_torch_value_to_tensor(
|
|
541
|
+
tensor_value = _wrap_torch_value_to_tensor(
|
|
542
|
+
torch_value, shape=value.shape, dtype=value.dtype
|
|
543
|
+
)
|
|
544
|
+
if isinstance(tensor_value, TorchScriptTensor):
|
|
545
|
+
self._value_to_tensor[torch_value] = tensor_value
|
|
499
546
|
self._initializers_inputs[name] = tensor_value # type: ignore[assignment]
|
|
500
547
|
return tensor_value # type: ignore[return-value]
|
|
501
548
|
|
|
@@ -595,11 +642,16 @@ class TorchScriptGraph:
|
|
|
595
642
|
n_outputs=n_outputs,
|
|
596
643
|
)
|
|
597
644
|
assert result, "Expected at least one output from ONNX op call."
|
|
645
|
+
# NOTE: TorchScriptTensor is created here, however neither dtype nor shape is
|
|
646
|
+
# set. It is expected that exporter will modify the tensor being returned and
|
|
647
|
+
# set these info.
|
|
598
648
|
if len(result) == 1:
|
|
599
649
|
tensor = TorchScriptTensor(result[0])
|
|
600
650
|
tensor.name = _rename_intermediate_value(tensor.name)
|
|
651
|
+
self._value_to_tensor[result[0]] = tensor
|
|
601
652
|
return tensor
|
|
602
653
|
tensors = tuple(TorchScriptTensor(v) for v in result)
|
|
654
|
+
self._value_to_tensor.update(dict(zip(result, tensors)))
|
|
603
655
|
for tensor in tensors:
|
|
604
656
|
tensor.name = _rename_intermediate_value(tensor.name)
|
|
605
657
|
return tensors
|
|
@@ -634,6 +686,54 @@ class TorchScriptGraph:
|
|
|
634
686
|
function_proto_dict[name_domain] = function.to_function_proto()
|
|
635
687
|
return function_proto_dict
|
|
636
688
|
|
|
689
|
+
@runtime_typing.checked
|
|
690
|
+
def _override_with_symbolic_value_info_proto(self, onnx_model: onnx.ModelProto):
|
|
691
|
+
existing_value_info = {info.name: info for info in onnx_model.graph.value_info}
|
|
692
|
+
|
|
693
|
+
# Override value_info for top level graph inputs.
|
|
694
|
+
for input in self.torch_graph.inputs():
|
|
695
|
+
if input not in self._value_to_tensor:
|
|
696
|
+
raise RuntimeError(f"Input '{input.debugName()}' has no type.")
|
|
697
|
+
tensor = self._value_to_tensor[input]
|
|
698
|
+
if (value_info := tensor.value_info()) is None:
|
|
699
|
+
continue
|
|
700
|
+
for i, input_info in enumerate(onnx_model.graph.input):
|
|
701
|
+
if input_info.name == input.debugName():
|
|
702
|
+
onnx_model.graph.input.insert(i, value_info)
|
|
703
|
+
onnx_model.graph.input.remove(input_info)
|
|
704
|
+
break
|
|
705
|
+
|
|
706
|
+
# Override value_info for top level graph outputs.
|
|
707
|
+
for output in self.torch_graph.outputs():
|
|
708
|
+
if output not in self._value_to_tensor:
|
|
709
|
+
raise RuntimeError(f"Output '{output.debugName()}' has no type.")
|
|
710
|
+
tensor = self._value_to_tensor[output]
|
|
711
|
+
if (value_info := tensor.value_info()) is None:
|
|
712
|
+
continue
|
|
713
|
+
for i, output_info in enumerate(onnx_model.graph.output):
|
|
714
|
+
if output_info.name == output.debugName():
|
|
715
|
+
onnx_model.graph.output.insert(i, value_info)
|
|
716
|
+
onnx_model.graph.output.remove(output_info)
|
|
717
|
+
break
|
|
718
|
+
|
|
719
|
+
# Remove existing static/incomplete value info.
|
|
720
|
+
del onnx_model.graph.value_info[:]
|
|
721
|
+
|
|
722
|
+
# Insert value info for nodes within nested function calls.
|
|
723
|
+
# NOTE: This is an experimental feature, since in official ONNX spec, nodes
|
|
724
|
+
# within FunctionProto to have value info. https://github.com/onnx/onnx/issues/5487
|
|
725
|
+
# The names for value info are generated uniquely to be retrievable based on
|
|
726
|
+
# the call site and call stack.
|
|
727
|
+
# The naming strategy is subject to change. Since all local functions representing
|
|
728
|
+
# nn.Modules exported by dynamo exporter have unique call sites, their function
|
|
729
|
+
# op_type name can serve to form the unique identifier for value info.
|
|
730
|
+
function_value_infos = self.generate_function_value_info_proto()
|
|
731
|
+
# Override existing value info for nodes in top level graph.
|
|
732
|
+
existing_value_info.update(function_value_infos)
|
|
733
|
+
onnx_model.graph.value_info.extend(existing_value_info.values())
|
|
734
|
+
|
|
735
|
+
return onnx_model
|
|
736
|
+
|
|
637
737
|
@runtime_typing.checked
|
|
638
738
|
def add_op_call(
|
|
639
739
|
self,
|
|
@@ -692,6 +792,39 @@ class TorchScriptGraph:
|
|
|
692
792
|
n_outputs=sub_torch_script_graph.num_outputs,
|
|
693
793
|
)
|
|
694
794
|
|
|
795
|
+
@runtime_typing.checked
|
|
796
|
+
def generate_function_value_info_proto(
|
|
797
|
+
self, prefix: str = ""
|
|
798
|
+
) -> Mapping[str, onnx.ValueInfoProto]:
|
|
799
|
+
"""Unique naming strategies
|
|
800
|
+
|
|
801
|
+
{function1_op_type}/{function2_op_type}/.../{value_name}
|
|
802
|
+
|
|
803
|
+
As long as function op_type has unique call site, this is safe.
|
|
804
|
+
|
|
805
|
+
Preferably, the following is better
|
|
806
|
+
|
|
807
|
+
{node1_name}/{node2_name}/.../{value_name}
|
|
808
|
+
|
|
809
|
+
However, node name is an optional field generated on the fly during torchscript
|
|
810
|
+
graph serialization to onnx model proto. Such info is not retrievable at this point.
|
|
811
|
+
"""
|
|
812
|
+
named_value_info = {}
|
|
813
|
+
for torch_value, tensor in self._value_to_tensor.items():
|
|
814
|
+
name = torch_value.debugName()
|
|
815
|
+
if (value_info := tensor.value_info()) is None:
|
|
816
|
+
continue
|
|
817
|
+
if prefix:
|
|
818
|
+
name = f"{prefix}/{name}"
|
|
819
|
+
named_value_info[name] = value_info
|
|
820
|
+
for name, sub_graph in self._sub_torch_script_graphs.items():
|
|
821
|
+
named_value_info.update(
|
|
822
|
+
sub_graph.generate_function_value_info_proto(
|
|
823
|
+
f"{prefix}/{name}" if prefix else name
|
|
824
|
+
)
|
|
825
|
+
)
|
|
826
|
+
return named_value_info
|
|
827
|
+
|
|
695
828
|
@runtime_typing.checked
|
|
696
829
|
def to_function_proto(self, opset_version: int, function_name: str) -> onnx.FunctionProto:
|
|
697
830
|
assert len(self.initializers) == 0, "Model local functions cannot have initializers."
|
|
@@ -801,6 +934,9 @@ class TorchScriptGraph:
|
|
|
801
934
|
onnx_model.functions.extend(function_proto_dict.values())
|
|
802
935
|
onnx_model.functions.extend(_shared_functions())
|
|
803
936
|
|
|
937
|
+
# Override value_infos with symbolic shapes.
|
|
938
|
+
onnx_model = self._override_with_symbolic_value_info_proto(onnx_model)
|
|
939
|
+
|
|
804
940
|
# `_export_onnx` only exports opset_imports that is visible to it. It does not
|
|
805
941
|
# export opset_imports for nested functions, since it does not have access to
|
|
806
942
|
# them. We manually add them back and merge with existing opset_imports in the
|
|
@@ -365,7 +365,9 @@ def aten_all_dims(self: TTensor, dim: Sequence[int] = (), keepdim: bool = False)
|
|
|
365
365
|
if not dim:
|
|
366
366
|
return aten_all_dims_no_dim(self, keepdim)
|
|
367
367
|
for d in dim:
|
|
368
|
-
self = aten_all_dim(self, d, keepdim)
|
|
368
|
+
self = aten_all_dim(self, d, keepdim=True)
|
|
369
|
+
if not keepdim:
|
|
370
|
+
self = op.Squeeze(self, list(dim))
|
|
369
371
|
return self
|
|
370
372
|
|
|
371
373
|
|
|
@@ -488,7 +490,9 @@ def aten_any_dims(self: TTensor, dim: Sequence[int] = (), keepdim: bool = False)
|
|
|
488
490
|
if not dim:
|
|
489
491
|
return aten_any_dims_no_dim(self, keepdim)
|
|
490
492
|
for d in dim:
|
|
491
|
-
self = aten_any_dim(self, d, keepdim)
|
|
493
|
+
self = aten_any_dim(self, d, keepdim=True)
|
|
494
|
+
if not keepdim:
|
|
495
|
+
self = op.Squeeze(self, list(dim))
|
|
492
496
|
return self
|
|
493
497
|
|
|
494
498
|
|
|
@@ -7339,17 +7343,16 @@ def aten_smm(self: TensorType, mat2: TensorType) -> TensorType:
|
|
|
7339
7343
|
raise NotImplementedError()
|
|
7340
7344
|
|
|
7341
7345
|
|
|
7342
|
-
@torch_op(("aten::softmax", "aten::softmax.int", "aten::special_softmax"))
|
|
7343
|
-
def aten_softmax(
|
|
7344
|
-
self: TFloatOrBFloat16, dim: int, dtype: int = FLOAT.dtype
|
|
7345
|
-
) -> TFloatOrBFloat16:
|
|
7346
|
+
@torch_op(("aten::softmax", "aten::softmax.int", "aten::special_softmax"), trace_only=True)
|
|
7347
|
+
def aten_softmax(self: TFloatOrBFloat16, dim: int, dtype: int = -1) -> TFloatOrBFloat16:
|
|
7346
7348
|
"""softmax(Tensor self, int dim, ScalarType? dtype=None) -> Tensor"""
|
|
7347
7349
|
|
|
7348
7350
|
self_is_scalar = IsScalar(self)
|
|
7349
7351
|
if self_is_scalar:
|
|
7350
7352
|
self = op.Unsqueeze(self, op.Constant(value_ints=[0]))
|
|
7351
7353
|
result = op.Softmax(self, axis=dim)
|
|
7352
|
-
|
|
7354
|
+
if dtype != -1:
|
|
7355
|
+
result = op.Cast(result, to=dtype)
|
|
7353
7356
|
if self_is_scalar:
|
|
7354
7357
|
# Convert to scalar when input is scalar
|
|
7355
7358
|
result = op.Squeeze(result)
|
|
@@ -13,7 +13,6 @@ from __future__ import annotations
|
|
|
13
13
|
|
|
14
14
|
from typing import Optional, Sequence
|
|
15
15
|
|
|
16
|
-
from onnxscript import FLOAT
|
|
17
16
|
from onnxscript.function_libs.torch_lib.ops import common as common_ops
|
|
18
17
|
from onnxscript.function_libs.torch_lib.registration import torch_op
|
|
19
18
|
from onnxscript.function_libs.torch_lib.tensor_typing import TFloatOrBFloat16
|
|
@@ -212,9 +211,9 @@ def aten_special_log_ndtr(self: TensorType) -> TensorType:
|
|
|
212
211
|
raise NotImplementedError()
|
|
213
212
|
|
|
214
213
|
|
|
215
|
-
@torch_op(("aten::log_softmax", "aten::special_log_softmax"))
|
|
214
|
+
@torch_op(("aten::log_softmax", "aten::special_log_softmax"), trace_only=True)
|
|
216
215
|
def aten_special_log_softmax(
|
|
217
|
-
self: TFloatOrBFloat16, dim: int, dtype: int =
|
|
216
|
+
self: TFloatOrBFloat16, dim: int, dtype: int = -1
|
|
218
217
|
) -> TFloatOrBFloat16:
|
|
219
218
|
"""special_log_softmax(Tensor self, int dim, *, ScalarType? dtype=None) -> Tensor"""
|
|
220
219
|
|
|
@@ -222,7 +221,8 @@ def aten_special_log_softmax(
|
|
|
222
221
|
if self_is_scalar:
|
|
223
222
|
self = op.Unsqueeze(self, op.Constant(value_ints=[0]))
|
|
224
223
|
result = op.LogSoftmax(self, axis=dim)
|
|
225
|
-
|
|
224
|
+
if dtype != -1:
|
|
225
|
+
result = op.Cast(result, to=dtype)
|
|
226
226
|
if self_is_scalar: # squeeze to scalar due to input is scalar
|
|
227
227
|
result = op.Squeeze(result)
|
|
228
228
|
return result
|
|
@@ -161,6 +161,10 @@ def add_decorate_info(
|
|
|
161
161
|
ops_mapping = {(info.name, info.variant_test_name): info for info in all_opinfos}
|
|
162
162
|
for decorate_meta in skip_or_xfails:
|
|
163
163
|
opinfo = ops_mapping.get((decorate_meta.op_name, decorate_meta.variant_name))
|
|
164
|
+
if opinfo is None and not decorate_meta.enabled_if:
|
|
165
|
+
# If the OpInfo doesn't exist and it is not enabled, we skip the OpInfo
|
|
166
|
+
# because it could be an OpInfo that is in torch-nightly but not older versions.
|
|
167
|
+
continue
|
|
164
168
|
assert (
|
|
165
169
|
opinfo is not None
|
|
166
170
|
), f"Couldn't find OpInfo for {decorate_meta}. Did you need to specify variant_name?"
|
|
@@ -471,21 +471,41 @@ TESTED_TORCHLIB_OPS: tuple[TorchLibOpInfo, ...] = (
|
|
|
471
471
|
),
|
|
472
472
|
TorchLibOpInfo("ops.aten._log_softmax", core_ops.aten__log_softmax),
|
|
473
473
|
TorchLibOpInfo(
|
|
474
|
-
"ops.aten._log_softmax_half",
|
|
475
|
-
|
|
474
|
+
"ops.aten._log_softmax_half",
|
|
475
|
+
core_ops.aten__log_softmax_half,
|
|
476
|
+
trace_only=True,
|
|
477
|
+
tolerance={torch.float16: (1e-3, 1e-3)},
|
|
478
|
+
)
|
|
479
|
+
.xfail(
|
|
476
480
|
reason="PyTorch does not implement _log_softmax for float16 on CPU",
|
|
477
481
|
dtypes=(torch.float16,),
|
|
482
|
+
enabled_if=version_utils.torch_older_than("2.2"),
|
|
483
|
+
)
|
|
484
|
+
.xfail(
|
|
485
|
+
dtypes=(torch.float16,),
|
|
486
|
+
reason="fixme: ORT failed. https://github.com/microsoft/onnxruntime/issues/16438",
|
|
487
|
+
test_class_name="TestOutputConsistencyFullGraph",
|
|
478
488
|
),
|
|
479
489
|
TorchLibOpInfo("ops.aten._softmax", core_ops.aten__softmax, trace_only=True),
|
|
480
|
-
TorchLibOpInfo(
|
|
481
|
-
|
|
482
|
-
).xfail(
|
|
490
|
+
TorchLibOpInfo("ops.aten._softmax_half", core_ops.aten__softmax_half, trace_only=True)
|
|
491
|
+
.xfail(
|
|
483
492
|
reason="PyTorch does not implement _softmax for float16 on CPU",
|
|
484
493
|
dtypes=(torch.float16,),
|
|
494
|
+
enabled_if=version_utils.torch_older_than("2.2"),
|
|
495
|
+
)
|
|
496
|
+
.xfail(
|
|
497
|
+
dtypes=(torch.float16,),
|
|
498
|
+
reason="fixme: ORT failed. https://github.com/microsoft/onnxruntime/issues/16438",
|
|
499
|
+
test_class_name="TestOutputConsistencyFullGraph",
|
|
500
|
+
),
|
|
501
|
+
TorchLibOpInfo("all_dim", core_ops.aten_all_dim).skip(
|
|
502
|
+
matcher=lambda sample: not (len(sample.kwargs) > 0)
|
|
503
|
+
or isinstance(sample.kwargs.get("dim"), tuple),
|
|
504
|
+
reason="this Aten overload only support one tensor as input and {dim,keepdim} as kwargs by design. dim must be an integer",
|
|
485
505
|
),
|
|
486
|
-
TorchLibOpInfo("
|
|
487
|
-
matcher=lambda sample: not (
|
|
488
|
-
reason="this
|
|
506
|
+
TorchLibOpInfo("all_dims", core_ops.aten_all_dims, trace_only=True).skip(
|
|
507
|
+
matcher=lambda sample: not isinstance(sample.kwargs.get("dim"), tuple),
|
|
508
|
+
reason="this overload requires dim to be a tuple",
|
|
489
509
|
),
|
|
490
510
|
TorchLibOpInfo("allclose", core_ops.aten_allclose),
|
|
491
511
|
TorchLibOpInfo(
|
|
@@ -501,7 +521,11 @@ TESTED_TORCHLIB_OPS: tuple[TorchLibOpInfo, ...] = (
|
|
|
501
521
|
TorchLibOpInfo("acosh", core_ops.aten_acosh),
|
|
502
522
|
TorchLibOpInfo("add", core_ops.aten_add, tolerance={torch.float16: (1e-3, 1e-3)}),
|
|
503
523
|
TorchLibOpInfo("add", core_ops.aten_add_complex, complex=True, trace_only=True),
|
|
504
|
-
TorchLibOpInfo(
|
|
524
|
+
TorchLibOpInfo(
|
|
525
|
+
"addbmm",
|
|
526
|
+
core_ops.aten_addbmm,
|
|
527
|
+
tolerance={torch.float32: (2e-5, 2e-5), torch.float16: (2e-1, 2e-2)},
|
|
528
|
+
),
|
|
505
529
|
TorchLibOpInfo("addcdiv", core_ops.aten_addcdiv),
|
|
506
530
|
TorchLibOpInfo("addcmul", core_ops.aten_addcmul, tolerance={torch.float16: (4e-3, 3e-3)}),
|
|
507
531
|
TorchLibOpInfo("addmm", core_ops.aten_addmm)
|
|
@@ -522,7 +546,7 @@ TESTED_TORCHLIB_OPS: tuple[TorchLibOpInfo, ...] = (
|
|
|
522
546
|
dtypes=(torch.int16, torch.int32, torch.int64),
|
|
523
547
|
reason="ONNX Runtime does not support int inputs to Gemm",
|
|
524
548
|
),
|
|
525
|
-
TorchLibOpInfo("addmv", core_ops.aten_addmv),
|
|
549
|
+
TorchLibOpInfo("addmv", core_ops.aten_addmv, tolerance={torch.float16: (1e-3, 1e-2)}),
|
|
526
550
|
TorchLibOpInfo(
|
|
527
551
|
"addr",
|
|
528
552
|
core_ops.aten_addr,
|
|
@@ -557,8 +581,13 @@ TESTED_TORCHLIB_OPS: tuple[TorchLibOpInfo, ...] = (
|
|
|
557
581
|
"any_dim",
|
|
558
582
|
core_ops.aten_any_dim,
|
|
559
583
|
).skip(
|
|
560
|
-
matcher=lambda sample: not (len(sample.kwargs) > 0)
|
|
561
|
-
|
|
584
|
+
matcher=lambda sample: not (len(sample.kwargs) > 0)
|
|
585
|
+
or isinstance(sample.kwargs.get("dim"), tuple),
|
|
586
|
+
reason="this Aten overload only support one tensor as input and {dim,keepdim} as kwargs by design. dim must be an integer",
|
|
587
|
+
),
|
|
588
|
+
TorchLibOpInfo("any_dims", core_ops.aten_any_dims, trace_only=True).skip(
|
|
589
|
+
matcher=lambda sample: not isinstance(sample.kwargs.get("dim"), tuple),
|
|
590
|
+
reason="this overload requires dim to be a tuple",
|
|
562
591
|
),
|
|
563
592
|
TorchLibOpInfo("asin", core_ops.aten_asin),
|
|
564
593
|
TorchLibOpInfo("asinh", core_ops.aten_asinh),
|
|
@@ -640,7 +669,7 @@ TESTED_TORCHLIB_OPS: tuple[TorchLibOpInfo, ...] = (
|
|
|
640
669
|
"https://github.com/microsoft/onnxscript/issues/1007"
|
|
641
670
|
),
|
|
642
671
|
),
|
|
643
|
-
TorchLibOpInfo("baddbmm", core_ops.aten_baddbmm),
|
|
672
|
+
TorchLibOpInfo("baddbmm", core_ops.aten_baddbmm, tolerance={torch.float16: (1e-3, 1e-2)}),
|
|
644
673
|
TorchLibOpInfo("bernoulli", core_ops.aten_bernoulli, nondeterministic=True),
|
|
645
674
|
TorchLibOpInfo(
|
|
646
675
|
# This string is a unique ID. In extra_opinfo.py, we
|
|
@@ -845,6 +874,12 @@ TESTED_TORCHLIB_OPS: tuple[TorchLibOpInfo, ...] = (
|
|
|
845
874
|
dtypes=(torch.int64, torch.int32),
|
|
846
875
|
reason="fixme: Results do not match with PyTorch. https://github.com/microsoft/onnxscript/issues/854",
|
|
847
876
|
)
|
|
877
|
+
.xfail(
|
|
878
|
+
variant_name="tensor_overload",
|
|
879
|
+
dtypes=(torch.int64, torch.int32, torch.float16),
|
|
880
|
+
reason="fixme: Results do not match with PyTorch. https://github.com/microsoft/onnxscript/issues/854",
|
|
881
|
+
enabled_if=not version_utils.torch_older_than("2.2"),
|
|
882
|
+
)
|
|
848
883
|
.xfail(
|
|
849
884
|
dtypes=(torch.float16,),
|
|
850
885
|
reason="op 'Range' doesn't support float16.",
|
|
@@ -861,17 +896,35 @@ TESTED_TORCHLIB_OPS: tuple[TorchLibOpInfo, ...] = (
|
|
|
861
896
|
TorchLibOpInfo(
|
|
862
897
|
"log_softmax",
|
|
863
898
|
special_ops.aten_special_log_softmax,
|
|
899
|
+
trace_only=True,
|
|
864
900
|
tolerance={torch.float32: (3.7e-5, 1.8e-4), torch.float16: (4e-4, 6e-3)},
|
|
865
|
-
)
|
|
901
|
+
)
|
|
902
|
+
.xfail(
|
|
903
|
+
dtypes=(torch.float16,),
|
|
904
|
+
reason="fixme: ORT failed. https://github.com/microsoft/onnxruntime/issues/16438",
|
|
905
|
+
test_class_name="TestOutputConsistencyFullGraph",
|
|
906
|
+
)
|
|
907
|
+
.xfail(
|
|
866
908
|
variant_name="with_dtype",
|
|
867
909
|
dtypes=(torch.float16,),
|
|
868
910
|
reason="fixme: ORT failed. https://github.com/microsoft/onnxruntime/issues/16438",
|
|
869
911
|
test_class_name="TestOutputConsistencyFullGraph",
|
|
912
|
+
)
|
|
913
|
+
.skip(
|
|
914
|
+
matcher=lambda sample: len(sample.input.shape) == 0,
|
|
915
|
+
reason="fixme: LogSoftMax does not support empty tensor as input",
|
|
916
|
+
)
|
|
917
|
+
.skip(
|
|
918
|
+
variant_name="with_dtype",
|
|
919
|
+
matcher=lambda sample: len(sample.input.shape) == 0,
|
|
920
|
+
reason="fixme: LogSoftMax does not support empty tensor as input",
|
|
870
921
|
),
|
|
871
922
|
TorchLibOpInfo("log2", core_ops.aten_log2),
|
|
872
923
|
TorchLibOpInfo("logaddexp", core_ops.aten_logaddexp),
|
|
873
924
|
TorchLibOpInfo("logaddexp2", core_ops.aten_logaddexp2),
|
|
874
|
-
TorchLibOpInfo(
|
|
925
|
+
TorchLibOpInfo(
|
|
926
|
+
"logcumsumexp", core_ops.aten_logcumsumexp, tolerance={torch.float16: (1e-2, 1e-1)}
|
|
927
|
+
),
|
|
875
928
|
TorchLibOpInfo("logdet", core_ops.aten_logdet),
|
|
876
929
|
TorchLibOpInfo("logsumexp", core_ops.aten_logsumexp),
|
|
877
930
|
TorchLibOpInfo("lt", core_ops.aten_lt),
|
|
@@ -884,7 +937,7 @@ TESTED_TORCHLIB_OPS: tuple[TorchLibOpInfo, ...] = (
|
|
|
884
937
|
"matmul",
|
|
885
938
|
core_ops.aten_matmul,
|
|
886
939
|
# Windows requires a more relaxed tolerance
|
|
887
|
-
tolerance={torch.float32: (2e-5, 2e-5)},
|
|
940
|
+
tolerance={torch.float32: (2e-5, 2e-5), torch.float16: (2e-3, 2e-2)},
|
|
888
941
|
).skip(
|
|
889
942
|
matcher=lambda sample: torch.numel(sample.input) == 0,
|
|
890
943
|
reason="values of matmul of [m, 0] and [0, n] matrices are undefined",
|
|
@@ -1339,12 +1392,28 @@ TESTED_TORCHLIB_OPS: tuple[TorchLibOpInfo, ...] = (
|
|
|
1339
1392
|
TorchLibOpInfo(
|
|
1340
1393
|
"softmax",
|
|
1341
1394
|
core_ops.aten_softmax,
|
|
1395
|
+
trace_only=True,
|
|
1342
1396
|
tolerance={torch.float32: (3.7e-5, 1.8e-4), torch.float16: (3e-4, 4e-4)},
|
|
1343
|
-
)
|
|
1397
|
+
)
|
|
1398
|
+
.xfail(
|
|
1399
|
+
dtypes=(torch.float16,),
|
|
1400
|
+
reason="fixme: ORT failed. https://github.com/microsoft/onnxruntime/issues/16438",
|
|
1401
|
+
test_class_name="TestOutputConsistencyFullGraph",
|
|
1402
|
+
)
|
|
1403
|
+
.xfail(
|
|
1344
1404
|
variant_name="with_dtype",
|
|
1345
1405
|
dtypes=(torch.float16,),
|
|
1346
1406
|
reason="fixme: ORT failed. https://github.com/microsoft/onnxruntime/issues/16438",
|
|
1347
1407
|
test_class_name="TestOutputConsistencyFullGraph",
|
|
1408
|
+
)
|
|
1409
|
+
.skip(
|
|
1410
|
+
matcher=lambda sample: len(sample.input.shape) == 0,
|
|
1411
|
+
reason="fixme: SoftMax does not support empty tensor as input",
|
|
1412
|
+
)
|
|
1413
|
+
.skip(
|
|
1414
|
+
variant_name="with_dtype",
|
|
1415
|
+
matcher=lambda sample: len(sample.input.shape) == 0,
|
|
1416
|
+
reason="fixme: SoftMax does not support empty tensor as input",
|
|
1348
1417
|
),
|
|
1349
1418
|
TorchLibOpInfo("nn.functional.softplus", nn_ops.aten_softplus).xfail(
|
|
1350
1419
|
dtypes=(torch.float16,),
|
|
@@ -1700,7 +1769,12 @@ TESTED_TORCHLIB_OPS: tuple[TorchLibOpInfo, ...] = (
|
|
|
1700
1769
|
variant_name="empty_strides",
|
|
1701
1770
|
reason="fixme: 'shape' do not match: torch.Size([2, 3, 4, 3]) != torch.Size([2, 3, 4, 2]). https://github.com/microsoft/onnxscript/issues/975",
|
|
1702
1771
|
),
|
|
1703
|
-
TorchLibOpInfo(
|
|
1772
|
+
TorchLibOpInfo(
|
|
1773
|
+
"native_batch_norm",
|
|
1774
|
+
core_ops.aten_native_batch_norm,
|
|
1775
|
+
trace_only=True,
|
|
1776
|
+
tolerance={torch.float16: (9e-3, 7e-4)},
|
|
1777
|
+
),
|
|
1704
1778
|
TorchLibOpInfo(
|
|
1705
1779
|
"ops.aten._native_batch_norm_legit", core_ops.aten_native_batch_norm, trace_only=True
|
|
1706
1780
|
),
|
|
@@ -1719,9 +1793,11 @@ TESTED_TORCHLIB_OPS: tuple[TorchLibOpInfo, ...] = (
|
|
|
1719
1793
|
"ops.aten.native_group_norm",
|
|
1720
1794
|
core_ops.aten_native_group_norm,
|
|
1721
1795
|
trace_only=True,
|
|
1796
|
+
tolerance={torch.float16: (1e-2, 7e-3)},
|
|
1722
1797
|
).xfail(
|
|
1723
1798
|
dtypes=(torch.float16,),
|
|
1724
1799
|
reason="fixme: 'GroupNormKernelImpl' not implemented for 'Half' in nightly and weekly",
|
|
1800
|
+
enabled_if=version_utils.torch_older_than("2.2"),
|
|
1725
1801
|
),
|
|
1726
1802
|
TorchLibOpInfo(
|
|
1727
1803
|
"native_layer_norm",
|
|
@@ -1809,7 +1885,11 @@ TESTED_TORCHLIB_OPS: tuple[TorchLibOpInfo, ...] = (
|
|
|
1809
1885
|
matcher=lambda sample: len(sample.args) != 1,
|
|
1810
1886
|
reason="this overload is implemented for bias=None",
|
|
1811
1887
|
),
|
|
1812
|
-
TorchLibOpInfo(
|
|
1888
|
+
TorchLibOpInfo(
|
|
1889
|
+
"nn.functional.linear_bias",
|
|
1890
|
+
nn_ops.aten_linear_bias,
|
|
1891
|
+
tolerance={torch.float16: (2e-1, 4e-4)},
|
|
1892
|
+
).skip(
|
|
1813
1893
|
# input: input, args: weight, bias; so len(args) == 2 means bias is provided
|
|
1814
1894
|
matcher=lambda sample: len(sample.args) != 2,
|
|
1815
1895
|
reason="this overload is implemented for bias!=None",
|
|
@@ -2059,8 +2139,8 @@ TESTED_TORCHLIB_OPS: tuple[TorchLibOpInfo, ...] = (
|
|
|
2059
2139
|
TorchLibOpInfo("zeros_like", core_ops.aten_zeros_like, trace_only=True),
|
|
2060
2140
|
)
|
|
2061
2141
|
|
|
2062
|
-
ops_test_common.duplicate_opinfo(OPS_DB, "all", ("all_dim",))
|
|
2063
|
-
ops_test_common.duplicate_opinfo(OPS_DB, "any", ("any_dim",))
|
|
2142
|
+
ops_test_common.duplicate_opinfo(OPS_DB, "all", ("all_dim", "all_dims"))
|
|
2143
|
+
ops_test_common.duplicate_opinfo(OPS_DB, "any", ("any_dim", "any_dims"))
|
|
2064
2144
|
ops_test_common.duplicate_opinfo(OPS_DB, "arange", ("arange_start", "arange_start_step"))
|
|
2065
2145
|
ops_test_common.duplicate_opinfo(OPS_DB, "argmax", ("argmax_dim",))
|
|
2066
2146
|
ops_test_common.duplicate_opinfo(OPS_DB, "argmin", ("argmin_dim",))
|
|
@@ -1,7 +1,8 @@
|
|
|
1
1
|
Metadata-Version: 2.1
|
|
2
2
|
Name: onnxscript
|
|
3
|
-
Version: 0.1.0.
|
|
3
|
+
Version: 0.1.0.dev20231124
|
|
4
4
|
Summary: Naturally author ONNX functions and models using a subset of Python
|
|
5
|
+
Home-page: https://onnxscript.ai/
|
|
5
6
|
Author-email: Microsoft Corporation <onnx@microsoft.com>
|
|
6
7
|
License: MIT License
|
|
7
8
|
|
|
@@ -25,7 +26,6 @@ License: MIT License
|
|
|
25
26
|
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
26
27
|
SOFTWARE.
|
|
27
28
|
|
|
28
|
-
Project-URL: Repository, https://github.com/microsoft/onnxscript
|
|
29
29
|
Classifier: Development Status :: 4 - Beta
|
|
30
30
|
Classifier: Environment :: Console
|
|
31
31
|
Classifier: Intended Audience :: Developers
|
|
@@ -7,7 +7,6 @@ name = "onnxscript"
|
|
|
7
7
|
dynamic = ["version"]
|
|
8
8
|
description = "Naturally author ONNX functions and models using a subset of Python"
|
|
9
9
|
authors = [{ name = "Microsoft Corporation", email = "onnx@microsoft.com" }]
|
|
10
|
-
urls = { "Repository" = "https://github.com/microsoft/onnxscript" }
|
|
11
10
|
readme = "README.md"
|
|
12
11
|
requires-python = ">=3.8"
|
|
13
12
|
license = { file = "LICENSE" }
|