tensorstudio 1.15.0__tar.gz → 2.0.0__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.
- {tensorstudio-1.15.0 → tensorstudio-2.0.0}/CHANGELOG.md +35 -0
- {tensorstudio-1.15.0 → tensorstudio-2.0.0}/CMakeLists.txt +1 -1
- {tensorstudio-1.15.0 → tensorstudio-2.0.0}/PKG-INFO +102 -26
- {tensorstudio-1.15.0 → tensorstudio-2.0.0}/README.md +93 -25
- tensorstudio-2.0.0/benchmarks/results.md +351 -0
- tensorstudio-2.0.0/benchmarks/results_matmul.md +49 -0
- {tensorstudio-1.15.0 → tensorstudio-2.0.0}/docs/autograd/overview.md +2 -1
- {tensorstudio-1.15.0 → tensorstudio-2.0.0}/docs/core/api-reference.md +132 -1
- tensorstudio-2.0.0/docs/ecosystem/datasets.md +49 -0
- tensorstudio-2.0.0/docs/ecosystem/distributed-and-onnx-runtime.md +39 -0
- tensorstudio-2.0.0/docs/ecosystem/model-zoo-and-language.md +48 -0
- tensorstudio-2.0.0/docs/ecosystem/quantization-and-kernels.md +48 -0
- tensorstudio-2.0.0/docs/ecosystem/sparse.md +37 -0
- {tensorstudio-1.15.0 → tensorstudio-2.0.0}/docs/index.md +29 -10
- {tensorstudio-1.15.0 → tensorstudio-2.0.0}/docs/interchange/model-formats.md +3 -1
- {tensorstudio-1.15.0 → tensorstudio-2.0.0}/docs/interchange/numpy-interop.md +13 -0
- {tensorstudio-1.15.0 → tensorstudio-2.0.0}/docs/interchange/onnx-import.md +11 -1
- {tensorstudio-1.15.0 → tensorstudio-2.0.0}/docs/interchange/onnx.md +23 -3
- {tensorstudio-1.15.0 → tensorstudio-2.0.0}/docs/interchange/serialization.md +7 -2
- {tensorstudio-1.15.0 → tensorstudio-2.0.0}/docs/release/publishing.md +4 -4
- {tensorstudio-1.15.0 → tensorstudio-2.0.0}/docs/release/versioning.md +2 -2
- {tensorstudio-1.15.0 → tensorstudio-2.0.0}/docs/roadmap/milestones.md +13 -0
- tensorstudio-2.0.0/docs/roadmap/roadmap.md +138 -0
- tensorstudio-2.0.0/examples/ecosystem_features.py +73 -0
- {tensorstudio-1.15.0 → tensorstudio-2.0.0}/include/tensorstudio/version.hpp +1 -1
- {tensorstudio-1.15.0 → tensorstudio-2.0.0}/mkdocs.yml +6 -0
- {tensorstudio-1.15.0 → tensorstudio-2.0.0}/pyproject.toml +11 -1
- {tensorstudio-1.15.0 → tensorstudio-2.0.0}/python/tensorstudio/__init__.py +78 -2
- {tensorstudio-1.15.0 → tensorstudio-2.0.0}/python/tensorstudio/_version.py +1 -1
- tensorstudio-2.0.0/python/tensorstudio/data/__init__.py +67 -0
- tensorstudio-2.0.0/python/tensorstudio/data/manifest.py +225 -0
- tensorstudio-2.0.0/python/tensorstudio/data/public_formats.py +240 -0
- tensorstudio-2.0.0/python/tensorstudio/distributed.py +118 -0
- {tensorstudio-1.15.0 → tensorstudio-2.0.0}/python/tensorstudio/interchange/__init__.py +10 -0
- {tensorstudio-1.15.0 → tensorstudio-2.0.0}/python/tensorstudio/interchange/onnx.py +135 -0
- tensorstudio-2.0.0/python/tensorstudio/kernels.py +114 -0
- tensorstudio-2.0.0/python/tensorstudio/model_zoo.py +149 -0
- {tensorstudio-1.15.0 → tensorstudio-2.0.0}/python/tensorstudio/nn/__init__.py +22 -0
- tensorstudio-2.0.0/python/tensorstudio/nn/attention.py +156 -0
- tensorstudio-2.0.0/python/tensorstudio/nn/language.py +134 -0
- tensorstudio-2.0.0/python/tensorstudio/quantization.py +227 -0
- tensorstudio-2.0.0/python/tensorstudio/sparse.py +384 -0
- {tensorstudio-1.15.0 → tensorstudio-2.0.0}/python/tensorstudio/tensor.py +14 -0
- tensorstudio-2.0.0/tests/test_ecosystem.py +147 -0
- {tensorstudio-1.15.0 → tensorstudio-2.0.0}/tests/test_import.py +1 -1
- tensorstudio-2.0.0/tests/test_v2_foundation.py +97 -0
- tensorstudio-1.15.0/benchmarks/results.md +0 -351
- tensorstudio-1.15.0/benchmarks/results_matmul.md +0 -49
- tensorstudio-1.15.0/docs/roadmap/roadmap.md +0 -245
- tensorstudio-1.15.0/python/tensorstudio/data/__init__.py +0 -29
- {tensorstudio-1.15.0 → tensorstudio-2.0.0}/.gitattributes +0 -0
- {tensorstudio-1.15.0 → tensorstudio-2.0.0}/.github/workflows/ci.yml +0 -0
- {tensorstudio-1.15.0 → tensorstudio-2.0.0}/.github/workflows/docs.yml +0 -0
- {tensorstudio-1.15.0 → tensorstudio-2.0.0}/.github/workflows/publish-testpypi.yml +0 -0
- {tensorstudio-1.15.0 → tensorstudio-2.0.0}/.github/workflows/publish.yml +0 -0
- {tensorstudio-1.15.0 → tensorstudio-2.0.0}/.github/workflows/wheels.yml +0 -0
- {tensorstudio-1.15.0 → tensorstudio-2.0.0}/.gitignore +0 -0
- {tensorstudio-1.15.0 → tensorstudio-2.0.0}/.pre-commit-config.yaml +0 -0
- {tensorstudio-1.15.0 → tensorstudio-2.0.0}/CONTRIBUTING.md +0 -0
- {tensorstudio-1.15.0 → tensorstudio-2.0.0}/LICENSE +0 -0
- {tensorstudio-1.15.0 → tensorstudio-2.0.0}/SECURITY.md +0 -0
- {tensorstudio-1.15.0 → tensorstudio-2.0.0}/benchmark_all.py +0 -0
- {tensorstudio-1.15.0 → tensorstudio-2.0.0}/benchmarks/__init__.py +0 -0
- {tensorstudio-1.15.0 → tensorstudio-2.0.0}/benchmarks/bench_activations.py +0 -0
- {tensorstudio-1.15.0 → tensorstudio-2.0.0}/benchmarks/bench_autograd.py +0 -0
- {tensorstudio-1.15.0 → tensorstudio-2.0.0}/benchmarks/bench_conv2d.py +0 -0
- {tensorstudio-1.15.0 → tensorstudio-2.0.0}/benchmarks/bench_elementwise.py +0 -0
- {tensorstudio-1.15.0 → tensorstudio-2.0.0}/benchmarks/bench_matmul.py +0 -0
- {tensorstudio-1.15.0 → tensorstudio-2.0.0}/benchmarks/bench_pooling.py +0 -0
- {tensorstudio-1.15.0 → tensorstudio-2.0.0}/benchmarks/bench_reductions.py +0 -0
- {tensorstudio-1.15.0 → tensorstudio-2.0.0}/benchmarks/bench_tensor_ops.py +0 -0
- {tensorstudio-1.15.0 → tensorstudio-2.0.0}/benchmarks/bench_training_loop.py +0 -0
- {tensorstudio-1.15.0 → tensorstudio-2.0.0}/benchmarks/benchmark_report.py +0 -0
- {tensorstudio-1.15.0 → tensorstudio-2.0.0}/benchmarks/results_conv2d.md +0 -0
- {tensorstudio-1.15.0 → tensorstudio-2.0.0}/benchmarks/results_pooling.md +0 -0
- {tensorstudio-1.15.0 → tensorstudio-2.0.0}/benchmarks/results_reductions.md +0 -0
- {tensorstudio-1.15.0 → tensorstudio-2.0.0}/benchmarks/results_tensor_ops.md +0 -0
- {tensorstudio-1.15.0 → tensorstudio-2.0.0}/benchmarks/thresholds.json +0 -0
- {tensorstudio-1.15.0 → tensorstudio-2.0.0}/docs/autograd/coverage.md +0 -0
- {tensorstudio-1.15.0 → tensorstudio-2.0.0}/docs/autograd/gradient-notes.md +0 -0
- {tensorstudio-1.15.0 → tensorstudio-2.0.0}/docs/core/broadcasting.md +0 -0
- {tensorstudio-1.15.0 → tensorstudio-2.0.0}/docs/core/math-and-statistics.md +0 -0
- {tensorstudio-1.15.0 → tensorstudio-2.0.0}/docs/core/native-cpp-core.md +0 -0
- {tensorstudio-1.15.0 → tensorstudio-2.0.0}/docs/core/tensors.md +0 -0
- {tensorstudio-1.15.0 → tensorstudio-2.0.0}/docs/data/dataloader-patterns.md +0 -0
- {tensorstudio-1.15.0 → tensorstudio-2.0.0}/docs/data/dataset-creation.md +0 -0
- {tensorstudio-1.15.0 → tensorstudio-2.0.0}/docs/data/datasets-and-dataloaders.md +0 -0
- {tensorstudio-1.15.0 → tensorstudio-2.0.0}/docs/data/tensor-datasets.md +0 -0
- {tensorstudio-1.15.0 → tensorstudio-2.0.0}/docs/development/contributing.md +0 -0
- {tensorstudio-1.15.0 → tensorstudio-2.0.0}/docs/development/cpp-first.md +0 -0
- {tensorstudio-1.15.0 → tensorstudio-2.0.0}/docs/getting-started/installation.md +0 -0
- {tensorstudio-1.15.0 → tensorstudio-2.0.0}/docs/getting-started/quickstart.md +0 -0
- {tensorstudio-1.15.0 → tensorstudio-2.0.0}/docs/getting-started/source-build.md +0 -0
- {tensorstudio-1.15.0 → tensorstudio-2.0.0}/docs/graph/profiling-and-memory.md +0 -0
- {tensorstudio-1.15.0 → tensorstudio-2.0.0}/docs/graph/serialization-and-optimization.md +0 -0
- {tensorstudio-1.15.0 → tensorstudio-2.0.0}/docs/graph/tracing.md +0 -0
- {tensorstudio-1.15.0 → tensorstudio-2.0.0}/docs/hardware/backend-benchmarks.md +0 -0
- {tensorstudio-1.15.0 → tensorstudio-2.0.0}/docs/hardware/cpu-backend.md +0 -0
- {tensorstudio-1.15.0 → tensorstudio-2.0.0}/docs/hardware/cuda.md +0 -0
- {tensorstudio-1.15.0 → tensorstudio-2.0.0}/docs/hardware/device-api.md +0 -0
- {tensorstudio-1.15.0 → tensorstudio-2.0.0}/docs/hardware/linux.md +0 -0
- {tensorstudio-1.15.0 → tensorstudio-2.0.0}/docs/hardware/macos.md +0 -0
- {tensorstudio-1.15.0 → tensorstudio-2.0.0}/docs/hardware/metal.md +0 -0
- {tensorstudio-1.15.0 → tensorstudio-2.0.0}/docs/hardware/windows.md +0 -0
- {tensorstudio-1.15.0 → tensorstudio-2.0.0}/docs/interchange/metadata.md +0 -0
- {tensorstudio-1.15.0 → tensorstudio-2.0.0}/docs/interchange/safetensors.md +0 -0
- {tensorstudio-1.15.0 → tensorstudio-2.0.0}/docs/interchange/trusted-serialization.md +0 -0
- {tensorstudio-1.15.0 → tensorstudio-2.0.0}/docs/nn/initializers.md +0 -0
- {tensorstudio-1.15.0 → tensorstudio-2.0.0}/docs/nn/losses-and-summary.md +0 -0
- {tensorstudio-1.15.0 → tensorstudio-2.0.0}/docs/nn/modules.md +0 -0
- {tensorstudio-1.15.0 → tensorstudio-2.0.0}/docs/nn/optimizers.md +0 -0
- {tensorstudio-1.15.0 → tensorstudio-2.0.0}/docs/nn/overview.md +0 -0
- {tensorstudio-1.15.0 → tensorstudio-2.0.0}/docs/nn/training.md +0 -0
- {tensorstudio-1.15.0 → tensorstudio-2.0.0}/docs/performance/benchmarks.md +0 -0
- {tensorstudio-1.15.0 → tensorstudio-2.0.0}/docs/performance/optimization.md +0 -0
- {tensorstudio-1.15.0 → tensorstudio-2.0.0}/docs/performance/profiling.md +0 -0
- {tensorstudio-1.15.0 → tensorstudio-2.0.0}/docs/project/checkpoints.md +0 -0
- {tensorstudio-1.15.0 → tensorstudio-2.0.0}/docs/project/configs-and-templates.md +0 -0
- {tensorstudio-1.15.0 → tensorstudio-2.0.0}/docs/project/metrics.md +0 -0
- {tensorstudio-1.15.0 → tensorstudio-2.0.0}/docs/project/project-layout.md +0 -0
- {tensorstudio-1.15.0 → tensorstudio-2.0.0}/docs/project/trainer-and-callbacks.md +0 -0
- {tensorstudio-1.15.0 → tensorstudio-2.0.0}/docs/project/workflows.md +0 -0
- {tensorstudio-1.15.0 → tensorstudio-2.0.0}/docs/release/checklist.md +0 -0
- {tensorstudio-1.15.0 → tensorstudio-2.0.0}/docs/release/platform-compatibility.md +0 -0
- {tensorstudio-1.15.0 → tensorstudio-2.0.0}/docs/roadmap/priorities.md +0 -0
- {tensorstudio-1.15.0 → tensorstudio-2.0.0}/docs/vision/dataset-creation.md +0 -0
- {tensorstudio-1.15.0 → tensorstudio-2.0.0}/docs/vision/detection.md +0 -0
- {tensorstudio-1.15.0 → tensorstudio-2.0.0}/docs/vision/models-and-visualization.md +0 -0
- {tensorstudio-1.15.0 → tensorstudio-2.0.0}/docs/vision/overview.md +0 -0
- {tensorstudio-1.15.0 → tensorstudio-2.0.0}/docs/vision/segmentation.md +0 -0
- {tensorstudio-1.15.0 → tensorstudio-2.0.0}/docs/vision/transforms.md +0 -0
- {tensorstudio-1.15.0 → tensorstudio-2.0.0}/examples/basic_tensor_ops.py +0 -0
- {tensorstudio-1.15.0 → tensorstudio-2.0.0}/examples/export_onnx.py +0 -0
- {tensorstudio-1.15.0 → tensorstudio-2.0.0}/examples/graph_runtime.py +0 -0
- {tensorstudio-1.15.0 → tensorstudio-2.0.0}/examples/image_folder_classification.py +0 -0
- {tensorstudio-1.15.0 → tensorstudio-2.0.0}/examples/linear_regression.py +0 -0
- {tensorstudio-1.15.0 → tensorstudio-2.0.0}/examples/project_training.py +0 -0
- {tensorstudio-1.15.0 → tensorstudio-2.0.0}/examples/save_load_model.py +0 -0
- {tensorstudio-1.15.0 → tensorstudio-2.0.0}/examples/tiny_mlp.py +0 -0
- {tensorstudio-1.15.0 → tensorstudio-2.0.0}/examples/vision_classifier.py +0 -0
- {tensorstudio-1.15.0 → tensorstudio-2.0.0}/include/tensorstudio/autograd.hpp +0 -0
- {tensorstudio-1.15.0 → tensorstudio-2.0.0}/include/tensorstudio/device.hpp +0 -0
- {tensorstudio-1.15.0 → tensorstudio-2.0.0}/include/tensorstudio/dtype.hpp +0 -0
- {tensorstudio-1.15.0 → tensorstudio-2.0.0}/include/tensorstudio/errors.hpp +0 -0
- {tensorstudio-1.15.0 → tensorstudio-2.0.0}/include/tensorstudio/module.hpp +0 -0
- {tensorstudio-1.15.0 → tensorstudio-2.0.0}/include/tensorstudio/ops.hpp +0 -0
- {tensorstudio-1.15.0 → tensorstudio-2.0.0}/include/tensorstudio/optim.hpp +0 -0
- {tensorstudio-1.15.0 → tensorstudio-2.0.0}/include/tensorstudio/perf.hpp +0 -0
- {tensorstudio-1.15.0 → tensorstudio-2.0.0}/include/tensorstudio/random.hpp +0 -0
- {tensorstudio-1.15.0 → tensorstudio-2.0.0}/include/tensorstudio/serialization.hpp +0 -0
- {tensorstudio-1.15.0 → tensorstudio-2.0.0}/include/tensorstudio/shape.hpp +0 -0
- {tensorstudio-1.15.0 → tensorstudio-2.0.0}/include/tensorstudio/storage.hpp +0 -0
- {tensorstudio-1.15.0 → tensorstudio-2.0.0}/include/tensorstudio/tensor.hpp +0 -0
- {tensorstudio-1.15.0 → tensorstudio-2.0.0}/python/tensorstudio/_C.pyi +0 -0
- {tensorstudio-1.15.0 → tensorstudio-2.0.0}/python/tensorstudio/autograd.py +0 -0
- {tensorstudio-1.15.0 → tensorstudio-2.0.0}/python/tensorstudio/data/dataloader.py +0 -0
- {tensorstudio-1.15.0 → tensorstudio-2.0.0}/python/tensorstudio/data/dataset.py +0 -0
- {tensorstudio-1.15.0 → tensorstudio-2.0.0}/python/tensorstudio/data/factories.py +0 -0
- {tensorstudio-1.15.0 → tensorstudio-2.0.0}/python/tensorstudio/data/splitting.py +0 -0
- {tensorstudio-1.15.0 → tensorstudio-2.0.0}/python/tensorstudio/dtypes.py +0 -0
- {tensorstudio-1.15.0 → tensorstudio-2.0.0}/python/tensorstudio/errors.py +0 -0
- {tensorstudio-1.15.0 → tensorstudio-2.0.0}/python/tensorstudio/grad_mode.py +0 -0
- {tensorstudio-1.15.0 → tensorstudio-2.0.0}/python/tensorstudio/graph/__init__.py +0 -0
- {tensorstudio-1.15.0 → tensorstudio-2.0.0}/python/tensorstudio/graph/core.py +0 -0
- {tensorstudio-1.15.0 → tensorstudio-2.0.0}/python/tensorstudio/hardware.py +0 -0
- {tensorstudio-1.15.0 → tensorstudio-2.0.0}/python/tensorstudio/math.py +0 -0
- {tensorstudio-1.15.0 → tensorstudio-2.0.0}/python/tensorstudio/metrics/__init__.py +0 -0
- {tensorstudio-1.15.0 → tensorstudio-2.0.0}/python/tensorstudio/metrics/classification.py +0 -0
- {tensorstudio-1.15.0 → tensorstudio-2.0.0}/python/tensorstudio/metrics/multilabel.py +0 -0
- {tensorstudio-1.15.0 → tensorstudio-2.0.0}/python/tensorstudio/metrics/regression.py +0 -0
- {tensorstudio-1.15.0 → tensorstudio-2.0.0}/python/tensorstudio/nn/functional.py +0 -0
- {tensorstudio-1.15.0 → tensorstudio-2.0.0}/python/tensorstudio/nn/init.py +0 -0
- {tensorstudio-1.15.0 → tensorstudio-2.0.0}/python/tensorstudio/nn/losses.py +0 -0
- {tensorstudio-1.15.0 → tensorstudio-2.0.0}/python/tensorstudio/nn/modules.py +0 -0
- {tensorstudio-1.15.0 → tensorstudio-2.0.0}/python/tensorstudio/nn/summary.py +0 -0
- {tensorstudio-1.15.0 → tensorstudio-2.0.0}/python/tensorstudio/ops.py +0 -0
- {tensorstudio-1.15.0 → tensorstudio-2.0.0}/python/tensorstudio/optim/__init__.py +0 -0
- {tensorstudio-1.15.0 → tensorstudio-2.0.0}/python/tensorstudio/optim/adam.py +0 -0
- {tensorstudio-1.15.0 → tensorstudio-2.0.0}/python/tensorstudio/optim/adamw.py +0 -0
- {tensorstudio-1.15.0 → tensorstudio-2.0.0}/python/tensorstudio/optim/lr_scheduler.py +0 -0
- {tensorstudio-1.15.0 → tensorstudio-2.0.0}/python/tensorstudio/optim/sgd.py +0 -0
- {tensorstudio-1.15.0 → tensorstudio-2.0.0}/python/tensorstudio/optim/utils.py +0 -0
- {tensorstudio-1.15.0 → tensorstudio-2.0.0}/python/tensorstudio/performance.py +0 -0
- {tensorstudio-1.15.0 → tensorstudio-2.0.0}/python/tensorstudio/project/__init__.py +0 -0
- {tensorstudio-1.15.0 → tensorstudio-2.0.0}/python/tensorstudio/project/callbacks.py +0 -0
- {tensorstudio-1.15.0 → tensorstudio-2.0.0}/python/tensorstudio/project/checkpoint.py +0 -0
- {tensorstudio-1.15.0 → tensorstudio-2.0.0}/python/tensorstudio/project/config.py +0 -0
- {tensorstudio-1.15.0 → tensorstudio-2.0.0}/python/tensorstudio/project/seed.py +0 -0
- {tensorstudio-1.15.0 → tensorstudio-2.0.0}/python/tensorstudio/project/templates.py +0 -0
- {tensorstudio-1.15.0 → tensorstudio-2.0.0}/python/tensorstudio/project/trainer.py +0 -0
- {tensorstudio-1.15.0 → tensorstudio-2.0.0}/python/tensorstudio/py.typed +0 -0
- {tensorstudio-1.15.0 → tensorstudio-2.0.0}/python/tensorstudio/serialization.py +0 -0
- {tensorstudio-1.15.0 → tensorstudio-2.0.0}/python/tensorstudio/typing.py +0 -0
- {tensorstudio-1.15.0 → tensorstudio-2.0.0}/python/tensorstudio/vision/__init__.py +0 -0
- {tensorstudio-1.15.0 → tensorstudio-2.0.0}/python/tensorstudio/vision/datasets.py +0 -0
- {tensorstudio-1.15.0 → tensorstudio-2.0.0}/python/tensorstudio/vision/detection.py +0 -0
- {tensorstudio-1.15.0 → tensorstudio-2.0.0}/python/tensorstudio/vision/io.py +0 -0
- {tensorstudio-1.15.0 → tensorstudio-2.0.0}/python/tensorstudio/vision/metrics.py +0 -0
- {tensorstudio-1.15.0 → tensorstudio-2.0.0}/python/tensorstudio/vision/models.py +0 -0
- {tensorstudio-1.15.0 → tensorstudio-2.0.0}/python/tensorstudio/vision/segmentation.py +0 -0
- {tensorstudio-1.15.0 → tensorstudio-2.0.0}/python/tensorstudio/vision/transforms.py +0 -0
- {tensorstudio-1.15.0 → tensorstudio-2.0.0}/python/tensorstudio/vision/visualization.py +0 -0
- {tensorstudio-1.15.0 → tensorstudio-2.0.0}/src/bindings/bind_autograd.cpp +0 -0
- {tensorstudio-1.15.0 → tensorstudio-2.0.0}/src/bindings/bind_nn.cpp +0 -0
- {tensorstudio-1.15.0 → tensorstudio-2.0.0}/src/bindings/bind_ops.cpp +0 -0
- {tensorstudio-1.15.0 → tensorstudio-2.0.0}/src/bindings/bind_optim.cpp +0 -0
- {tensorstudio-1.15.0 → tensorstudio-2.0.0}/src/bindings/bind_tensor.cpp +0 -0
- {tensorstudio-1.15.0 → tensorstudio-2.0.0}/src/bindings/bindings.cpp +0 -0
- {tensorstudio-1.15.0 → tensorstudio-2.0.0}/src/bindings/bindings.hpp +0 -0
- {tensorstudio-1.15.0 → tensorstudio-2.0.0}/src/core/autograd.cpp +0 -0
- {tensorstudio-1.15.0 → tensorstudio-2.0.0}/src/core/device.cpp +0 -0
- {tensorstudio-1.15.0 → tensorstudio-2.0.0}/src/core/dtype.cpp +0 -0
- {tensorstudio-1.15.0 → tensorstudio-2.0.0}/src/core/errors.cpp +0 -0
- {tensorstudio-1.15.0 → tensorstudio-2.0.0}/src/core/module.cpp +0 -0
- {tensorstudio-1.15.0 → tensorstudio-2.0.0}/src/core/ops.cpp +0 -0
- {tensorstudio-1.15.0 → tensorstudio-2.0.0}/src/core/optim.cpp +0 -0
- {tensorstudio-1.15.0 → tensorstudio-2.0.0}/src/core/perf.cpp +0 -0
- {tensorstudio-1.15.0 → tensorstudio-2.0.0}/src/core/random.cpp +0 -0
- {tensorstudio-1.15.0 → tensorstudio-2.0.0}/src/core/serialization.cpp +0 -0
- {tensorstudio-1.15.0 → tensorstudio-2.0.0}/src/core/shape.cpp +0 -0
- {tensorstudio-1.15.0 → tensorstudio-2.0.0}/src/core/storage.cpp +0 -0
- {tensorstudio-1.15.0 → tensorstudio-2.0.0}/src/core/tensor.cpp +0 -0
- {tensorstudio-1.15.0 → tensorstudio-2.0.0}/test_all.py +0 -0
- {tensorstudio-1.15.0 → tensorstudio-2.0.0}/tests/test_autograd.py +0 -0
- {tensorstudio-1.15.0 → tensorstudio-2.0.0}/tests/test_autograd_hardening.py +0 -0
- {tensorstudio-1.15.0 → tensorstudio-2.0.0}/tests/test_benchmark_report.py +0 -0
- {tensorstudio-1.15.0 → tensorstudio-2.0.0}/tests/test_broadcasting.py +0 -0
- {tensorstudio-1.15.0 → tensorstudio-2.0.0}/tests/test_core_math_expansion.py +0 -0
- {tensorstudio-1.15.0 → tensorstudio-2.0.0}/tests/test_data.py +0 -0
- {tensorstudio-1.15.0 → tensorstudio-2.0.0}/tests/test_errors.py +0 -0
- {tensorstudio-1.15.0 → tensorstudio-2.0.0}/tests/test_graph.py +0 -0
- {tensorstudio-1.15.0 → tensorstudio-2.0.0}/tests/test_hardware.py +0 -0
- {tensorstudio-1.15.0 → tensorstudio-2.0.0}/tests/test_indexing.py +0 -0
- {tensorstudio-1.15.0 → tensorstudio-2.0.0}/tests/test_interchange.py +0 -0
- {tensorstudio-1.15.0 → tensorstudio-2.0.0}/tests/test_nn.py +0 -0
- {tensorstudio-1.15.0 → tensorstudio-2.0.0}/tests/test_nn_building_blocks.py +0 -0
- {tensorstudio-1.15.0 → tensorstudio-2.0.0}/tests/test_numpy_interop.py +0 -0
- {tensorstudio-1.15.0 → tensorstudio-2.0.0}/tests/test_ops.py +0 -0
- {tensorstudio-1.15.0 → tensorstudio-2.0.0}/tests/test_optim.py +0 -0
- {tensorstudio-1.15.0 → tensorstudio-2.0.0}/tests/test_performance.py +0 -0
- {tensorstudio-1.15.0 → tensorstudio-2.0.0}/tests/test_project.py +0 -0
- {tensorstudio-1.15.0 → tensorstudio-2.0.0}/tests/test_serialization.py +0 -0
- {tensorstudio-1.15.0 → tensorstudio-2.0.0}/tests/test_tensor.py +0 -0
- {tensorstudio-1.15.0 → tensorstudio-2.0.0}/tests/test_training_workflows.py +0 -0
- {tensorstudio-1.15.0 → tensorstudio-2.0.0}/tests/test_views.py +0 -0
- {tensorstudio-1.15.0 → tensorstudio-2.0.0}/tests/test_vision.py +0 -0
- {tensorstudio-1.15.0 → tensorstudio-2.0.0}/tests/test_vision_depth.py +0 -0
- {tensorstudio-1.15.0 → tensorstudio-2.0.0}/tools/verify_artifacts.py +0 -0
|
@@ -2,6 +2,41 @@
|
|
|
2
2
|
|
|
3
3
|
## Unreleased
|
|
4
4
|
|
|
5
|
+
## 2.0.0 - 2026-07-08
|
|
6
|
+
|
|
7
|
+
- Added a tested v2 foundation slice from the remaining roadmap while keeping
|
|
8
|
+
accelerator and production-distributed limitations explicit.
|
|
9
|
+
- Added dataset manifests, SHA-256 file checksums, manifest validation, and a
|
|
10
|
+
small map-style dataset cache wrapper.
|
|
11
|
+
- Added compact attention APIs: `scaled_dot_product_attention`,
|
|
12
|
+
`MultiHeadSelfAttention`, and `TransformerEncoderBlock`.
|
|
13
|
+
- Added experimental CSR sparse tensors, dense/COO conversion helpers, and
|
|
14
|
+
CSR sparse-dense matmul.
|
|
15
|
+
- Added quantization calibration helpers and quantization error reporting.
|
|
16
|
+
- Added CPU `from_dlpack()` import for DLPack-compatible providers via NumPy.
|
|
17
|
+
- Added ONNX Runtime provider discovery and compatibility diagnostics.
|
|
18
|
+
- Reworked the roadmap to show remaining work only.
|
|
19
|
+
|
|
20
|
+
## 1.16.0 - 2026-07-07
|
|
21
|
+
|
|
22
|
+
- Completed the Ecosystem And Advanced Features roadmap batch as supported
|
|
23
|
+
lightweight APIs plus explicit research-stage boundaries.
|
|
24
|
+
- Added experimental COO sparse tensors with dense conversion, coalescing,
|
|
25
|
+
transpose, and sparse-dense matmul.
|
|
26
|
+
- Added distributed-training research helpers for single-process collectives,
|
|
27
|
+
environment parsing, and deterministic data-parallel planning metadata.
|
|
28
|
+
- Added a small model-zoo registry with reproducible tiny MLP, CNN, and
|
|
29
|
+
language-model factories.
|
|
30
|
+
- Added CSV, JSONL, text-line, and LIBSVM dataset loaders for common public
|
|
31
|
+
data formats.
|
|
32
|
+
- Added language-model helpers: vocabulary building, token/position
|
|
33
|
+
embeddings, tiny causal language model, causal batches, and LM loss.
|
|
34
|
+
- Added quantization research utilities for affine quantization, fake
|
|
35
|
+
quantization, state-dict conversion, and parameter-size reports.
|
|
36
|
+
- Added a custom kernel registry for Python or native-extension callables.
|
|
37
|
+
- Added optional ONNX Runtime execution adapter through the
|
|
38
|
+
`tensorstudio[onnxruntime]` extra, with TensorStudio ONNX import fallback.
|
|
39
|
+
|
|
5
40
|
## 1.15.0 - 2026-07-07
|
|
6
41
|
|
|
7
42
|
- Completed the Graph, Compiler, And Runtime Systems roadmap batch as a
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.2
|
|
2
2
|
Name: tensorstudio
|
|
3
|
-
Version:
|
|
3
|
+
Version: 2.0.0
|
|
4
4
|
Summary: TensorStudio is a compact C++ tensor and autograd engine with a Python API for learning, experimentation, and lightweight ML workloads.
|
|
5
5
|
Keywords: tensor,autograd,machine-learning,cpp,pybind11
|
|
6
6
|
Author: TensorStudio contributors
|
|
@@ -61,10 +61,18 @@ Requires-Dist: mkdocs>=1.6; extra == "docs"
|
|
|
61
61
|
Requires-Dist: mkdocs-material>=9.5; extra == "docs"
|
|
62
62
|
Provides-Extra: onnx
|
|
63
63
|
Requires-Dist: onnx>=1.16; extra == "onnx"
|
|
64
|
+
Provides-Extra: onnxruntime
|
|
65
|
+
Requires-Dist: onnx>=1.16; extra == "onnxruntime"
|
|
66
|
+
Requires-Dist: onnxruntime>=1.18; extra == "onnxruntime"
|
|
64
67
|
Provides-Extra: safetensors
|
|
65
68
|
Requires-Dist: safetensors>=0.4; extra == "safetensors"
|
|
66
69
|
Provides-Extra: vision
|
|
67
70
|
Requires-Dist: Pillow>=10; extra == "vision"
|
|
71
|
+
Provides-Extra: all
|
|
72
|
+
Requires-Dist: onnx>=1.16; extra == "all"
|
|
73
|
+
Requires-Dist: onnxruntime>=1.18; extra == "all"
|
|
74
|
+
Requires-Dist: Pillow>=10; extra == "all"
|
|
75
|
+
Requires-Dist: safetensors>=0.4; extra == "all"
|
|
68
76
|
Description-Content-Type: text/markdown
|
|
69
77
|
|
|
70
78
|
# TensorStudio
|
|
@@ -76,7 +84,7 @@ Description-Content-Type: text/markdown
|
|
|
76
84
|
TensorStudio is a compact C++ tensor and autograd engine with a Python API for
|
|
77
85
|
learning, experimentation, and lightweight ML workloads.
|
|
78
86
|
|
|
79
|
-
TensorStudio `
|
|
87
|
+
TensorStudio `2.0.0` is a CPU-only stable API foundation with native C++
|
|
80
88
|
threading, storage reuse, SIMD-friendly typed kernels, and optional
|
|
81
89
|
CBLAS/Accelerate matrix multiplication when available. It adds native stable
|
|
82
90
|
softmax/logsumexp, batched matrix multiplication, statistical reductions,
|
|
@@ -94,7 +102,13 @@ boundaries, explicit transfer APIs, and backend benchmark artifacts while
|
|
|
94
102
|
keeping the published wheels honest about CPU-only execution. The graph layer
|
|
95
103
|
adds constrained symbolic tracing, JSON graph serialization, simple graph
|
|
96
104
|
optimization, eager-backed graph execution, profiling hooks, and memory-plan
|
|
97
|
-
metadata.
|
|
105
|
+
metadata. The ecosystem layer adds experimental COO sparse tensors, public
|
|
106
|
+
dataset format readers, tiny model-zoo factories, language-model helpers,
|
|
107
|
+
quantization research utilities, a custom-kernel registry, single-process
|
|
108
|
+
distributed planning helpers, and an optional ONNX Runtime adapter. The v2
|
|
109
|
+
foundation adds dataset manifests/checksums, a small dataset cache wrapper, CSR
|
|
110
|
+
sparse matrices, compact attention/Transformer encoder blocks, quantization
|
|
111
|
+
calibration, CPU DLPack import, and ONNX Runtime provider diagnostics.
|
|
98
112
|
It is eager-first, intentionally compact, and not a replacement for mature ML
|
|
99
113
|
frameworks.
|
|
100
114
|
|
|
@@ -113,10 +127,12 @@ python -m pip install -U pip
|
|
|
113
127
|
python -m pip install -e ".[dev]"
|
|
114
128
|
```
|
|
115
129
|
|
|
116
|
-
Install optional extras for ONNX export
|
|
130
|
+
Install optional extras for ONNX export, optional ONNX Runtime delegation, and
|
|
131
|
+
Pillow-backed image inputs:
|
|
117
132
|
|
|
118
133
|
```bash
|
|
119
134
|
python -m pip install "tensorstudio[onnx,vision]"
|
|
135
|
+
python -m pip install "tensorstudio[onnxruntime]"
|
|
120
136
|
```
|
|
121
137
|
|
|
122
138
|
Build source and wheel distributions:
|
|
@@ -330,7 +346,7 @@ classification workflows: Pillow-backed image IO, transform pipelines,
|
|
|
330
346
|
deterministic augmentations, `ImageFolder` datasets, metrics, image grids,
|
|
331
347
|
bounding-box drawing, and compact CNN classifiers running through native
|
|
332
348
|
Conv2d/pooling kernels.
|
|
333
|
-
The
|
|
349
|
+
The current vision surface includes batch-aware transforms, color jitter, random
|
|
334
350
|
resized crop, rotation, affine transforms, cutout, mixup, CutMix, detection
|
|
335
351
|
helpers, segmentation mask helpers, detection/segmentation folder datasets,
|
|
336
352
|
ResNet-style blocks, MobileNet-style depthwise blocks, a compact UNet, and
|
|
@@ -477,6 +493,61 @@ loaded = ts.load_graph("model.tsgraph.json")
|
|
|
477
493
|
print(loaded.run(x).item())
|
|
478
494
|
```
|
|
479
495
|
|
|
496
|
+
## Ecosystem Utilities
|
|
497
|
+
|
|
498
|
+
TensorStudio `2.0.0` expands the late-roadmap ecosystem layer without
|
|
499
|
+
pretending to be a production-scale distributed or accelerator runtime.
|
|
500
|
+
|
|
501
|
+
```python
|
|
502
|
+
import tensorstudio as ts
|
|
503
|
+
from tensorstudio import nn
|
|
504
|
+
|
|
505
|
+
sparse = ts.sparse_coo_tensor([[0, 1], [1, 0]], [2.0, 3.0], (2, 2))
|
|
506
|
+
print(sparse.to_dense().tolist())
|
|
507
|
+
print((sparse @ ts.ones((2, 1))).tolist())
|
|
508
|
+
|
|
509
|
+
model = ts.create_model("tiny_mlp", input_dim=2, hidden_dim=4, output_dim=1)
|
|
510
|
+
print(ts.model_info("tiny_mlp")["task"], model(ts.ones((1, 2))).shape)
|
|
511
|
+
|
|
512
|
+
vocab = nn.Vocabulary.build(["small tensor models", "small language batch"])
|
|
513
|
+
inputs, targets = nn.make_causal_lm_batch(vocab.encode("small tensor models"), 2)
|
|
514
|
+
lm = nn.CausalLanguageModel(vocab_size=len(vocab), embedding_dim=4, max_length=4)
|
|
515
|
+
print(nn.causal_language_model_loss(lm(inputs), targets).item())
|
|
516
|
+
|
|
517
|
+
quantized = ts.quantization.quantize_tensor(ts.tensor([-1.0, 0.0, 1.0]))
|
|
518
|
+
print(quantized.dequantize().tolist())
|
|
519
|
+
|
|
520
|
+
ts.register_kernel("double", lambda x: x * 2.0, overwrite=True)
|
|
521
|
+
print(ts.call_kernel("double", ts.ones((2,))).tolist())
|
|
522
|
+
ts.unregister_kernel("double")
|
|
523
|
+
|
|
524
|
+
print(ts.distributed.data_parallel_plan(dataset_size=10, batch_size=4))
|
|
525
|
+
```
|
|
526
|
+
|
|
527
|
+
```python
|
|
528
|
+
manifest = ts.data.build_dataset_manifest("data")
|
|
529
|
+
print(manifest.validate())
|
|
530
|
+
|
|
531
|
+
csr = ts.csr_from_dense(ts.tensor([[0.0, 2.0], [3.0, 0.0]]))
|
|
532
|
+
print((csr @ ts.ones((2, 1))).tolist())
|
|
533
|
+
|
|
534
|
+
attention = nn.MultiHeadSelfAttention(embed_dim=4, num_heads=2)
|
|
535
|
+
print(attention(ts.randn((1, 3, 4), seed=7), causal=True).shape)
|
|
536
|
+
|
|
537
|
+
stats = ts.quantization.calibrate_tensor(ts.tensor([-1.0, 0.0, 2.0]))
|
|
538
|
+
print(stats.to_dict())
|
|
539
|
+
```
|
|
540
|
+
|
|
541
|
+
For ONNX files, TensorStudio has two paths:
|
|
542
|
+
|
|
543
|
+
- `ts.import_onnx()` imports and executes a constrained static subset through
|
|
544
|
+
TensorStudio tensor ops.
|
|
545
|
+
- `ts.run_onnx()` can delegate to the optional `onnxruntime` package when
|
|
546
|
+
installed with `tensorstudio[onnxruntime]`; otherwise it can fall back to the
|
|
547
|
+
supported TensorStudio importer for compatible graphs.
|
|
548
|
+
- `ts.check_onnxruntime_compatibility()` and
|
|
549
|
+
`ts.onnxruntime_available_providers()` report runtime/provider availability.
|
|
550
|
+
|
|
480
551
|
## Performance
|
|
481
552
|
|
|
482
553
|
TensorStudio is optimized for small-to-medium CPU eager workloads, but
|
|
@@ -507,11 +578,11 @@ Run the loose local regression thresholds with:
|
|
|
507
578
|
python benchmark_all.py --check-thresholds
|
|
508
579
|
```
|
|
509
580
|
|
|
510
|
-
On one Windows CPython 3.10 development run reporting `
|
|
581
|
+
On one Windows CPython 3.10 development run reporting `2.0.0`, with
|
|
511
582
|
TensorStudio threads enabled, storage pooling enabled, SSE2 autovectorization
|
|
512
|
-
reported, and no BLAS provider found, TensorStudio beat NumPy on
|
|
513
|
-
benchmark cases and lost on
|
|
514
|
-
available on that machine; TensorStudio won
|
|
583
|
+
reported, and no BLAS provider found, TensorStudio beat NumPy on 7 local
|
|
584
|
+
benchmark cases and lost on 96 NumPy-comparable cases. JAX CPU dispatch was
|
|
585
|
+
available on that machine; TensorStudio won 45 local cases and lost 53. The
|
|
515
586
|
strongest local wins were the simple NumPy convolution/pooling reference loops
|
|
516
587
|
and some small JAX-dispatch-heavy eager cases. NumPy and JAX were faster for
|
|
517
588
|
many elementwise, reduction, matrix multiplication, larger activation, and
|
|
@@ -523,15 +594,15 @@ Snapshot from that local run:
|
|
|
523
594
|
|
|
524
595
|
| operation | shape | TensorStudio | NumPy | JAX CPU dispatch | TS vs NumPy | TS vs JAX |
|
|
525
596
|
|---|---:|---:|---:|---:|---:|---:|
|
|
526
|
-
| `sigmoid` | `(32,)` | 0.
|
|
527
|
-
| `mean` | `(32,)` | 0.
|
|
528
|
-
| `sum_axis1` | `(16, 16)` | 0.
|
|
529
|
-
| `chain_relu` | `(128,)` | 0.
|
|
530
|
-
| `matmul` | `(256, 256)` |
|
|
531
|
-
| `conv2d_3x3_padding1` | `(1, 1, 8, 8)` | 0.
|
|
532
|
-
| `max_pool2d_2x2` | `(1, 1, 16, 16)` | 0.
|
|
533
|
-
| `avg_pool2d_2x2` | `(1, 1, 16, 16)` | 0.
|
|
534
|
-
| `elementwise_backward` | `(1024,)` |
|
|
597
|
+
| `sigmoid` | `(32,)` | 0.0221 ms | 0.0068 ms | 0.1092 ms | 0.3106x | 4.9529x |
|
|
598
|
+
| `mean` | `(32,)` | 0.0256 ms | 0.0129 ms | 0.0210 ms | 0.5052x | 0.8221x |
|
|
599
|
+
| `sum_axis1` | `(16, 16)` | 0.0290 ms | 0.0034 ms | 0.0187 ms | 0.1170x | 0.6453x |
|
|
600
|
+
| `chain_relu` | `(128,)` | 0.1596 ms | 0.0099 ms | 0.1898 ms | 0.0621x | 1.1892x |
|
|
601
|
+
| `matmul` | `(256, 256)` | 3.6061 ms | 0.5097 ms | 0.3583 ms | 0.1413x | 0.0994x |
|
|
602
|
+
| `conv2d_3x3_padding1` | `(1, 1, 8, 8)` | 0.2448 ms | 1.9636 ms | 0.1606 ms | 8.0224x | 0.6561x |
|
|
603
|
+
| `max_pool2d_2x2` | `(1, 1, 16, 16)` | 0.0392 ms | 0.3468 ms | n/a | 8.8440x | n/a |
|
|
604
|
+
| `avg_pool2d_2x2` | `(1, 1, 16, 16)` | 0.0460 ms | 1.0295 ms | n/a | 22.4030x | n/a |
|
|
605
|
+
| `elementwise_backward` | `(1024,)` | 4.1790 ms | n/a | n/a | n/a | n/a |
|
|
535
606
|
|
|
536
607
|
Speedup is `competitor median / TensorStudio median`, so values above `1.0x`
|
|
537
608
|
favor TensorStudio.
|
|
@@ -654,16 +725,21 @@ tokens or print secrets.
|
|
|
654
725
|
- Optional BLAS-backed matrix multiplication depends on the build environment
|
|
655
726
|
exposing a compatible CBLAS/Accelerate interface; otherwise TensorStudio uses
|
|
656
727
|
a portable C++ fallback.
|
|
657
|
-
- No graph compiler or distributed runtime.
|
|
728
|
+
- No machine-code graph compiler or production distributed runtime.
|
|
729
|
+
TensorStudio includes a constrained eager-backed graph runtime and
|
|
730
|
+
single-process distributed planning helpers.
|
|
658
731
|
- Convolution and pooling support are CPU-only. Native kernels include NCHW
|
|
659
732
|
`conv2d`, grouped/depthwise convolution, `conv_transpose2d`, `max_pool2d`,
|
|
660
733
|
`avg_pool2d`, and embedding lookup; they are not CUDA/cuDNN replacements.
|
|
661
734
|
- Vision covers local image-classification utilities, metrics, visualization,
|
|
662
|
-
|
|
663
|
-
|
|
664
|
-
GPU image kernels
|
|
665
|
-
|
|
666
|
-
|
|
735
|
+
detection/segmentation helpers, compact CNNs, and a compact UNet. It is not
|
|
736
|
+
an OpenCV replacement and does not include pretrained large model zoos,
|
|
737
|
+
end-to-end detection/segmentation trainers, video IO, or GPU image kernels
|
|
738
|
+
yet.
|
|
739
|
+
- ONNX support covers export, metadata inspection, import/execution for a
|
|
740
|
+
limited static subset, and optional delegation to the external ONNX Runtime
|
|
741
|
+
package through `tensorstudio[onnxruntime]`. TensorStudio's native importer is
|
|
742
|
+
not a full ONNX runtime.
|
|
667
743
|
- Reductions support all-element, single-axis, and tuple/list-axis reductions
|
|
668
744
|
for `sum`, `mean`, `max`, and `min`.
|
|
669
745
|
- Arg reductions support all-element flat indices or one axis at a time for
|
|
@@ -683,8 +759,8 @@ tokens or print secrets.
|
|
|
683
759
|
- Graph/JIT mode
|
|
684
760
|
- Broader convolution ops, adaptive/global pooling, and image-model examples
|
|
685
761
|
- Richer dataset utilities
|
|
686
|
-
-
|
|
687
|
-
- Broader ONNX operator coverage
|
|
762
|
+
- Larger model zoo examples and pretrained-weight metadata
|
|
763
|
+
- Broader ONNX operator coverage and optional runtime providers
|
|
688
764
|
- Runtime-dispatched SIMD kernels
|
|
689
765
|
- Better non-BLAS matrix multiplication tiling
|
|
690
766
|
- More threaded backward kernels
|
|
@@ -7,7 +7,7 @@
|
|
|
7
7
|
TensorStudio is a compact C++ tensor and autograd engine with a Python API for
|
|
8
8
|
learning, experimentation, and lightweight ML workloads.
|
|
9
9
|
|
|
10
|
-
TensorStudio `
|
|
10
|
+
TensorStudio `2.0.0` is a CPU-only stable API foundation with native C++
|
|
11
11
|
threading, storage reuse, SIMD-friendly typed kernels, and optional
|
|
12
12
|
CBLAS/Accelerate matrix multiplication when available. It adds native stable
|
|
13
13
|
softmax/logsumexp, batched matrix multiplication, statistical reductions,
|
|
@@ -25,7 +25,13 @@ boundaries, explicit transfer APIs, and backend benchmark artifacts while
|
|
|
25
25
|
keeping the published wheels honest about CPU-only execution. The graph layer
|
|
26
26
|
adds constrained symbolic tracing, JSON graph serialization, simple graph
|
|
27
27
|
optimization, eager-backed graph execution, profiling hooks, and memory-plan
|
|
28
|
-
metadata.
|
|
28
|
+
metadata. The ecosystem layer adds experimental COO sparse tensors, public
|
|
29
|
+
dataset format readers, tiny model-zoo factories, language-model helpers,
|
|
30
|
+
quantization research utilities, a custom-kernel registry, single-process
|
|
31
|
+
distributed planning helpers, and an optional ONNX Runtime adapter. The v2
|
|
32
|
+
foundation adds dataset manifests/checksums, a small dataset cache wrapper, CSR
|
|
33
|
+
sparse matrices, compact attention/Transformer encoder blocks, quantization
|
|
34
|
+
calibration, CPU DLPack import, and ONNX Runtime provider diagnostics.
|
|
29
35
|
It is eager-first, intentionally compact, and not a replacement for mature ML
|
|
30
36
|
frameworks.
|
|
31
37
|
|
|
@@ -44,10 +50,12 @@ python -m pip install -U pip
|
|
|
44
50
|
python -m pip install -e ".[dev]"
|
|
45
51
|
```
|
|
46
52
|
|
|
47
|
-
Install optional extras for ONNX export
|
|
53
|
+
Install optional extras for ONNX export, optional ONNX Runtime delegation, and
|
|
54
|
+
Pillow-backed image inputs:
|
|
48
55
|
|
|
49
56
|
```bash
|
|
50
57
|
python -m pip install "tensorstudio[onnx,vision]"
|
|
58
|
+
python -m pip install "tensorstudio[onnxruntime]"
|
|
51
59
|
```
|
|
52
60
|
|
|
53
61
|
Build source and wheel distributions:
|
|
@@ -261,7 +269,7 @@ classification workflows: Pillow-backed image IO, transform pipelines,
|
|
|
261
269
|
deterministic augmentations, `ImageFolder` datasets, metrics, image grids,
|
|
262
270
|
bounding-box drawing, and compact CNN classifiers running through native
|
|
263
271
|
Conv2d/pooling kernels.
|
|
264
|
-
The
|
|
272
|
+
The current vision surface includes batch-aware transforms, color jitter, random
|
|
265
273
|
resized crop, rotation, affine transforms, cutout, mixup, CutMix, detection
|
|
266
274
|
helpers, segmentation mask helpers, detection/segmentation folder datasets,
|
|
267
275
|
ResNet-style blocks, MobileNet-style depthwise blocks, a compact UNet, and
|
|
@@ -408,6 +416,61 @@ loaded = ts.load_graph("model.tsgraph.json")
|
|
|
408
416
|
print(loaded.run(x).item())
|
|
409
417
|
```
|
|
410
418
|
|
|
419
|
+
## Ecosystem Utilities
|
|
420
|
+
|
|
421
|
+
TensorStudio `2.0.0` expands the late-roadmap ecosystem layer without
|
|
422
|
+
pretending to be a production-scale distributed or accelerator runtime.
|
|
423
|
+
|
|
424
|
+
```python
|
|
425
|
+
import tensorstudio as ts
|
|
426
|
+
from tensorstudio import nn
|
|
427
|
+
|
|
428
|
+
sparse = ts.sparse_coo_tensor([[0, 1], [1, 0]], [2.0, 3.0], (2, 2))
|
|
429
|
+
print(sparse.to_dense().tolist())
|
|
430
|
+
print((sparse @ ts.ones((2, 1))).tolist())
|
|
431
|
+
|
|
432
|
+
model = ts.create_model("tiny_mlp", input_dim=2, hidden_dim=4, output_dim=1)
|
|
433
|
+
print(ts.model_info("tiny_mlp")["task"], model(ts.ones((1, 2))).shape)
|
|
434
|
+
|
|
435
|
+
vocab = nn.Vocabulary.build(["small tensor models", "small language batch"])
|
|
436
|
+
inputs, targets = nn.make_causal_lm_batch(vocab.encode("small tensor models"), 2)
|
|
437
|
+
lm = nn.CausalLanguageModel(vocab_size=len(vocab), embedding_dim=4, max_length=4)
|
|
438
|
+
print(nn.causal_language_model_loss(lm(inputs), targets).item())
|
|
439
|
+
|
|
440
|
+
quantized = ts.quantization.quantize_tensor(ts.tensor([-1.0, 0.0, 1.0]))
|
|
441
|
+
print(quantized.dequantize().tolist())
|
|
442
|
+
|
|
443
|
+
ts.register_kernel("double", lambda x: x * 2.0, overwrite=True)
|
|
444
|
+
print(ts.call_kernel("double", ts.ones((2,))).tolist())
|
|
445
|
+
ts.unregister_kernel("double")
|
|
446
|
+
|
|
447
|
+
print(ts.distributed.data_parallel_plan(dataset_size=10, batch_size=4))
|
|
448
|
+
```
|
|
449
|
+
|
|
450
|
+
```python
|
|
451
|
+
manifest = ts.data.build_dataset_manifest("data")
|
|
452
|
+
print(manifest.validate())
|
|
453
|
+
|
|
454
|
+
csr = ts.csr_from_dense(ts.tensor([[0.0, 2.0], [3.0, 0.0]]))
|
|
455
|
+
print((csr @ ts.ones((2, 1))).tolist())
|
|
456
|
+
|
|
457
|
+
attention = nn.MultiHeadSelfAttention(embed_dim=4, num_heads=2)
|
|
458
|
+
print(attention(ts.randn((1, 3, 4), seed=7), causal=True).shape)
|
|
459
|
+
|
|
460
|
+
stats = ts.quantization.calibrate_tensor(ts.tensor([-1.0, 0.0, 2.0]))
|
|
461
|
+
print(stats.to_dict())
|
|
462
|
+
```
|
|
463
|
+
|
|
464
|
+
For ONNX files, TensorStudio has two paths:
|
|
465
|
+
|
|
466
|
+
- `ts.import_onnx()` imports and executes a constrained static subset through
|
|
467
|
+
TensorStudio tensor ops.
|
|
468
|
+
- `ts.run_onnx()` can delegate to the optional `onnxruntime` package when
|
|
469
|
+
installed with `tensorstudio[onnxruntime]`; otherwise it can fall back to the
|
|
470
|
+
supported TensorStudio importer for compatible graphs.
|
|
471
|
+
- `ts.check_onnxruntime_compatibility()` and
|
|
472
|
+
`ts.onnxruntime_available_providers()` report runtime/provider availability.
|
|
473
|
+
|
|
411
474
|
## Performance
|
|
412
475
|
|
|
413
476
|
TensorStudio is optimized for small-to-medium CPU eager workloads, but
|
|
@@ -438,11 +501,11 @@ Run the loose local regression thresholds with:
|
|
|
438
501
|
python benchmark_all.py --check-thresholds
|
|
439
502
|
```
|
|
440
503
|
|
|
441
|
-
On one Windows CPython 3.10 development run reporting `
|
|
504
|
+
On one Windows CPython 3.10 development run reporting `2.0.0`, with
|
|
442
505
|
TensorStudio threads enabled, storage pooling enabled, SSE2 autovectorization
|
|
443
|
-
reported, and no BLAS provider found, TensorStudio beat NumPy on
|
|
444
|
-
benchmark cases and lost on
|
|
445
|
-
available on that machine; TensorStudio won
|
|
506
|
+
reported, and no BLAS provider found, TensorStudio beat NumPy on 7 local
|
|
507
|
+
benchmark cases and lost on 96 NumPy-comparable cases. JAX CPU dispatch was
|
|
508
|
+
available on that machine; TensorStudio won 45 local cases and lost 53. The
|
|
446
509
|
strongest local wins were the simple NumPy convolution/pooling reference loops
|
|
447
510
|
and some small JAX-dispatch-heavy eager cases. NumPy and JAX were faster for
|
|
448
511
|
many elementwise, reduction, matrix multiplication, larger activation, and
|
|
@@ -454,15 +517,15 @@ Snapshot from that local run:
|
|
|
454
517
|
|
|
455
518
|
| operation | shape | TensorStudio | NumPy | JAX CPU dispatch | TS vs NumPy | TS vs JAX |
|
|
456
519
|
|---|---:|---:|---:|---:|---:|---:|
|
|
457
|
-
| `sigmoid` | `(32,)` | 0.
|
|
458
|
-
| `mean` | `(32,)` | 0.
|
|
459
|
-
| `sum_axis1` | `(16, 16)` | 0.
|
|
460
|
-
| `chain_relu` | `(128,)` | 0.
|
|
461
|
-
| `matmul` | `(256, 256)` |
|
|
462
|
-
| `conv2d_3x3_padding1` | `(1, 1, 8, 8)` | 0.
|
|
463
|
-
| `max_pool2d_2x2` | `(1, 1, 16, 16)` | 0.
|
|
464
|
-
| `avg_pool2d_2x2` | `(1, 1, 16, 16)` | 0.
|
|
465
|
-
| `elementwise_backward` | `(1024,)` |
|
|
520
|
+
| `sigmoid` | `(32,)` | 0.0221 ms | 0.0068 ms | 0.1092 ms | 0.3106x | 4.9529x |
|
|
521
|
+
| `mean` | `(32,)` | 0.0256 ms | 0.0129 ms | 0.0210 ms | 0.5052x | 0.8221x |
|
|
522
|
+
| `sum_axis1` | `(16, 16)` | 0.0290 ms | 0.0034 ms | 0.0187 ms | 0.1170x | 0.6453x |
|
|
523
|
+
| `chain_relu` | `(128,)` | 0.1596 ms | 0.0099 ms | 0.1898 ms | 0.0621x | 1.1892x |
|
|
524
|
+
| `matmul` | `(256, 256)` | 3.6061 ms | 0.5097 ms | 0.3583 ms | 0.1413x | 0.0994x |
|
|
525
|
+
| `conv2d_3x3_padding1` | `(1, 1, 8, 8)` | 0.2448 ms | 1.9636 ms | 0.1606 ms | 8.0224x | 0.6561x |
|
|
526
|
+
| `max_pool2d_2x2` | `(1, 1, 16, 16)` | 0.0392 ms | 0.3468 ms | n/a | 8.8440x | n/a |
|
|
527
|
+
| `avg_pool2d_2x2` | `(1, 1, 16, 16)` | 0.0460 ms | 1.0295 ms | n/a | 22.4030x | n/a |
|
|
528
|
+
| `elementwise_backward` | `(1024,)` | 4.1790 ms | n/a | n/a | n/a | n/a |
|
|
466
529
|
|
|
467
530
|
Speedup is `competitor median / TensorStudio median`, so values above `1.0x`
|
|
468
531
|
favor TensorStudio.
|
|
@@ -585,16 +648,21 @@ tokens or print secrets.
|
|
|
585
648
|
- Optional BLAS-backed matrix multiplication depends on the build environment
|
|
586
649
|
exposing a compatible CBLAS/Accelerate interface; otherwise TensorStudio uses
|
|
587
650
|
a portable C++ fallback.
|
|
588
|
-
- No graph compiler or distributed runtime.
|
|
651
|
+
- No machine-code graph compiler or production distributed runtime.
|
|
652
|
+
TensorStudio includes a constrained eager-backed graph runtime and
|
|
653
|
+
single-process distributed planning helpers.
|
|
589
654
|
- Convolution and pooling support are CPU-only. Native kernels include NCHW
|
|
590
655
|
`conv2d`, grouped/depthwise convolution, `conv_transpose2d`, `max_pool2d`,
|
|
591
656
|
`avg_pool2d`, and embedding lookup; they are not CUDA/cuDNN replacements.
|
|
592
657
|
- Vision covers local image-classification utilities, metrics, visualization,
|
|
593
|
-
|
|
594
|
-
|
|
595
|
-
GPU image kernels
|
|
596
|
-
|
|
597
|
-
|
|
658
|
+
detection/segmentation helpers, compact CNNs, and a compact UNet. It is not
|
|
659
|
+
an OpenCV replacement and does not include pretrained large model zoos,
|
|
660
|
+
end-to-end detection/segmentation trainers, video IO, or GPU image kernels
|
|
661
|
+
yet.
|
|
662
|
+
- ONNX support covers export, metadata inspection, import/execution for a
|
|
663
|
+
limited static subset, and optional delegation to the external ONNX Runtime
|
|
664
|
+
package through `tensorstudio[onnxruntime]`. TensorStudio's native importer is
|
|
665
|
+
not a full ONNX runtime.
|
|
598
666
|
- Reductions support all-element, single-axis, and tuple/list-axis reductions
|
|
599
667
|
for `sum`, `mean`, `max`, and `min`.
|
|
600
668
|
- Arg reductions support all-element flat indices or one axis at a time for
|
|
@@ -614,8 +682,8 @@ tokens or print secrets.
|
|
|
614
682
|
- Graph/JIT mode
|
|
615
683
|
- Broader convolution ops, adaptive/global pooling, and image-model examples
|
|
616
684
|
- Richer dataset utilities
|
|
617
|
-
-
|
|
618
|
-
- Broader ONNX operator coverage
|
|
685
|
+
- Larger model zoo examples and pretrained-weight metadata
|
|
686
|
+
- Broader ONNX operator coverage and optional runtime providers
|
|
619
687
|
- Runtime-dispatched SIMD kernels
|
|
620
688
|
- Better non-BLAS matrix multiplication tiling
|
|
621
689
|
- More threaded backward kernels
|