diff --git a/.github/workflows/collection.yml b/.github/workflows/collection.yml index 7094f41..72e9102 100644 --- a/.github/workflows/collection.yml +++ b/.github/workflows/collection.yml @@ -12,7 +12,8 @@ permissions: jobs: collection: name: Base installation / Python ${{ matrix.python }} - runs-on: ubuntu-latest + # Newer runner images no longer provide the Python 3.9 compatibility target. + runs-on: ubuntu-22.04 strategy: matrix: python: ['3.9', '3.12'] diff --git a/.github/workflows/model-sources.yml b/.github/workflows/model-sources.yml new file mode 100644 index 0000000..a6fa5f3 --- /dev/null +++ b/.github/workflows/model-sources.yml @@ -0,0 +1,132 @@ +name: Real network sources + +on: + pull_request: + branches: [master, main] + paths: ['src/**', 'tests/**', 'configs/**', 'catalogs/**', 'pyproject.toml', '.github/workflows/model-sources.yml'] + push: + branches: [master, main] + paths: ['src/**', 'tests/**', 'configs/**', 'catalogs/**', 'pyproject.toml', '.github/workflows/model-sources.yml'] + workflow_dispatch: + +permissions: + contents: read + +jobs: + source-smoke: + runs-on: ubuntu-latest + timeout-minutes: 20 + steps: + - uses: actions/checkout@v4 + - uses: actions/setup-python@v5 + with: + python-version: '3.12' + - name: Install fixed CPU export environment + run: | + python -m pip install torch==2.9.1 torchvision==0.24.1 --index-url https://download.pytorch.org/whl/cpu + python -m pip install -e '.[networks,test]' -c configs/constraints-networks.txt + python -m pip check + - name: Check all source adapters and PyTorch/ONNX parity + env: + OMP_NUM_THREADS: '1' + OPENBLAS_NUM_THREADS: '1' + MKL_NUM_THREADS: '1' + run: | + python -m pytest tests/unit tests/operators -q --junitxml=.validation/network-tests.xml + infinitensor-test-expand --manifest configs/network-source-smoke.json --data-dir .validation/source-smoke --offline --minimum-real-models 3 --max-size-mb 160 --jobs 1 + - uses: actions/upload-artifact@v4 + if: always() + with: + name: real-network-source-evidence + include-hidden-files: true + path: | + .validation/network-tests.xml + .validation/source-smoke/expansion/inventory.json + .validation/source-smoke/expansion/results.json + .validation/source-smoke/expansion/batches/**/worker-*.log + + diverse-smoke: + runs-on: ubuntu-latest + timeout-minutes: 25 + steps: + - uses: actions/checkout@v4 + - uses: actions/setup-python@v5 + with: + python-version: '3.12' + - name: Install fixed CPU multi-task environment + run: | + python -m pip install torch==2.9.1 torchvision==0.24.1 torchaudio==2.9.1 --index-url https://download.pytorch.org/whl/cpu + python -m pip install -e '.[diverse,test]' -c configs/constraints-diverse.txt + python -m pip check + - name: Validate real multi-task networks and input contracts + env: + OMP_NUM_THREADS: '1' + OPENBLAS_NUM_THREADS: '1' + MKL_NUM_THREADS: '1' + run: | + python -m pytest tests/integration/test_diverse_sources.py -q --junitxml=.validation/diverse-tests.xml + infinitensor-test-expand --manifest configs/diverse-source-smoke.json --data-dir .validation/diverse-smoke --offline --minimum-real-models 6 --max-size-mb 768 --jobs 1 + - uses: actions/upload-artifact@v4 + if: always() + with: + name: diverse-network-source-evidence + include-hidden-files: true + path: | + .validation/diverse-tests.xml + .validation/diverse-smoke/expansion/inventory.json + .validation/diverse-smoke/expansion/results.json + .validation/diverse-smoke/expansion/batches/**/worker-*.log + + paddle-smoke: + runs-on: ubuntu-latest + timeout-minutes: 25 + steps: + - uses: actions/checkout@v4 + - uses: actions/setup-python@v5 + with: + python-version: '3.12' + - name: Install independent CPU Paddle environment + shell: bash + run: | + # onnxoptimizer 0.3.13 has no cp312 wheel and vendors CMake 3.1 policies. + python -m pip install cmake==3.31.10 + # PEP 517 isolation hides the cmake Python module from its wrapper. + export PATH="$(python -c 'import cmake; print(cmake.CMAKE_BIN_DIR)'):$PATH" + cmake --version + if ! python -m pip install -e '.[paddle,test]' -c configs/constraints-paddle.txt 2>&1 | tee paddle-install.log; then + python - <<'PY' + from pathlib import Path + lines = Path('paddle-install.log').read_text().splitlines() + starts = [i for i, line in enumerate(lines) if any(term in line for term in ('CMake Error', 'ModuleNotFoundError', 'Traceback'))] + detail = [line for i in starts[:4] for line in lines[max(0, i-2):i+16]] + text = '\n'.join(detail + lines[-30:]) + text = text.replace('%', '%25').replace('\r', '%0D').replace('\n', '%0A') + print('::error title=Paddle dependency installation failed::' + text) + PY + exit 1 + fi + - name: Check independent Paddle dependencies + run: python -m pip check + - name: Prepare pinned Paddle sources + run: | + infinitensor-test-paddle-setup --directory .validation/paddle-repos + - name: Validate Paddle exports and four real tasks + env: + ITEST_PADDLE_REPOS_DIR: ${{ github.workspace }}/.validation/paddle-repos + OMP_NUM_THREADS: '1' + OPENBLAS_NUM_THREADS: '1' + MKL_NUM_THREADS: '1' + run: | + python -m pytest tests/integration/test_paddle_exports.py -q --junitxml=.validation/paddle-tests.xml + infinitensor-test-expand --manifest configs/paddle-source-smoke.json --data-dir .validation/paddle-smoke --offline --minimum-real-models 4 --max-size-mb 768 --jobs 2 --timeout 300 + - uses: actions/upload-artifact@v4 + if: always() + with: + name: paddle-network-source-evidence + include-hidden-files: true + path: | + paddle-install.log + .validation/paddle-tests.xml + .validation/paddle-smoke/expansion/inventory.json + .validation/paddle-smoke/expansion/results.json + .validation/paddle-smoke/expansion/batches/**/worker-*.log diff --git a/.gitignore b/.gitignore index 5b9a482..8a20ca8 100644 --- a/.gitignore +++ b/.gitignore @@ -18,6 +18,7 @@ htmlcov/ venv/ env/ .venv/ +.venv-networks/ # IDE .idea/ @@ -31,6 +32,10 @@ data/models/ data/cache/ data/results/ data/reports/ +data/real-networks/ +data/paddle-repos/ +data/paddle-networks/ +.venv-paddle/ *.log # Model files (NEVER commit) diff --git a/README.md b/README.md index c32c37c..3a5e512 100644 --- a/README.md +++ b/README.md @@ -1,5 +1,12 @@ # InfiniTensor-Test +The [general corpus](catalogs/real-networks.json) and [Paddle corpus](catalogs/paddle-networks.json) +contain **1,422 deduplicated network configurations across 21 tasks** (1,409 + 13), +including OCR, table structure, image matting, text, audio, video and optical flow, +validated with ONNX checks, ONNX Runtime and all-output PyTorch/ONNX comparison. +The 548 synthetic positives and 18 negatives are counted separately. See +[multi-task sources](docs/task-expansion.md) and [Paddle sources and replay commands](docs/paddle-models.md). + This change combines lazy sources, reproducible package collection and model validity repairs: 548 synthetic positives must pass ONNX checks and CPU reference execution; 18 declared negatives must be rejected for their specified reasons. diff --git a/README.zh-CN.md b/README.zh-CN.md index f954d47..24910c2 100644 --- a/README.zh-CN.md +++ b/README.zh-CN.md @@ -1,5 +1,10 @@ # InfiniTensor-Test +[通用清单](catalogs/real-networks.json)与[飞桨清单](catalogs/paddle-networks.json)合计 +**1422 个去重网络配置、21 种任务**(1409 + 13),新增 OCR、表格结构、图像抠图等任务, +全部通过 ONNX 检查、参考执行及原始框架/ONNX 全部输出比较。原有 548 个合成正例与 18 个负例另计。 +安装与复验见[多任务网络说明](docs/task-expansion.md)和[飞桨模型接入说明](docs/paddle-models.md)。 + 本分支合并采集基础与模型有效性修复:来源按需加载、确定性完整包缓存, 以及 548 个合成正例的 ONNX 检查和 CPU 参考执行、18 个明确负例的按原因拒绝验证。 请先阅读[能力提升及复验命令](docs/pr-t01-collection.md)与[PR 审查说明](docs/pr-t01-review.md)。 diff --git a/catalogs/diverse-networks.json b/catalogs/diverse-networks.json new file mode 100644 index 0000000..24fc380 --- /dev/null +++ b/catalogs/diverse-networks.json @@ -0,0 +1,101 @@ +{ + "schema_version": 1, + "description": "Unique named real network configurations with random weights; synthetic fixtures excluded.", + "seed": 42, + "max_size_mb": 768, + "minimum_real_models": 62, + "libraries": { + "torch": "2.9.1+cpu", + "torchvision": "0.24.1+cpu", + "numpy": "1.26.4", + "onnx": "1.17.0", + "onnxruntime": "1.20.1", + "timm": "1.0.22", + "pytorchcv": "0.0.74", + "segmentation-models-pytorch": "0.5.0", + "torchaudio": "2.9.1+cpu", + "torchsr": "1.0.4", + "transformers": "4.57.1", + "huggingface-hub": "0.36.2", + "tokenizers": "0.22.2" + }, + "required_tasks": [ + "audio_separation", + "depth_estimation", + "detection", + "language_modeling", + "optical_flow", + "question_answering", + "speech_recognition", + "super_resolution", + "text_classification", + "text_generation", + "time_series_forecasting", + "token_classification", + "video_classification" + ], + "models": [ + {"source":"torchsr","name":"carn_m_x2","architecture":"carn_m_x2","task":"super_resolution","input_shape":[1,3,32,32],"architecture_sha256":"0aed758dad7b777a09ec5c40b78114ded8e09e3a7a5fa3325cc96f48aa2107c3","inputs_sha256":"ccbb3620e155afa12ae605b6d5d58fb5a1f0b8698a10ac5a84ee114f65998f46","max_size_mb":768}, + {"source":"torchsr","name":"carn_m_x3","architecture":"carn_m_x3","task":"super_resolution","input_shape":[1,3,32,32],"architecture_sha256":"e1f968271e6759ef7ab2ee3bd963dfb7e749b7f3b26485e763e0641647e2e3d1","inputs_sha256":"a6df57d1111830328ea62bdca9e84c171faae6be99c1e991eba452e4cba90469","max_size_mb":768}, + {"source":"torchsr","name":"carn_m_x4","architecture":"carn_m_x4","task":"super_resolution","input_shape":[1,3,32,32],"architecture_sha256":"4825bf001ec62f650121d29c19e1a0d28f66e9ba341e6948615a8144a7a6a8e0","inputs_sha256":"815c88e862a30ab9d57c86d2bd6c7a22cd443bbbc3cee87f805fd852a6a0d09a","max_size_mb":768}, + {"source":"torchsr","name":"carn_x2","architecture":"carn_x2","task":"super_resolution","input_shape":[1,3,32,32],"architecture_sha256":"a2705bb7394625d3905b8edbad56ba6d95966a3ecf3199f9d1b33d001312c2b7","inputs_sha256":"3aa94bba0e519687d78b89971a5bb08279d0d550733f13a54b3b82841f26b9fa","max_size_mb":768}, + {"source":"torchsr","name":"carn_x3","architecture":"carn_x3","task":"super_resolution","input_shape":[1,3,32,32],"architecture_sha256":"8f9c013eecf99c5cd134ec22a50da0ce6ec97894ed0fcf41cd75b1937a3c8aaa","inputs_sha256":"01f6d058a7037a4666431face72e490b4f836b312896f9e228c9aab2a15af6f2","max_size_mb":768}, + {"source":"torchsr","name":"carn_x4","architecture":"carn_x4","task":"super_resolution","input_shape":[1,3,32,32],"architecture_sha256":"628f797f029adac4abf6f270058e2d16031234e56320f3becc81799a504bbc38","inputs_sha256":"50dbde6b3de84c8117ea4c6dfd483a2d5ffbd1ea3b121a3d435027f90878d8e5","max_size_mb":768}, + {"source":"torchsr","name":"edsr_baseline_x2","architecture":"edsr_baseline_x2","task":"super_resolution","input_shape":[1,3,32,32],"architecture_sha256":"bf2d04c9dd146aa628c5ba4cf3ca81b57aff2e500c84e23c1a7b4016167e2198","inputs_sha256":"2f410e33633a40cea31bb9a62bd23ede76d723720fc9a91238d77c53ac86949b","max_size_mb":768}, + {"source":"torchsr","name":"edsr_baseline_x3","architecture":"edsr_baseline_x3","task":"super_resolution","input_shape":[1,3,32,32],"architecture_sha256":"bddbdc579eab744e09414534641965f0646db11ce28e44d51a33c6efdeb98d8e","inputs_sha256":"1a414803709582e244dc02327c7c5058956801566dc8ddd9ece8cfcbcd272a54","max_size_mb":768}, + {"source":"torchsr","name":"ninasr_b0_x2","architecture":"ninasr_b0_x2","task":"super_resolution","input_shape":[1,3,32,32],"architecture_sha256":"73897c1eb5bbf685d552e77ca9f80c5ebb019d1099556237d1ca853086dd44c5","inputs_sha256":"09182684dd797c2ae831ca8fcb14996853e35d76c7e7f03cb386899265536300","max_size_mb":768}, + {"source":"torchsr","name":"ninasr_b0_x3","architecture":"ninasr_b0_x3","task":"super_resolution","input_shape":[1,3,32,32],"architecture_sha256":"ba41fd8b4c720900689091eac00d8dcfcd31d032b6a81f67afbefc5b8f78d964","inputs_sha256":"b60ac62716947b918ce189bc28d9a73681beda8bbb1126a382e6fa1f8b317d7c","max_size_mb":768}, + {"source":"torchsr","name":"ninasr_b0_x4","architecture":"ninasr_b0_x4","task":"super_resolution","input_shape":[1,3,32,32],"architecture_sha256":"cc2c6b774adf3a1edd5d062700e0d191411a41dac72f8d0c4b08cc2929e083a6","inputs_sha256":"fe4b6bec27be1e45c20fce05650eeb6120fd4fed15bce6b99b073aaff9276afb","max_size_mb":768}, + {"source":"torchsr","name":"ninasr_b1_x2","architecture":"ninasr_b1_x2","task":"super_resolution","input_shape":[1,3,32,32],"architecture_sha256":"1f3add33aa4786932747e2b788788b2ee87b07adc4af45e4890bc8916675e621","inputs_sha256":"55af2e4e6c4ad6805074429958beed26f6228d327e8d9a6c172a5ecf1627ded9","max_size_mb":768}, + {"source":"torchsr","name":"ninasr_b1_x3","architecture":"ninasr_b1_x3","task":"super_resolution","input_shape":[1,3,32,32],"architecture_sha256":"22eab6ec2d01b3686c674f874cd7ec4ced23e5867b4b6f0c6bea34829e75b492","inputs_sha256":"0cd52b5dbc0e935e3e30de838e507671f2887b558d9ea05401ffd2bb7bd001d2","max_size_mb":768}, + {"source":"torchsr","name":"ninasr_b1_x4","architecture":"ninasr_b1_x4","task":"super_resolution","input_shape":[1,3,32,32],"architecture_sha256":"8a425a5ecacca5fa063cd06e8ee63a4c345ce0ef9336f714fc30de5310aa51d8","inputs_sha256":"4f7b17a1dfcb51cde88012755e63df538ce8510209f9d7b67a3846671c4f94ea","max_size_mb":768}, + {"source":"torchsr","name":"ninasr_b2_x2","architecture":"ninasr_b2_x2","task":"super_resolution","input_shape":[1,3,32,32],"architecture_sha256":"35e62cb3179e659e84a1aab97cff85f9179c022cb960b49ef4fb5f9be6f416da","inputs_sha256":"1cce4f04ce49b97e1f862e940a00e00a60b0b7fffddf52ece36a88eaf1aa0ece","max_size_mb":768}, + {"source":"torchsr","name":"ninasr_b2_x3","architecture":"ninasr_b2_x3","task":"super_resolution","input_shape":[1,3,32,32],"architecture_sha256":"f32e60d483be5b6eff0683dca24f69d7a4c1c46984ac3b668a610fa24c4cb56e","inputs_sha256":"78aa55897c38cbad9420376eff9d3c46961386c9fc6e79c15f3d6adfe215a354","max_size_mb":768}, + {"source":"torchsr","name":"rdn_x2","architecture":"rdn_x2","task":"super_resolution","input_shape":[1,3,32,32],"architecture_sha256":"56edb38f626f547cf1164196a43f80e0cac822248c9f272529315aee950c5800","inputs_sha256":"d3644dbcd319eaea7b955def6ac25e1bd73cf94e8d5ff2b4917cbcfec803317d","max_size_mb":768}, + {"source":"torchsr","name":"rdn_x3","architecture":"rdn_x3","task":"super_resolution","input_shape":[1,3,32,32],"architecture_sha256":"e4ca2d958c683c1649e1e61ed6bb5a9a4474232a460ace1cf8a8274716b07f17","inputs_sha256":"96ae3d9c2c7f7bf46d35bd8acdde59bb0089f1626334dbb9c4e0cab6ae4a877c","max_size_mb":768}, + {"source":"torchsr","name":"rdn_x4","architecture":"rdn_x4","task":"super_resolution","input_shape":[1,3,32,32],"architecture_sha256":"df66901481e92b7fe5f71b96d34503de9cb1a1e201c4aa8636d38fa87e773167","inputs_sha256":"3fec9989d9f314e57bfbc101322330b96b36bcfb88dcac559e5f954df276baf0","max_size_mb":768}, + {"source":"torchaudio","name":"conv_tasnet","architecture":"conv_tasnet","task":"audio_separation","input_shape":[1,1,1024],"architecture_sha256":"be5e3eceb4312ae382c907e20747a5244d56af96594af9116103fc5f94a93c90","inputs_sha256":"28d45a862bd8ab094176e57f1318bf17db60179c3df8fce5514fd2b7ee51db0f","max_size_mb":768}, + {"source":"torchsr","name":"edsr_baseline_x4","architecture":"edsr_baseline_x4","task":"super_resolution","input_shape":[1,3,32,32],"architecture_sha256":"c445f05f2f2cfca6a1dd89e8ecc45105cb6f37ba39cb802e042a4ea7395c2b08","inputs_sha256":"d36c36fe886dcd0e091e4ffbe7f18e633edcc19ded355fd92e3c4aba7324ee6f","max_size_mb":768}, + {"source":"torchsr","name":"edsr_x2","architecture":"edsr_x2","task":"super_resolution","input_shape":[1,3,32,32],"architecture_sha256":"5b6d66d18ffbb0f333bc07e1d57148c9bf589c623ce223a85499f024a27f53dd","inputs_sha256":"b53f8f258ee2f209889d56dca43d0ad4e04f3f898586dfd9fa70d8d2609dcfb8","max_size_mb":768}, + {"source":"torchsr","name":"edsr_x3","architecture":"edsr_x3","task":"super_resolution","input_shape":[1,3,32,32],"architecture_sha256":"ed01e267939626f8790301e7ab2488e6303baebd1b469495b1569e6d649e076e","inputs_sha256":"066c9a0004f8a11269448e5a9ded53706c1601c2768628931f53c4f363e6dc73","max_size_mb":768}, + {"source":"torchsr","name":"edsr_x4","architecture":"edsr_x4","task":"super_resolution","input_shape":[1,3,32,32],"architecture_sha256":"ad9acf55e4058027ac6dcf6c7f138a293ee783196c9b54f1171ab7e8684af1db","inputs_sha256":"07bf4763903df7279eefb0d93080bc4edad6fd61bb5672c51e85e4d957f1f2ea","max_size_mb":768}, + {"source":"torchaudio","name":"deepspeech","architecture":"deepspeech","task":"speech_recognition","input_shape":[1,1,32,64],"architecture_sha256":"02f601c9ef3b91311aee40ea9aec1804ef9e19f93bfd6ac77cb3b287618c7e85","inputs_sha256":"e67634bd9511c7b8f5cf32fce40e5618bf9f0706fc53aa0270153059c50e5f96","max_size_mb":768}, + {"source":"torchaudio","name":"wav2letter","architecture":"wav2letter","task":"speech_recognition","input_shape":[1,1,8000],"architecture_sha256":"ac97a22f281919847d16c677041a70074e85d94bf4780ba2f1382cf4e7eb74cb","inputs_sha256":"f915e2dbcfb94c44ddb8e624b499d820835dde2aeadfd538c746f216ee379e3a","max_size_mb":768}, + {"source":"transformers","name":"albert_base_v2_masked_lm","architecture":"albert_base_v2_masked_lm","task":"language_modeling","input_shape":[1,16],"architecture_sha256":"10b51d255c75b77c128a604371c127acc90f345da39fcebdd4bffb63c17b3ec4","inputs_sha256":"7efc05494ea834b84b767cc0f729ccaef6db105819492f05540fa63136f93ac3","max_size_mb":768}, + {"source":"transformers","name":"albert_base_v2_question_answering","architecture":"albert_base_v2_question_answering","task":"question_answering","input_shape":[1,16],"architecture_sha256":"2c4c45506efeb3ab3092eab10ada5d2a94b22ac7ba73328acc98364e8e471b4d","inputs_sha256":"7efc05494ea834b84b767cc0f729ccaef6db105819492f05540fa63136f93ac3","max_size_mb":768}, + {"source":"torchsr","name":"ninasr_b2_x4","architecture":"ninasr_b2_x4","task":"super_resolution","input_shape":[1,3,32,32],"architecture_sha256":"5d1610af1bed29e38e310687813598cc171e5097d8d5390fce42f957ac549974","inputs_sha256":"7143653da206fdd99deb115696d71ba36b06eeed7cc45a40403da2282ad7c648","max_size_mb":768}, + {"source":"torchsr","name":"rcan_x2","architecture":"rcan_x2","task":"super_resolution","input_shape":[1,3,32,32],"architecture_sha256":"ca7264ad23aa7aab1d45fea9a9c96ab1aa742a74f10f1ec3a1c3ef9749bcf26c","inputs_sha256":"24b1c900c148499b7921fa58f456b83c9727fde103c8bf35bea8167229842daa","max_size_mb":768}, + {"source":"torchsr","name":"rcan_x3","architecture":"rcan_x3","task":"super_resolution","input_shape":[1,3,32,32],"architecture_sha256":"7fbdd0e7250da99773a3c0b6d003457acc1969ff520a4ef2e3d457430004f3c5","inputs_sha256":"c9e5706ad12dc303920b3d11c0adfb48ceebbd44585ad8eeb4e348c87dad4396","max_size_mb":768}, + {"source":"torchsr","name":"rcan_x4","architecture":"rcan_x4","task":"super_resolution","input_shape":[1,3,32,32],"architecture_sha256":"8465ef12d3cc0e13b1042b80ef0830a467c7904973278037aa0491e40b555b9b","inputs_sha256":"55d53ee35a9c5ec827d7446091adfb6e522c9fc74271f5b5344188bc4b587107","max_size_mb":768}, + {"source":"transformers","name":"electra_sequence_classification","architecture":"electra_sequence_classification","task":"text_classification","input_shape":[1,16],"architecture_sha256":"87b8103c5276655004f4d25be680ec842ae67decf7c055659b4840ddf0251ca0","inputs_sha256":"7efc05494ea834b84b767cc0f729ccaef6db105819492f05540fa63136f93ac3","max_size_mb":768}, + {"source":"transformers","name":"electra_token_classification","architecture":"electra_token_classification","task":"token_classification","input_shape":[1,16],"architecture_sha256":"e739dd72af94544909c379c3ce5d936df7ead91d7eeba793a1145ff71a5931a1","inputs_sha256":"7efc05494ea834b84b767cc0f729ccaef6db105819492f05540fa63136f93ac3","max_size_mb":768}, + {"source":"transformers","name":"gpt2_causal_lm","architecture":"gpt2_causal_lm","task":"language_modeling","input_shape":[1,16],"architecture_sha256":"d2e698e30a58e59efaf6e07c647720837c5b24e40517cd846a267cb52ff1197a","inputs_sha256":"7736768fe1002cb41f73bf902d379a590f7120850b458733fa26fd050164f776","max_size_mb":768}, + {"source":"transformers","name":"albert_base_v2_sequence_classification","architecture":"albert_base_v2_sequence_classification","task":"text_classification","input_shape":[1,16],"architecture_sha256":"244b2231ceb8bad5fada0880fa883c1aab645c26565f2f8c832176de99c8b0cb","inputs_sha256":"7efc05494ea834b84b767cc0f729ccaef6db105819492f05540fa63136f93ac3","max_size_mb":768}, + {"source":"transformers","name":"albert_base_v2_token_classification","architecture":"albert_base_v2_token_classification","task":"token_classification","input_shape":[1,16],"architecture_sha256":"fca05e8c349c8edda2fb19e38e0e1b8c0ec635a4f294d392464c5126886f12db","inputs_sha256":"7efc05494ea834b84b767cc0f729ccaef6db105819492f05540fa63136f93ac3","max_size_mb":768}, + {"source":"transformers","name":"bert_masked_lm","architecture":"bert_masked_lm","task":"language_modeling","input_shape":[1,16],"architecture_sha256":"6f671c91b8acf7231dc7123f133a7d31d19bd29d4fdfa732efbdc3244663a12e","inputs_sha256":"7efc05494ea834b84b767cc0f729ccaef6db105819492f05540fa63136f93ac3","max_size_mb":768}, + {"source":"transformers","name":"bert_question_answering","architecture":"bert_question_answering","task":"question_answering","input_shape":[1,16],"architecture_sha256":"4b42f707e42ea999211597c34a6f4e37a4427d5afe562914f04072440013233d","inputs_sha256":"7efc05494ea834b84b767cc0f729ccaef6db105819492f05540fa63136f93ac3","max_size_mb":768}, + {"source":"transformers","name":"distilbert_sequence_classification","architecture":"distilbert_sequence_classification","task":"text_classification","input_shape":[1,16],"architecture_sha256":"18164afa59904bbfa795a73f62bfd9256bd7ca5c8778e1e0bda968a7c00722bd","inputs_sha256":"e49318df2b78ec437ce4f64723479127855c96177b091833d21a608b536cb147","max_size_mb":768}, + {"source":"transformers","name":"distilbert_token_classification","architecture":"distilbert_token_classification","task":"token_classification","input_shape":[1,16],"architecture_sha256":"bb9dee9381a241070690f4692e7e319d6ee14a651fb69472965a2ecd272eb2d0","inputs_sha256":"e49318df2b78ec437ce4f64723479127855c96177b091833d21a608b536cb147","max_size_mb":768}, + {"source":"transformers","name":"electra_masked_lm","architecture":"electra_masked_lm","task":"language_modeling","input_shape":[1,16],"architecture_sha256":"b9e1ce9fb36432fea1e1e36194cf16f89bc5f475dfcf01026144a6c4d539f4ed","inputs_sha256":"7efc05494ea834b84b767cc0f729ccaef6db105819492f05540fa63136f93ac3","max_size_mb":768}, + {"source":"transformers","name":"electra_question_answering","architecture":"electra_question_answering","task":"question_answering","input_shape":[1,16],"architecture_sha256":"d2adc1b61de00a6fee28db1e950aca69775a2f6ee0b59a9f18f77f2a7092e637","inputs_sha256":"7efc05494ea834b84b767cc0f729ccaef6db105819492f05540fa63136f93ac3","max_size_mb":768}, + {"source":"transformers","name":"bert_sequence_classification","architecture":"bert_sequence_classification","task":"text_classification","input_shape":[1,16],"architecture_sha256":"d179b02b0d1fd7df2c3fd5a53a8e6041e441f92a28f425437f303a09edf6b12c","inputs_sha256":"7efc05494ea834b84b767cc0f729ccaef6db105819492f05540fa63136f93ac3","max_size_mb":768}, + {"source":"transformers","name":"bert_token_classification","architecture":"bert_token_classification","task":"token_classification","input_shape":[1,16],"architecture_sha256":"70da6bdd0adc8222d495f287f77122eb53fac839b38e007c4274487b1859dcca","inputs_sha256":"7efc05494ea834b84b767cc0f729ccaef6db105819492f05540fa63136f93ac3","max_size_mb":768}, + {"source":"transformers","name":"distilbert_masked_lm","architecture":"distilbert_masked_lm","task":"language_modeling","input_shape":[1,16],"architecture_sha256":"09a05d79ad9fb7f0514d609f8d4b9b661a4036b548eccc6122d3697d69c4b4ff","inputs_sha256":"e49318df2b78ec437ce4f64723479127855c96177b091833d21a608b536cb147","max_size_mb":768}, + {"source":"transformers","name":"distilbert_question_answering","architecture":"distilbert_question_answering","task":"question_answering","input_shape":[1,16],"architecture_sha256":"879c53704ef24eb2ad1c3af2cf4bae71601c06c43a82e893602ad6e7712bbc6b","inputs_sha256":"e49318df2b78ec437ce4f64723479127855c96177b091833d21a608b536cb147","max_size_mb":768}, + {"source":"torchvision_tasks","name":"r2plus1d_18","architecture":"r2plus1d_18","task":"video_classification","input_shape":[1,3,8,112,112],"architecture_sha256":"723fc6070a1264a96a4487a4a807ae07d8fe5cdd8759b05f94e91c2dbdc6ef99","inputs_sha256":"abe0f073f3bb17fb390e21a484016d77d3b7d6691d8353a32a3b8362f089e57f","max_size_mb":768}, + {"source":"torchvision_tasks","name":"r3d_18","architecture":"r3d_18","task":"video_classification","input_shape":[1,3,8,112,112],"architecture_sha256":"5fadd6780b56de0fe08c4b946baf1f82dd4a609eb7c74c9274defada6f63c984","inputs_sha256":"430c5dc98b59446ae6f4e975688fe3a2d40fc4c0f5864764bdd1e3f57370a383","max_size_mb":768}, + {"source":"torchvision_tasks","name":"raft_large","architecture":"raft_large","task":"optical_flow","input_shape":[1,3,128,128],"architecture_sha256":"fca4254c16404860f8d9c986e4dd64c524ba9ce0121b75f55809f8576df9857b","inputs_sha256":"69e712fc9bec81f96b2ca6f26351959861e50ec2ca81f4788d2490baad85c8b3","max_size_mb":768}, + {"source":"transformers","name":"t5_small","architecture":"t5_small","task":"text_generation","input_shape":[1,16],"architecture_sha256":"87a5c2fdb8eed014204d0a8766566383a1a889468138afa3abb38207e5d5dd09","inputs_sha256":"6960013fe78aaf66302c59013547afaafae7ad7e240a9865d5fa2f6f30ba081c","max_size_mb":768}, + {"source":"torchvision_tasks","name":"fasterrcnn_mobilenet_v3_large_320_fpn","architecture":"fasterrcnn_mobilenet_v3_large_320_fpn","task":"detection","input_shape":[1,3,320,320],"architecture_sha256":"abc44e92694814b8e0592d92490ca91254d0d0f979fd94c7b153605732073745","inputs_sha256":"0aa3cd22f9a2aebc97347a7698167e1580b46d4d23de277b1b4e12495ea1a57e","max_size_mb":768}, + {"source":"torchvision_tasks","name":"fasterrcnn_resnet50_fpn","architecture":"fasterrcnn_resnet50_fpn","task":"detection","input_shape":[1,3,320,320],"architecture_sha256":"696e58fa9026e7fc4e95136891e0c400c14c7e0de6680c28f8e340e55d16d7ca","inputs_sha256":"6978f751badc8e815f9b9d36370feed803274a2edf35110568d3d814587db014","max_size_mb":768}, + {"source":"torchvision_tasks","name":"raft_small","architecture":"raft_small","task":"optical_flow","input_shape":[1,3,128,128],"architecture_sha256":"4fcda0b436301a9c1d2e3257eada82407060fa4a37facbbc828d27bf4931b581","inputs_sha256":"1f7ae603a12193a42a8e0df7275cf9d2de7888e78d7f11c19c305e7d16172eee","max_size_mb":768}, + {"source":"torchvision_tasks","name":"retinanet_resnet50_fpn","architecture":"retinanet_resnet50_fpn","task":"detection","input_shape":[1,3,320,320],"architecture_sha256":"0c434fb89b88b09d7f72590d106d5c434090f9a5ff8ced2776b7d4a920933bea","inputs_sha256":"08473c64c7dc9a95c108c1678f82afc27f298b4409bb653f1e66b9a55aa00c68","max_size_mb":768}, + {"source":"torchvision_tasks","name":"s3d","architecture":"s3d","task":"video_classification","input_shape":[1,3,32,224,224],"architecture_sha256":"feb443fb57393c2e09550bf2d7dcb87e79d6d0e95931cc06e2c50a697721a365","inputs_sha256":"49f4277e4a07bebef62ec1d11df257d467b917ef02191a5396999c7be0293e8e","max_size_mb":768}, + {"source":"torchvision_tasks","name":"swin3d_t","architecture":"swin3d_t","task":"video_classification","input_shape":[1,3,32,224,224],"architecture_sha256":"7c4d1115fc72561681ca5e5802b237f8865f1f13d2fb3fb4d7481c1f4572a42a","inputs_sha256":"1bcd98676a71da8c7d71207c0a2c3cf0b1be47939d84f978811e2328b4945889","max_size_mb":768}, + {"source":"torchvision_tasks","name":"fcos_resnet50_fpn","architecture":"fcos_resnet50_fpn","task":"detection","input_shape":[1,3,320,320],"architecture_sha256":"49f99892c37627f20ec8b035db1fdd2597b9d24886867d58bd949e7b14ef58da","inputs_sha256":"cc670d2aed424e914d0ae8b7a080d962ca443acaa6392e017b189a3c5f0a8dfc","max_size_mb":768}, + {"source":"torchvision_tasks","name":"mc3_18","architecture":"mc3_18","task":"video_classification","input_shape":[1,3,8,112,112],"architecture_sha256":"87e88e1036c6952aaa8aa882188857cea5416f3caebe9058aaf7c1a2ecccf1a2","inputs_sha256":"ff7a7fd94790c62393e003bbcea674b5db9a3d06c3991ee4349321154b236069","max_size_mb":768}, + {"source":"transformers","name":"detr_object_detection","architecture":"detr_object_detection","task":"detection","input_shape":[1,3,320,320],"architecture_sha256":"328f0b499e1a05350dfcab7f8879889d178acbcd5adc00be18f8641a9dc5b19a","inputs_sha256":"4e9e60bcd9fcf7c1baa4adba62a6784c815c67957e48f964d5f0d03774da20af","max_size_mb":768}, + {"source":"transformers","name":"dpt_depth_estimation","architecture":"dpt_depth_estimation","task":"depth_estimation","input_shape":[1,3,384,384],"architecture_sha256":"d5f43e57be63a2855aec61bd6fb4015d9e2b73224b1103bbaf543e2f0f715ac6","inputs_sha256":"3e584911b2b390989af678838810bfbbad06471796031128bc80597f69008749","max_size_mb":768}, + {"source":"transformers","name":"time_series_transformer_teacher_forced","architecture":"time_series_transformer_teacher_forced","task":"time_series_forecasting","input_shape":[1,31],"architecture_sha256":"0ed04d32098878e076761a733155841e73184b265706c8838a0c0d25bc113779","inputs_sha256":"a34bd912b09730c2c4924ede6a687b58550d6c08b3c256be34c6056f2e7c8b6a","max_size_mb":768} + ] +} diff --git a/catalogs/paddle-networks.json b/catalogs/paddle-networks.json new file mode 100644 index 0000000..7b83c60 --- /dev/null +++ b/catalogs/paddle-networks.json @@ -0,0 +1,237 @@ +{ + "schema_version": 1, + "description": "Complete official Paddle networks with Paddle/ONNX parity; random weights, no checkpoint downloads.", + "seed": 42, + "required_tasks": [ + "image_matting", + "segmentation", + "table_structure_recognition", + "text_detection", + "text_orientation", + "text_recognition" + ], + "upstream_revisions": { + "paddleocr": { + "repository": "PaddleOCR", + "revision": "3f32858ce3fb95ba04a8202000e432bcc50a6016" + }, + "paddleseg": { + "repository": "PaddleSeg", + "revision": "3c4db66de1d9d59d0628ed87590b6308a2f4aa2a" + } + }, + "libraries": { + "paddlepaddle": "3.0.0", + "paddle2onnx": "2.0.1", + "onnxoptimizer": "0.3.13", + "numpy": "1.26.4", + "onnx": "1.17.0", + "onnxruntime": "1.20.1", + "protobuf": "4.25.3", + "setuptools": "78.1.0", + "opencv-python-headless": "4.11.0.86", + "scipy": "1.17.1", + "scikit-learn": "1.7.2", + "pymatting": "1.1.14", + "numba": "0.68.0", + "llvmlite": "0.50.0", + "visualdl": "2.5.3" + }, + "models": [ + { + "source": "paddleocr", + "name": "crnn_mobilenet_v3", + "task": "text_recognition", + "input_shape": [ + 1, + 3, + 32, + 100 + ], + "architecture_sha256": "df91950b4f2463b38e5e0fcb30e1547a6f5fb65465664ad690a4fd763e37b434", + "inputs_sha256": "49e6fa0c620d7a691350a3277eef2fad4a9da16552bee427b2ec1fd3490370ab", + "max_size_mb": 768, + "upstream_config": "configs/rec/rec_mv3_none_bilstm_ctc.yml" + }, + { + "source": "paddleocr", + "name": "db_mobilenet_v3", + "task": "text_detection", + "input_shape": [ + 1, + 3, + 320, + 320 + ], + "architecture_sha256": "3e039b830a8dfd14407ee5146ad1f3ed549e1584287840ffdc42ba0594d85b5d", + "inputs_sha256": "ed0a2424aad955f0bd67114fd7067a9aa6ec9768cc9c8e417219a25b8554e6b4", + "max_size_mb": 768, + "upstream_config": "configs/det/det_mv3_db.yml" + }, + { + "source": "paddleocr", + "name": "crnn_resnet34_vd", + "task": "text_recognition", + "input_shape": [ + 1, + 3, + 32, + 100 + ], + "architecture_sha256": "78bde78d9b575df6f1a5d750d7ac168536c6b92e9f66ab73d777e99307f61b0b", + "inputs_sha256": "c14086bbd7a162ce87bba70eeb7a2e0a7148e0cbcf139c9fa04a12d8de2a1cca", + "max_size_mb": 768, + "upstream_config": "configs/rec/rec_r34_vd_none_bilstm_ctc.yml" + }, + { + "source": "paddleocr", + "name": "db_resnet50_vd", + "task": "text_detection", + "input_shape": [ + 1, + 3, + 320, + 320 + ], + "architecture_sha256": "790c2a29472c5a1a0a90ceea550512178b891a0a999a895153e2ae0037564063", + "inputs_sha256": "7e41d798aab6c6e66340a64ca87ea63e5330ec51662a3f25cce7686d7bec1cde", + "max_size_mb": 768, + "upstream_config": "configs/det/det_r50_vd_db.yml" + }, + { + "source": "paddleocr", + "name": "svtr_tiny", + "task": "text_recognition", + "input_shape": [ + 1, + 3, + 64, + 256 + ], + "architecture_sha256": "0f3067fbe753121905c8358627fe806b62ac9d406bb7b4e1b53c564f1ae7cf85", + "inputs_sha256": "b4be2af670c06a13e6011039982df08ae35c32cc96c12c9d642dc4b98c9a8899", + "max_size_mb": 768, + "upstream_config": "configs/rec/rec_svtrnet.yml" + }, + { + "source": "paddleocr", + "name": "slanet", + "task": "table_structure_recognition", + "input_shape": [ + 1, + 3, + 488, + 488 + ], + "architecture_sha256": "cd4eac49d1e464fb8a6daf85298cd4eca65a05ceb850896ba0d758bcc24ea646", + "inputs_sha256": "7cbcded46b9101af63fcb64b8d35cd358b221610bf0bd576e9497961f8c8b86a", + "max_size_mb": 768, + "upstream_config": "configs/table/SLANet.yml" + }, + { + "source": "paddleocr", + "name": "text_orientation_mobilenet_v3", + "task": "text_orientation", + "input_shape": [ + 1, + 3, + 48, + 192 + ], + "architecture_sha256": "0f6cce046c22bcc6156314bfa485edd308fd37de8e1819a52b3e36a1f8d184b8", + "inputs_sha256": "d962786e0410c2f57c3e66c70b87ec87b91915e8326534f7883fcdcdad5d0005", + "max_size_mb": 768, + "upstream_config": "configs/cls/cls_mv3.yml" + }, + { + "source": "paddleseg", + "name": "bisenet_v2", + "task": "segmentation", + "input_shape": [ + 1, + 3, + 256, + 256 + ], + "architecture_sha256": "c09c9b7b343588ac3d5a2197bf1654f0097534e631272cea18abdf8e2bfd8f89", + "inputs_sha256": "0df027077be16a9d7a457a1885a726b3f7c0c4861b19b2c9cf253ec37c79ca7b", + "max_size_mb": 768, + "upstream_config": "configs/bisenet/bisenet_cityscapes_1024x1024_160k.yml" + }, + { + "source": "paddleocr", + "name": "table_attention_mobilenet_v3", + "task": "table_structure_recognition", + "input_shape": [ + 1, + 3, + 488, + 488 + ], + "architecture_sha256": "ffec20a37bfac04d84d0a5c4fbeba81bc2c717dc893351e7e910f496d6154a77", + "inputs_sha256": "43ff70e291fe37236718597f4cc3c83e628132c6b9d30bb14e488c8445f46f3b", + "max_size_mb": 768, + "upstream_config": "configs/table/table_mv3.yml" + }, + { + "source": "paddleseg", + "name": "pp_liteseg_stdc1", + "task": "segmentation", + "input_shape": [ + 1, + 3, + 256, + 512 + ], + "architecture_sha256": "61601fbba47728821528584b89876e51017945400b6f0857eb4cf7096649a6a8", + "inputs_sha256": "533e56e36f3905b85f0e895b4e6d82e308cdc50bfe97eaec12cdff293b369657", + "max_size_mb": 768, + "upstream_config": "configs/pp_liteseg/pp_liteseg_stdc1_cityscapes_1024x512_scale0.5_160k.yml" + }, + { + "source": "paddleseg", + "name": "modnet_mobilenet_v2", + "task": "image_matting", + "input_shape": [ + 1, + 3, + 512, + 512 + ], + "architecture_sha256": "74a7eede14495c606b1bf3399cd4bd580dce5021e5bd683347d80d45bafb091f", + "inputs_sha256": "aa3a117a3d34d475a7a55109425e967eddad1ba4b92926c9119e2665b8a334ea", + "max_size_mb": 768, + "upstream_config": "Matting/configs/modnet/modnet-mobilenetv2.yml" + }, + { + "source": "paddleseg", + "name": "ppmatting_hrnet18", + "task": "image_matting", + "input_shape": [ + 1, + 3, + 512, + 512 + ], + "architecture_sha256": "4542596ed2cf6375ad4814f8a29ccab85e0685e22b7b06e805b948ff55f8e8c4", + "inputs_sha256": "34e78a5bd8ad9cd1a0072c03e23a5891cbb8841a1f5ba06c41c15fe2aa193931", + "max_size_mb": 768, + "upstream_config": "Matting/configs/ppmatting/ppmatting-hrnet_w18-human_512.yml" + }, + { + "source": "paddleseg", + "name": "modnet_resnet50_vd", + "task": "image_matting", + "input_shape": [ + 1, + 3, + 512, + 512 + ], + "architecture_sha256": "c891b00ae0f103c5ff99fb034e858f669b2756b6e2d67ff35c250097b0654a50", + "inputs_sha256": "87c2732a2d73178a6a481d6c830b8bd436ebfd5e1f5f41d4dd53a4a086187e55", + "max_size_mb": 768, + "upstream_config": "Matting/configs/modnet/modnet-resnet50_vd.yml" + } + ] +} diff --git a/catalogs/real-networks.json b/catalogs/real-networks.json new file mode 100644 index 0000000..6e55012 --- /dev/null +++ b/catalogs/real-networks.json @@ -0,0 +1,1451 @@ +{ + "schema_version": 1, + "description": "Unique named real network configurations with random weights; synthetic fixtures excluded.", + "seed": 42, + "max_size_mb": 768, + "minimum_real_models": 1001, + "libraries": { + "torch": "2.9.1+cpu", + "torchvision": "0.24.1+cpu", + "numpy": "1.26.4", + "onnx": "1.17.0", + "onnxruntime": "1.20.1", + "timm": "1.0.22", + "pytorchcv": "0.0.74", + "segmentation-models-pytorch": "0.5.0", + "torchaudio": "2.9.1+cpu", + "torchsr": "1.0.4", + "transformers": "4.57.1", + "huggingface-hub": "0.36.2", + "tokenizers": "0.22.2" + }, + "required_tasks": [ + "audio_separation", + "classification", + "depth_estimation", + "detection", + "language_modeling", + "optical_flow", + "pose_estimation", + "question_answering", + "segmentation", + "speech_recognition", + "super_resolution", + "text_classification", + "text_generation", + "time_series_forecasting", + "token_classification", + "video_classification" + ], + "models": [ + {"source":"pytorchcv","name":"airnet50_1x64d_r16","architecture":"airnet50_1x64d_r16","task":"classification","input_shape":[1,3,224,224],"architecture_sha256":"ff97a4920487cf4baf41a3bdeeefdf3d9b9b6cd01e7d129385713ae5d0e50337","max_size_mb":160}, + {"source":"pytorchcv","name":"airnet50_1x64d_r2","architecture":"airnet50_1x64d_r2","task":"classification","input_shape":[1,3,224,224],"architecture_sha256":"8454801ffaf8229c8b8dbeb7da8be56333057a5297851f435440e84d5c0b8a89","max_size_mb":160}, + {"source":"pytorchcv","name":"airnext50_32x4d_r2","architecture":"airnext50_32x4d_r2","task":"classification","input_shape":[1,3,224,224],"architecture_sha256":"10bdb7b55f150a4e9a4dc0643c114a53985f8f4833f0e64f33956f63036cfff0","max_size_mb":160}, + {"source":"pytorchcv","name":"bagnet17","architecture":"bagnet17","task":"classification","input_shape":[1,3,224,224],"architecture_sha256":"ee2bcf4cedf34b11a4029b1f4a1a28713f1c47215de4447bcc33c928d39afd9e","max_size_mb":160}, + {"source":"pytorchcv","name":"bagnet33","architecture":"bagnet33","task":"classification","input_shape":[1,3,224,224],"architecture_sha256":"66341644a692e806b1e01d9252f6893a0a504a94d076b1ae085fba0b655ae0ee","max_size_mb":160}, + {"source":"pytorchcv","name":"bagnet9","architecture":"bagnet9","task":"classification","input_shape":[1,3,224,224],"architecture_sha256":"bdb7ab89a2949e75c247789e81fbace9d87ace0f43f79bb140486f30986459d7","max_size_mb":160}, + {"source":"pytorchcv","name":"bam_resnet18","architecture":"bam_resnet18","task":"classification","input_shape":[1,3,224,224],"architecture_sha256":"8c029b5e4790c30eb52151cc3c1c0098a7475c4b576ee4642772249e3b920188","max_size_mb":160}, + {"source":"pytorchcv","name":"bam_resnet34","architecture":"bam_resnet34","task":"classification","input_shape":[1,3,224,224],"architecture_sha256":"d9193edec86ef4837254704cb50f5122cb7e6975a83d76d681f11e178162a22d","max_size_mb":160}, + {"source":"pytorchcv","name":"bam_resnet50","architecture":"bam_resnet50","task":"classification","input_shape":[1,3,224,224],"architecture_sha256":"4de095fa9c05816afffb5f5d38f9f656bba3e03b533a92adb29757f2628eb8f6","max_size_mb":160}, + {"source":"pytorchcv","name":"bisenet_resnet18_celebamaskhq","architecture":"bisenet_resnet18_celebamaskhq","task":"segmentation","input_shape":[1,3,640,480],"architecture_sha256":"aa6dbad626ac0cdd9a881e8ab06356eab68c6a7df5b2bf83200bec0e761dd0a3","max_size_mb":160}, + {"source":"pytorchcv","name":"bninception","architecture":"bninception","task":"classification","input_shape":[1,3,224,224],"architecture_sha256":"9ae25882350788d22a37fe335579e2f432165c4484be9ea76cd33b226ce0fa37","max_size_mb":160}, + {"source":"pytorchcv","name":"cbam_resnet18","architecture":"cbam_resnet18","task":"classification","input_shape":[1,3,224,224],"architecture_sha256":"e84e0cf633ac2f1f33163e3061cbb304bc338d64d01445e27eda016842bd3b0d","max_size_mb":160}, + {"source":"pytorchcv","name":"cbam_resnet34","architecture":"cbam_resnet34","task":"classification","input_shape":[1,3,224,224],"architecture_sha256":"4058897bfa164544609f661385698b06ae4c4f8d7b7d7e27abd8daadc8892873","max_size_mb":160}, + {"source":"pytorchcv","name":"cbam_resnet50","architecture":"cbam_resnet50","task":"classification","input_shape":[1,3,224,224],"architecture_sha256":"51216b3e58ec1333487bafe0f483779dfb8efd8a885f47cb9cf5ab3d3e15731e","max_size_mb":160}, + {"source":"pytorchcv","name":"centernet_resnet18_coco","architecture":"centernet_resnet18_coco","task":"detection","input_shape":[1,3,512,512],"architecture_sha256":"c130e4c1f639d07a433eb6bd666f5af1bb9d457c17079671ba858445b6ee0c85","max_size_mb":160}, + {"source":"pytorchcv","name":"centernet_resnet18_voc","architecture":"centernet_resnet18_voc","task":"detection","input_shape":[1,3,512,512],"architecture_sha256":"8cfd8d18202aeeb157742bb618b713305c14bcd3a50f73612bb6424095d2e632","max_size_mb":160}, + {"source":"pytorchcv","name":"cgnet_cityscapes","architecture":"cgnet_cityscapes","task":"segmentation","input_shape":[1,3,1024,2048],"architecture_sha256":"b68ae9c2cceffe4ce0322bc40ff0ec205f1bf561042fa3f9a9ce3d13a6f1f74b","max_size_mb":160}, + {"source":"pytorchcv","name":"channelnet","architecture":"channelnet","task":"classification","input_shape":[1,3,224,224],"architecture_sha256":"f59e75cee6fdc14543e0c5db304edb5b2746d33759d5b54c52c08f906df64bff","max_size_mb":160}, + {"source":"pytorchcv","name":"condensenet74_c4_g4","architecture":"condensenet74_c4_g4","task":"classification","input_shape":[1,3,224,224],"architecture_sha256":"62f3a943d205158668bc7621f7ef653e81e1e74a27c4c2a43711036e38b106ac","max_size_mb":160}, + {"source":"pytorchcv","name":"condensenet74_c8_g8","architecture":"condensenet74_c8_g8","task":"classification","input_shape":[1,3,224,224],"architecture_sha256":"20f13fc5fd9dd1629c7b23b3e123c059222ebc9e52490600080fcd7b64c97ee1","max_size_mb":160}, + {"source":"pytorchcv","name":"ctxnet_cityscapes","architecture":"ctxnet_cityscapes","task":"segmentation","input_shape":[1,3,1024,2048],"architecture_sha256":"afcf6b396a1bfb10d43e4e7657cf3b714a97d3ef07ae156ffd08219d54846a18","max_size_mb":160}, + {"source":"pytorchcv","name":"dabnet_cityscapes","architecture":"dabnet_cityscapes","task":"segmentation","input_shape":[1,3,1024,2048],"architecture_sha256":"1098d79030ae139a21c7f5ae9131f6b1e280bc21201f2c203958f70740c5e976","max_size_mb":160}, + {"source":"pytorchcv","name":"darknet19","architecture":"darknet19","task":"classification","input_shape":[1,3,224,224],"architecture_sha256":"c55dfc187aca9c8e4f80b6ccb85f139051dc564a1794201a430c54f3ca53669b","max_size_mb":160}, + {"source":"pytorchcv","name":"darknet_ref","architecture":"darknet_ref","task":"classification","input_shape":[1,3,224,224],"architecture_sha256":"1d9f944a6f12fd067950548f02b0ecfc5d91235e7304ad0520643c5b4dafaec3","max_size_mb":160}, + {"source":"pytorchcv","name":"darknet_tiny","architecture":"darknet_tiny","task":"classification","input_shape":[1,3,224,224],"architecture_sha256":"280b415b21bd5c5ff338d7f5e8f8e61de29016cf93de9d1bc444307a4e9053e0","max_size_mb":160}, + {"source":"pytorchcv","name":"darts","architecture":"darts","task":"classification","input_shape":[1,3,224,224],"architecture_sha256":"0c5bb8d1d39ec2253afa114b4337f31f867cedef3b89f6574b4ef2f7b6f9d9ee","max_size_mb":160}, + {"source":"pytorchcv","name":"densenet100_k12_bc_cifar10","architecture":"densenet100_k12_bc_cifar10","task":"classification","input_shape":[1,3,32,32],"architecture_sha256":"cd81e13927a63d8aa0b1b4b196aa13e97a3d72ddfd634527a858ffbc07000920","max_size_mb":160}, + {"source":"pytorchcv","name":"densenet100_k12_bc_cifar100","architecture":"densenet100_k12_bc_cifar100","task":"classification","input_shape":[1,3,32,32],"architecture_sha256":"5f48fb625b29eeb17e91b897f46e850afb4c310c0e5460a82435b3bb350aff1a","max_size_mb":160}, + {"source":"pytorchcv","name":"densenet100_k12_cifar10","architecture":"densenet100_k12_cifar10","task":"classification","input_shape":[1,3,32,32],"architecture_sha256":"b74e2e256a84f15c6047ee923e021af2cf6f61e527afc5be837698b55d090e01","max_size_mb":160}, + {"source":"pytorchcv","name":"densenet100_k12_cifar100","architecture":"densenet100_k12_cifar100","task":"classification","input_shape":[1,3,32,32],"architecture_sha256":"64e221b659cadcaacfa7cb18fd320b86815f968bbe3ab031f69015b8f91a2c82","max_size_mb":160}, + {"source":"pytorchcv","name":"densenet100_k24_cifar10","architecture":"densenet100_k24_cifar10","task":"classification","input_shape":[1,3,32,32],"architecture_sha256":"3b26db1c15cae4d7d2ef0ba74ed3d16c2dae2c9bdf43d74d38efa4c3d5e82cdc","max_size_mb":160}, + {"source":"pytorchcv","name":"densenet100_k24_cifar100","architecture":"densenet100_k24_cifar100","task":"classification","input_shape":[1,3,32,32],"architecture_sha256":"11467d6d15085942bd9e20e35a6e55e50e3df0e05a2828e942537b4c15caaafe","max_size_mb":160}, + {"source":"pytorchcv","name":"densenet121","architecture":"densenet121","task":"classification","input_shape":[1,3,224,224],"architecture_sha256":"482c55a26cec8be0852a0424d55e67f7b13e3f69129dce7535e37741be12e540","max_size_mb":160}, + {"source":"pytorchcv","name":"densenet161","architecture":"densenet161","task":"classification","input_shape":[1,3,224,224],"architecture_sha256":"2582a26f274f60fab6b0d24159e81950fd335975c220399b80d295ca08958600","max_size_mb":160}, + {"source":"pytorchcv","name":"densenet169","architecture":"densenet169","task":"classification","input_shape":[1,3,224,224],"architecture_sha256":"4605dcc2dfd3a27e979e1cdd31d404bcb4912eb6f7be4ab1a8385d41929d2c92","max_size_mb":160}, + {"source":"pytorchcv","name":"densenet190_k40_bc_cifar10","architecture":"densenet190_k40_bc_cifar10","task":"classification","input_shape":[1,3,32,32],"architecture_sha256":"cfa90653b08912b4759134f749c4ee0a0f959a8600859f24ceb53cdc4ba481e7","max_size_mb":160}, + {"source":"pytorchcv","name":"densenet190_k40_bc_cifar100","architecture":"densenet190_k40_bc_cifar100","task":"classification","input_shape":[1,3,32,32],"architecture_sha256":"60ea139c95bc7f6bd8e6f6a9e99dc39ec9a48b0ee3485fef7739c8b3ff1b4392","max_size_mb":160}, + {"source":"pytorchcv","name":"densenet201","architecture":"densenet201","task":"classification","input_shape":[1,3,224,224],"architecture_sha256":"0bbcd552029f06137f9829280e119e2f0ca00fbabfdc245a918c7e0ee33b5caa","max_size_mb":160}, + {"source":"pytorchcv","name":"densenet250_k24_bc_cifar10","architecture":"densenet250_k24_bc_cifar10","task":"classification","input_shape":[1,3,32,32],"architecture_sha256":"370b8f40007851e54b6cb527666bfca67e6aebec9255faa3d62e20c8ae5b80a5","max_size_mb":160}, + {"source":"pytorchcv","name":"densenet250_k24_bc_cifar100","architecture":"densenet250_k24_bc_cifar100","task":"classification","input_shape":[1,3,32,32],"architecture_sha256":"a71fb8744c6b8aa627518dae44c5df0e70fdf3b3d02ace7b7205ec13ad57b8ac","max_size_mb":160}, + {"source":"pytorchcv","name":"densenet40_k12_bc_cifar10","architecture":"densenet40_k12_bc_cifar10","task":"classification","input_shape":[1,3,32,32],"architecture_sha256":"f04675647562d8c72f09c91802f4de90eef8ee9d0f2f201f758c6adf667d5fd7","max_size_mb":160}, + {"source":"pytorchcv","name":"densenet40_k12_bc_cifar100","architecture":"densenet40_k12_bc_cifar100","task":"classification","input_shape":[1,3,32,32],"architecture_sha256":"0f351c7cb09feeecb9eef488b3998b1ec209cfdaab0fb0952354c8b8fd69d67e","max_size_mb":160}, + {"source":"pytorchcv","name":"densenet40_k12_cifar10","architecture":"densenet40_k12_cifar10","task":"classification","input_shape":[1,3,32,32],"architecture_sha256":"073529ae47186aa5080d24a71c244e5efd211b81d57a9d52e7d74960347daa87","max_size_mb":160}, + {"source":"pytorchcv","name":"densenet40_k12_cifar100","architecture":"densenet40_k12_cifar100","task":"classification","input_shape":[1,3,32,32],"architecture_sha256":"16d9ff34e33e0912b7e2dd005aca453850c187038fdcdd375398a7ec120f00aa","max_size_mb":160}, + {"source":"pytorchcv","name":"densenet40_k24_bc_cifar10","architecture":"densenet40_k24_bc_cifar10","task":"classification","input_shape":[1,3,32,32],"architecture_sha256":"b58f38455dd6f2d42ab1aef2000aec9f627e75a420d2334334d5b8bc8f4e4b3b","max_size_mb":160}, + {"source":"pytorchcv","name":"densenet40_k24_bc_cifar100","architecture":"densenet40_k24_bc_cifar100","task":"classification","input_shape":[1,3,32,32],"architecture_sha256":"e6d4d64bcd1c277ffa8f14d8d49308b2abba1e81b0eeb6e0f87708fa0a0e72bf","max_size_mb":160}, + {"source":"pytorchcv","name":"densenet40_k36_bc_cifar10","architecture":"densenet40_k36_bc_cifar10","task":"classification","input_shape":[1,3,32,32],"architecture_sha256":"5e4783ee1b85c95fafbfdb37c49e116557fde98c5bc1724d9773993e10af38e8","max_size_mb":160}, + {"source":"pytorchcv","name":"densenet40_k36_bc_cifar100","architecture":"densenet40_k36_bc_cifar100","task":"classification","input_shape":[1,3,32,32],"architecture_sha256":"d360a27c59dab540763233f0f72a6c6b39613f4e9a02a8da42388734f432b3bd","max_size_mb":160}, + {"source":"pytorchcv","name":"diapreresnet10","architecture":"diapreresnet10","task":"classification","input_shape":[1,3,224,224],"architecture_sha256":"7d047b6326d8a0b89da3e28baab44a8df9068086795e0081a82d83ee76d0c5c6","max_size_mb":160}, + {"source":"pytorchcv","name":"diapreresnet110_cifar10","architecture":"diapreresnet110_cifar10","task":"classification","input_shape":[1,3,32,32],"architecture_sha256":"6e37c42a9d4013b9bb346719738876e4264fb7d4c91cad5c73d1d374b3215d42","max_size_mb":160}, + {"source":"pytorchcv","name":"diapreresnet110_cifar100","architecture":"diapreresnet110_cifar100","task":"classification","input_shape":[1,3,32,32],"architecture_sha256":"5ca205edac940867a9a3afee8ff11b4cb380bee5e4cb3a69b8cca97d58cd888d","max_size_mb":160}, + {"source":"pytorchcv","name":"diapreresnet12","architecture":"diapreresnet12","task":"classification","input_shape":[1,3,224,224],"architecture_sha256":"43e0d23f851cbd3b62607b8e07553e067d4bac2b65ca58559ab7ac7446015e7d","max_size_mb":160}, + {"source":"pytorchcv","name":"diapreresnet1202_cifar100","architecture":"diapreresnet1202_cifar100","task":"classification","input_shape":[1,3,32,32],"architecture_sha256":"71d5b98e740a31cf1c9af2a5a7dfa500092894b116066a276274afcb2a678180","max_size_mb":160}, + {"source":"pytorchcv","name":"diapreresnet14","architecture":"diapreresnet14","task":"classification","input_shape":[1,3,224,224],"architecture_sha256":"de976961e19df85d6eb832d439c769961535611805a145e6877f60e3d960396a","max_size_mb":160}, + {"source":"pytorchcv","name":"diapreresnet16","architecture":"diapreresnet16","task":"classification","input_shape":[1,3,224,224],"architecture_sha256":"13d9a264244ed60ccc9d6cefad1dfd585452bee5179a61ad8308ee30fd95c4f8","max_size_mb":160}, + {"source":"pytorchcv","name":"diapreresnet164bn_cifar10","architecture":"diapreresnet164bn_cifar10","task":"classification","input_shape":[1,3,32,32],"architecture_sha256":"d3efc6f9225a177a3343ec95570300f165698fa7fcedeb2daa507a8e97747e9a","max_size_mb":160}, + {"source":"pytorchcv","name":"diapreresnet164bn_cifar100","architecture":"diapreresnet164bn_cifar100","task":"classification","input_shape":[1,3,32,32],"architecture_sha256":"50e56ce12ee7c1959f7f8d7149a0ff6ab19e99f14bedd89a53b8fd238186211f","max_size_mb":160}, + {"source":"pytorchcv","name":"diapreresnet18","architecture":"diapreresnet18","task":"classification","input_shape":[1,3,224,224],"architecture_sha256":"01d9e29179e8fb9af913eac34b010fca347390a62d78f354b9ccc9f62a321f42","max_size_mb":160}, + {"source":"pytorchcv","name":"diapreresnet20_cifar10","architecture":"diapreresnet20_cifar10","task":"classification","input_shape":[1,3,32,32],"architecture_sha256":"ad8a7e0556dc51653219d36f3721c898fddb896f8a497d85560152f33d0a9fee","max_size_mb":160}, + {"source":"pytorchcv","name":"diapreresnet20_cifar100","architecture":"diapreresnet20_cifar100","task":"classification","input_shape":[1,3,32,32],"architecture_sha256":"ca874dbe6aab80e26b28d0d32931f04dc7666ee604b268d3dafd5292172ec2ae","max_size_mb":160}, + {"source":"pytorchcv","name":"diapreresnet26","architecture":"diapreresnet26","task":"classification","input_shape":[1,3,224,224],"architecture_sha256":"dd04307e2d71683abdfac4f3c0073bf10faf33b73aadc514bdacbb29e6b222d2","max_size_mb":160}, + {"source":"pytorchcv","name":"diapreresnet34","architecture":"diapreresnet34","task":"classification","input_shape":[1,3,224,224],"architecture_sha256":"51c93b4322fa714017aeae74f660c3f2d43ccde9bc0238e611894b1f8adca96b","max_size_mb":160}, + {"source":"pytorchcv","name":"diapreresnet56_cifar10","architecture":"diapreresnet56_cifar10","task":"classification","input_shape":[1,3,32,32],"architecture_sha256":"f75ae22b69cd4c59f33c11244348ded9b2b0a0224c4e278cb253fc0e162a338f","max_size_mb":160}, + {"source":"pytorchcv","name":"diapreresnet56_cifar100","architecture":"diapreresnet56_cifar100","task":"classification","input_shape":[1,3,32,32],"architecture_sha256":"4b1378bf30ea4f67aef9615a3d01bb4767274f855572d8c406165646cbd10183","max_size_mb":160}, + {"source":"pytorchcv","name":"diapreresnetbc14b","architecture":"diapreresnetbc14b","task":"classification","input_shape":[1,3,224,224],"architecture_sha256":"ba6405eac6b7827160e1559b4abfff1c6d983c19fc05e93ec50ef38344934784","max_size_mb":160}, + {"source":"pytorchcv","name":"diaresnet10","architecture":"diaresnet10","task":"classification","input_shape":[1,3,224,224],"architecture_sha256":"0f93e38279143fbdd1e485c142044df2847671191d4774bc2d57420c99cf7beb","max_size_mb":160}, + {"source":"pytorchcv","name":"diaresnet110_cifar10","architecture":"diaresnet110_cifar10","task":"classification","input_shape":[1,3,32,32],"architecture_sha256":"e384f2a8b00a9d5c3960bc955accb0b027887e2281656b7f920358a9164cd5ef","max_size_mb":160}, + {"source":"pytorchcv","name":"diaresnet110_cifar100","architecture":"diaresnet110_cifar100","task":"classification","input_shape":[1,3,32,32],"architecture_sha256":"ce2cdeafbb4f2a9c7c57870cc03e1aea6a76ffb6b44f92cef794d0e8e5703bd1","max_size_mb":160}, + {"source":"pytorchcv","name":"diaresnet12","architecture":"diaresnet12","task":"classification","input_shape":[1,3,224,224],"architecture_sha256":"9611e10806fdbd74aa12d5d0e7bf3c09c6bee1f4f70916aa6122d3b8de8cb347","max_size_mb":160}, + {"source":"pytorchcv","name":"diaresnet1202_cifar10","architecture":"diaresnet1202_cifar10","task":"classification","input_shape":[1,3,32,32],"architecture_sha256":"4aa3a8121eac09ff7f1085403ac384b39a48887b545a0dcaba8081a5e3b9fe4e","max_size_mb":160}, + {"source":"pytorchcv","name":"diaresnet1202_cifar100","architecture":"diaresnet1202_cifar100","task":"classification","input_shape":[1,3,32,32],"architecture_sha256":"274fcff17ac251442e5cb7a762da742522c7ebd717e2dc187e0c8773d28d8a14","max_size_mb":160}, + {"source":"pytorchcv","name":"diaresnet14","architecture":"diaresnet14","task":"classification","input_shape":[1,3,224,224],"architecture_sha256":"5bef501602b6fe99cbe375d8f1834f0de414275ec03b058b73b65c25bc2d67fe","max_size_mb":160}, + {"source":"pytorchcv","name":"diaresnet16","architecture":"diaresnet16","task":"classification","input_shape":[1,3,224,224],"architecture_sha256":"bbcdc0483ca80be1e787245b4b97d348e2e4c0b217d5e24fbee53e9bc0f4d54c","max_size_mb":160}, + {"source":"pytorchcv","name":"diaresnet164bn_cifar10","architecture":"diaresnet164bn_cifar10","task":"classification","input_shape":[1,3,32,32],"architecture_sha256":"ceef77a8a9e15ea79ef96ffdfb77baba19359dad0f80d5b2a567fa61048e5fdc","max_size_mb":160}, + {"source":"pytorchcv","name":"diaresnet164bn_cifar100","architecture":"diaresnet164bn_cifar100","task":"classification","input_shape":[1,3,32,32],"architecture_sha256":"7a290cccdb2552607fa7ee954210cb082de76d6849650ed89acc65e94b2b9b41","max_size_mb":160}, + {"source":"pytorchcv","name":"diaresnet18","architecture":"diaresnet18","task":"classification","input_shape":[1,3,224,224],"architecture_sha256":"aeaf7c2b995751a0c055b0bd5403c58d023427c20198c5fd8d6a55216fbbb9ec","max_size_mb":160}, + {"source":"pytorchcv","name":"diaresnet20_cifar10","architecture":"diaresnet20_cifar10","task":"classification","input_shape":[1,3,32,32],"architecture_sha256":"84958e43c7fb13c8b1b48fe146e3ca377fa7535679bdca81ea92c3269ce39851","max_size_mb":160}, + {"source":"pytorchcv","name":"diaresnet20_cifar100","architecture":"diaresnet20_cifar100","task":"classification","input_shape":[1,3,32,32],"architecture_sha256":"75926593766a44b64e75e2075025e74bc3278f6462f7622455c0752fb0d7abf1","max_size_mb":160}, + {"source":"pytorchcv","name":"diaresnet26","architecture":"diaresnet26","task":"classification","input_shape":[1,3,224,224],"architecture_sha256":"466be34a5c11cacd61866219609ff5758fe0fa65a3ad55a2df34df4ce90c0371","max_size_mb":160}, + {"source":"pytorchcv","name":"diaresnet34","architecture":"diaresnet34","task":"classification","input_shape":[1,3,224,224],"architecture_sha256":"fe96f625fba76c37e3abe9ff79dd155a6f69089e146650c858bcc771dff2c5e8","max_size_mb":160}, + {"source":"pytorchcv","name":"diaresnet56_cifar10","architecture":"diaresnet56_cifar10","task":"classification","input_shape":[1,3,32,32],"architecture_sha256":"8ca8b1384b4011eaa8eb88d73b651b530fc56ded4c5b3a30c7b00cb041434710","max_size_mb":160}, + {"source":"pytorchcv","name":"diaresnet56_cifar100","architecture":"diaresnet56_cifar100","task":"classification","input_shape":[1,3,32,32],"architecture_sha256":"6c037b1f5c281280bed28664a0e044330091134529bf37bb1d0f92f681c040c2","max_size_mb":160}, + {"source":"pytorchcv","name":"diaresnetbc14b","architecture":"diaresnetbc14b","task":"classification","input_shape":[1,3,224,224],"architecture_sha256":"f8a9bd0b0267b346268c4fa0223611fe3759cb3cd0628b8329904eb259796a10","max_size_mb":160}, + {"source":"pytorchcv","name":"dicenet_w1","architecture":"dicenet_w1","task":"classification","input_shape":[1,3,224,224],"architecture_sha256":"5455f533ac5d813ba0abf6ca72156eef8e0bfaca0493952f5ecc5dab02c66d18","max_size_mb":160}, + {"source":"pytorchcv","name":"dicenet_w2","architecture":"dicenet_w2","task":"classification","input_shape":[1,3,224,224],"architecture_sha256":"96a27e42582470379ce8fd62f74c0ea3c338c7123c9a400ed0ae13f05b60eb15","max_size_mb":160}, + {"source":"pytorchcv","name":"dicenet_w3d2","architecture":"dicenet_w3d2","task":"classification","input_shape":[1,3,224,224],"architecture_sha256":"e72a8acbeba1fcb55174e8c06b8a22489987d51152d525312ff546490e3578b7","max_size_mb":160}, + {"source":"pytorchcv","name":"dicenet_w3d4","architecture":"dicenet_w3d4","task":"classification","input_shape":[1,3,224,224],"architecture_sha256":"059f3c3c48b167fc9b169b8419ab207b84466c447bac9efab9c44935399a6070","max_size_mb":160}, + {"source":"pytorchcv","name":"dicenet_w5d4","architecture":"dicenet_w5d4","task":"classification","input_shape":[1,3,224,224],"architecture_sha256":"17585ede07a8ba7d7c7e1841de65526dabb839586919756245d1db4b96654bdb","max_size_mb":160}, + {"source":"pytorchcv","name":"dicenet_w7d8","architecture":"dicenet_w7d8","task":"classification","input_shape":[1,3,224,224],"architecture_sha256":"0c26d84dfa2a5d340b270a2ffc5830a6f8fb0ad82693a0938027fa6f50f2331c","max_size_mb":160}, + {"source":"pytorchcv","name":"dicenet_wd2","architecture":"dicenet_wd2","task":"classification","input_shape":[1,3,224,224],"architecture_sha256":"2287539b345fca8c9e511bc74d54c9d8be6f47f6677a301b818b30c1371f5fe4","max_size_mb":160}, + {"source":"pytorchcv","name":"dicenet_wd5","architecture":"dicenet_wd5","task":"classification","input_shape":[1,3,224,224],"architecture_sha256":"c1ce501485493edf4809ce5387aedbc731f2cc4eecb91ca493f1f39c03431ae9","max_size_mb":160}, + {"source":"pytorchcv","name":"diracnet18v2","architecture":"diracnet18v2","task":"classification","input_shape":[1,3,224,224],"architecture_sha256":"a9a16a97971f62347a8071334c6202c7f1f78f55cfb544bc1a2120759859c3a8","max_size_mb":160}, + {"source":"pytorchcv","name":"diracnet34v2","architecture":"diracnet34v2","task":"classification","input_shape":[1,3,224,224],"architecture_sha256":"df806c9f1a14d098b8ad770e7b05962c38b37c20e2bd613a6da8dd48fc2a1b3a","max_size_mb":160}, + {"source":"pytorchcv","name":"dla102x","architecture":"dla102x","task":"classification","input_shape":[1,3,224,224],"architecture_sha256":"cb6395122bd2930b3aeff9a296c22ffad2741326fb392296a2ea66f6fcc15af7","max_size_mb":160}, + {"source":"pytorchcv","name":"dla102x2","architecture":"dla102x2","task":"classification","input_shape":[1,3,224,224],"architecture_sha256":"897b0c7c655b5234cafe78c823e0128288d8a47483188ede2eb918fd9dbc7e33","max_size_mb":160}, + {"source":"pytorchcv","name":"dla34","architecture":"dla34","task":"classification","input_shape":[1,3,224,224],"architecture_sha256":"2fb962e8e450419b4f07e781f0032b6a27455fa04887622fc758417c5d66e4be","max_size_mb":160}, + {"source":"pytorchcv","name":"dla46c","architecture":"dla46c","task":"classification","input_shape":[1,3,224,224],"architecture_sha256":"f31c0712f5264296917036778f1e34acbcfb31aa5fcc555431d33e1b2f7b669e","max_size_mb":160}, + {"source":"pytorchcv","name":"dla46xc","architecture":"dla46xc","task":"classification","input_shape":[1,3,224,224],"architecture_sha256":"8f3ffd7aa2ee840bc8df2cacc05073ebad8331b26e2c5f06bf19c060243ad868","max_size_mb":160}, + {"source":"pytorchcv","name":"dla60","architecture":"dla60","task":"classification","input_shape":[1,3,224,224],"architecture_sha256":"6ef36a9ca177a4e5a8f2ee8a7337e5d40a2f114b87308fcf649feaf1199b7744","max_size_mb":160}, + {"source":"pytorchcv","name":"dla60x","architecture":"dla60x","task":"classification","input_shape":[1,3,224,224],"architecture_sha256":"8a2028a11dcdec97d8e768f6ba846f8ef3e038f4c24f3272aef4c42e54149c76","max_size_mb":160}, + {"source":"pytorchcv","name":"dla60xc","architecture":"dla60xc","task":"classification","input_shape":[1,3,224,224],"architecture_sha256":"b4a83d186bec96d57cc5c10800a13b520abbb57663a1a84cf68076d9bc9edb66","max_size_mb":160}, + {"source":"pytorchcv","name":"dpn68","architecture":"dpn68","task":"classification","input_shape":[1,3,224,224],"architecture_sha256":"30d8249941c08be7899e61c9fc6bd806631e2a3dc3a9f72906f4921e15d16db6","max_size_mb":160}, + {"source":"pytorchcv","name":"dpn68b","architecture":"dpn68b","task":"classification","input_shape":[1,3,224,224],"architecture_sha256":"8d7260ab73620c2e3245d8166cd13e4db1e976742d9af85849250ce7e00cd25f","max_size_mb":160}, + {"source":"pytorchcv","name":"drnc26","architecture":"drnc26","task":"classification","input_shape":[1,3,224,224],"architecture_sha256":"d4325ad892f339be039494e3d5fd224e327c62b35d8792b68857af0cee58869d","max_size_mb":160}, + {"source":"pytorchcv","name":"drnc42","architecture":"drnc42","task":"classification","input_shape":[1,3,224,224],"architecture_sha256":"c7c22fb35fa686fd21d797e596a1e01695a189ba59227ce5ff9899b6faec5277","max_size_mb":160}, + {"source":"pytorchcv","name":"drnc58","architecture":"drnc58","task":"classification","input_shape":[1,3,224,224],"architecture_sha256":"170348dcd965bc94b75701e870e4a009ec93150c889e2a624941cc5d002c0206","max_size_mb":160}, + {"source":"pytorchcv","name":"drnd22","architecture":"drnd22","task":"classification","input_shape":[1,3,224,224],"architecture_sha256":"cc3498a85cce5ebaa4c03315f32e2b08f6da8c9b7e9a35fd463d8a41985cd66f","max_size_mb":160}, + {"source":"pytorchcv","name":"drnd38","architecture":"drnd38","task":"classification","input_shape":[1,3,224,224],"architecture_sha256":"93cc6e0d6665408ae3a948e419ac3b8562311f320d5ef3599aa047ec2287a4c5","max_size_mb":160}, + {"source":"pytorchcv","name":"drnd54","architecture":"drnd54","task":"classification","input_shape":[1,3,224,224],"architecture_sha256":"d734be625345e35747b2194ebfd75d3b20e39aa6d6b4844e303b7af7e460483f","max_size_mb":160}, + {"source":"pytorchcv","name":"edanet_cityscapes","architecture":"edanet_cityscapes","task":"segmentation","input_shape":[1,3,1024,2048],"architecture_sha256":"6463d40ba5bae9741a2f795e7830cf9dd1a13fce507ab06ae7a51b3414ea9f48","max_size_mb":160}, + {"source":"pytorchcv","name":"efficientnet_b0","architecture":"efficientnet_b0","task":"classification","input_shape":[1,3,224,224],"architecture_sha256":"27e3e6ee8e9f7a13918b2bc782043a32d7f873f83b2d4f7c0799910ff18cf8fb","max_size_mb":160}, + {"source":"pytorchcv","name":"efficientnet_b0b","architecture":"efficientnet_b0b","task":"classification","input_shape":[1,3,224,224],"architecture_sha256":"f095b9287efba45393434aace2cbbc369ad587bdd0e943c3f453b49c9df7d033","max_size_mb":160}, + {"source":"pytorchcv","name":"efficientnet_b1","architecture":"efficientnet_b1","task":"classification","input_shape":[1,3,240,240],"architecture_sha256":"9087216d93486f1fbcc4983022374709b246c349989da4a9a8103e7270ff46ae","max_size_mb":160}, + {"source":"pytorchcv","name":"efficientnet_b1b","architecture":"efficientnet_b1b","task":"classification","input_shape":[1,3,240,240],"architecture_sha256":"4ff8996a9706e90740737a56e0cc5d0101b1ac071e3681ec5bce7e6d595c703a","max_size_mb":160}, + {"source":"pytorchcv","name":"efficientnet_b2","architecture":"efficientnet_b2","task":"classification","input_shape":[1,3,260,260],"architecture_sha256":"640b143de1cd2123f60555e10968cbe8fe587cc790ae79e51aa4cd23a09cdd36","max_size_mb":160}, + {"source":"pytorchcv","name":"efficientnet_b2b","architecture":"efficientnet_b2b","task":"classification","input_shape":[1,3,260,260],"architecture_sha256":"adaaa4bd1710e3e5e1c1e0e0865b68af45160a793ae8655a00d06efffa59a5cc","max_size_mb":160}, + {"source":"pytorchcv","name":"efficientnet_b3","architecture":"efficientnet_b3","task":"classification","input_shape":[1,3,300,300],"architecture_sha256":"1606d18d8306fb2557fca7cfd2ecf005d39a90858121aa445395922ec62248c0","max_size_mb":160}, + {"source":"pytorchcv","name":"efficientnet_b3b","architecture":"efficientnet_b3b","task":"classification","input_shape":[1,3,300,300],"architecture_sha256":"0900ed43716529ebd05b147fdbc7c8e4bd26d212c5f6fd7accbcda5598e93f8e","max_size_mb":160}, + {"source":"pytorchcv","name":"efficientnet_b4","architecture":"efficientnet_b4","task":"classification","input_shape":[1,3,380,380],"architecture_sha256":"cbc44b10beac4d8e271d7c58a1b9572a1d67a1cd12808cdc79153c1259b24e66","max_size_mb":160}, + {"source":"pytorchcv","name":"efficientnet_b4b","architecture":"efficientnet_b4b","task":"classification","input_shape":[1,3,380,380],"architecture_sha256":"92a0b7eea8f746d6e282e21c96f7b5df3afb06ae36e72bf56da2d14a4650dae6","max_size_mb":160}, + {"source":"pytorchcv","name":"efficientnet_b5","architecture":"efficientnet_b5","task":"classification","input_shape":[1,3,456,456],"architecture_sha256":"cb1a20c2e480484cf51e1bea8edfed72f1d06cd80e445e4cb8d746e2173ab9c0","max_size_mb":160}, + {"source":"pytorchcv","name":"efficientnet_b5b","architecture":"efficientnet_b5b","task":"classification","input_shape":[1,3,456,456],"architecture_sha256":"4027346145d359e7299e6a6d7e852f96361031358bfdf585361208ab5add52f7","max_size_mb":160}, + {"source":"pytorchcv","name":"efficientnet_edge_medium_b","architecture":"efficientnet_edge_medium_b","task":"classification","input_shape":[1,3,240,240],"architecture_sha256":"5d70b7e7c909f86259bb9cf3f418eb622c8b20beec7a81dee5cbd2d737d2dba8","max_size_mb":160}, + {"source":"pytorchcv","name":"erfnet_cityscapes","architecture":"erfnet_cityscapes","task":"segmentation","input_shape":[1,3,1024,2048],"architecture_sha256":"9806a1303bf8b2838515898e00e8a3168e78a678560a5483485679cb56c838c3","max_size_mb":160}, + {"source":"pytorchcv","name":"esnet_cityscapes","architecture":"esnet_cityscapes","task":"segmentation","input_shape":[1,3,1024,2048],"architecture_sha256":"92c0478a70900357870345f3deba6619427c0eb27e36a251689654fe86f397a9","max_size_mb":160}, + {"source":"pytorchcv","name":"espnetv2_w1","architecture":"espnetv2_w1","task":"classification","input_shape":[1,3,224,224],"architecture_sha256":"bd100291921ae1ba9b9b6763f0bd1fe4c9f32b03dc0e0f881a86e883096dcc67","max_size_mb":160}, + {"source":"pytorchcv","name":"espnetv2_w2","architecture":"espnetv2_w2","task":"classification","input_shape":[1,3,224,224],"architecture_sha256":"ec7636f4e84d89962745de4fdec7b9ef4ae890f0b5d93b2efab34362c8ae64b4","max_size_mb":160}, + {"source":"pytorchcv","name":"espnetv2_w3d2","architecture":"espnetv2_w3d2","task":"classification","input_shape":[1,3,224,224],"architecture_sha256":"a9142ab6a6826b8ea4cac443dd76597297c4020b1498d864dc7e4a61fecd4a3c","max_size_mb":160}, + {"source":"pytorchcv","name":"espnetv2_w5d4","architecture":"espnetv2_w5d4","task":"classification","input_shape":[1,3,224,224],"architecture_sha256":"fddfa885f3d34ae886a57e510c3694409685991f3a7efb401b5631a5184708b1","max_size_mb":160}, + {"source":"pytorchcv","name":"espnetv2_wd2","architecture":"espnetv2_wd2","task":"classification","input_shape":[1,3,224,224],"architecture_sha256":"a8338e732fa6e878670325f10e31addd8f840bf5e6a7e02da1bb29f98a5b1dce","max_size_mb":160}, + {"source":"pytorchcv","name":"fbnet_cb","architecture":"fbnet_cb","task":"classification","input_shape":[1,3,224,224],"architecture_sha256":"79b32902d691d1c13d7f52467acf3dd41c65c0193fe5a78c290c00fa1bc9e415","max_size_mb":160}, + {"source":"pytorchcv","name":"fdmobilenet_w1","architecture":"fdmobilenet_w1","task":"classification","input_shape":[1,3,224,224],"architecture_sha256":"ad8702f56821c399f7de50e5a86a57e70ae818c8fb2a89edb13972eb27df6b94","max_size_mb":160}, + {"source":"pytorchcv","name":"fdmobilenet_w1_cub","architecture":"fdmobilenet_w1_cub","task":"classification","input_shape":[1,3,224,224],"architecture_sha256":"be80805dcbdf1aa0d705418b077a4329fa6fe50a2ec823a398e11897409ec2ea","max_size_mb":160}, + {"source":"pytorchcv","name":"fdmobilenet_w3d4","architecture":"fdmobilenet_w3d4","task":"classification","input_shape":[1,3,224,224],"architecture_sha256":"383308c3e74deb8575ef853ac47e5c9671160107c3bf4968bb57ac22ca2fa00b","max_size_mb":160}, + {"source":"pytorchcv","name":"fdmobilenet_w3d4_cub","architecture":"fdmobilenet_w3d4_cub","task":"classification","input_shape":[1,3,224,224],"architecture_sha256":"c3a929593e6812fce12d122dbc433c3547ee8319cb3f641c80a77ebfa2166ef0","max_size_mb":160}, + {"source":"pytorchcv","name":"fdmobilenet_wd2","architecture":"fdmobilenet_wd2","task":"classification","input_shape":[1,3,224,224],"architecture_sha256":"7f531c276a7e26f224f357c988f84ce512de317194fe15d68a2df34e5fcd4d63","max_size_mb":160}, + {"source":"pytorchcv","name":"fdmobilenet_wd2_cub","architecture":"fdmobilenet_wd2_cub","task":"classification","input_shape":[1,3,224,224],"architecture_sha256":"3469f57db0fd494f8314423926953ea79b66daeb1cc4d1d8aa09f3201025c8fa","max_size_mb":160}, + {"source":"pytorchcv","name":"fdmobilenet_wd4","architecture":"fdmobilenet_wd4","task":"classification","input_shape":[1,3,224,224],"architecture_sha256":"bbb2669b88edde269502320ffad4bb4587cc2a68c3cf6dee186887e8cf61f275","max_size_mb":160}, + {"source":"pytorchcv","name":"fdmobilenet_wd4_cub","architecture":"fdmobilenet_wd4_cub","task":"classification","input_shape":[1,3,224,224],"architecture_sha256":"a339a2a13191de8d344d160adebeef5dd4dbb1db5803353d0b74a6a5ff6b93bb","max_size_mb":160}, + {"source":"pytorchcv","name":"fishnet99","architecture":"fishnet99","task":"classification","input_shape":[1,3,224,224],"architecture_sha256":"22fbda8f0c9e0277c40856b2ab4397dc8a914b01f325456a57816196d4c954af","max_size_mb":160}, + {"source":"pytorchcv","name":"fractalnet_cifar10","architecture":"fractalnet_cifar10","task":"classification","input_shape":[1,3,32,32],"architecture_sha256":"d3790a50a5499b3068e182161134c68c582ba7d0a06556cd15301aeecfc1fd36","max_size_mb":160}, + {"source":"pytorchcv","name":"fractalnet_cifar100","architecture":"fractalnet_cifar100","task":"classification","input_shape":[1,3,32,32],"architecture_sha256":"a7a5707a16de8b46ba9f3937c9c66fd11157f24b6dda63ded50376b6280862f0","max_size_mb":160}, + {"source":"pytorchcv","name":"ghostnet","architecture":"ghostnet","task":"classification","input_shape":[1,3,224,224],"architecture_sha256":"022d28d29c3a8ddfc53cd0fb46d4fb889cf0d16276f4d4f29ecf84d023c34dc1","max_size_mb":160}, + {"source":"pytorchcv","name":"hardnet39ds","architecture":"hardnet39ds","task":"classification","input_shape":[1,3,224,224],"architecture_sha256":"fa192f1790bad392c3ea364c767999d9749033d44738b52bbf426aefc900aed3","max_size_mb":160}, + {"source":"pytorchcv","name":"hardnet68","architecture":"hardnet68","task":"classification","input_shape":[1,3,224,224],"architecture_sha256":"20b322836fca6343bbc3aa81d4b3bfefa13f0c7b9764849be777f7f75841a638","max_size_mb":160}, + {"source":"pytorchcv","name":"hardnet68ds","architecture":"hardnet68ds","task":"classification","input_shape":[1,3,224,224],"architecture_sha256":"83f040d0ec18e4d9024ba6c3954638114b3e111f3b80a33202f794c1fa09b005","max_size_mb":160}, + {"source":"pytorchcv","name":"hardnet85","architecture":"hardnet85","task":"classification","input_shape":[1,3,224,224],"architecture_sha256":"aa7a0989c57b9d018102ecca65af01abdf8c41edb109b834ef0f4a8d64e18f9f","max_size_mb":160}, + {"source":"pytorchcv","name":"hrnet_w18_small_v1","architecture":"hrnet_w18_small_v1","task":"classification","input_shape":[1,3,224,224],"architecture_sha256":"a46c2d8a4d08821dface788a497c027388637d7d32646851b04b1a7387dd5040","max_size_mb":160}, + {"source":"pytorchcv","name":"hrnet_w18_small_v2","architecture":"hrnet_w18_small_v2","task":"classification","input_shape":[1,3,224,224],"architecture_sha256":"51af3f223e47e37a5e5708fb841a658c2db4dcc2e771d7f27dc4abf232d5d109","max_size_mb":160}, + {"source":"pytorchcv","name":"hrnetv2_w18","architecture":"hrnetv2_w18","task":"classification","input_shape":[1,3,224,224],"architecture_sha256":"652f60687ec679e8d20341a3c1b0802f96e2e811de892038caaa92f09902e4a3","max_size_mb":160}, + {"source":"pytorchcv","name":"hrnetv2_w30","architecture":"hrnetv2_w30","task":"classification","input_shape":[1,3,224,224],"architecture_sha256":"c1ee6b542ec646ef79a8e3e3af7d1859cc03246483645381f81c4019197938ba","max_size_mb":160}, + {"source":"pytorchcv","name":"hrnetv2_w32","architecture":"hrnetv2_w32","task":"classification","input_shape":[1,3,224,224],"architecture_sha256":"e14e53591df6f4b76dacf4270db11aee5d9ae912653f76ed635f00c389d54ac8","max_size_mb":160}, + {"source":"pytorchcv","name":"ibn_densenet121","architecture":"ibn_densenet121","task":"classification","input_shape":[1,3,224,224],"architecture_sha256":"9bc7f5e9a64b9334705745e57e0840a7d562c11783b7a5f28e42dda7b3a7db31","max_size_mb":160}, + {"source":"pytorchcv","name":"ibn_densenet161","architecture":"ibn_densenet161","task":"classification","input_shape":[1,3,224,224],"architecture_sha256":"7e3117e459b4af5d8fba8e94e7e18b89104d6809d58292ddfd334fc5a16c54a0","max_size_mb":160}, + {"source":"pytorchcv","name":"ibn_densenet169","architecture":"ibn_densenet169","task":"classification","input_shape":[1,3,224,224],"architecture_sha256":"0fc40f691a453e92ad26d0e371bb49422065bad111e8c46fad5fad631942ddb9","max_size_mb":160}, + {"source":"pytorchcv","name":"ibn_densenet201","architecture":"ibn_densenet201","task":"classification","input_shape":[1,3,224,224],"architecture_sha256":"7e01a89e26362f4b991d0bdb2ee5cd9b4be27b2edb1f60dbe39f9d579206d6d4","max_size_mb":160}, + {"source":"pytorchcv","name":"ibn_resnet50","architecture":"ibn_resnet50","task":"classification","input_shape":[1,3,224,224],"architecture_sha256":"dc8275cd35cc9c7787ac77dc4512e83810a4f5ba4f3cc81d4ec8e96be56ff359","max_size_mb":160}, + {"source":"pytorchcv","name":"ibn_resnext50_32x4d","architecture":"ibn_resnext50_32x4d","task":"classification","input_shape":[1,3,224,224],"architecture_sha256":"ee1774f420ec22940047e7989f070d59c17c738c0b381e2b480a46731a08b2e8","max_size_mb":160}, + {"source":"pytorchcv","name":"ibnb_resnet50","architecture":"ibnb_resnet50","task":"classification","input_shape":[1,3,224,224],"architecture_sha256":"1fbae5f567737617291c0b1c140526bc018bd88feec734cb0b15f6581cff0cf6","max_size_mb":160}, + {"source":"pytorchcv","name":"inceptionresnetv1","architecture":"inceptionresnetv1","task":"classification","input_shape":[1,3,299,299],"architecture_sha256":"68957cab1c6a09050bc6874bb815c4f8634348fbc2bf727b1113bf5b672c1141","max_size_mb":160}, + {"source":"pytorchcv","name":"inceptionv3","architecture":"inceptionv3","task":"classification","input_shape":[1,3,299,299],"architecture_sha256":"cb15b3d2676dc11826816dd77f3a9a8a6cad008b4da3930b86847cf04bc998af","max_size_mb":160}, + {"source":"pytorchcv","name":"lffd20x5s320v2_widerface","architecture":"lffd20x5s320v2_widerface","task":"detection","input_shape":[1,3,640,640],"architecture_sha256":"bd6cdaa298261fa65647f7312e255677dbc1e868154eff688f71c136ff109761","max_size_mb":160}, + {"source":"pytorchcv","name":"lffd25x8s560v1_widerface","architecture":"lffd25x8s560v1_widerface","task":"detection","input_shape":[1,3,640,640],"architecture_sha256":"c5e850bc145a66c6fb520266a6d36c9bea39618d0724ce9c72600f83078ae3d9","max_size_mb":160}, + {"source":"pytorchcv","name":"linknet_cityscapes","architecture":"linknet_cityscapes","task":"segmentation","input_shape":[1,3,1024,2048],"architecture_sha256":"2e0668b90fd8ebf26986344522eb1d6b3b6ff7a92ec797b8f6f418212bea32b3","max_size_mb":160}, + {"source":"pytorchcv","name":"lwopenpose2d_mobilenet_cmupan_coco","architecture":"lwopenpose2d_mobilenet_cmupan_coco","task":"pose_estimation","input_shape":[1,3,368,368],"architecture_sha256":"64e8c2f4beb13bf69d99fe816fbac4ec2199323540e81de1a9f15dc1fb359365","max_size_mb":160}, + {"source":"pytorchcv","name":"menet108_8x1_g3","architecture":"menet108_8x1_g3","task":"classification","input_shape":[1,3,224,224],"architecture_sha256":"32734c172584246d52f614c2d1c932273fdbcffd77d770f451dc7563e4adcb3c","max_size_mb":160}, + {"source":"pytorchcv","name":"menet128_8x1_g4","architecture":"menet128_8x1_g4","task":"classification","input_shape":[1,3,224,224],"architecture_sha256":"be77fac45b32850ceb419e3ce9ca7e162e75977db82fd627d1ad1b0560941d79","max_size_mb":160}, + {"source":"pytorchcv","name":"menet160_8x1_g8","architecture":"menet160_8x1_g8","task":"classification","input_shape":[1,3,224,224],"architecture_sha256":"8b23a40c24f45de1266e280f59617a7c362ac95a50b7e79ffab47fb846ad03aa","max_size_mb":160}, + {"source":"pytorchcv","name":"menet228_12x1_g3","architecture":"menet228_12x1_g3","task":"classification","input_shape":[1,3,224,224],"architecture_sha256":"e2ebbb64dcafe6785defd4ebb594a93c16394d93e520e494caec569687964f3e","max_size_mb":160}, + {"source":"pytorchcv","name":"menet256_12x1_g4","architecture":"menet256_12x1_g4","task":"classification","input_shape":[1,3,224,224],"architecture_sha256":"91b932bca297e230a0187ed626565463a7155b483e22da431b374bfa0572b27b","max_size_mb":160}, + {"source":"pytorchcv","name":"menet348_12x1_g3","architecture":"menet348_12x1_g3","task":"classification","input_shape":[1,3,224,224],"architecture_sha256":"2e0888a853ac400e230d369023302b784d96e39409f1b6a5d43b3a422aa2b5da","max_size_mb":160}, + {"source":"pytorchcv","name":"menet456_24x1_g3","architecture":"menet456_24x1_g3","task":"classification","input_shape":[1,3,224,224],"architecture_sha256":"7f0fa04eb193dd8009b263f4e7899514bad88ba47c17dfd487f1907826178d04","max_size_mb":160}, + {"source":"pytorchcv","name":"mixnet_l","architecture":"mixnet_l","task":"classification","input_shape":[1,3,224,224],"architecture_sha256":"f818ad2df31e0b8a2f69a86a894e95e5916389e22c051edb520e10ba209fea68","max_size_mb":160}, + {"source":"pytorchcv","name":"mixnet_s","architecture":"mixnet_s","task":"classification","input_shape":[1,3,224,224],"architecture_sha256":"468a5ae6f2df385a7b4a65c6e543e9a8b8e4838b7376337e1ff23227dca6b6be","max_size_mb":160}, + {"source":"pytorchcv","name":"mnasnet_a1","architecture":"mnasnet_a1","task":"classification","input_shape":[1,3,224,224],"architecture_sha256":"37209f108bc9d71b490bd0da480a18c4afbe9c54718e11e0837d68b4462add3b","max_size_mb":160}, + {"source":"pytorchcv","name":"mnasnet_b1","architecture":"mnasnet_b1","task":"classification","input_shape":[1,3,224,224],"architecture_sha256":"f45fddd6776337622bc002c0ff31b25225913f5dd50fde480fae1d51de319bf4","max_size_mb":160}, + {"source":"pytorchcv","name":"mnasnet_small","architecture":"mnasnet_small","task":"classification","input_shape":[1,3,224,224],"architecture_sha256":"90354f98a8b94aa89a9ba520c77d4893632cfa46fa379e4dd3a1df871322f9a9","max_size_mb":160}, + {"source":"pytorchcv","name":"mobilenet_w1","architecture":"mobilenet_w1","task":"classification","input_shape":[1,3,224,224],"architecture_sha256":"aa91134508246a727792c82298307c4fa594029ae0d1427a160cc37095bbefaf","max_size_mb":160}, + {"source":"pytorchcv","name":"mobilenet_w1_cub","architecture":"mobilenet_w1_cub","task":"classification","input_shape":[1,3,224,224],"architecture_sha256":"6ed181ef613e31b1dfa71d3b0d716047d99aa844c3afa0afe2443e4dc8f0efe4","max_size_mb":160}, + {"source":"pytorchcv","name":"mobilenet_w3d4","architecture":"mobilenet_w3d4","task":"classification","input_shape":[1,3,224,224],"architecture_sha256":"a0e7198a147745ee37e67740960c116e05d3620231ceb8c8c7a7ecbc4a75331b","max_size_mb":160}, + {"source":"pytorchcv","name":"mobilenet_w3d4_cub","architecture":"mobilenet_w3d4_cub","task":"classification","input_shape":[1,3,224,224],"architecture_sha256":"ccb0b11ec67d4771e6130a1b07b60b5b91f9ef5d53c9262f5f3cccfec40384e5","max_size_mb":160}, + {"source":"pytorchcv","name":"mobilenet_wd2","architecture":"mobilenet_wd2","task":"classification","input_shape":[1,3,224,224],"architecture_sha256":"a60ff953ae151cb94f17a2c959e2f43523cadc4f02ce7eccee832a663545770b","max_size_mb":160}, + {"source":"pytorchcv","name":"mobilenet_wd2_cub","architecture":"mobilenet_wd2_cub","task":"classification","input_shape":[1,3,224,224],"architecture_sha256":"a3872622cb4c64dae87654bfb336e2d15a752966a017b18275e2c2383d0f56e8","max_size_mb":160}, + {"source":"pytorchcv","name":"mobilenet_wd4","architecture":"mobilenet_wd4","task":"classification","input_shape":[1,3,224,224],"architecture_sha256":"14a2a77a0721bd958f0b9c2d1d581daebdf87dacc4b3addc6f4ffba1eb394451","max_size_mb":160}, + {"source":"pytorchcv","name":"mobilenet_wd4_cub","architecture":"mobilenet_wd4_cub","task":"classification","input_shape":[1,3,224,224],"architecture_sha256":"dc2978af4edc286c2610918f08f0fbca3fce33690b932f5fc986b97d31d8d2ea","max_size_mb":160}, + {"source":"pytorchcv","name":"mobilenetb_w1","architecture":"mobilenetb_w1","task":"classification","input_shape":[1,3,224,224],"architecture_sha256":"7357d8fac8705c270c40e978d912e7fd671eb532ef27f58c73ceb1d0fb726dea","max_size_mb":160}, + {"source":"pytorchcv","name":"mobilenetb_w3d4","architecture":"mobilenetb_w3d4","task":"classification","input_shape":[1,3,224,224],"architecture_sha256":"50286c448d1731bf5b0ce204a2d558bdb218e59db68030fe5c688b55d97e37d4","max_size_mb":160}, + {"source":"pytorchcv","name":"mobilenetb_wd2","architecture":"mobilenetb_wd2","task":"classification","input_shape":[1,3,224,224],"architecture_sha256":"f598a0e33010d4c2ac06f1feda63c69bc57babc0eed304bfa25bc0aef15997ea","max_size_mb":160}, + {"source":"pytorchcv","name":"mobilenetb_wd4","architecture":"mobilenetb_wd4","task":"classification","input_shape":[1,3,224,224],"architecture_sha256":"2c4720471afd6b73bf66f56f339e67c52b27b3ac8ae9e8046985aed97e61d1d7","max_size_mb":160}, + {"source":"pytorchcv","name":"mobilenetv2_w1","architecture":"mobilenetv2_w1","task":"classification","input_shape":[1,3,224,224],"architecture_sha256":"f3f063717bd9c66b904c7b89f4c3b2b29fa114dd5ab337b27de9df2771acaabb","max_size_mb":160}, + {"source":"pytorchcv","name":"mobilenetv2_w3d4","architecture":"mobilenetv2_w3d4","task":"classification","input_shape":[1,3,224,224],"architecture_sha256":"f951974a8aca0477cc2ec8f7f475e5556cbdb2e320f8b48d59bfeeacd50a1b6c","max_size_mb":160}, + {"source":"pytorchcv","name":"mobilenetv2_wd2","architecture":"mobilenetv2_wd2","task":"classification","input_shape":[1,3,224,224],"architecture_sha256":"7d226776e15cba13e8f7435976535262eaa90780d5afcf89e8bed5e6d4b3ebb4","max_size_mb":160}, + {"source":"pytorchcv","name":"mobilenetv2_wd4","architecture":"mobilenetv2_wd4","task":"classification","input_shape":[1,3,224,224],"architecture_sha256":"e514a3875780ff08df3d50991543f792f5334e6dd5b19b9f6f8b368cd930d7c8","max_size_mb":160}, + {"source":"pytorchcv","name":"mobilenetv2b_w1","architecture":"mobilenetv2b_w1","task":"classification","input_shape":[1,3,224,224],"architecture_sha256":"1d31c5959e997b7297ba5b4320bfc7895b4bfb1669e989f933eb0a5f91310000","max_size_mb":160}, + {"source":"pytorchcv","name":"mobilenetv2b_w3d4","architecture":"mobilenetv2b_w3d4","task":"classification","input_shape":[1,3,224,224],"architecture_sha256":"1eacdbe9b88b5a94975a965c6e6b496951322871578e23d1bdbb9686a16b0bf4","max_size_mb":160}, + {"source":"pytorchcv","name":"mobilenetv2b_wd2","architecture":"mobilenetv2b_wd2","task":"classification","input_shape":[1,3,224,224],"architecture_sha256":"3cf169797bb37599c4a333089663e96f623e070304973c25a81b3b90a174e146","max_size_mb":160}, + {"source":"pytorchcv","name":"mobilenetv2b_wd4","architecture":"mobilenetv2b_wd4","task":"classification","input_shape":[1,3,224,224],"architecture_sha256":"bcccb76559f582d0f7487fd099548fcf64b2c89a4911e59c2807199b5cd22b81","max_size_mb":160}, + {"source":"pytorchcv","name":"mobilenetv3_large_w1","architecture":"mobilenetv3_large_w1","task":"classification","input_shape":[1,3,224,224],"architecture_sha256":"1b067de18596d28c1f6b62c10a6554ce6830f088ce58499c4e5d61f92e6cf7a9","max_size_mb":160}, + {"source":"pytorchcv","name":"mobilenetv3_large_w3d4","architecture":"mobilenetv3_large_w3d4","task":"classification","input_shape":[1,3,224,224],"architecture_sha256":"e52f02aca767313509cae6365cf8dcd74416d5bbf18b48ce27018bed542ad999","max_size_mb":160}, + {"source":"pytorchcv","name":"mobilenetv3_large_w5d4","architecture":"mobilenetv3_large_w5d4","task":"classification","input_shape":[1,3,224,224],"architecture_sha256":"49e1f25fd472e617768f74f6e5b299ead2f2ccd832c17b966928085a1f9784d6","max_size_mb":160}, + {"source":"pytorchcv","name":"mobilenetv3_large_w7d20","architecture":"mobilenetv3_large_w7d20","task":"classification","input_shape":[1,3,224,224],"architecture_sha256":"094b21dc4a5d8af45a457da25a232b442456f01e0b92a78287cef50cee9bf66f","max_size_mb":160}, + {"source":"pytorchcv","name":"mobilenetv3_large_wd2","architecture":"mobilenetv3_large_wd2","task":"classification","input_shape":[1,3,224,224],"architecture_sha256":"a6616cbb2bc38b9ce7eb1654febf22e44f01df443007fd7d29fdea6b40942f5c","max_size_mb":160}, + {"source":"pytorchcv","name":"mobilenetv3_small_w1","architecture":"mobilenetv3_small_w1","task":"classification","input_shape":[1,3,224,224],"architecture_sha256":"e5cd77d10e74dae711fcd334e023b69174f7f787401ab43a2badf72e5155991f","max_size_mb":160}, + {"source":"pytorchcv","name":"mobilenetv3_small_w3d4","architecture":"mobilenetv3_small_w3d4","task":"classification","input_shape":[1,3,224,224],"architecture_sha256":"45f969d6d0c8f04cd620eddd6847ebd328e8b66fc10b097f35c81805ebad1dfc","max_size_mb":160}, + {"source":"pytorchcv","name":"mobilenetv3_small_w5d4","architecture":"mobilenetv3_small_w5d4","task":"classification","input_shape":[1,3,224,224],"architecture_sha256":"c0b13b00663825bf135146e5007e72f7c5799ef99f243dd923838915fe761fea","max_size_mb":160}, + {"source":"pytorchcv","name":"mobilenetv3_small_w7d20","architecture":"mobilenetv3_small_w7d20","task":"classification","input_shape":[1,3,224,224],"architecture_sha256":"9658aa10ac28390a593cf71104599897e473f4d7f33d8dd73ff874b32774e850","max_size_mb":160}, + {"source":"pytorchcv","name":"mobilenetv3_small_wd2","architecture":"mobilenetv3_small_wd2","task":"classification","input_shape":[1,3,224,224],"architecture_sha256":"add521c5655f43b71d303b7d8012ac0a4c99a5acd2cf819cd104e28f88740e05","max_size_mb":160}, + {"source":"pytorchcv","name":"msdnet22","architecture":"msdnet22","task":"classification","input_shape":[1,3,224,224],"architecture_sha256":"9d56a723a2ac51af06ccf0e95adba7b7a168ba6a683a5e1d44bbaea130cbb6a5","max_size_mb":160}, + {"source":"pytorchcv","name":"msdnet22_cifar10","architecture":"msdnet22_cifar10","task":"classification","input_shape":[1,3,32,32],"architecture_sha256":"31486e0795eb1a315e7e4cb192d57366b09fa0d4ea4f9d559ab58428d45d487c","max_size_mb":160}, + {"source":"pytorchcv","name":"nasnet_4a1056","architecture":"nasnet_4a1056","task":"classification","input_shape":[1,3,224,224],"architecture_sha256":"37f1b445924c7fc751a25b186f3886170122f6cdca915fc9c94cc908234bff27","max_size_mb":160}, + {"source":"pytorchcv","name":"nin_cifar10","architecture":"nin_cifar10","task":"classification","input_shape":[1,3,32,32],"architecture_sha256":"6e3b727fc7b08a62d0bb4ffa7d354970757278325617745d349538830da8770e","max_size_mb":160}, + {"source":"pytorchcv","name":"nin_cifar100","architecture":"nin_cifar100","task":"classification","input_shape":[1,3,32,32],"architecture_sha256":"2e17d185685424e49166f25abd40e69c19c04de67716684a8641cb0ab7615c3a","max_size_mb":160}, + {"source":"pytorchcv","name":"octresnet10_ad2","architecture":"octresnet10_ad2","task":"classification","input_shape":[1,3,224,224],"architecture_sha256":"4f5886832d457dbb60fabdd74a5c50abe0b62f9d14df535f7ee270ef46252b32","max_size_mb":160}, + {"source":"pytorchcv","name":"octresnet50b_ad2","architecture":"octresnet50b_ad2","task":"classification","input_shape":[1,3,224,224],"architecture_sha256":"613663762809f1e06f5215babd3b88e06c0462be3b8c86672ea61f16df3e860a","max_size_mb":160}, + {"source":"pytorchcv","name":"peleenet","architecture":"peleenet","task":"classification","input_shape":[1,3,224,224],"architecture_sha256":"edf595f69479bd43d7d6a0a1bbb9396955a070d2e564f6685719c4c486a7c844","max_size_mb":160}, + {"source":"pytorchcv","name":"pfpcnet","architecture":"pfpcnet","task":"classification","input_shape":[1,1,320,240],"architecture_sha256":"76425cd8075e0f1b36a2241fc4b883bfb46025855e8cee7142674bc9298fe78d","max_size_mb":160}, + {"source":"pytorchcv","name":"preresnet10","architecture":"preresnet10","task":"classification","input_shape":[1,3,224,224],"architecture_sha256":"3a71b0fa70502037a2698803076a5d945b3730c2e4022c4133b753eea87c7e5c","max_size_mb":160}, + {"source":"pytorchcv","name":"preresnet110_cifar10","architecture":"preresnet110_cifar10","task":"classification","input_shape":[1,3,32,32],"architecture_sha256":"54a2b55d8d8e6292fcb93f60a723f1259150c45d64ba0d9f99f6e9a0561bb2e9","max_size_mb":160}, + {"source":"pytorchcv","name":"preresnet110_cifar100","architecture":"preresnet110_cifar100","task":"classification","input_shape":[1,3,32,32],"architecture_sha256":"caba6e4b7141d18d5b65947fedc0e6f93cc0de00c5ced176ebc0f901cdb67926","max_size_mb":160}, + {"source":"pytorchcv","name":"preresnet12","architecture":"preresnet12","task":"classification","input_shape":[1,3,224,224],"architecture_sha256":"ce535e191308e67cf56b3b5c7fe6e3306a0e72a04b96fd5a115d8766ed0abd29","max_size_mb":160}, + {"source":"pytorchcv","name":"preresnet14","architecture":"preresnet14","task":"classification","input_shape":[1,3,224,224],"architecture_sha256":"8560cbea75e0e1e30bf00227bbcb8b2b7b6f84fc6f172f53b511a43f89fbca1d","max_size_mb":160}, + {"source":"pytorchcv","name":"preresnet16","architecture":"preresnet16","task":"classification","input_shape":[1,3,224,224],"architecture_sha256":"8baf6d275bbeabef7bbf25024342c1658e95f30a11ddda11eff8b1ae4c9132e4","max_size_mb":160}, + {"source":"pytorchcv","name":"preresnet164bn_cifar10","architecture":"preresnet164bn_cifar10","task":"classification","input_shape":[1,3,32,32],"architecture_sha256":"8eee66ff7359a50360e44396ca451db06b21c73176725b31487121773aa849a5","max_size_mb":160}, + {"source":"pytorchcv","name":"preresnet164bn_cifar100","architecture":"preresnet164bn_cifar100","task":"classification","input_shape":[1,3,32,32],"architecture_sha256":"d1a30a693fbd0c2196cc7750034c4dd2ea98dda7700668894910dbe948e29e98","max_size_mb":160}, + {"source":"pytorchcv","name":"preresnet18","architecture":"preresnet18","task":"classification","input_shape":[1,3,224,224],"architecture_sha256":"df273894bd7441abee75bf29f50e9393d731142ca3e989547b54c39270a8dfb2","max_size_mb":160}, + {"source":"pytorchcv","name":"preresnet18_w3d4","architecture":"preresnet18_w3d4","task":"classification","input_shape":[1,3,224,224],"architecture_sha256":"2a560f7b1149254851f9e1712800065c711b5bfb2bf22accdec8be2deeda4b04","max_size_mb":160}, + {"source":"pytorchcv","name":"preresnet18_wd2","architecture":"preresnet18_wd2","task":"classification","input_shape":[1,3,224,224],"architecture_sha256":"c48edf85a52da1f281a96f316c386bbfb963aa87366eb21c2b7be3e6f69235cc","max_size_mb":160}, + {"source":"pytorchcv","name":"preresnet18_wd4","architecture":"preresnet18_wd4","task":"classification","input_shape":[1,3,224,224],"architecture_sha256":"21688c4c7bbea816a38a017a82484d4859ae88d1e3fcffd2157b0f13f7df9a69","max_size_mb":160}, + {"source":"pytorchcv","name":"preresnet20_cifar10","architecture":"preresnet20_cifar10","task":"classification","input_shape":[1,3,32,32],"architecture_sha256":"c21870cbfa473c4bbed75c5d030796e27f00ca679f22fd6390388add35e484fa","max_size_mb":160}, + {"source":"pytorchcv","name":"preresnet20_cifar100","architecture":"preresnet20_cifar100","task":"classification","input_shape":[1,3,32,32],"architecture_sha256":"e3adb3dc661f3c31e2770fd31b69e614399bed3908329e5e00f8613faae46e86","max_size_mb":160}, + {"source":"pytorchcv","name":"preresnet26","architecture":"preresnet26","task":"classification","input_shape":[1,3,224,224],"architecture_sha256":"d99ac102d276db6c1b31abb49e326a15f570f8eb2c87b23bbc3f097d08d17973","max_size_mb":160}, + {"source":"pytorchcv","name":"preresnet272bn_cifar10","architecture":"preresnet272bn_cifar10","task":"classification","input_shape":[1,3,32,32],"architecture_sha256":"a1b4378d8548311f83773256e5de126dd0f9aebcdab383fc164f3b11f901f484","max_size_mb":160}, + {"source":"pytorchcv","name":"preresnet272bn_cifar100","architecture":"preresnet272bn_cifar100","task":"classification","input_shape":[1,3,32,32],"architecture_sha256":"c52f274fce2c252250d510c0a45eaf47f7b148e285630a29ce818ec31f83e6a0","max_size_mb":160}, + {"source":"pytorchcv","name":"preresnet34","architecture":"preresnet34","task":"classification","input_shape":[1,3,224,224],"architecture_sha256":"93d3bbb645867f89b23f3f4784444ac8dcb9ef7b7ec094234617148a6438574d","max_size_mb":160}, + {"source":"pytorchcv","name":"preresnet50","architecture":"preresnet50","task":"classification","input_shape":[1,3,224,224],"architecture_sha256":"8290941730f21e5c2174857674b904e366c9978f5dca49f718861c52b6f17500","max_size_mb":160}, + {"source":"pytorchcv","name":"preresnet50b","architecture":"preresnet50b","task":"classification","input_shape":[1,3,224,224],"architecture_sha256":"0a43072fe7f9b6d764bb76a4c52559a75df1e9628faf284a26da3b32ebb9ad97","max_size_mb":160}, + {"source":"pytorchcv","name":"preresnet542bn_cifar10","architecture":"preresnet542bn_cifar10","task":"classification","input_shape":[1,3,32,32],"architecture_sha256":"a8fba5c6cabd5e435656c07beea92bb048d4d5f75bd2b90da6f099fa0574960a","max_size_mb":160}, + {"source":"pytorchcv","name":"preresnet542bn_cifar100","architecture":"preresnet542bn_cifar100","task":"classification","input_shape":[1,3,32,32],"architecture_sha256":"a15227fc5e3e8337ce70aaeee39463adf095e6cfb99a0d68eaba9670d6b187d6","max_size_mb":160}, + {"source":"pytorchcv","name":"preresnet56_cifar10","architecture":"preresnet56_cifar10","task":"classification","input_shape":[1,3,32,32],"architecture_sha256":"fe3c22347839b34f651c19e6cf4c1447b4aaa110db7e320bd6f2b0b881b7975a","max_size_mb":160}, + {"source":"pytorchcv","name":"preresnet56_cifar100","architecture":"preresnet56_cifar100","task":"classification","input_shape":[1,3,32,32],"architecture_sha256":"9710572a8157ec4a69b49ad43dea31cd0f33cd775d26b340e2fc48ff95c4d6b8","max_size_mb":160}, + {"source":"pytorchcv","name":"preresnetbc14b","architecture":"preresnetbc14b","task":"classification","input_shape":[1,3,224,224],"architecture_sha256":"1097487bb474e54cb19525d1e1673bd93a2021e79171e69beceef9aafd890239","max_size_mb":160}, + {"source":"pytorchcv","name":"preresnetbc26b","architecture":"preresnetbc26b","task":"classification","input_shape":[1,3,224,224],"architecture_sha256":"5fdf78e1c01fc33995f9fdbb8aaf7626d8437776d26c401d5ed6063b33ac6af4","max_size_mb":160}, + {"source":"pytorchcv","name":"preresnetbc38b","architecture":"preresnetbc38b","task":"classification","input_shape":[1,3,224,224],"architecture_sha256":"dbe1220e2a6f212314aadca03f93604e0cfdb2bb9252ce42680a4047183531b4","max_size_mb":160}, + {"source":"pytorchcv","name":"proxylessnas_cpu","architecture":"proxylessnas_cpu","task":"classification","input_shape":[1,3,224,224],"architecture_sha256":"63aeb0b577336fda6c386b0be5c2f3ba1a43b21dd5e72cbc81955cdccc689098","max_size_mb":160}, + {"source":"pytorchcv","name":"proxylessnas_cpu_cub","architecture":"proxylessnas_cpu_cub","task":"classification","input_shape":[1,3,224,224],"architecture_sha256":"f54f844654d0de6f86abdd7d19870bfe7024cbc030f2477eecd0560d562738df","max_size_mb":160}, + {"source":"pytorchcv","name":"proxylessnas_gpu","architecture":"proxylessnas_gpu","task":"classification","input_shape":[1,3,224,224],"architecture_sha256":"5b10fa4604ade3647bfe5a6d957bece67701df7b90908f697fa3bc7a5069db8a","max_size_mb":160}, + {"source":"pytorchcv","name":"proxylessnas_gpu_cub","architecture":"proxylessnas_gpu_cub","task":"classification","input_shape":[1,3,224,224],"architecture_sha256":"474971ab1e77f055284903051676eb16fc8bb5ebbf428fcb863ea263017ea612","max_size_mb":160}, + {"source":"pytorchcv","name":"proxylessnas_mobile","architecture":"proxylessnas_mobile","task":"classification","input_shape":[1,3,224,224],"architecture_sha256":"85dd8a5936266615525960d033860f0fb0ac7ea18e2b6ac3188aad889afed717","max_size_mb":160}, + {"source":"pytorchcv","name":"proxylessnas_mobile14","architecture":"proxylessnas_mobile14","task":"classification","input_shape":[1,3,224,224],"architecture_sha256":"556f582a3541ac8f1245d13f94265ba4c00ba0feef20f1539ed7107ca55f4d71","max_size_mb":160}, + {"source":"pytorchcv","name":"proxylessnas_mobile14_cub","architecture":"proxylessnas_mobile14_cub","task":"classification","input_shape":[1,3,224,224],"architecture_sha256":"89424892ea659a7b622c992705e7af232f5cbe46e8fc53b08942dad10fb9f81e","max_size_mb":160}, + {"source":"pytorchcv","name":"proxylessnas_mobile_cub","architecture":"proxylessnas_mobile_cub","task":"classification","input_shape":[1,3,224,224],"architecture_sha256":"24198d5293b8cdaa0253e9a59bef306d1ff0e2e5741866fb935229103eabcb6d","max_size_mb":160}, + {"source":"pytorchcv","name":"pyramidnet110_a270_cifar10","architecture":"pyramidnet110_a270_cifar10","task":"classification","input_shape":[1,3,32,32],"architecture_sha256":"c06d44c463047ff8e7f5932f448cff17d5de1799d90b8469ed7d02d5ec3d763e","max_size_mb":160}, + {"source":"pytorchcv","name":"pyramidnet110_a270_cifar100","architecture":"pyramidnet110_a270_cifar100","task":"classification","input_shape":[1,3,32,32],"architecture_sha256":"1bff36e567956bef2977e6ee754ae19aa8b7a2689453eb2c781493d6f605452a","max_size_mb":160}, + {"source":"pytorchcv","name":"pyramidnet110_a48_cifar10","architecture":"pyramidnet110_a48_cifar10","task":"classification","input_shape":[1,3,32,32],"architecture_sha256":"2723ee6c651a449b953453b7323014ac97675e5874c91d5dfd0934ca74400a26","max_size_mb":160}, + {"source":"pytorchcv","name":"pyramidnet110_a48_cifar100","architecture":"pyramidnet110_a48_cifar100","task":"classification","input_shape":[1,3,32,32],"architecture_sha256":"3ddf64452aad0fa962d9c5d37ed646ebce235d29ec6586249f8a28842b222331","max_size_mb":160}, + {"source":"pytorchcv","name":"pyramidnet110_a84_cifar10","architecture":"pyramidnet110_a84_cifar10","task":"classification","input_shape":[1,3,32,32],"architecture_sha256":"033b757bb179dbef97dd95b7966dd4fe799d34681ac71211dc7cbbdeaa09472d","max_size_mb":160}, + {"source":"pytorchcv","name":"pyramidnet110_a84_cifar100","architecture":"pyramidnet110_a84_cifar100","task":"classification","input_shape":[1,3,32,32],"architecture_sha256":"0cad0df5decd361f458fca0d4e51bcab78b147724e161ca327192823b6f63168","max_size_mb":160}, + {"source":"pytorchcv","name":"pyramidnet164_a270_bn_cifar10","architecture":"pyramidnet164_a270_bn_cifar10","task":"classification","input_shape":[1,3,32,32],"architecture_sha256":"c22e5623d4eaa8b0c22b4ce5a8436e7b870fd56b779204f6a77cec28fcf59059","max_size_mb":160}, + {"source":"pytorchcv","name":"pyramidnet164_a270_bn_cifar100","architecture":"pyramidnet164_a270_bn_cifar100","task":"classification","input_shape":[1,3,32,32],"architecture_sha256":"25426735fcdcc7d2b0eb690f56470db2cc85c7542e559a54fded228465fb6cb2","max_size_mb":160}, + {"source":"pytorchcv","name":"pyramidnet200_a240_bn_cifar10","architecture":"pyramidnet200_a240_bn_cifar10","task":"classification","input_shape":[1,3,32,32],"architecture_sha256":"428aee8fff9859aac47241c338eb311fc0d4b229585ed36d55f58714a1098d47","max_size_mb":160}, + {"source":"pytorchcv","name":"pyramidnet200_a240_bn_cifar100","architecture":"pyramidnet200_a240_bn_cifar100","task":"classification","input_shape":[1,3,32,32],"architecture_sha256":"28abdb272084b488f4b07f5966babf16119309504241b2180ab8e4a74b38c7d1","max_size_mb":160}, + {"source":"pytorchcv","name":"pyramidnet236_a220_bn_cifar10","architecture":"pyramidnet236_a220_bn_cifar10","task":"classification","input_shape":[1,3,32,32],"architecture_sha256":"da39a417d7fb6ebcf1d4986e16a8ccf3069b183b84daa5c9a6493ad1dc0e1ebf","max_size_mb":160}, + {"source":"pytorchcv","name":"pyramidnet236_a220_bn_cifar100","architecture":"pyramidnet236_a220_bn_cifar100","task":"classification","input_shape":[1,3,32,32],"architecture_sha256":"b7c1f4afbebb24027b61f9da70d114cd9ab415daddbf65c7d0e0a4725833e87a","max_size_mb":160}, + {"source":"pytorchcv","name":"pyramidnet272_a200_bn_cifar10","architecture":"pyramidnet272_a200_bn_cifar10","task":"classification","input_shape":[1,3,32,32],"architecture_sha256":"d4e650a65e940f659c0bff29560c54bb2be6a4fd49c3bb6945ed780d5b36a7b9","max_size_mb":160}, + {"source":"pytorchcv","name":"pyramidnet272_a200_bn_cifar100","architecture":"pyramidnet272_a200_bn_cifar100","task":"classification","input_shape":[1,3,32,32],"architecture_sha256":"a224da9bbdb9fcd0df9576c03abc0686390ea06bde1a5e636466a76e1d616ccb","max_size_mb":160}, + {"source":"pytorchcv","name":"regnetx002","architecture":"regnetx002","task":"classification","input_shape":[1,3,224,224],"architecture_sha256":"7bf2093d85f2d09426b9f6f2e61e114fe0d3a85685eb6f29f71ab9eb5a2079bf","max_size_mb":160}, + {"source":"pytorchcv","name":"regnetx004","architecture":"regnetx004","task":"classification","input_shape":[1,3,224,224],"architecture_sha256":"7ff9f7bfb9802543dd2c5dc2b2d3a4fdb571dc50d51ffae08e8b1fe9297391d6","max_size_mb":160}, + {"source":"pytorchcv","name":"regnetx006","architecture":"regnetx006","task":"classification","input_shape":[1,3,224,224],"architecture_sha256":"79d307cae00b5f4612cc3acd12ea08a5aeefd3b27f212c6e21b3b7bf43f1b405","max_size_mb":160}, + {"source":"pytorchcv","name":"regnetx008","architecture":"regnetx008","task":"classification","input_shape":[1,3,224,224],"architecture_sha256":"1d565230014667f6d3369c82f813a86ce217c56b763500a07a6e9e6341cb3fcc","max_size_mb":160}, + {"source":"pytorchcv","name":"regnetx016","architecture":"regnetx016","task":"classification","input_shape":[1,3,224,224],"architecture_sha256":"b249c92e7d58c7c3980d958cb2d31bd99aaeb61698858ffa3e681768c45d1383","max_size_mb":160}, + {"source":"pytorchcv","name":"regnetx040","architecture":"regnetx040","task":"classification","input_shape":[1,3,224,224],"architecture_sha256":"95029a2d5b1c78cb471d289bb2455e463a26700d6eaef366675545919935fd96","max_size_mb":160}, + {"source":"pytorchcv","name":"regnetx064","architecture":"regnetx064","task":"classification","input_shape":[1,3,224,224],"architecture_sha256":"410ee32cf820732f3cf2ae576db688945c8768f18dc926ace323ac6bb3b82b78","max_size_mb":160}, + {"source":"pytorchcv","name":"regnetx080","architecture":"regnetx080","task":"classification","input_shape":[1,3,224,224],"architecture_sha256":"20090f7f355c1afddb1bb7e109d3fda97bff5b317cff884a6c44bb3048e0295b","max_size_mb":160}, + {"source":"pytorchcv","name":"regnety002","architecture":"regnety002","task":"classification","input_shape":[1,3,224,224],"architecture_sha256":"feadf141a598eb0eacd873af17f1e99d2df7f0c59e02084dff0fdbf55e52ffd9","max_size_mb":160}, + {"source":"pytorchcv","name":"regnety004","architecture":"regnety004","task":"classification","input_shape":[1,3,224,224],"architecture_sha256":"ac5977c9fb23227a620ffbb81218a0b2a082cddb84a2c6c1def54b9d7e682558","max_size_mb":160}, + {"source":"pytorchcv","name":"regnety006","architecture":"regnety006","task":"classification","input_shape":[1,3,224,224],"architecture_sha256":"fe893b583477b6884e6b824379755a0e98b0c4cda2e7b142367244070ce4bbde","max_size_mb":160}, + {"source":"pytorchcv","name":"regnety008","architecture":"regnety008","task":"classification","input_shape":[1,3,224,224],"architecture_sha256":"3c53810c282e57b9060c8b46de4f6b38265385c8900784ed886ad5ac07969539","max_size_mb":160}, + {"source":"pytorchcv","name":"regnety032","architecture":"regnety032","task":"classification","input_shape":[1,3,224,224],"architecture_sha256":"f76bef49d598453d649086f77f2121cacb6dfd96213af25fed089063a0e43861","max_size_mb":160}, + {"source":"pytorchcv","name":"regnety064","architecture":"regnety064","task":"classification","input_shape":[1,3,224,224],"architecture_sha256":"6e615b5f720e928dcf9f2e41abd834ed3d3ff4c02d10c2681dfc583523eab6a4","max_size_mb":160}, + {"source":"pytorchcv","name":"regnety080","architecture":"regnety080","task":"classification","input_shape":[1,3,224,224],"architecture_sha256":"e33bd3f7220f9871e3972e17399402fa731152392fb69e58a90776dee9a3e7be","max_size_mb":160}, + {"source":"pytorchcv","name":"resattnet56","architecture":"resattnet56","task":"classification","input_shape":[1,3,224,224],"architecture_sha256":"7fd933cd447f26a28b52b488fb77914beb588cb5cbabdf1b2bd7930831f81637","max_size_mb":160}, + {"source":"pytorchcv","name":"resdropresnet20_cifar10","architecture":"resdropresnet20_cifar10","task":"classification","input_shape":[1,3,32,32],"architecture_sha256":"8f43a7a0555d557f7a6d7d04f8d0ece390759889fb2b2db288103d66354a7268","max_size_mb":160}, + {"source":"pytorchcv","name":"resdropresnet20_cifar100","architecture":"resdropresnet20_cifar100","task":"classification","input_shape":[1,3,32,32],"architecture_sha256":"a6e09657e29d5cd967aa5340c395a44bf95ce3d88f9e78a05eae13e47972b2b4","max_size_mb":160}, + {"source":"pytorchcv","name":"resnesta18","architecture":"resnesta18","task":"classification","input_shape":[1,3,224,224],"architecture_sha256":"4ebeda3216de09ae5267669d561a83100c7fd67cb09492b205880ee300c20c6c","max_size_mb":160}, + {"source":"pytorchcv","name":"resnestabc14","architecture":"resnestabc14","task":"classification","input_shape":[1,3,224,224],"architecture_sha256":"c2e04c5aa148374776e6d83f530b101294311c6e388f0228eacb1154a5a772a1","max_size_mb":160}, + {"source":"pytorchcv","name":"resnestabc26","architecture":"resnestabc26","task":"classification","input_shape":[1,3,224,224],"architecture_sha256":"59cb72afdcecba1d67edcd985145d8177b0f431fb265ddb0c0f8416f13f05a54","max_size_mb":160}, + {"source":"pytorchcv","name":"resnet10","architecture":"resnet10","task":"classification","input_shape":[1,3,224,224],"architecture_sha256":"df6370aeebce5c85fe83fb4affc16bb863d02b64d009e462d7a1bf0efa0a89c3","max_size_mb":160}, + {"source":"pytorchcv","name":"resnet10_cub","architecture":"resnet10_cub","task":"classification","input_shape":[1,3,224,224],"architecture_sha256":"6996656eb4e4ad45c980a678d7390216199b030d8950c3362ddd2ca434bc0215","max_size_mb":160}, + {"source":"pytorchcv","name":"resnet110_cifar10","architecture":"resnet110_cifar10","task":"classification","input_shape":[1,3,32,32],"architecture_sha256":"8a4ac906426f0f55c655ed28d53890de06184882e210ddddb93c515226459efa","max_size_mb":160}, + {"source":"pytorchcv","name":"resnet110_cifar100","architecture":"resnet110_cifar100","task":"classification","input_shape":[1,3,32,32],"architecture_sha256":"873594b9afb333a9488a327edee6d22ae9e07bb3475a27e5e408b9ea766f0935","max_size_mb":160}, + {"source":"pytorchcv","name":"resnet12","architecture":"resnet12","task":"classification","input_shape":[1,3,224,224],"architecture_sha256":"bd29827783685c52e32060a1ae4c2c9ef8add354441c89721667926e72131fae","max_size_mb":160}, + {"source":"pytorchcv","name":"resnet12_cub","architecture":"resnet12_cub","task":"classification","input_shape":[1,3,224,224],"architecture_sha256":"c4971f3c0c26078d1cf03cfbb8d11cbad9e3257d0a68747d5cdfff15b0ab43df","max_size_mb":160}, + {"source":"pytorchcv","name":"resnet14","architecture":"resnet14","task":"classification","input_shape":[1,3,224,224],"architecture_sha256":"c9d90efcb38b331b22e4c8f721aa825d6ad74eaa22e51515d2ac640b9e6277a7","max_size_mb":160}, + {"source":"pytorchcv","name":"resnet14_cub","architecture":"resnet14_cub","task":"classification","input_shape":[1,3,224,224],"architecture_sha256":"bea3867d834c16fcb58ace05d9f8ca28fb2aa04d12888c5fbb9f060d264a96d6","max_size_mb":160}, + {"source":"pytorchcv","name":"resnet16","architecture":"resnet16","task":"classification","input_shape":[1,3,224,224],"architecture_sha256":"4618186cca0c22ac99ce6af4c60a616c5050afefc1faaff33855c4b386ffb394","max_size_mb":160}, + {"source":"pytorchcv","name":"resnet164bn_cifar10","architecture":"resnet164bn_cifar10","task":"classification","input_shape":[1,3,32,32],"architecture_sha256":"ba224db98f57638b94e881530bdc6d61633a8a1cea6b9ef5ee47687d145b9cdc","max_size_mb":160}, + {"source":"pytorchcv","name":"resnet164bn_cifar100","architecture":"resnet164bn_cifar100","task":"classification","input_shape":[1,3,32,32],"architecture_sha256":"5a93b257da58affd492cc4abaa11fe18a1c89a65e5bd3fe511b8b7b6748876ab","max_size_mb":160}, + {"source":"pytorchcv","name":"resnet16_cub","architecture":"resnet16_cub","task":"classification","input_shape":[1,3,224,224],"architecture_sha256":"e9282fe0333bb0b4d09c3219cb445043b96e00cf30f321a918a82d76ccf4e83c","max_size_mb":160}, + {"source":"pytorchcv","name":"resnet18","architecture":"resnet18","task":"classification","input_shape":[1,3,224,224],"architecture_sha256":"a9eb0828235f748d0d7009444a041bf694837f6e527637adc29cf374b442207e","max_size_mb":160}, + {"source":"pytorchcv","name":"resnet18_cub","architecture":"resnet18_cub","task":"classification","input_shape":[1,3,224,224],"architecture_sha256":"4ea4aa19ec1e0418a86317f601c4c25312d2312139bb7345e2a21be9210c3ad6","max_size_mb":160}, + {"source":"pytorchcv","name":"resnet18_w3d4","architecture":"resnet18_w3d4","task":"classification","input_shape":[1,3,224,224],"architecture_sha256":"98cdb23616848e4abf22da41dd2aef62322f32849a9ce2d2da9a0fbf5becf0a3","max_size_mb":160}, + {"source":"pytorchcv","name":"resnet18_wd2","architecture":"resnet18_wd2","task":"classification","input_shape":[1,3,224,224],"architecture_sha256":"dd1e455aed86c83256d240b15004d1b8de3fb0375ddce8a23a8fd4a67602ffda","max_size_mb":160}, + {"source":"pytorchcv","name":"resnet18_wd4","architecture":"resnet18_wd4","task":"classification","input_shape":[1,3,224,224],"architecture_sha256":"324ad85c1fc25647d2c4fd120174faed70a5fa5ecabe12fc4ddce42dd59e01b0","max_size_mb":160}, + {"source":"pytorchcv","name":"resnet26","architecture":"resnet26","task":"classification","input_shape":[1,3,224,224],"architecture_sha256":"c612112f6c0159da7b89af9bfb0cbdfc35cbee48815aef57d910441a6bc4a102","max_size_mb":160}, + {"source":"pytorchcv","name":"resnet26_cub","architecture":"resnet26_cub","task":"classification","input_shape":[1,3,224,224],"architecture_sha256":"f63f8085adcfe491a40d8e5274e774dff742e4078231b0c0887014b836c54327","max_size_mb":160}, + {"source":"pytorchcv","name":"resnet272bn_cifar10","architecture":"resnet272bn_cifar10","task":"classification","input_shape":[1,3,32,32],"architecture_sha256":"2b22711119c93dd7fa3f156bc4d09ec5551635063c814e338a32af8f4537b24c","max_size_mb":160}, + {"source":"pytorchcv","name":"resnet272bn_cifar100","architecture":"resnet272bn_cifar100","task":"classification","input_shape":[1,3,32,32],"architecture_sha256":"bd2986107e7d1538f5911458b49a4b537b47fdae226896e5cb3be17787ad454f","max_size_mb":160}, + {"source":"pytorchcv","name":"resnet34","architecture":"resnet34","task":"classification","input_shape":[1,3,224,224],"architecture_sha256":"0fb85ce9e605388804569a4a6f14b6122a24168204aab7b09ac9140246fe36db","max_size_mb":160}, + {"source":"pytorchcv","name":"resnet34_cub","architecture":"resnet34_cub","task":"classification","input_shape":[1,3,224,224],"architecture_sha256":"b65981f8cd324f2faff301a48119af21c96e1179aa6f12e367510028d0e9d4e1","max_size_mb":160}, + {"source":"pytorchcv","name":"resnet50","architecture":"resnet50","task":"classification","input_shape":[1,3,224,224],"architecture_sha256":"629f8f303e71eb4d14a0fab8ae63e052b859c1c52a4fc1df2cf1a4b3140f8453","max_size_mb":160}, + {"source":"pytorchcv","name":"resnet50_cub","architecture":"resnet50_cub","task":"classification","input_shape":[1,3,224,224],"architecture_sha256":"20af68226a4e3a3f9553aab2182b86e5a9d81e5f6f50dd3214eb06a2fd4f958b","max_size_mb":160}, + {"source":"pytorchcv","name":"resnet50b","architecture":"resnet50b","task":"classification","input_shape":[1,3,224,224],"architecture_sha256":"b110f4d45348311971ff20ce3c88f43eb4dd645c5e099b92df3b442b423cbe8d","max_size_mb":160}, + {"source":"pytorchcv","name":"resnet50b_cub","architecture":"resnet50b_cub","task":"classification","input_shape":[1,3,224,224],"architecture_sha256":"b635b6044af0f6c1b3e0284cd00eca8e8ab612f667ce9d2539669f111f975597","max_size_mb":160}, + {"source":"pytorchcv","name":"resnet542bn_cifar10","architecture":"resnet542bn_cifar10","task":"classification","input_shape":[1,3,32,32],"architecture_sha256":"957c7e87a71ec17899ffc9ace4633a1b25af368658afff97c57a4d26d49694cb","max_size_mb":160}, + {"source":"pytorchcv","name":"resnet542bn_cifar100","architecture":"resnet542bn_cifar100","task":"classification","input_shape":[1,3,32,32],"architecture_sha256":"503f6d5537033e36096e327ef499aa4e44bae6e2fb36afe70f388522c7e1f820","max_size_mb":160}, + {"source":"pytorchcv","name":"resnet56_cifar10","architecture":"resnet56_cifar10","task":"classification","input_shape":[1,3,32,32],"architecture_sha256":"695d23fd98dcedfd66db334b5d2879cea3fbbe5c6675cde6ac34d01933b49d3a","max_size_mb":160}, + {"source":"pytorchcv","name":"resnet56_cifar100","architecture":"resnet56_cifar100","task":"classification","input_shape":[1,3,32,32],"architecture_sha256":"7167faa36861b93c036a38686a85fc4cebe45bb3639739a7803ce2b33102e734","max_size_mb":160}, + {"source":"pytorchcv","name":"resneta10","architecture":"resneta10","task":"classification","input_shape":[1,3,224,224],"architecture_sha256":"66a84efb6657cb85e9d3e34d76fd85c58cbb541ee9bb98bac93a9d2573837957","max_size_mb":160}, + {"source":"pytorchcv","name":"resneta18","architecture":"resneta18","task":"classification","input_shape":[1,3,224,224],"architecture_sha256":"e0e5728f039289e66b84de9f3b688514007425dbbe8393a16283818ccd5d178c","max_size_mb":160}, + {"source":"pytorchcv","name":"resneta50b","architecture":"resneta50b","task":"classification","input_shape":[1,3,224,224],"architecture_sha256":"43609c217666986bcbc3d13d9e6b751de933f1ddba2fe53dadc3f8304a72cc24","max_size_mb":160}, + {"source":"pytorchcv","name":"resnetabc14b","architecture":"resnetabc14b","task":"classification","input_shape":[1,3,224,224],"architecture_sha256":"015736cc6db361ab245cd138fb5c2fb1cb636a58478aa93cb8d8c95bada49e32","max_size_mb":160}, + {"source":"pytorchcv","name":"resnetbc14b","architecture":"resnetbc14b","task":"classification","input_shape":[1,3,224,224],"architecture_sha256":"8a48a96090b8de3a944fe5ceee8a9660b62a35f82599480937b36cdff3133de5","max_size_mb":160}, + {"source":"pytorchcv","name":"resnetbc14b_cub","architecture":"resnetbc14b_cub","task":"classification","input_shape":[1,3,224,224],"architecture_sha256":"8f646f090e4d98bdfb71fc03330183b1a59482a70d84f8f7ac3e7563d6364892","max_size_mb":160}, + {"source":"pytorchcv","name":"resnetbc26b","architecture":"resnetbc26b","task":"classification","input_shape":[1,3,224,224],"architecture_sha256":"8ee1842bedd97f40b9a5f032593d10952cc1f4c5ef5cd00821e5c7b055c1e112","max_size_mb":160}, + {"source":"pytorchcv","name":"resnetbc26b_cub","architecture":"resnetbc26b_cub","task":"classification","input_shape":[1,3,224,224],"architecture_sha256":"62f1ead4c6aec0b783f37a2760dcd6c50df6f7954716479440faa890e463e728","max_size_mb":160}, + {"source":"pytorchcv","name":"resnetbc38b","architecture":"resnetbc38b","task":"classification","input_shape":[1,3,224,224],"architecture_sha256":"f36358e9962e9f1ed53475a96ccc1b51cc75feb797d2dc1929b959dff41430f5","max_size_mb":160}, + {"source":"pytorchcv","name":"resnetbc38b_cub","architecture":"resnetbc38b_cub","task":"classification","input_shape":[1,3,224,224],"architecture_sha256":"181d06f2c479cf10c949ac8bc4aec5073dc2d0218e9aff8ea038e9a20f968cc6","max_size_mb":160}, + {"source":"pytorchcv","name":"resnetd50b","architecture":"resnetd50b","task":"classification","input_shape":[1,3,224,224],"architecture_sha256":"1e0ee23993846b9e3d9fd5006e688109069a3bde3e056146d518f67d44520e5f","max_size_mb":160}, + {"source":"pytorchcv","name":"resnext14_16x4d","architecture":"resnext14_16x4d","task":"classification","input_shape":[1,3,224,224],"architecture_sha256":"a5797460c7c778657544755420e86d93ab70361afc3ce4b244a1f871d6bfeb2e","max_size_mb":160}, + {"source":"pytorchcv","name":"resnext14_32x2d","architecture":"resnext14_32x2d","task":"classification","input_shape":[1,3,224,224],"architecture_sha256":"59f0873347a0b83c9ddf64d99d7bdaaf1ce001bbcb00c27c504a66ff9b14aad5","max_size_mb":160}, + {"source":"pytorchcv","name":"resnext14_32x4d","architecture":"resnext14_32x4d","task":"classification","input_shape":[1,3,224,224],"architecture_sha256":"b80d31217addb0a11449db9503d531b91bfb495b07c5edba8ffb8dd628d75a4b","max_size_mb":160}, + {"source":"pytorchcv","name":"resnext20_16x4d_cifar10","architecture":"resnext20_16x4d_cifar10","task":"classification","input_shape":[1,3,32,32],"architecture_sha256":"dbf0837502d1125f2ee7e98d6244a8c2764cea7d883f4137fd0d37a0d4a2f8ca","max_size_mb":160}, + {"source":"pytorchcv","name":"resnext20_16x4d_cifar100","architecture":"resnext20_16x4d_cifar100","task":"classification","input_shape":[1,3,32,32],"architecture_sha256":"1f6047589ad58c97887542bab6b3dd1091ed445504edf61417c9ddc489793857","max_size_mb":160}, + {"source":"pytorchcv","name":"resnext20_32x2d_cifar10","architecture":"resnext20_32x2d_cifar10","task":"classification","input_shape":[1,3,32,32],"architecture_sha256":"412079c2d5f764c56ee2bb80d5364f984230b041aef07bdac1fe193b26b416a4","max_size_mb":160}, + {"source":"pytorchcv","name":"resnext20_32x2d_cifar100","architecture":"resnext20_32x2d_cifar100","task":"classification","input_shape":[1,3,32,32],"architecture_sha256":"32a3479b709a906ec1becfaa9dc285a3b739e1152fe5e786aefeb60435085fbd","max_size_mb":160}, + {"source":"pytorchcv","name":"resnext20_32x4d_cifar10","architecture":"resnext20_32x4d_cifar10","task":"classification","input_shape":[1,3,32,32],"architecture_sha256":"e480809853dd236882e60c5d20bd07b21c78bf126097f61c8701df62839458b7","max_size_mb":160}, + {"source":"pytorchcv","name":"resnext20_32x4d_cifar100","architecture":"resnext20_32x4d_cifar100","task":"classification","input_shape":[1,3,32,32],"architecture_sha256":"e1c0c9c881a74861722f32e2d55aa18cd2b8dcd7527fa38d734a3193a84ba8a7","max_size_mb":160}, + {"source":"pytorchcv","name":"resnext26_16x4d","architecture":"resnext26_16x4d","task":"classification","input_shape":[1,3,224,224],"architecture_sha256":"de77cea25459c95df86e206e5c64f07fb398a17c8fb4fc8ecde8427885b8ceb2","max_size_mb":160}, + {"source":"pytorchcv","name":"resnext26_32x2d","architecture":"resnext26_32x2d","task":"classification","input_shape":[1,3,224,224],"architecture_sha256":"7d0619506c76bc1c465ff6ccf570706f6421335c922a5d22a1b1a898d1cb54bf","max_size_mb":160}, + {"source":"pytorchcv","name":"resnext26_32x4d","architecture":"resnext26_32x4d","task":"classification","input_shape":[1,3,224,224],"architecture_sha256":"baf57529bb6b51d9fea21abaafde7b0fd7be8692568193fd6acf7268cd40d53c","max_size_mb":160}, + {"source":"pytorchcv","name":"resnext272_2x32d_cifar10","architecture":"resnext272_2x32d_cifar10","task":"classification","input_shape":[1,3,32,32],"architecture_sha256":"9c989b44dc33b1b20fd4029f733fc33c74a7980fb898a0f471d71162af3eee83","max_size_mb":160}, + {"source":"pytorchcv","name":"resnext272_2x32d_cifar100","architecture":"resnext272_2x32d_cifar100","task":"classification","input_shape":[1,3,32,32],"architecture_sha256":"5c4f5f19383719f61f9adcbe9cfedc7b6cbbf60bd9a997b94af041825304572d","max_size_mb":160}, + {"source":"pytorchcv","name":"resnext29_32x4d_cifar10","architecture":"resnext29_32x4d_cifar10","task":"classification","input_shape":[1,3,32,32],"architecture_sha256":"8f21461342df301c41b11a457a5e38dee1df54a2be594f26550cc20c39ca1dc7","max_size_mb":160}, + {"source":"pytorchcv","name":"resnext29_32x4d_cifar100","architecture":"resnext29_32x4d_cifar100","task":"classification","input_shape":[1,3,32,32],"architecture_sha256":"2a881338fa6809c869fd2f44f55d119a2ccd42274430de1cc5fdb8c3e0cf3cf2","max_size_mb":160}, + {"source":"pytorchcv","name":"resnext38_32x4d","architecture":"resnext38_32x4d","task":"classification","input_shape":[1,3,224,224],"architecture_sha256":"59ac7ba8bf6fe49aa336756c3e7fc022603b0176f38193c520c3c10a1eb0fb32","max_size_mb":160}, + {"source":"pytorchcv","name":"resnext50_32x4d","architecture":"resnext50_32x4d","task":"classification","input_shape":[1,3,224,224],"architecture_sha256":"9ea74ff40087018ddc33c4308ab2c826e8689ce09f911660dc4e0df581480eea","max_size_mb":160}, + {"source":"pytorchcv","name":"rir_cifar10","architecture":"rir_cifar10","task":"classification","input_shape":[1,3,32,32],"architecture_sha256":"b29c3a71021a937f2e2bf8b7565612b595a9f6a498226972c13745e8ab5ede20","max_size_mb":160}, + {"source":"pytorchcv","name":"rir_cifar100","architecture":"rir_cifar100","task":"classification","input_shape":[1,3,32,32],"architecture_sha256":"940bb3b86e2b01dc5f1108f9c2809bd4cafc37b6a48ec230dec2a0a49756f338","max_size_mb":160}, + {"source":"pytorchcv","name":"ror3_110_cifar10","architecture":"ror3_110_cifar10","task":"classification","input_shape":[1,3,32,32],"architecture_sha256":"3a567982cd700d7eaf1a473ec0ded430d171f45cb9b04ca7cfe1a70e45636ac2","max_size_mb":160}, + {"source":"pytorchcv","name":"ror3_110_cifar100","architecture":"ror3_110_cifar100","task":"classification","input_shape":[1,3,32,32],"architecture_sha256":"e65e3c65ed7c48d51f4a12fb64aca356e1ce257b7c7ae175327a0ff83716e896","max_size_mb":160}, + {"source":"pytorchcv","name":"ror3_164_cifar10","architecture":"ror3_164_cifar10","task":"classification","input_shape":[1,3,32,32],"architecture_sha256":"4cef5526ed3c555cb386f578c56e7512505b51c509a084b628c5868c9dd141b2","max_size_mb":160}, + {"source":"pytorchcv","name":"ror3_164_cifar100","architecture":"ror3_164_cifar100","task":"classification","input_shape":[1,3,32,32],"architecture_sha256":"8edd74786d9ce3fb746794497d3be0e4b9c2fa20322bf9da75e65b48bcb3c82e","max_size_mb":160}, + {"source":"pytorchcv","name":"ror3_56_cifar10","architecture":"ror3_56_cifar10","task":"classification","input_shape":[1,3,32,32],"architecture_sha256":"c05219d8ea1dd38f58c558e4c513db3e53954d908d3c7d455219d22137794309","max_size_mb":160}, + {"source":"pytorchcv","name":"ror3_56_cifar100","architecture":"ror3_56_cifar100","task":"classification","input_shape":[1,3,32,32],"architecture_sha256":"11a82002ec0051b07890b8abaaf6eb2c820cb097474a76f1b3a4dba084a608a5","max_size_mb":160}, + {"source":"pytorchcv","name":"selecsls42","architecture":"selecsls42","task":"classification","input_shape":[1,3,224,224],"architecture_sha256":"7b5f87bed1d461af471559058b1278c4eac497a43bb3bce351016d9ca58976b7","max_size_mb":160}, + {"source":"pytorchcv","name":"selecsls42b","architecture":"selecsls42b","task":"classification","input_shape":[1,3,224,224],"architecture_sha256":"4023ec0b929f46a4b2fea885973f613836c5a8d20e3a21b1c6ccd15f2d2ee046","max_size_mb":160}, + {"source":"pytorchcv","name":"selecsls60","architecture":"selecsls60","task":"classification","input_shape":[1,3,224,224],"architecture_sha256":"6b6159ff7073ff188be6226900604eada750c2e2928163e95676f00ce4c37e62","max_size_mb":160}, + {"source":"pytorchcv","name":"selecsls60b","architecture":"selecsls60b","task":"classification","input_shape":[1,3,224,224],"architecture_sha256":"38584df815c85dcda0fd8548485b2501f643284cda08a13ee7dcc2894794c5a3","max_size_mb":160}, + {"source":"pytorchcv","name":"senet16","architecture":"senet16","task":"classification","input_shape":[1,3,224,224],"architecture_sha256":"692b34e1957369a0d6058dc2c10c2e511317bcece531502579fd744a9e610600","max_size_mb":160}, + {"source":"pytorchcv","name":"senet28","architecture":"senet28","task":"classification","input_shape":[1,3,224,224],"architecture_sha256":"e080aebfc06d651028e210093575ccfc2f357c4ea5460ae4551095c53cf2df68","max_size_mb":160}, + {"source":"pytorchcv","name":"senet40","architecture":"senet40","task":"classification","input_shape":[1,3,224,224],"architecture_sha256":"65a8847ac04fbca49f36723181c0068598c71ec31f8f2a348a3dac3d79acab36","max_size_mb":160}, + {"source":"pytorchcv","name":"sepreresnet10","architecture":"sepreresnet10","task":"classification","input_shape":[1,3,224,224],"architecture_sha256":"df90f67ba41f78d6ba616d864a87470595b33fda361846f32e95019f48a52fb5","max_size_mb":160}, + {"source":"pytorchcv","name":"sepreresnet1001_svhn","architecture":"sepreresnet1001_svhn","task":"classification","input_shape":[1,3,32,32],"architecture_sha256":"48c98700ac4c9c40fdbd1f7a26e77e4a9c1fef6af6aa598bdf136ec57c715601","max_size_mb":160}, + {"source":"pytorchcv","name":"sepreresnet110_cifar10","architecture":"sepreresnet110_cifar10","task":"classification","input_shape":[1,3,32,32],"architecture_sha256":"3e3c367c7926e87932c830d82fbb6eb069a409e1af985bc8311065f57bccbf18","max_size_mb":160}, + {"source":"pytorchcv","name":"sepreresnet110_cifar100","architecture":"sepreresnet110_cifar100","task":"classification","input_shape":[1,3,32,32],"architecture_sha256":"f138b1a1091bd732c3643158869e4c0e5154f275924ac7b16c17839620f6b3fd","max_size_mb":160}, + {"source":"pytorchcv","name":"sepreresnet12","architecture":"sepreresnet12","task":"classification","input_shape":[1,3,224,224],"architecture_sha256":"28e69e63ed7dd1132daac90fee90fab0d696fcf94e831d25126381a327e6569f","max_size_mb":160}, + {"source":"pytorchcv","name":"sepreresnet14","architecture":"sepreresnet14","task":"classification","input_shape":[1,3,224,224],"architecture_sha256":"1310d4037609c121f4fd962671a34e79755792aefb279840b87c48754da19a70","max_size_mb":160}, + {"source":"pytorchcv","name":"sepreresnet16","architecture":"sepreresnet16","task":"classification","input_shape":[1,3,224,224],"architecture_sha256":"83625696bfb2d7c0961865f9ecc5a3d0be15374d609c81afc2619fd23f35267b","max_size_mb":160}, + {"source":"pytorchcv","name":"sepreresnet18","architecture":"sepreresnet18","task":"classification","input_shape":[1,3,224,224],"architecture_sha256":"cc62347cdb8238db8ca166c3c9887992ffc9aac5e0f8d2bab827aa6577016d0b","max_size_mb":160}, + {"source":"pytorchcv","name":"sepreresnet20_cifar10","architecture":"sepreresnet20_cifar10","task":"classification","input_shape":[1,3,32,32],"architecture_sha256":"1c7f3c2409902aa5b70351f21a0e4a5ba0ef3b5d0a0b02d8c6721ebcec185c36","max_size_mb":160}, + {"source":"pytorchcv","name":"sepreresnet20_cifar100","architecture":"sepreresnet20_cifar100","task":"classification","input_shape":[1,3,32,32],"architecture_sha256":"000bc3b794ed0c1630b0ef8f21e368d4ee89933de9b23fc15d8278f7d189d059","max_size_mb":160}, + {"source":"pytorchcv","name":"sepreresnet26","architecture":"sepreresnet26","task":"classification","input_shape":[1,3,224,224],"architecture_sha256":"3ab4db09ba1b2e684cf3dcca404f2e5383406073f3bef03511075c95dd8736b4","max_size_mb":160}, + {"source":"pytorchcv","name":"sepreresnet272bn_svhn","architecture":"sepreresnet272bn_svhn","task":"classification","input_shape":[1,3,32,32],"architecture_sha256":"bcb6a443204b36838878f138d983042d52eea324e1b8e1a279f2ea2542aee413","max_size_mb":160}, + {"source":"pytorchcv","name":"sepreresnet34","architecture":"sepreresnet34","task":"classification","input_shape":[1,3,224,224],"architecture_sha256":"62eada1287cbd12bd931a90c5ac08fe4cb7b8832cd4d0d367ecd70907904381c","max_size_mb":160}, + {"source":"pytorchcv","name":"sepreresnet50","architecture":"sepreresnet50","task":"classification","input_shape":[1,3,224,224],"architecture_sha256":"06d171aa018e9678f0dd9635c2deae4be6682e232564827b955447d0ba2b5497","max_size_mb":160}, + {"source":"pytorchcv","name":"sepreresnet50b","architecture":"sepreresnet50b","task":"classification","input_shape":[1,3,224,224],"architecture_sha256":"217beb46528ceab0c78633e040275312fb4273b9c37d426d0b589ce8e9e301b0","max_size_mb":160}, + {"source":"pytorchcv","name":"sepreresnet542bn_cifar10","architecture":"sepreresnet542bn_cifar10","task":"classification","input_shape":[1,3,32,32],"architecture_sha256":"273e768cb67999a4516df17b070f49cecd69c90683e83546b60a489a979756f0","max_size_mb":160}, + {"source":"pytorchcv","name":"sepreresnet56_cifar10","architecture":"sepreresnet56_cifar10","task":"classification","input_shape":[1,3,32,32],"architecture_sha256":"d2c357fec7a80a7a515072f11b50e3629442ec2c0c1bb96177b0ba620f31d5fd","max_size_mb":160}, + {"source":"pytorchcv","name":"sepreresnet56_cifar100","architecture":"sepreresnet56_cifar100","task":"classification","input_shape":[1,3,32,32],"architecture_sha256":"eb852ac8fc6d614d59adbece8616da5e3944e1dc6319a2f5c8324f5dc9ef65e3","max_size_mb":160}, + {"source":"pytorchcv","name":"sepreresnetbc26b","architecture":"sepreresnetbc26b","task":"classification","input_shape":[1,3,224,224],"architecture_sha256":"fa19e7c4302de73d9da6067fbec354d6d3a930f02f5829320e3b6d73515337ba","max_size_mb":160}, + {"source":"pytorchcv","name":"sepreresnetbc38b","architecture":"sepreresnetbc38b","task":"classification","input_shape":[1,3,224,224],"architecture_sha256":"6ec009495ae90fc95dbeacaaf2c20493a9d5eedc23c30c73e3dd7cc31c8126e4","max_size_mb":160}, + {"source":"pytorchcv","name":"seresnet10","architecture":"seresnet10","task":"classification","input_shape":[1,3,224,224],"architecture_sha256":"df7dc1a0a136fe6247bffabdbf88a3554a2b4c0f31de90423432fcdc08934cf0","max_size_mb":160}, + {"source":"pytorchcv","name":"seresnet1001_cifar10","architecture":"seresnet1001_cifar10","task":"classification","input_shape":[1,3,32,32],"architecture_sha256":"0b2f291f4686dd3864faff82c0f67bc6bddf2f2f7dbf3999cf0f70c06ce556fc","max_size_mb":160}, + {"source":"pytorchcv","name":"seresnet1001_cifar100","architecture":"seresnet1001_cifar100","task":"classification","input_shape":[1,3,32,32],"architecture_sha256":"9a1c5a3ddd2e53103f16eb7c5882f3e17623d7ad61373df4907a3f308e143815","max_size_mb":160}, + {"source":"pytorchcv","name":"seresnet10_cub","architecture":"seresnet10_cub","task":"classification","input_shape":[1,3,224,224],"architecture_sha256":"9ea41b8c4ed1f7ec98a9fbda6a0b0b074ef99ace472ff883c362c08bca5bd0dd","max_size_mb":160}, + {"source":"pytorchcv","name":"seresnet110_cifar10","architecture":"seresnet110_cifar10","task":"classification","input_shape":[1,3,32,32],"architecture_sha256":"1aa4c1fe31f52fc2ef3a616ce0fc16b68d1ca8234e9e2a46bf9a5df2d0392d71","max_size_mb":160}, + {"source":"pytorchcv","name":"seresnet110_cifar100","architecture":"seresnet110_cifar100","task":"classification","input_shape":[1,3,32,32],"architecture_sha256":"3b319a065d99abc3f4a1d7144529d4cd38880a80f4d7c9e4e8ed9fc2361a6e49","max_size_mb":160}, + {"source":"pytorchcv","name":"seresnet12","architecture":"seresnet12","task":"classification","input_shape":[1,3,224,224],"architecture_sha256":"f27d24471dd9452d43c512d0b2af3fa3b7f61ac65b05f9459e5a76eb5f1372df","max_size_mb":160}, + {"source":"pytorchcv","name":"seresnet12_cub","architecture":"seresnet12_cub","task":"classification","input_shape":[1,3,224,224],"architecture_sha256":"3fb972774b5e197346ebe35d3fa4cc1f587872ce3553410ab737870768ad6cfe","max_size_mb":160}, + {"source":"pytorchcv","name":"seresnet14","architecture":"seresnet14","task":"classification","input_shape":[1,3,224,224],"architecture_sha256":"21444b9a20fe911b4d3eeaf5dc28903f100bd4859894c0a8f9fea34ee0b45ead","max_size_mb":160}, + {"source":"pytorchcv","name":"seresnet14_cub","architecture":"seresnet14_cub","task":"classification","input_shape":[1,3,224,224],"architecture_sha256":"d7d28e2c4de338754ddd50bd5b00cbeb9562eae1dc6f484cddfe5672aca80961","max_size_mb":160}, + {"source":"pytorchcv","name":"seresnet16","architecture":"seresnet16","task":"classification","input_shape":[1,3,224,224],"architecture_sha256":"a0673ae1b65ac610572c28e71c3bdf52f50484b6af763b4a259b4fae92c7779e","max_size_mb":160}, + {"source":"pytorchcv","name":"seresnet16_cub","architecture":"seresnet16_cub","task":"classification","input_shape":[1,3,224,224],"architecture_sha256":"89164781220f8545ec606225156b0627e41afa9a89fec34c9d18c32c75cb6ffa","max_size_mb":160}, + {"source":"pytorchcv","name":"seresnet18","architecture":"seresnet18","task":"classification","input_shape":[1,3,224,224],"architecture_sha256":"a45c31bb237ad207c11ddb97689e86c03d60e58da867dce1173edbcbf9dbd50e","max_size_mb":160}, + {"source":"pytorchcv","name":"seresnet18_cub","architecture":"seresnet18_cub","task":"classification","input_shape":[1,3,224,224],"architecture_sha256":"8557c5a2bf502144efae41a25e2b12415305829192fb0adbdd4ca291cfbe6ef3","max_size_mb":160}, + {"source":"pytorchcv","name":"seresnet20_cifar10","architecture":"seresnet20_cifar10","task":"classification","input_shape":[1,3,32,32],"architecture_sha256":"c8c2540b5736f78a8ea388d78792970e08440377447009aa4a5ef917d0666918","max_size_mb":160}, + {"source":"pytorchcv","name":"seresnet20_cifar100","architecture":"seresnet20_cifar100","task":"classification","input_shape":[1,3,32,32],"architecture_sha256":"fd164edf5e83da40b7ea20715713d99fc19bfee61e59a38ab7966a85525d88eb","max_size_mb":160}, + {"source":"pytorchcv","name":"seresnet26","architecture":"seresnet26","task":"classification","input_shape":[1,3,224,224],"architecture_sha256":"d5c2ef836470e7ce79914f277200a0e6db6ebdb23b82e5395ba34658e3294b6a","max_size_mb":160}, + {"source":"pytorchcv","name":"seresnet26_cub","architecture":"seresnet26_cub","task":"classification","input_shape":[1,3,224,224],"architecture_sha256":"c617a6abaf0f7d79e27fb1a8caf25a6d6b691ee8d1349c73ccdac5346e15b08f","max_size_mb":160}, + {"source":"pytorchcv","name":"seresnet272bn_svhn","architecture":"seresnet272bn_svhn","task":"classification","input_shape":[1,3,32,32],"architecture_sha256":"e0ea77a46a2b7174e4a410159a8017c9ae10bd2df0e76a50b7607fdcbc4d6a6a","max_size_mb":160}, + {"source":"pytorchcv","name":"seresnet34","architecture":"seresnet34","task":"classification","input_shape":[1,3,224,224],"architecture_sha256":"84cd8d8ba4d94ee413cf14785df86f838398106c78e610d62a392408701295c9","max_size_mb":160}, + {"source":"pytorchcv","name":"seresnet34_cub","architecture":"seresnet34_cub","task":"classification","input_shape":[1,3,224,224],"architecture_sha256":"fca1b84f301b4b2fdf1377a4202102ff7dc42e3cf8ccaaf65cc7da74f6626096","max_size_mb":160}, + {"source":"pytorchcv","name":"seresnet50","architecture":"seresnet50","task":"classification","input_shape":[1,3,224,224],"architecture_sha256":"4ca216de1c5d3872442142dc6352b17b7f939ddeff7843b32d564a91ac3be713","max_size_mb":160}, + {"source":"pytorchcv","name":"seresnet50_cub","architecture":"seresnet50_cub","task":"classification","input_shape":[1,3,224,224],"architecture_sha256":"c30079534cc480915b1971238aa803ce63b24bd013377c9c0b4213c70ec12d7c","max_size_mb":160}, + {"source":"pytorchcv","name":"seresnet50b","architecture":"seresnet50b","task":"classification","input_shape":[1,3,224,224],"architecture_sha256":"d97f7e31c677c3117cedeaf5b1ec98c41f6150afd4e8e760ba4e3aff98ae21ec","max_size_mb":160}, + {"source":"pytorchcv","name":"seresnet50b_cub","architecture":"seresnet50b_cub","task":"classification","input_shape":[1,3,224,224],"architecture_sha256":"4774cdfe026bf495ab6af8cb1d7a34e92ff8502d5699c1dd9ecadff5c613d581","max_size_mb":160}, + {"source":"pytorchcv","name":"seresnet542bn_cifar10","architecture":"seresnet542bn_cifar10","task":"classification","input_shape":[1,3,32,32],"architecture_sha256":"eed2aaee8d3801ba53683711ed528ab0c986627d4d4a276c3c2241dd7f2c7f75","max_size_mb":160}, + {"source":"pytorchcv","name":"seresnet56_cifar10","architecture":"seresnet56_cifar10","task":"classification","input_shape":[1,3,32,32],"architecture_sha256":"23f91c80110e424e73d70b24f2878fd5f98a0bcf5f4a08dec8009d18cb0b5826","max_size_mb":160}, + {"source":"pytorchcv","name":"seresnet56_cifar100","architecture":"seresnet56_cifar100","task":"classification","input_shape":[1,3,32,32],"architecture_sha256":"3b28a2f812edb3297603ee96948fbd19a16660916dba650e7cd8f84fcb82a7f3","max_size_mb":160}, + {"source":"pytorchcv","name":"seresnetbc14b_cub","architecture":"seresnetbc14b_cub","task":"classification","input_shape":[1,3,224,224],"architecture_sha256":"8229f29ba5394ef4a1709c9c39ee041a0bb2703b4973c08e637d3167698b1f2e","max_size_mb":160}, + {"source":"pytorchcv","name":"seresnetbc26b","architecture":"seresnetbc26b","task":"classification","input_shape":[1,3,224,224],"architecture_sha256":"b2233442960c366760e866c525f26cb26d3d40decf05da109e37e311517ae9f2","max_size_mb":160}, + {"source":"pytorchcv","name":"seresnetbc26b_cub","architecture":"seresnetbc26b_cub","task":"classification","input_shape":[1,3,224,224],"architecture_sha256":"c0cb6a3c4534ce09c59439dd3a10b96b23ac3f3d1656f0a35085b44b3c20ee20","max_size_mb":160}, + {"source":"pytorchcv","name":"seresnetbc38b","architecture":"seresnetbc38b","task":"classification","input_shape":[1,3,224,224],"architecture_sha256":"82daf736f2d4c99145ce926497f2cdbbfe6484d0ba209f2cb85a41fcd2984204","max_size_mb":160}, + {"source":"pytorchcv","name":"seresnetbc38b_cub","architecture":"seresnetbc38b_cub","task":"classification","input_shape":[1,3,224,224],"architecture_sha256":"5e487a34567a3dd68994ef87b7d8f0f320868c6091981b779f1f9c5ef39c8be6","max_size_mb":160}, + {"source":"pytorchcv","name":"seresnext50_32x4d","architecture":"seresnext50_32x4d","task":"classification","input_shape":[1,3,224,224],"architecture_sha256":"01a1fba9855c44569c07d91d6eea727c9c656114919afe0a424d54574ebb13c4","max_size_mb":160}, + {"source":"pytorchcv","name":"shakedropresnet20_cifar10","architecture":"shakedropresnet20_cifar10","task":"classification","input_shape":[1,3,32,32],"architecture_sha256":"0c84916f2568e3fb0e6c5ada3e4934345590de6430db901d49b366620909ce92","max_size_mb":160}, + {"source":"pytorchcv","name":"shakedropresnet20_cifar100","architecture":"shakedropresnet20_cifar100","task":"classification","input_shape":[1,3,32,32],"architecture_sha256":"b75f045eb6a1a4cb20ecb54979bb357f1785d1a8dd2c81aa15caf37589127e41","max_size_mb":160}, + {"source":"pytorchcv","name":"sharesnet18","architecture":"sharesnet18","task":"classification","input_shape":[1,3,224,224],"architecture_sha256":"5064d33741338512d3f3776054bafca247f082b729d0516505d9ba740411f09e","max_size_mb":160}, + {"source":"pytorchcv","name":"sharesnet34","architecture":"sharesnet34","task":"classification","input_shape":[1,3,224,224],"architecture_sha256":"8738734316e4af19a96091b095281feffadb7cc22a23035ce8babcd6515ccd5f","max_size_mb":160}, + {"source":"pytorchcv","name":"sharesnet50","architecture":"sharesnet50","task":"classification","input_shape":[1,3,224,224],"architecture_sha256":"2fcbaf6ea1d458e06b74a43353b6bd80b734af08111a5005f5868740180b0f6b","max_size_mb":160}, + {"source":"pytorchcv","name":"sharesnet50b","architecture":"sharesnet50b","task":"classification","input_shape":[1,3,224,224],"architecture_sha256":"22bf22005a3c01e786c28e07656925c24428b75f92451bfbf12cd8cdbb995c99","max_size_mb":160}, + {"source":"pytorchcv","name":"shufflenet_g1_w3d4","architecture":"shufflenet_g1_w3d4","task":"classification","input_shape":[1,3,224,224],"architecture_sha256":"34c6d8e012f4e1492022687f6114135756a080d425139a3b9ce6d884748f0db0","max_size_mb":160}, + {"source":"pytorchcv","name":"shufflenet_g1_wd2","architecture":"shufflenet_g1_wd2","task":"classification","input_shape":[1,3,224,224],"architecture_sha256":"4ee26dadda4df4234083a6299fe5bbd4099031e8863d41d7b8eeffcc1c876f79","max_size_mb":160}, + {"source":"pytorchcv","name":"shufflenet_g1_wd4","architecture":"shufflenet_g1_wd4","task":"classification","input_shape":[1,3,224,224],"architecture_sha256":"0bb027794d5acdc748049971d5ea128483257936c9623479e9ef09fe80714cb1","max_size_mb":160}, + {"source":"pytorchcv","name":"shufflenet_g2_w1","architecture":"shufflenet_g2_w1","task":"classification","input_shape":[1,3,224,224],"architecture_sha256":"8ade33e97237e51669a6e153e63b348cec0572966b22b3ab6dc7ed369d58d2e5","max_size_mb":160}, + {"source":"pytorchcv","name":"shufflenet_g3_w1","architecture":"shufflenet_g3_w1","task":"classification","input_shape":[1,3,224,224],"architecture_sha256":"ff3967a8a387bec7d9e9eae96dd6d53937f641dd7f5fe5ebce0698a8b094f35c","max_size_mb":160}, + {"source":"pytorchcv","name":"shufflenet_g3_w3d4","architecture":"shufflenet_g3_w3d4","task":"classification","input_shape":[1,3,224,224],"architecture_sha256":"d854900955dc9aa143192bbc7578d178cf1a40e3b02f3263fb24795d5a9444a9","max_size_mb":160}, + {"source":"pytorchcv","name":"shufflenet_g3_wd2","architecture":"shufflenet_g3_wd2","task":"classification","input_shape":[1,3,224,224],"architecture_sha256":"27ac9c60e8b404864f303c2a27be5fa5a79626a3cbd985e1e12171814343d300","max_size_mb":160}, + {"source":"pytorchcv","name":"shufflenet_g3_wd4","architecture":"shufflenet_g3_wd4","task":"classification","input_shape":[1,3,224,224],"architecture_sha256":"2b0420ad8e7b62502578d44bc409434740ed6de22bf4ccdae0dbf0d83d17e1cb","max_size_mb":160}, + {"source":"pytorchcv","name":"shufflenet_g4_w1","architecture":"shufflenet_g4_w1","task":"classification","input_shape":[1,3,224,224],"architecture_sha256":"1d9dec162c51a495d9f8789f2e2292098a0dddba1cba57d2961cebda3aaeff6d","max_size_mb":160}, + {"source":"pytorchcv","name":"shufflenet_g8_w1","architecture":"shufflenet_g8_w1","task":"classification","input_shape":[1,3,224,224],"architecture_sha256":"752a72abeac3d53e774969c889f64947187314cd8e54710ccd7f180c1cf99fde","max_size_mb":160}, + {"source":"pytorchcv","name":"shufflenetv2_w1","architecture":"shufflenetv2_w1","task":"classification","input_shape":[1,3,224,224],"architecture_sha256":"76f1c999e04dd5171303ba9db16f29bcb50fc20cabce7e6ee9095656fc4e16fc","max_size_mb":160}, + {"source":"pytorchcv","name":"shufflenetv2_w2","architecture":"shufflenetv2_w2","task":"classification","input_shape":[1,3,224,224],"architecture_sha256":"4880d9efcaeb81cf5016f61e4ba5d31699bccc75728821c0dab753bb9a56a63b","max_size_mb":160}, + {"source":"pytorchcv","name":"shufflenetv2_w3d2","architecture":"shufflenetv2_w3d2","task":"classification","input_shape":[1,3,224,224],"architecture_sha256":"d67feadd016a2ee99e324402c54dd87e2f3a4f89ca4d80022e0bbc8e06a54518","max_size_mb":160}, + {"source":"pytorchcv","name":"shufflenetv2_wd2","architecture":"shufflenetv2_wd2","task":"classification","input_shape":[1,3,224,224],"architecture_sha256":"26b9ab86e03f2ebd4172e51a615db1aad34795b1d3e570137114fa78a506e005","max_size_mb":160}, + {"source":"pytorchcv","name":"shufflenetv2b_w1","architecture":"shufflenetv2b_w1","task":"classification","input_shape":[1,3,224,224],"architecture_sha256":"2abaf075836bebf76e6e20ef35964bbf2f274f04ff25e72a312a6196079ddd57","max_size_mb":160}, + {"source":"pytorchcv","name":"shufflenetv2b_w2","architecture":"shufflenetv2b_w2","task":"classification","input_shape":[1,3,224,224],"architecture_sha256":"dff0826bde552b235c1f01e72c2fbebbf5ea8f5d613e729fa482d6765280a3a5","max_size_mb":160}, + {"source":"pytorchcv","name":"shufflenetv2b_w3d2","architecture":"shufflenetv2b_w3d2","task":"classification","input_shape":[1,3,224,224],"architecture_sha256":"173814e3565b68e6de7748bc4eb267d43fedf2ccd83654a224d393112813e2c7","max_size_mb":160}, + {"source":"pytorchcv","name":"shufflenetv2b_wd2","architecture":"shufflenetv2b_wd2","task":"classification","input_shape":[1,3,224,224],"architecture_sha256":"ca44675c43bdaece0b8d24817439c205f9fe960e698ba0a843640d017d26621c","max_size_mb":160}, + {"source":"pytorchcv","name":"sinet_cityscapes","architecture":"sinet_cityscapes","task":"segmentation","input_shape":[1,3,1024,2048],"architecture_sha256":"dd764e139df76dabfaf43500c3b3300d02e00de0d272fe6a18ba6e33f551ae0a","max_size_mb":160}, + {"source":"pytorchcv","name":"sparsenet121","architecture":"sparsenet121","task":"classification","input_shape":[1,3,224,224],"architecture_sha256":"bde205b45419d0f6f52d2ee7ba1b102b84e8fd3c90296c085ecab4db39fca5d3","max_size_mb":160}, + {"source":"pytorchcv","name":"sparsenet161","architecture":"sparsenet161","task":"classification","input_shape":[1,3,224,224],"architecture_sha256":"9a606597dfc60714606ec7ce836cc849dad9a62989a069f68cd6b7432b29f0f8","max_size_mb":160}, + {"source":"pytorchcv","name":"sparsenet169","architecture":"sparsenet169","task":"classification","input_shape":[1,3,224,224],"architecture_sha256":"575af30573f6fafd5036213375a0f0c2532455ba30192700978ccfceb53e350c","max_size_mb":160}, + {"source":"pytorchcv","name":"sparsenet201","architecture":"sparsenet201","task":"classification","input_shape":[1,3,224,224],"architecture_sha256":"6665c9ee84bc0133b9fb28c7477b8e9e63e701b6c505584057f12ee0a81cd4cf","max_size_mb":160}, + {"source":"pytorchcv","name":"sparsenet264","architecture":"sparsenet264","task":"classification","input_shape":[1,3,224,224],"architecture_sha256":"050a77cc1132edd28d00493d22cadf24246808f296bb5121b90fa3cc87e26e6e","max_size_mb":160}, + {"source":"pytorchcv","name":"sqnet_cityscapes","architecture":"sqnet_cityscapes","task":"segmentation","input_shape":[1,3,1024,2048],"architecture_sha256":"cbca18ee0d129104b93e97554848a81f0fb55445d03e555179006bec2a3b6474","max_size_mb":160}, + {"source":"pytorchcv","name":"sqnxt23_w1","architecture":"sqnxt23_w1","task":"classification","input_shape":[1,3,224,224],"architecture_sha256":"ec8ea380169d02ded9914a978f9ca594d03eb60157060911bea9e4d1fa149b4a","max_size_mb":160}, + {"source":"pytorchcv","name":"sqnxt23_w2","architecture":"sqnxt23_w2","task":"classification","input_shape":[1,3,224,224],"architecture_sha256":"66e6c83d215c3402783a46019510d006988aae510e9439e1f806733feefa00c5","max_size_mb":160}, + {"source":"pytorchcv","name":"sqnxt23_w3d2","architecture":"sqnxt23_w3d2","task":"classification","input_shape":[1,3,224,224],"architecture_sha256":"28a8f4cbb7bb6bb4a97fb4f964b81121fe01ebd8dbd3e626f3a5bb49f65e89c7","max_size_mb":160}, + {"source":"pytorchcv","name":"sqnxt23v5_w2","architecture":"sqnxt23v5_w2","task":"classification","input_shape":[1,3,224,224],"architecture_sha256":"d882ad474a98ad80890cf60efbc3a3d137670fdce926c40efb025bf61adc9d24","max_size_mb":160}, + {"source":"pytorchcv","name":"sqnxt23v5_w3d2","architecture":"sqnxt23v5_w3d2","task":"classification","input_shape":[1,3,224,224],"architecture_sha256":"9138f245c5c07ee715ac3d96595452154961246d7ee28e17fa2c330be081a8a4","max_size_mb":160}, + {"source":"pytorchcv","name":"squeezenet_v1_0","architecture":"squeezenet_v1_0","task":"classification","input_shape":[1,3,224,224],"architecture_sha256":"290ac71ce303c6fb142b0dad364c636cbd81a046d0acfbc57d5d92c96e817b3d","max_size_mb":160}, + {"source":"pytorchcv","name":"squeezenet_v1_1","architecture":"squeezenet_v1_1","task":"classification","input_shape":[1,3,224,224],"architecture_sha256":"847a3a21fe2d43807e4c9a248dd1dd2e2d8ffb333e21a7b055cc8e17f6aeeb78","max_size_mb":160}, + {"source":"pytorchcv","name":"squeezeresnet_v1_0","architecture":"squeezeresnet_v1_0","task":"classification","input_shape":[1,3,224,224],"architecture_sha256":"34f3cefa52de06a58fd9e734ad069be11603fdc795b86b6c18866103d6e68c3d","max_size_mb":160}, + {"source":"pytorchcv","name":"squeezeresnet_v1_1","architecture":"squeezeresnet_v1_1","task":"classification","input_shape":[1,3,224,224],"architecture_sha256":"4292641767c3dff8d1e49dbc2c1ba561ae7282bcc271eb00821331949292ee42","max_size_mb":160}, + {"source":"pytorchcv","name":"unet_cityscapes","architecture":"unet_cityscapes","task":"segmentation","input_shape":[1,3,1024,2048],"architecture_sha256":"fcb609c2074e7ea5306b4cab7cda89b13dfdf0675e52f94de8c3517465eae024","max_size_mb":160}, + {"source":"pytorchcv","name":"vovnet27s","architecture":"vovnet27s","task":"classification","input_shape":[1,3,224,224],"architecture_sha256":"493aaa35a662e4fee698e448f0c530e01807e4a885ee6fc446f5844d8b8e4c6d","max_size_mb":160}, + {"source":"pytorchcv","name":"vovnet39","architecture":"vovnet39","task":"classification","input_shape":[1,3,224,224],"architecture_sha256":"f01d95d91f21c6b7314f66ae097dc9f75f469f54863e13daa94ead1b49fc0093","max_size_mb":160}, + {"source":"pytorchcv","name":"vovnet57","architecture":"vovnet57","task":"classification","input_shape":[1,3,224,224],"architecture_sha256":"e03798ab96e02b95f07fcf67febf6ad74c4c360998eb536625aa690c6c73ca60","max_size_mb":160}, + {"source":"pytorchcv","name":"wrn16_10_cifar10","architecture":"wrn16_10_cifar10","task":"classification","input_shape":[1,3,32,32],"architecture_sha256":"cc4495afed16d868693512e6ad9445147c173f9ddd9976485f169e972edf413c","max_size_mb":160}, + {"source":"pytorchcv","name":"wrn16_10_cifar100","architecture":"wrn16_10_cifar100","task":"classification","input_shape":[1,3,32,32],"architecture_sha256":"66c791832c7608de19c3e62262cc92f756bf3baf2cb8a7ca4e715f393027d179","max_size_mb":160}, + {"source":"pytorchcv","name":"wrn20_10_1bit_cifar10","architecture":"wrn20_10_1bit_cifar10","task":"classification","input_shape":[1,3,32,32],"architecture_sha256":"a2d45955656d8a748b82b85fa37a77e675eeb194d63b6f27bfc885e1e2747dab","max_size_mb":160}, + {"source":"pytorchcv","name":"wrn20_10_1bit_cifar100","architecture":"wrn20_10_1bit_cifar100","task":"classification","input_shape":[1,3,32,32],"architecture_sha256":"45e86942f786a5e7e7e044faccbe95fef5ad28dc085a688d798fb6741e677382","max_size_mb":160}, + {"source":"pytorchcv","name":"wrn20_10_32bit_cifar10","architecture":"wrn20_10_32bit_cifar10","task":"classification","input_shape":[1,3,32,32],"architecture_sha256":"2701406b93d60c07efdbed9051481bfc6d6d798c52fe83eacf597fb10bac723b","max_size_mb":160}, + {"source":"pytorchcv","name":"wrn20_10_32bit_cifar100","architecture":"wrn20_10_32bit_cifar100","task":"classification","input_shape":[1,3,32,32],"architecture_sha256":"01d13cf11cb5195b3adf9d1214453a44f1267128c95bb557deed5b2ec01d621d","max_size_mb":160}, + {"source":"pytorchcv","name":"wrn28_10_cifar10","architecture":"wrn28_10_cifar10","task":"classification","input_shape":[1,3,32,32],"architecture_sha256":"37ca2c659c4ee9fa5ca37d352d7031197ee6034873bce5879dd9b3c268cfdd1d","max_size_mb":160}, + {"source":"pytorchcv","name":"wrn28_10_cifar100","architecture":"wrn28_10_cifar100","task":"classification","input_shape":[1,3,32,32],"architecture_sha256":"71333c6a096d210860f09dc3de2c4c5cfa048356e8988cc66fc38d3117c6b6d5","max_size_mb":160}, + {"source":"pytorchcv","name":"wrn40_8_cifar10","architecture":"wrn40_8_cifar10","task":"classification","input_shape":[1,3,32,32],"architecture_sha256":"de0c3898e2469f0c20134076680d0d39a5d17624cbb93d35cc109ef03309fc45","max_size_mb":160}, + {"source":"pytorchcv","name":"wrn40_8_cifar100","architecture":"wrn40_8_cifar100","task":"classification","input_shape":[1,3,32,32],"architecture_sha256":"05ca9c94510a7d5bfcb6538c1879a0846f22a0a761d375de7bb9763ce3b7c6d7","max_size_mb":160}, + {"source":"pytorchcv","name":"xception","architecture":"xception","task":"classification","input_shape":[1,3,299,299],"architecture_sha256":"1e42198f28af1aa784e18a77ad1a5ae69d83c3fbe914421232ba3d240ee9b965","max_size_mb":160}, + {"source":"pytorchcv","name":"xdensenet121_2","architecture":"xdensenet121_2","task":"classification","input_shape":[1,3,224,224],"architecture_sha256":"da258a1da5c261727e2c55c932be737ac2889c2aae69b9b3b77c4663c586844f","max_size_mb":160}, + {"source":"pytorchcv","name":"xdensenet169_2","architecture":"xdensenet169_2","task":"classification","input_shape":[1,3,224,224],"architecture_sha256":"d0c7a059dc666ac96eb8a32ac4c4d9973992624934cecd4c98240f098e71c40b","max_size_mb":160}, + {"source":"pytorchcv","name":"xdensenet201_2","architecture":"xdensenet201_2","task":"classification","input_shape":[1,3,224,224],"architecture_sha256":"0ffe8d1e04f6b1966fd89965af9328716955d3f2ee26595b4bf1b965b3c2f3f3","max_size_mb":160}, + {"source":"pytorchcv","name":"xdensenet40_2_k24_bc_cifar10","architecture":"xdensenet40_2_k24_bc_cifar10","task":"classification","input_shape":[1,3,32,32],"architecture_sha256":"69499bb9519405e3deb40c42876f3a00256aff2039a9ba836488000030c3f15e","max_size_mb":160}, + {"source":"pytorchcv","name":"xdensenet40_2_k24_bc_cifar100","architecture":"xdensenet40_2_k24_bc_cifar100","task":"classification","input_shape":[1,3,32,32],"architecture_sha256":"7bba260daffe4ff2b594728e1e4d7d83c4f5411486b792483d8aef30f86c67e9","max_size_mb":160}, + {"source":"pytorchcv","name":"xdensenet40_2_k36_bc_cifar10","architecture":"xdensenet40_2_k36_bc_cifar10","task":"classification","input_shape":[1,3,32,32],"architecture_sha256":"7372985bd46846ffbf7d145ebc8ff24816bfbfc8414a0db9c62416a49e02d7a5","max_size_mb":160}, + {"source":"pytorchcv","name":"xdensenet40_2_k36_bc_cifar100","architecture":"xdensenet40_2_k36_bc_cifar100","task":"classification","input_shape":[1,3,32,32],"architecture_sha256":"66b7e2709caf17fdab532cde2296e2bde080118820b9d8dd597b07b5bc3e1201","max_size_mb":160}, + {"source":"segmentation_models","name":"deeplabv3__dpn68","architecture":"deeplabv3__dpn68","task":"segmentation","input_shape":[1,3,256,256],"architecture_sha256":"9889b98ee6b3800125e3d1dfbf13f9cd805846291c68b67f02bd7a2a2c180ea0","max_size_mb":160}, + {"source":"segmentation_models","name":"deeplabv3__dpn68b","architecture":"deeplabv3__dpn68b","task":"segmentation","input_shape":[1,3,256,256],"architecture_sha256":"c3996c59867e9b4bd59a72736594760657a039027e209df33d4e09a2a09b5f3b","max_size_mb":160}, + {"source":"segmentation_models","name":"deeplabv3__efficientnet-b0","architecture":"deeplabv3__efficientnet-b0","task":"segmentation","input_shape":[1,3,256,256],"architecture_sha256":"5ea83b057da441cf9621873d5537b57df7566d38404d7a7127448741a23f6a35","max_size_mb":160}, + {"source":"segmentation_models","name":"deeplabv3__efficientnet-b1","architecture":"deeplabv3__efficientnet-b1","task":"segmentation","input_shape":[1,3,256,256],"architecture_sha256":"b5a471e544fc14e76e02451f61135d82cc0e59c20769b0b24ea4e22a5aef49cf","max_size_mb":160}, + {"source":"segmentation_models","name":"deeplabv3__efficientnet-b2","architecture":"deeplabv3__efficientnet-b2","task":"segmentation","input_shape":[1,3,256,256],"architecture_sha256":"b59bdf4354dc587893a096fa9a763f3f660e0daa60a575068d6fb0dfd548f28e","max_size_mb":160}, + {"source":"segmentation_models","name":"deeplabv3__efficientnet-b3","architecture":"deeplabv3__efficientnet-b3","task":"segmentation","input_shape":[1,3,256,256],"architecture_sha256":"d64714366dde899ba2ec1fbdc14a5b90a3247d925c70b0c89dea612ceced99f9","max_size_mb":160}, + {"source":"segmentation_models","name":"deeplabv3__efficientnet-b4","architecture":"deeplabv3__efficientnet-b4","task":"segmentation","input_shape":[1,3,256,256],"architecture_sha256":"33cdcea595d0a56979a75a415198f9c0fa8b907b5517040265fc7aa78bc8892a","max_size_mb":160}, + {"source":"segmentation_models","name":"deeplabv3__efficientnet-b5","architecture":"deeplabv3__efficientnet-b5","task":"segmentation","input_shape":[1,3,256,256],"architecture_sha256":"31e6870194a0b228e5ed68ddb7ada635dc415ca691f2b05a3d7b452beee82cb8","max_size_mb":160}, + {"source":"segmentation_models","name":"deeplabv3__mit_b0","architecture":"deeplabv3__mit_b0","task":"segmentation","input_shape":[1,3,256,256],"architecture_sha256":"41b72614ef7db9611db111b4e0f625194073280d094aa8ec3d347e185c98f097","max_size_mb":160}, + {"source":"segmentation_models","name":"deeplabv3__mit_b1","architecture":"deeplabv3__mit_b1","task":"segmentation","input_shape":[1,3,256,256],"architecture_sha256":"0251351a3081ead6c0f97a3b264e90fb382670b41a576aed953d392a296ddbe6","max_size_mb":160}, + {"source":"segmentation_models","name":"deeplabv3__mit_b2","architecture":"deeplabv3__mit_b2","task":"segmentation","input_shape":[1,3,256,256],"architecture_sha256":"bb972666c29f0ace9e4578111091cb012eccc03494965ea316c05be9dc3fe5e8","max_size_mb":160}, + {"source":"segmentation_models","name":"deeplabv3__mobilenet_v2","architecture":"deeplabv3__mobilenet_v2","task":"segmentation","input_shape":[1,3,256,256],"architecture_sha256":"282c58a1bdcad5ef4c819fd67fd951c3164841bea3153ea4085ab90f76c42bda","max_size_mb":160}, + {"source":"segmentation_models","name":"deeplabv3__mobileone_s0","architecture":"deeplabv3__mobileone_s0","task":"segmentation","input_shape":[1,3,256,256],"architecture_sha256":"4768050b1a91968f64cc2263fd79735e03e9c0f3bc68fad2e5ea4f17eaafc8b3","max_size_mb":160}, + {"source":"segmentation_models","name":"deeplabv3__mobileone_s1","architecture":"deeplabv3__mobileone_s1","task":"segmentation","input_shape":[1,3,256,256],"architecture_sha256":"3be94fe2192eb7d0d8baf129cb2b0a1c744dbf287574a344d9a3ed3214c2d8bb","max_size_mb":160}, + {"source":"segmentation_models","name":"deeplabv3__mobileone_s2","architecture":"deeplabv3__mobileone_s2","task":"segmentation","input_shape":[1,3,256,256],"architecture_sha256":"35ef7275d9c0412adbf2a02511f7c3d6cac9548a7b45bed741828b90941cc30f","max_size_mb":160}, + {"source":"segmentation_models","name":"deeplabv3__mobileone_s3","architecture":"deeplabv3__mobileone_s3","task":"segmentation","input_shape":[1,3,256,256],"architecture_sha256":"c9c804c5199b2771b15b98bb7a69e357f207d32d26c411e3dabf770ac39f91ab","max_size_mb":160}, + {"source":"segmentation_models","name":"deeplabv3__mobileone_s4","architecture":"deeplabv3__mobileone_s4","task":"segmentation","input_shape":[1,3,256,256],"architecture_sha256":"a0118f479ab140b0ff2e282727856af817e7c7fa576dd5711087552c8f1760e6","max_size_mb":160}, + {"source":"segmentation_models","name":"deeplabv3__resnet18","architecture":"deeplabv3__resnet18","task":"segmentation","input_shape":[1,3,256,256],"architecture_sha256":"b786c3a0a986db263aabd4ff12c73044557f9c8de68d6c1f4bb22bb7977ba7c1","max_size_mb":160}, + {"source":"segmentation_models","name":"deeplabv3__resnet34","architecture":"deeplabv3__resnet34","task":"segmentation","input_shape":[1,3,256,256],"architecture_sha256":"c6b985b83e6511e9daf8baff82abd233aca591ca1488bdb31b963c60f9f8c4f1","max_size_mb":160}, + {"source":"segmentation_models","name":"deeplabv3__resnet50","architecture":"deeplabv3__resnet50","task":"segmentation","input_shape":[1,3,256,256],"architecture_sha256":"711b78577a37cf2f3a3d8dba4a1a2add53c301db1883483145c4eccbd179a490","max_size_mb":160}, + {"source":"segmentation_models","name":"deeplabv3__resnext50_32x4d","architecture":"deeplabv3__resnext50_32x4d","task":"segmentation","input_shape":[1,3,256,256],"architecture_sha256":"88c66a719783d542c14f5c14b8ccb0b4784127fee6e6a50bba42144403a95a69","max_size_mb":160}, + {"source":"segmentation_models","name":"deeplabv3__se_resnext50_32x4d","architecture":"deeplabv3__se_resnext50_32x4d","task":"segmentation","input_shape":[1,3,256,256],"architecture_sha256":"05344f308f6fd3d146291addceca9b6b1e8b6f7d8677997fc174b3fa2dc287fd","max_size_mb":160}, + {"source":"segmentation_models","name":"deeplabv3plus__dpn68","architecture":"deeplabv3plus__dpn68","task":"segmentation","input_shape":[1,3,256,256],"architecture_sha256":"207b759e4118fddc652081d17d161958a35d14c804f9dfd5c3a0e4137e140b71","max_size_mb":160}, + {"source":"segmentation_models","name":"deeplabv3plus__dpn68b","architecture":"deeplabv3plus__dpn68b","task":"segmentation","input_shape":[1,3,256,256],"architecture_sha256":"69d3ba717360cc63750f7773944655e6acf24f7aef25beaa6692e7e005613c7a","max_size_mb":160}, + {"source":"segmentation_models","name":"deeplabv3plus__dpn92","architecture":"deeplabv3plus__dpn92","task":"segmentation","input_shape":[1,3,256,256],"architecture_sha256":"93a4a00a8cd459273f50d2754f04821a08222b5976b6287705f6f792734d58df","max_size_mb":160}, + {"source":"segmentation_models","name":"deeplabv3plus__efficientnet-b0","architecture":"deeplabv3plus__efficientnet-b0","task":"segmentation","input_shape":[1,3,256,256],"architecture_sha256":"83671d0bcb74ae248cd326044222e309383079ad7f3668b94d0d2376cfd91434","max_size_mb":160}, + {"source":"segmentation_models","name":"deeplabv3plus__efficientnet-b1","architecture":"deeplabv3plus__efficientnet-b1","task":"segmentation","input_shape":[1,3,256,256],"architecture_sha256":"770f5e9780ebeacff06097c1fcf9815b1941a5ac524e48701de4322ea1c88404","max_size_mb":160}, + {"source":"segmentation_models","name":"deeplabv3plus__efficientnet-b2","architecture":"deeplabv3plus__efficientnet-b2","task":"segmentation","input_shape":[1,3,256,256],"architecture_sha256":"917e8f78841b4940dda6be4c4c0f451314159a33166b5ede97dd4223947ce41a","max_size_mb":160}, + {"source":"segmentation_models","name":"deeplabv3plus__efficientnet-b3","architecture":"deeplabv3plus__efficientnet-b3","task":"segmentation","input_shape":[1,3,256,256],"architecture_sha256":"e60cfee4ad6a10aca29f304ce87453ce55ed3b774d2bb73556ecd8d307e7f9dd","max_size_mb":160}, + {"source":"segmentation_models","name":"deeplabv3plus__efficientnet-b4","architecture":"deeplabv3plus__efficientnet-b4","task":"segmentation","input_shape":[1,3,256,256],"architecture_sha256":"c26368b8a20114a86746786d897b4cdf8871cc1a5fae0d94218624d1e3bb2bec","max_size_mb":160}, + {"source":"segmentation_models","name":"deeplabv3plus__efficientnet-b5","architecture":"deeplabv3plus__efficientnet-b5","task":"segmentation","input_shape":[1,3,256,256],"architecture_sha256":"6361280b459a6541709f1f2b40ab34331f0035a2f62aeea57c8594e5eb897fca","max_size_mb":160}, + {"source":"segmentation_models","name":"deeplabv3plus__mit_b0","architecture":"deeplabv3plus__mit_b0","task":"segmentation","input_shape":[1,3,256,256],"architecture_sha256":"90b0b136ce85ad026f711c56ad2712cd05562f31b041a5d2a4a405beba78c984","max_size_mb":160}, + {"source":"segmentation_models","name":"deeplabv3plus__mit_b1","architecture":"deeplabv3plus__mit_b1","task":"segmentation","input_shape":[1,3,256,256],"architecture_sha256":"ec6684b3e87b8878bf622544f581617e2592fd16c4aff0fba72f8a9c5ba8d20a","max_size_mb":160}, + {"source":"segmentation_models","name":"deeplabv3plus__mit_b2","architecture":"deeplabv3plus__mit_b2","task":"segmentation","input_shape":[1,3,256,256],"architecture_sha256":"7564ef6ce3aa27c8e940a7bca495531643893d086915bc85dca49712b26116f0","max_size_mb":160}, + {"source":"segmentation_models","name":"deeplabv3plus__mobilenet_v2","architecture":"deeplabv3plus__mobilenet_v2","task":"segmentation","input_shape":[1,3,256,256],"architecture_sha256":"a6bcd66ea4704a5fd72999eb28f969a77a05e61d7ba9f1ec17f3ce3d84888341","max_size_mb":160}, + {"source":"segmentation_models","name":"deeplabv3plus__mobileone_s0","architecture":"deeplabv3plus__mobileone_s0","task":"segmentation","input_shape":[1,3,256,256],"architecture_sha256":"c5c034d927e6036f64354d6ef8a18a3999ff8634192e37871866b21f5562a2c4","max_size_mb":160}, + {"source":"segmentation_models","name":"deeplabv3plus__mobileone_s1","architecture":"deeplabv3plus__mobileone_s1","task":"segmentation","input_shape":[1,3,256,256],"architecture_sha256":"4454498efaa82ac8a0ba4efb11a924568372277882ba473f1e826525b6ec9fb6","max_size_mb":160}, + {"source":"segmentation_models","name":"deeplabv3plus__mobileone_s2","architecture":"deeplabv3plus__mobileone_s2","task":"segmentation","input_shape":[1,3,256,256],"architecture_sha256":"d45822819fb37f2a92c971d4702a47cb06b69ec9e1339fc3f19f0306885d11a4","max_size_mb":160}, + {"source":"segmentation_models","name":"deeplabv3plus__mobileone_s3","architecture":"deeplabv3plus__mobileone_s3","task":"segmentation","input_shape":[1,3,256,256],"architecture_sha256":"ce49e20ab8216302ac07619245e2d47aa3cec47c186ff25786add31bd0fa7acf","max_size_mb":160}, + {"source":"segmentation_models","name":"deeplabv3plus__mobileone_s4","architecture":"deeplabv3plus__mobileone_s4","task":"segmentation","input_shape":[1,3,256,256],"architecture_sha256":"89bd8e5c6160d344314b2e2ac6ff880e23cc13c4406c8b0eea859740a6380c79","max_size_mb":160}, + {"source":"segmentation_models","name":"deeplabv3plus__resnet18","architecture":"deeplabv3plus__resnet18","task":"segmentation","input_shape":[1,3,256,256],"architecture_sha256":"116c10299829e7858b52f2bf60ab44468dc275de7a85226d9e5762cbdd92c364","max_size_mb":160}, + {"source":"segmentation_models","name":"deeplabv3plus__resnet34","architecture":"deeplabv3plus__resnet34","task":"segmentation","input_shape":[1,3,256,256],"architecture_sha256":"e1382f54ddcfb0528bdabebcb908e48fd96df9dc22b70ad4772f8ca642796d6f","max_size_mb":160}, + {"source":"segmentation_models","name":"deeplabv3plus__resnet50","architecture":"deeplabv3plus__resnet50","task":"segmentation","input_shape":[1,3,256,256],"architecture_sha256":"ecf54867b6041ac69d2456da27baf4a1bd0111371fbf3d323896f9115c9a2e5e","max_size_mb":160}, + {"source":"segmentation_models","name":"deeplabv3plus__resnext50_32x4d","architecture":"deeplabv3plus__resnext50_32x4d","task":"segmentation","input_shape":[1,3,256,256],"architecture_sha256":"f7b9c48de15076ed72a614a2fba096fced2c90532e0662db634ae841d01f6b31","max_size_mb":160}, + {"source":"segmentation_models","name":"deeplabv3plus__se_resnet50","architecture":"deeplabv3plus__se_resnet50","task":"segmentation","input_shape":[1,3,256,256],"architecture_sha256":"a15f0fd59a66b22258aa1016ae45922e1320d2b9dce3c28541bf55de7185400d","max_size_mb":160}, + {"source":"segmentation_models","name":"deeplabv3plus__se_resnext50_32x4d","architecture":"deeplabv3plus__se_resnext50_32x4d","task":"segmentation","input_shape":[1,3,256,256],"architecture_sha256":"4e876210af4ab04b8a44c92924c0c85fe5e6b96912df96f3b6d075ac61db0920","max_size_mb":160}, + {"source":"segmentation_models","name":"fpn__densenet121","architecture":"fpn__densenet121","task":"segmentation","input_shape":[1,3,256,256],"architecture_sha256":"0064cc4140d22830d890eea696e09b4362e7a405cec7794000dff2480697f0ee","max_size_mb":160}, + {"source":"segmentation_models","name":"fpn__densenet161","architecture":"fpn__densenet161","task":"segmentation","input_shape":[1,3,256,256],"architecture_sha256":"53d682976dbb84f6d060511f31a3e913395c8270324db485681244748b97a627","max_size_mb":160}, + {"source":"segmentation_models","name":"fpn__densenet169","architecture":"fpn__densenet169","task":"segmentation","input_shape":[1,3,256,256],"architecture_sha256":"38b75e445100ca9287a0bc7eeaed722df8d7b1dde83ed1a4d09a61698f6bd2fa","max_size_mb":160}, + {"source":"segmentation_models","name":"fpn__densenet201","architecture":"fpn__densenet201","task":"segmentation","input_shape":[1,3,256,256],"architecture_sha256":"ef2a5223ec3be92aa6bcf13b47abd2e40790a8b0b2a90e5aa3de6b6546972668","max_size_mb":160}, + {"source":"segmentation_models","name":"fpn__dpn68","architecture":"fpn__dpn68","task":"segmentation","input_shape":[1,3,256,256],"architecture_sha256":"9bd39132b2b0ca9a3bb325586b581bc7ee2a087ea1994c03fb6a6f70dbd51679","max_size_mb":160}, + {"source":"segmentation_models","name":"fpn__dpn68b","architecture":"fpn__dpn68b","task":"segmentation","input_shape":[1,3,256,256],"architecture_sha256":"ce70256f38a9937d7d3207ad3009108f4aa90ff25ae6f7b49cc9e8922f9b5e5a","max_size_mb":160}, + {"source":"segmentation_models","name":"fpn__dpn92","architecture":"fpn__dpn92","task":"segmentation","input_shape":[1,3,256,256],"architecture_sha256":"6c7cad07841093f118022a83f10f0cb7ad57c28083519490339ebf4445a1ba76","max_size_mb":160}, + {"source":"segmentation_models","name":"fpn__efficientnet-b0","architecture":"fpn__efficientnet-b0","task":"segmentation","input_shape":[1,3,256,256],"architecture_sha256":"d2e199aa051e3ae7f1c0905daf4334256904a38287dc32bc9c8746bcd48c2e33","max_size_mb":160}, + {"source":"segmentation_models","name":"fpn__efficientnet-b1","architecture":"fpn__efficientnet-b1","task":"segmentation","input_shape":[1,3,256,256],"architecture_sha256":"aa90686b8a54ec2fbcc19271726507c8d482dcee8e2f929300ae3d02d4bd3b1f","max_size_mb":160}, + {"source":"segmentation_models","name":"fpn__efficientnet-b2","architecture":"fpn__efficientnet-b2","task":"segmentation","input_shape":[1,3,256,256],"architecture_sha256":"25925768d7534a453817ea7df148beafced2538beb95038130b995a2fafc58d1","max_size_mb":160}, + {"source":"segmentation_models","name":"fpn__efficientnet-b3","architecture":"fpn__efficientnet-b3","task":"segmentation","input_shape":[1,3,256,256],"architecture_sha256":"b76543c4215f78c3634ccde7ceb2d2af98ec3fca8ffdafaa06e22c316ac0dda5","max_size_mb":160}, + {"source":"segmentation_models","name":"fpn__efficientnet-b4","architecture":"fpn__efficientnet-b4","task":"segmentation","input_shape":[1,3,256,256],"architecture_sha256":"1d6bd15c35c1c5d28f5505e48cc78cdcb7f36e00e573293fe8f85987788b7f00","max_size_mb":160}, + {"source":"segmentation_models","name":"fpn__efficientnet-b5","architecture":"fpn__efficientnet-b5","task":"segmentation","input_shape":[1,3,256,256],"architecture_sha256":"39d9f173ac5f45af32754f6f7bf899a0a31aafc585b36d26e7f830d88cae5a76","max_size_mb":160}, + {"source":"segmentation_models","name":"fpn__mit_b0","architecture":"fpn__mit_b0","task":"segmentation","input_shape":[1,3,256,256],"architecture_sha256":"7b6a8cbe05623adba873ca5abfd08959879a4dc380bbc049847b21145ade0e70","max_size_mb":160}, + {"source":"segmentation_models","name":"fpn__mit_b1","architecture":"fpn__mit_b1","task":"segmentation","input_shape":[1,3,256,256],"architecture_sha256":"a18214f7a11abe02db7e0e2289d8de019dc9266c69b33ce00d14fc8f435f6c6c","max_size_mb":160}, + {"source":"segmentation_models","name":"fpn__mit_b2","architecture":"fpn__mit_b2","task":"segmentation","input_shape":[1,3,256,256],"architecture_sha256":"246707d73e54410f8f56f447c06a5fed5aa110a13d559ffdca4cb6f02a4589fb","max_size_mb":160}, + {"source":"segmentation_models","name":"fpn__mobilenet_v2","architecture":"fpn__mobilenet_v2","task":"segmentation","input_shape":[1,3,256,256],"architecture_sha256":"74383969e18bd56cfc4f36c226d12cd45a43e25aa9a9beb819c6e725a3bc3196","max_size_mb":160}, + {"source":"segmentation_models","name":"fpn__mobileone_s0","architecture":"fpn__mobileone_s0","task":"segmentation","input_shape":[1,3,256,256],"architecture_sha256":"f449d53d981d3a7fbc538dac273e8a3c34dc9cd21e905c2172581a868a06ac00","max_size_mb":160}, + {"source":"segmentation_models","name":"fpn__mobileone_s1","architecture":"fpn__mobileone_s1","task":"segmentation","input_shape":[1,3,256,256],"architecture_sha256":"c4c9e0d114c03abb4510afb8adf6ea80e761fe0a2713975b99f3b188f0221ad1","max_size_mb":160}, + {"source":"segmentation_models","name":"fpn__mobileone_s2","architecture":"fpn__mobileone_s2","task":"segmentation","input_shape":[1,3,256,256],"architecture_sha256":"cd599859daba8767550baf75ef27547e79a8071e60ddc936f91fb7474fa7abc0","max_size_mb":160}, + {"source":"segmentation_models","name":"fpn__mobileone_s3","architecture":"fpn__mobileone_s3","task":"segmentation","input_shape":[1,3,256,256],"architecture_sha256":"2542ab37eebedaddfe3aa650dac05dfd16ca8e645210c246627b8f1b48b3574b","max_size_mb":160}, + {"source":"segmentation_models","name":"fpn__mobileone_s4","architecture":"fpn__mobileone_s4","task":"segmentation","input_shape":[1,3,256,256],"architecture_sha256":"937c6779cb3373e342170167b22ee583591b95be363c882898e98d007d08e7df","max_size_mb":160}, + {"source":"segmentation_models","name":"fpn__resnet18","architecture":"fpn__resnet18","task":"segmentation","input_shape":[1,3,256,256],"architecture_sha256":"179479f3a4f6394e7d88cd7f7261545997e0d91ac9df9a5f40ed1cbdb6894aa0","max_size_mb":160}, + {"source":"segmentation_models","name":"fpn__resnet34","architecture":"fpn__resnet34","task":"segmentation","input_shape":[1,3,256,256],"architecture_sha256":"84df63b45c2829924835021aea26d5472750dec856b6ef13bebe916f3fefaaa7","max_size_mb":160}, + {"source":"segmentation_models","name":"fpn__resnet50","architecture":"fpn__resnet50","task":"segmentation","input_shape":[1,3,256,256],"architecture_sha256":"fa494fe4e1420f15bc2ab0484b3b22178579e72ec4076b63427ae66366194259","max_size_mb":160}, + {"source":"segmentation_models","name":"fpn__resnext50_32x4d","architecture":"fpn__resnext50_32x4d","task":"segmentation","input_shape":[1,3,256,256],"architecture_sha256":"94d0b1c1324d0b57c7235873ca4323b42a43c5bf6ba3a0dc170129d3fe2c6538","max_size_mb":160}, + {"source":"segmentation_models","name":"fpn__se_resnet50","architecture":"fpn__se_resnet50","task":"segmentation","input_shape":[1,3,256,256],"architecture_sha256":"881fd5778b08b64f3e6567f7d30259dc26112823dbeb57feef6bad40139714fc","max_size_mb":160}, + {"source":"segmentation_models","name":"fpn__se_resnext50_32x4d","architecture":"fpn__se_resnext50_32x4d","task":"segmentation","input_shape":[1,3,256,256],"architecture_sha256":"8138d1862bc412aa70913d911c7f244980b1abcdf1aedfc295eb66f5f8b05c78","max_size_mb":160}, + {"source":"segmentation_models","name":"fpn__vgg11","architecture":"fpn__vgg11","task":"segmentation","input_shape":[1,3,256,256],"architecture_sha256":"a9310472995873e9632bbd304ce94770d3b3ecbd385a42a7a99e0a23143c5b09","max_size_mb":160}, + {"source":"segmentation_models","name":"fpn__vgg11_bn","architecture":"fpn__vgg11_bn","task":"segmentation","input_shape":[1,3,256,256],"architecture_sha256":"7949d551027554d6ddd27a00a800ce97f1f29de7664621ef2eb3779597a1efba","max_size_mb":160}, + {"source":"segmentation_models","name":"fpn__vgg13","architecture":"fpn__vgg13","task":"segmentation","input_shape":[1,3,256,256],"architecture_sha256":"b1c0033f73b4e7764c017bf1597945efd488537b82517c1876b12dd103c5c167","max_size_mb":160}, + {"source":"segmentation_models","name":"fpn__vgg13_bn","architecture":"fpn__vgg13_bn","task":"segmentation","input_shape":[1,3,256,256],"architecture_sha256":"80ca4aa5da6dc943b71715ce228ed00121ee156d83504b8176e117f6909e9e5e","max_size_mb":160}, + {"source":"segmentation_models","name":"fpn__vgg16","architecture":"fpn__vgg16","task":"segmentation","input_shape":[1,3,256,256],"architecture_sha256":"555e6fe74a964b7d41aaa855f9596f3e5b5c1287e70f458160ef799d54bc1fe4","max_size_mb":160}, + {"source":"segmentation_models","name":"fpn__vgg16_bn","architecture":"fpn__vgg16_bn","task":"segmentation","input_shape":[1,3,256,256],"architecture_sha256":"42edf6771ecd5e210c8e4485d504e1845bcbc3b7190d0c2beb774917b94f97c1","max_size_mb":160}, + {"source":"segmentation_models","name":"fpn__vgg19","architecture":"fpn__vgg19","task":"segmentation","input_shape":[1,3,256,256],"architecture_sha256":"f66d39f4407ec4cb35a997e025bc8107773feb298973193103577336c496725c","max_size_mb":160}, + {"source":"segmentation_models","name":"fpn__vgg19_bn","architecture":"fpn__vgg19_bn","task":"segmentation","input_shape":[1,3,256,256],"architecture_sha256":"b2e70a1b94413e3baaa52abb8c0da5c7c8baab7d77cf9aa2e86d475fd2b6da4c","max_size_mb":160}, + {"source":"segmentation_models","name":"fpn__xception","architecture":"fpn__xception","task":"segmentation","input_shape":[1,3,256,256],"architecture_sha256":"72a7ae7854fd8e6cf02261be29f7964f8be04a60af3eabceb2039c2153411bca","max_size_mb":160}, + {"source":"segmentation_models","name":"linknet__densenet121","architecture":"linknet__densenet121","task":"segmentation","input_shape":[1,3,256,256],"architecture_sha256":"1bffdd4e71be10e9cb8b0231e276cad900b567ae0da501bce96384ee4b531311","max_size_mb":160}, + {"source":"segmentation_models","name":"linknet__densenet161","architecture":"linknet__densenet161","task":"segmentation","input_shape":[1,3,256,256],"architecture_sha256":"3f5b38778cb1b523bd9d20d7d70ffa8886ae75440459605f8f14cc5211ceadd5","max_size_mb":160}, + {"source":"segmentation_models","name":"linknet__densenet169","architecture":"linknet__densenet169","task":"segmentation","input_shape":[1,3,256,256],"architecture_sha256":"22be1a7e4f2d02578005b5c4981a5334b986d93aa9b78f836e1cd2d38ef42921","max_size_mb":160}, + {"source":"segmentation_models","name":"linknet__densenet201","architecture":"linknet__densenet201","task":"segmentation","input_shape":[1,3,256,256],"architecture_sha256":"1f453c9374b011fcaab6df80cc2d0a2e5367272d75eedca93d1633c8d34f6a03","max_size_mb":160}, + {"source":"segmentation_models","name":"linknet__dpn68","architecture":"linknet__dpn68","task":"segmentation","input_shape":[1,3,256,256],"architecture_sha256":"9de23cdeb3a6e8bd33c8770361c78eda82f53c71849a55574be1fc77cd7b2cfb","max_size_mb":160}, + {"source":"segmentation_models","name":"linknet__dpn68b","architecture":"linknet__dpn68b","task":"segmentation","input_shape":[1,3,256,256],"architecture_sha256":"44aca782764c84ebd8e9254df6e4f89d9e2f95bf57d88cc83902add68e6edbe0","max_size_mb":160}, + {"source":"segmentation_models","name":"linknet__mobilenet_v2","architecture":"linknet__mobilenet_v2","task":"segmentation","input_shape":[1,3,256,256],"architecture_sha256":"537a461e024881688883a7934948feb6ab22e0e8dfdf5e1c9f72dd7031d1297b","max_size_mb":160}, + {"source":"segmentation_models","name":"linknet__mobileone_s0","architecture":"linknet__mobileone_s0","task":"segmentation","input_shape":[1,3,256,256],"architecture_sha256":"a123efa1745f6a0f6162eaeb44126e574b2ccb3cd79643b1d6af665b19b62fe4","max_size_mb":160}, + {"source":"segmentation_models","name":"linknet__mobileone_s1","architecture":"linknet__mobileone_s1","task":"segmentation","input_shape":[1,3,256,256],"architecture_sha256":"12ff5a9f016703f9657485c5b24befbac36a538c3892587abe6aa8071f2991b0","max_size_mb":160}, + {"source":"segmentation_models","name":"linknet__mobileone_s2","architecture":"linknet__mobileone_s2","task":"segmentation","input_shape":[1,3,256,256],"architecture_sha256":"aa7f95aa74b7e45c2830cca614fc093100aa318334978dfb806d66e2b4bf6b43","max_size_mb":160}, + {"source":"segmentation_models","name":"linknet__mobileone_s3","architecture":"linknet__mobileone_s3","task":"segmentation","input_shape":[1,3,256,256],"architecture_sha256":"b5c43360cff2b954dd0cb13eabaaa1d956e223b26d6f20d4244ddfc9a4080bd4","max_size_mb":160}, + {"source":"segmentation_models","name":"linknet__mobileone_s4","architecture":"linknet__mobileone_s4","task":"segmentation","input_shape":[1,3,256,256],"architecture_sha256":"91a625b0fa8de4418bbab32ac806b9b50eabf5673ca14f1b961bc9904d682e7a","max_size_mb":160}, + {"source":"segmentation_models","name":"linknet__resnet18","architecture":"linknet__resnet18","task":"segmentation","input_shape":[1,3,256,256],"architecture_sha256":"edf8dfaa4cacc9fd877ff6081bc828854fe360c8b197516c1d46ff8491050a7e","max_size_mb":160}, + {"source":"segmentation_models","name":"linknet__resnet34","architecture":"linknet__resnet34","task":"segmentation","input_shape":[1,3,256,256],"architecture_sha256":"edd48999ccb7a967a57bfe53db7c14e6cb63e0565d84b2779e7595d7d32ce398","max_size_mb":160}, + {"source":"segmentation_models","name":"linknet__resnet50","architecture":"linknet__resnet50","task":"segmentation","input_shape":[1,3,256,256],"architecture_sha256":"ad6b6cf60bdf9842dc5ec9be6d34da796cee02bd0799f2c1797d2f00e379a140","max_size_mb":160}, + {"source":"segmentation_models","name":"linknet__resnext50_32x4d","architecture":"linknet__resnext50_32x4d","task":"segmentation","input_shape":[1,3,256,256],"architecture_sha256":"48e092177e506757698898ca8e0b4bdf852069a5916c99f8c46629bb29bfc4be","max_size_mb":160}, + {"source":"segmentation_models","name":"linknet__se_resnet50","architecture":"linknet__se_resnet50","task":"segmentation","input_shape":[1,3,256,256],"architecture_sha256":"2ccdbed84ccf2d79de09ccde5fd4d886dedd40780a895fb2a4766d5741179a72","max_size_mb":160}, + {"source":"segmentation_models","name":"linknet__se_resnext50_32x4d","architecture":"linknet__se_resnext50_32x4d","task":"segmentation","input_shape":[1,3,256,256],"architecture_sha256":"0470ef228f067c97e0ff16b95cfcfb54ab867a340d0f46dd85fd3c0e7ab0eaf2","max_size_mb":160}, + {"source":"segmentation_models","name":"linknet__vgg11","architecture":"linknet__vgg11","task":"segmentation","input_shape":[1,3,256,256],"architecture_sha256":"253a1e4acb8288ed9c939e1fc37cbf8939dd31d4a6bf3a9a78e5d21e9d1d1fc6","max_size_mb":160}, + {"source":"segmentation_models","name":"linknet__vgg11_bn","architecture":"linknet__vgg11_bn","task":"segmentation","input_shape":[1,3,256,256],"architecture_sha256":"0b6fb538c2394eef85841e83f355e06cd41349fa51982c4906faf10d4ead817f","max_size_mb":160}, + {"source":"segmentation_models","name":"linknet__vgg13","architecture":"linknet__vgg13","task":"segmentation","input_shape":[1,3,256,256],"architecture_sha256":"1a9820f9d6cfb1f658ff2c582878106d764ecfff72d31739e018da4875b218b5","max_size_mb":160}, + {"source":"segmentation_models","name":"linknet__vgg13_bn","architecture":"linknet__vgg13_bn","task":"segmentation","input_shape":[1,3,256,256],"architecture_sha256":"50b89caeda39d995440946eb71a576d7e118c23ca34dd68dd8d95231c0896f56","max_size_mb":160}, + {"source":"segmentation_models","name":"linknet__vgg16","architecture":"linknet__vgg16","task":"segmentation","input_shape":[1,3,256,256],"architecture_sha256":"4542145bbfa4165ab1da6923215af49e3e7692437fff9b8d1941806f83220d22","max_size_mb":160}, + {"source":"segmentation_models","name":"linknet__vgg16_bn","architecture":"linknet__vgg16_bn","task":"segmentation","input_shape":[1,3,256,256],"architecture_sha256":"0b7209d417eec9d02ec68f19951b85d57d8a5b9ed0882d72c0a6d40c7df9f521","max_size_mb":160}, + {"source":"segmentation_models","name":"linknet__vgg19","architecture":"linknet__vgg19","task":"segmentation","input_shape":[1,3,256,256],"architecture_sha256":"8d4e7aee36fb63a247254bd6f6a8c35d29c43c2935afd4382de7ae5646856f07","max_size_mb":160}, + {"source":"segmentation_models","name":"linknet__vgg19_bn","architecture":"linknet__vgg19_bn","task":"segmentation","input_shape":[1,3,256,256],"architecture_sha256":"684d9ee3e2d15c0a9a517ddb754362aae0f9f98ce46f91bd548798460f49d8e3","max_size_mb":160}, + {"source":"segmentation_models","name":"linknet__xception","architecture":"linknet__xception","task":"segmentation","input_shape":[1,3,256,256],"architecture_sha256":"70606806acfdd162a0e5e5e86b812fab50205d91f5e267935a989afb1abd8138","max_size_mb":160}, + {"source":"segmentation_models","name":"manet__dpn68","architecture":"manet__dpn68","task":"segmentation","input_shape":[1,3,256,256],"architecture_sha256":"89bffefe77244448b5637606522a0eabf975597fd365df297d87c5a17d9b1156","max_size_mb":160}, + {"source":"segmentation_models","name":"manet__dpn68b","architecture":"manet__dpn68b","task":"segmentation","input_shape":[1,3,256,256],"architecture_sha256":"ae1100c4f4f3768c743e5fd7c63eea4e631b246d1e44c65e1af0e2418ac813f7","max_size_mb":160}, + {"source":"segmentation_models","name":"manet__mit_b0","architecture":"manet__mit_b0","task":"segmentation","input_shape":[1,3,256,256],"architecture_sha256":"b6842e4b69f522e696c0e87e9fee7b8a7849ea0ae167a0bfe1541c0b2fe048d5","max_size_mb":160}, + {"source":"segmentation_models","name":"manet__mit_b1","architecture":"manet__mit_b1","task":"segmentation","input_shape":[1,3,256,256],"architecture_sha256":"dff0558acd38dda75623feb411a0a88b638c37d74c9de22e4abc5110075ed1a7","max_size_mb":160}, + {"source":"segmentation_models","name":"manet__mit_b2","architecture":"manet__mit_b2","task":"segmentation","input_shape":[1,3,256,256],"architecture_sha256":"6da079af2408ad1fea0bf44b7ad66cea48b598a663f47f97a4578f8bc4ed47f5","max_size_mb":160}, + {"source":"segmentation_models","name":"manet__resnet18","architecture":"manet__resnet18","task":"segmentation","input_shape":[1,3,256,256],"architecture_sha256":"02395045f5d98043515c40b11da9964d2f80395832590304771351b7e332540f","max_size_mb":160}, + {"source":"segmentation_models","name":"manet__resnet34","architecture":"manet__resnet34","task":"segmentation","input_shape":[1,3,256,256],"architecture_sha256":"0223e57d621e0c7364720d9157ad0b54c56eafc2c33db670f54627133ec75307","max_size_mb":160}, + {"source":"segmentation_models","name":"manet__vgg11","architecture":"manet__vgg11","task":"segmentation","input_shape":[1,3,256,256],"architecture_sha256":"2674179e61ed2b2f4e38ec3ca527c9a64c78e28cf409c85df3b15c27cb6f2a62","max_size_mb":160}, + {"source":"segmentation_models","name":"manet__vgg11_bn","architecture":"manet__vgg11_bn","task":"segmentation","input_shape":[1,3,256,256],"architecture_sha256":"dda9f5a3cc7cfe53ef00bf9147909ae4a08547b31e42a62cbd440908ee905aaa","max_size_mb":160}, + {"source":"segmentation_models","name":"manet__vgg13","architecture":"manet__vgg13","task":"segmentation","input_shape":[1,3,256,256],"architecture_sha256":"03a840029862aee5d12957241c15bc38ae425b46fcc5c5eb7a787d4293c98213","max_size_mb":160}, + {"source":"segmentation_models","name":"manet__vgg13_bn","architecture":"manet__vgg13_bn","task":"segmentation","input_shape":[1,3,256,256],"architecture_sha256":"00ff45697a42a1e78ade4c42d076f04d34f1f1b4c4a37226b267c54ba7051e45","max_size_mb":160}, + {"source":"segmentation_models","name":"manet__vgg16","architecture":"manet__vgg16","task":"segmentation","input_shape":[1,3,256,256],"architecture_sha256":"41aad72d23765b27b39e9db34fd331ac098ef6285413fd6ffba3a065094a4468","max_size_mb":160}, + {"source":"segmentation_models","name":"manet__vgg16_bn","architecture":"manet__vgg16_bn","task":"segmentation","input_shape":[1,3,256,256],"architecture_sha256":"d7ca15e6068b2d170495e94bda36c7cafcac07d1e0ac16e025765a1546d808bf","max_size_mb":160}, + {"source":"segmentation_models","name":"manet__vgg19","architecture":"manet__vgg19","task":"segmentation","input_shape":[1,3,256,256],"architecture_sha256":"e1db7493781879fa1d93a895e3e9bcc10fd3670c5aabef0a7e1f6b01f43d58aa","max_size_mb":160}, + {"source":"segmentation_models","name":"manet__vgg19_bn","architecture":"manet__vgg19_bn","task":"segmentation","input_shape":[1,3,256,256],"architecture_sha256":"64fc5da50ff560cc699e9d7a9a0fa6846de0836c040de638a6be99d94fddad2f","max_size_mb":160}, + {"source":"segmentation_models","name":"pan__dpn68","architecture":"pan__dpn68","task":"segmentation","input_shape":[1,3,256,256],"architecture_sha256":"87fd74b403f3275a4b4b6b4d25675879ca03348cfeaaf1189406f3b70118901a","max_size_mb":160}, + {"source":"segmentation_models","name":"pan__dpn68b","architecture":"pan__dpn68b","task":"segmentation","input_shape":[1,3,256,256],"architecture_sha256":"9b353bb82a63275f7f21c448f88f34b7e45a5c77e1069dba1ceefdfbf5859d95","max_size_mb":160}, + {"source":"segmentation_models","name":"pan__dpn92","architecture":"pan__dpn92","task":"segmentation","input_shape":[1,3,256,256],"architecture_sha256":"a64d8402e93f4192450e97d1abf78252d1b84b8adda8270dac9d86e83a995502","max_size_mb":160}, + {"source":"segmentation_models","name":"pan__efficientnet-b0","architecture":"pan__efficientnet-b0","task":"segmentation","input_shape":[1,3,256,256],"architecture_sha256":"fe9b18302f7a2fb66e2dea3409baaaa1055db9fda66bd8aaf0d8365eb6432ad4","max_size_mb":160}, + {"source":"segmentation_models","name":"pan__efficientnet-b1","architecture":"pan__efficientnet-b1","task":"segmentation","input_shape":[1,3,256,256],"architecture_sha256":"8ec236e4276ac0305e283b772707c88319d73072bdf6261bc4574332e0606dad","max_size_mb":160}, + {"source":"segmentation_models","name":"pan__efficientnet-b2","architecture":"pan__efficientnet-b2","task":"segmentation","input_shape":[1,3,256,256],"architecture_sha256":"e63438542a802c2aa5d3e6c3af580a5ac72624fa907f13b742e14b1a528bea73","max_size_mb":160}, + {"source":"segmentation_models","name":"pan__efficientnet-b3","architecture":"pan__efficientnet-b3","task":"segmentation","input_shape":[1,3,256,256],"architecture_sha256":"622b1e692513c14e1e1549f90730cb985c9912d9517639667c178fd61baafebd","max_size_mb":160}, + {"source":"segmentation_models","name":"pan__efficientnet-b4","architecture":"pan__efficientnet-b4","task":"segmentation","input_shape":[1,3,256,256],"architecture_sha256":"44a912170c899eba57c3ebd168adafded3c5e29aa78adfc91034099f5632ef52","max_size_mb":160}, + {"source":"segmentation_models","name":"pan__efficientnet-b5","architecture":"pan__efficientnet-b5","task":"segmentation","input_shape":[1,3,256,256],"architecture_sha256":"3034f9a1ed03027e9dc5a5d596381ab1d75d5a98d6820884dc35cf096ed93991","max_size_mb":160}, + {"source":"segmentation_models","name":"pan__efficientnet-b6","architecture":"pan__efficientnet-b6","task":"segmentation","input_shape":[1,3,256,256],"architecture_sha256":"2c863bd20ef315624f57ea48700a2e6e5324ebd1340763fb154836042cd891c3","max_size_mb":160}, + {"source":"segmentation_models","name":"pan__mit_b0","architecture":"pan__mit_b0","task":"segmentation","input_shape":[1,3,256,256],"architecture_sha256":"49caacc631b99e307022c22eaf3113c2b44e4bb970ddcb321644031b3addcde0","max_size_mb":160}, + {"source":"segmentation_models","name":"pan__mit_b1","architecture":"pan__mit_b1","task":"segmentation","input_shape":[1,3,256,256],"architecture_sha256":"5d0d3cc00930dde7f777bff19dd66ede0dad1f5a9c4a93720ffaf223963bf527","max_size_mb":160}, + {"source":"segmentation_models","name":"pan__mit_b2","architecture":"pan__mit_b2","task":"segmentation","input_shape":[1,3,256,256],"architecture_sha256":"9ccd846456df4f3318228bb6c38658286e0e5203f98a42e0c17ec5ae9586b89c","max_size_mb":160}, + {"source":"segmentation_models","name":"pan__mobilenet_v2","architecture":"pan__mobilenet_v2","task":"segmentation","input_shape":[1,3,256,256],"architecture_sha256":"dc0aedaaf874a1f3fa324707ebe50fe690ad2629447c82ec8be184a3a7a0ad3c","max_size_mb":160}, + {"source":"segmentation_models","name":"pan__mobileone_s1","architecture":"pan__mobileone_s1","task":"segmentation","input_shape":[1,3,256,256],"architecture_sha256":"c76dcbfa4c5aa084eda329e95f3c222b0fdef671fb42f6a2805c5329c6eb2472","max_size_mb":160}, + {"source":"segmentation_models","name":"pan__mobileone_s2","architecture":"pan__mobileone_s2","task":"segmentation","input_shape":[1,3,256,256],"architecture_sha256":"3acfe109d1cc0eea1adfe6ceea1091307dc7f6e9838c572cf38e2a85672da89c","max_size_mb":160}, + {"source":"segmentation_models","name":"pan__mobileone_s3","architecture":"pan__mobileone_s3","task":"segmentation","input_shape":[1,3,256,256],"architecture_sha256":"10a45d15e619a2ad9b053f43b70649355981f3c791cd4e4f76de2ac208854290","max_size_mb":160}, + {"source":"segmentation_models","name":"pan__mobileone_s4","architecture":"pan__mobileone_s4","task":"segmentation","input_shape":[1,3,256,256],"architecture_sha256":"71b7a70dd5e8552fd8abf3c862f444d0f8c8bfe323b727cd916f7b1d233b6da1","max_size_mb":160}, + {"source":"segmentation_models","name":"pan__resnet18","architecture":"pan__resnet18","task":"segmentation","input_shape":[1,3,256,256],"architecture_sha256":"74154a86b1279a1d9120a366260c8e3f564a4e1a76d7aa2e7c2a867a93582588","max_size_mb":160}, + {"source":"segmentation_models","name":"pan__resnet50","architecture":"pan__resnet50","task":"segmentation","input_shape":[1,3,256,256],"architecture_sha256":"3002d838079a834fde22fec380b5689bb8804c8b49dd81b983511277d7f71b82","max_size_mb":160}, + {"source":"segmentation_models","name":"pan__resnext50_32x4d","architecture":"pan__resnext50_32x4d","task":"segmentation","input_shape":[1,3,256,256],"architecture_sha256":"5df6b551358daaeb196ad6e7cbfa7ff35f9c8b14b859602fe20f43fe63bfad62","max_size_mb":160}, + {"source":"segmentation_models","name":"pan__se_resnet50","architecture":"pan__se_resnet50","task":"segmentation","input_shape":[1,3,256,256],"architecture_sha256":"16e078b333ab22d700c7e5b9f043f6e7878821b8ba023df11cf918acdf9db984","max_size_mb":160}, + {"source":"segmentation_models","name":"pan__se_resnext50_32x4d","architecture":"pan__se_resnext50_32x4d","task":"segmentation","input_shape":[1,3,256,256],"architecture_sha256":"1b683f2fd44faee78cb3c87f045d9feefe1a7ef02daddddeb648cdce1333a261","max_size_mb":160}, + {"source":"segmentation_models","name":"pspnet__densenet121","architecture":"pspnet__densenet121","task":"segmentation","input_shape":[1,3,384,384],"architecture_sha256":"a53cf7259d6d34102db5c1deb3532b5a8cf855a563d41b179aa79c54305ec9a5","max_size_mb":160}, + {"source":"segmentation_models","name":"pspnet__densenet161","architecture":"pspnet__densenet161","task":"segmentation","input_shape":[1,3,384,384],"architecture_sha256":"170db801668e21d61ff2fd0523ee9a8f6969718967029689ce0bd176ed4cb315","max_size_mb":160}, + {"source":"segmentation_models","name":"pspnet__dpn68","architecture":"pspnet__dpn68","task":"segmentation","input_shape":[1,3,384,384],"architecture_sha256":"781e600ef64dbabff2271d7c7bee3360dc02d2f3e1698e86b28214c9960eabc0","max_size_mb":160}, + {"source":"segmentation_models","name":"pspnet__dpn68b","architecture":"pspnet__dpn68b","task":"segmentation","input_shape":[1,3,384,384],"architecture_sha256":"cb21d80d9e710ce090c946166f1b2ada5572809e0ddf5d806f6ca8556c97e66f","max_size_mb":160}, + {"source":"segmentation_models","name":"pspnet__dpn92","architecture":"pspnet__dpn92","task":"segmentation","input_shape":[1,3,384,384],"architecture_sha256":"ab1756bcf4590fd3e75cbeb993cbd6113cf9af6ddf37ee3ab4bcb0ed2625752b","max_size_mb":160}, + {"source":"segmentation_models","name":"pspnet__inceptionv4","architecture":"pspnet__inceptionv4","task":"segmentation","input_shape":[1,3,384,384],"architecture_sha256":"e5eb236978a310e037c95fd327ae0ca3c13fff6c926579710b4145fee98e3af6","max_size_mb":160}, + {"source":"segmentation_models","name":"pspnet__mit_b0","architecture":"pspnet__mit_b0","task":"segmentation","input_shape":[1,3,384,384],"architecture_sha256":"537593b9355c84ed978f789e35bf08c7fef491d3e79a2eb7d00b719918f84217","max_size_mb":160}, + {"source":"segmentation_models","name":"pspnet__mit_b1","architecture":"pspnet__mit_b1","task":"segmentation","input_shape":[1,3,384,384],"architecture_sha256":"7660c96b1421fb072d0be2db0ad97e020b4189d3c80f654b25cf3429f2d227c4","max_size_mb":160}, + {"source":"segmentation_models","name":"pspnet__mit_b2","architecture":"pspnet__mit_b2","task":"segmentation","input_shape":[1,3,384,384],"architecture_sha256":"b0568d2e518ba50944e49802e3a1cf1ad8ac60ff54d8bea3690e57a1e9d442ba","max_size_mb":160}, + {"source":"segmentation_models","name":"pspnet__mobilenet_v2","architecture":"pspnet__mobilenet_v2","task":"segmentation","input_shape":[1,3,384,384],"architecture_sha256":"1350f9b7ab863bfb11c811ebfb839d50c1e1a5527aee47b48ed8cd667c0b4893","max_size_mb":160}, + {"source":"segmentation_models","name":"pspnet__mobileone_s0","architecture":"pspnet__mobileone_s0","task":"segmentation","input_shape":[1,3,384,384],"architecture_sha256":"1db203d26bba5988b0e8f5c708eededaf53c4344f91725e3bfe82a983d11ce4e","max_size_mb":160}, + {"source":"segmentation_models","name":"pspnet__mobileone_s1","architecture":"pspnet__mobileone_s1","task":"segmentation","input_shape":[1,3,384,384],"architecture_sha256":"47c49af6193f91470e8a3ebc60684823f5287d29e82591435a74646914fc6186","max_size_mb":160}, + {"source":"segmentation_models","name":"pspnet__mobileone_s2","architecture":"pspnet__mobileone_s2","task":"segmentation","input_shape":[1,3,384,384],"architecture_sha256":"b49b028378d57d43b57ac4c18ad0572b725a5e6a81cf452bfe0c5f74b0e659c2","max_size_mb":160}, + {"source":"segmentation_models","name":"pspnet__mobileone_s3","architecture":"pspnet__mobileone_s3","task":"segmentation","input_shape":[1,3,384,384],"architecture_sha256":"efa55037902843edab789e5cdcd5cb02bf2e33441d6476c7ec1cfd1e5af44807","max_size_mb":160}, + {"source":"segmentation_models","name":"pspnet__mobileone_s4","architecture":"pspnet__mobileone_s4","task":"segmentation","input_shape":[1,3,384,384],"architecture_sha256":"58df5986533f41f43ad864169eb4fd104c494059f0936be6cee00e8b37f2ea04","max_size_mb":160}, + {"source":"segmentation_models","name":"pspnet__resnet18","architecture":"pspnet__resnet18","task":"segmentation","input_shape":[1,3,384,384],"architecture_sha256":"dab7267f2756efcae2f950d3fea26cf9b64eef01db57a73506a5bd6ba7f7f172","max_size_mb":160}, + {"source":"segmentation_models","name":"pspnet__resnet34","architecture":"pspnet__resnet34","task":"segmentation","input_shape":[1,3,384,384],"architecture_sha256":"f5299f919a491e030a28a7d68fb9faf92f0d22cbdd46f7c08c49c14472c7bc38","max_size_mb":160}, + {"source":"segmentation_models","name":"pspnet__resnet50","architecture":"pspnet__resnet50","task":"segmentation","input_shape":[1,3,384,384],"architecture_sha256":"214d01c3262cba89e8b3137aab4eaba93aba3080c26b5b4fba39b24b37edd818","max_size_mb":160}, + {"source":"segmentation_models","name":"pspnet__resnext50_32x4d","architecture":"pspnet__resnext50_32x4d","task":"segmentation","input_shape":[1,3,384,384],"architecture_sha256":"16d593a4093866fb985c4ba8fd9128466b8c49d5d4cee23672e473ad68bb8c71","max_size_mb":160}, + {"source":"segmentation_models","name":"pspnet__se_resnet50","architecture":"pspnet__se_resnet50","task":"segmentation","input_shape":[1,3,384,384],"architecture_sha256":"d778c5f7d9c6376b46268664b796c6307d3e3644a218e2ba1b53cabf7fcf92ed","max_size_mb":160}, + {"source":"segmentation_models","name":"pspnet__se_resnext50_32x4d","architecture":"pspnet__se_resnext50_32x4d","task":"segmentation","input_shape":[1,3,384,384],"architecture_sha256":"2aa3acee08216e1c42ff971b1fef971dee7c06d541ca6eaa2d168ef79eb63563","max_size_mb":160}, + {"source":"segmentation_models","name":"pspnet__vgg11","architecture":"pspnet__vgg11","task":"segmentation","input_shape":[1,3,384,384],"architecture_sha256":"965ad628852176de9e1160e2888ce421bc5a29a66d1079d5d1c132f4f793b2f9","max_size_mb":160}, + {"source":"segmentation_models","name":"pspnet__vgg11_bn","architecture":"pspnet__vgg11_bn","task":"segmentation","input_shape":[1,3,384,384],"architecture_sha256":"735b8777d3985bdeb2b9c1fc3bcc62a04e895702ce445df88d31e6b12950957e","max_size_mb":160}, + {"source":"segmentation_models","name":"pspnet__vgg13","architecture":"pspnet__vgg13","task":"segmentation","input_shape":[1,3,384,384],"architecture_sha256":"c53480943abafbb9b334d3c25c5d675c66865bc8c5e22409c1d27b70b116ad24","max_size_mb":160}, + {"source":"segmentation_models","name":"pspnet__vgg13_bn","architecture":"pspnet__vgg13_bn","task":"segmentation","input_shape":[1,3,384,384],"architecture_sha256":"d68bcabfe43b2fc59ae7bc2195de788f09174bbf96beceec2ab84f0bb2dc741c","max_size_mb":160}, + {"source":"segmentation_models","name":"pspnet__vgg16","architecture":"pspnet__vgg16","task":"segmentation","input_shape":[1,3,384,384],"architecture_sha256":"fa8eeaa01bdaf21472ba2d8c47c8b32a9a21bcfeb5e0d4f23cc4f2efb9c4ade2","max_size_mb":160}, + {"source":"segmentation_models","name":"pspnet__vgg16_bn","architecture":"pspnet__vgg16_bn","task":"segmentation","input_shape":[1,3,384,384],"architecture_sha256":"c4c3e499955334f722a9f41f696d97c7621af17481f744115ba853a98498bba3","max_size_mb":160}, + {"source":"segmentation_models","name":"pspnet__vgg19","architecture":"pspnet__vgg19","task":"segmentation","input_shape":[1,3,384,384],"architecture_sha256":"821cd6acfa4d6f6b8f630f757a1371840dbd3c763d0830638080e316773cf1de","max_size_mb":160}, + {"source":"segmentation_models","name":"pspnet__vgg19_bn","architecture":"pspnet__vgg19_bn","task":"segmentation","input_shape":[1,3,384,384],"architecture_sha256":"4fe3fd7f75bfaa20e9fbcd9d89308361fa5457227beda627e0e97f28d7c244ae","max_size_mb":160}, + {"source":"segmentation_models","name":"pspnet__xception","architecture":"pspnet__xception","task":"segmentation","input_shape":[1,3,384,384],"architecture_sha256":"435af7285c05a6b2dc22c55053f7f66011386c341ce7101e8c5afb520fc20422","max_size_mb":160}, + {"source":"segmentation_models","name":"segformer__densenet121","architecture":"segformer__densenet121","task":"segmentation","input_shape":[1,3,256,256],"architecture_sha256":"86c53e2ce1b54cc6b1f064cfceb4113a059051bbc6a7ea7e26a5a2fcb5201a59","max_size_mb":160}, + {"source":"segmentation_models","name":"segformer__densenet161","architecture":"segformer__densenet161","task":"segmentation","input_shape":[1,3,256,256],"architecture_sha256":"5ad245d7c833c8b5f79663003e7c0c9e1ca52523b7a6b6dae85f4e3acd112d2f","max_size_mb":160}, + {"source":"segmentation_models","name":"segformer__densenet169","architecture":"segformer__densenet169","task":"segmentation","input_shape":[1,3,256,256],"architecture_sha256":"4f4c7ffa1113766c1fc964b05a98c0bb9682071946611c29feecee7b716b1a3a","max_size_mb":160}, + {"source":"segmentation_models","name":"segformer__densenet201","architecture":"segformer__densenet201","task":"segmentation","input_shape":[1,3,256,256],"architecture_sha256":"82f6a39a98d86e06d56ca21657feb60c28b181d15f40785e84d7dc680303d087","max_size_mb":160}, + {"source":"segmentation_models","name":"segformer__dpn68","architecture":"segformer__dpn68","task":"segmentation","input_shape":[1,3,256,256],"architecture_sha256":"cb99f56a1b8feca57f7da6af58d1b9fab2d1d13ca9331fe600b8232271a735e2","max_size_mb":160}, + {"source":"segmentation_models","name":"segformer__dpn68b","architecture":"segformer__dpn68b","task":"segmentation","input_shape":[1,3,256,256],"architecture_sha256":"616e981c325b9f2be89d10e4d3a2a1646ead7135ab5ae95f43fa98dd6709de7d","max_size_mb":160}, + {"source":"segmentation_models","name":"segformer__dpn92","architecture":"segformer__dpn92","task":"segmentation","input_shape":[1,3,256,256],"architecture_sha256":"d703501e0c25567f7c8d72eb4c2b49a16676a96579a33715f6e2e4841c615ac5","max_size_mb":160}, + {"source":"segmentation_models","name":"segformer__efficientnet-b0","architecture":"segformer__efficientnet-b0","task":"segmentation","input_shape":[1,3,256,256],"architecture_sha256":"7e6133d5c72b76a322c1bc5a1f273fac04c1454fd77a09b7c51b3fec84040f11","max_size_mb":160}, + {"source":"segmentation_models","name":"segformer__efficientnet-b1","architecture":"segformer__efficientnet-b1","task":"segmentation","input_shape":[1,3,256,256],"architecture_sha256":"3efe74bb3dc752c0ef7107a429925767151cb78e68cbff1f9370354572b89319","max_size_mb":160}, + {"source":"segmentation_models","name":"segformer__efficientnet-b2","architecture":"segformer__efficientnet-b2","task":"segmentation","input_shape":[1,3,256,256],"architecture_sha256":"a6673d91a60a48ba82cc264a00068dde56dca86d8c5a00b788431af5b14d1cc4","max_size_mb":160}, + {"source":"segmentation_models","name":"segformer__efficientnet-b3","architecture":"segformer__efficientnet-b3","task":"segmentation","input_shape":[1,3,256,256],"architecture_sha256":"1836d3c56192ff212e02c3d1befc79ba0ff57ad632484569642547a2c9a93c7c","max_size_mb":160}, + {"source":"segmentation_models","name":"segformer__efficientnet-b4","architecture":"segformer__efficientnet-b4","task":"segmentation","input_shape":[1,3,256,256],"architecture_sha256":"0f50a5c4f6a6a59f4401d378a0cdac1a4eb4d56ba1964bd86a77d4664068c53a","max_size_mb":160}, + {"source":"segmentation_models","name":"segformer__efficientnet-b5","architecture":"segformer__efficientnet-b5","task":"segmentation","input_shape":[1,3,256,256],"architecture_sha256":"49181f74324ff9a7666f150044bec252190e54deaca38310d8c286daeeeafbbc","max_size_mb":160}, + {"source":"segmentation_models","name":"segformer__efficientnet-b6","architecture":"segformer__efficientnet-b6","task":"segmentation","input_shape":[1,3,256,256],"architecture_sha256":"f470cccba2280dbd6e750115c5bcb209a452f720949beaf4119a132f36d5237d","max_size_mb":160}, + {"source":"segmentation_models","name":"segformer__mit_b0","architecture":"segformer__mit_b0","task":"segmentation","input_shape":[1,3,256,256],"architecture_sha256":"0bf2ca06d65bf7fe1dededf63652641c9c9f3a74fc4cf0bacfd825e7fc6afa86","max_size_mb":160}, + {"source":"segmentation_models","name":"segformer__mit_b1","architecture":"segformer__mit_b1","task":"segmentation","input_shape":[1,3,256,256],"architecture_sha256":"c025674b2f1c9572f9d77442d9f21265b2ec8c1cea83ae2851657a231da81ecc","max_size_mb":160}, + {"source":"segmentation_models","name":"segformer__mit_b2","architecture":"segformer__mit_b2","task":"segmentation","input_shape":[1,3,256,256],"architecture_sha256":"e02a0703fa3cfa1781bbf13f6b66d7f8904fad9574530b88957a6fb7ad9a7166","max_size_mb":160}, + {"source":"segmentation_models","name":"segformer__mobilenet_v2","architecture":"segformer__mobilenet_v2","task":"segmentation","input_shape":[1,3,256,256],"architecture_sha256":"88f6fe121d59dab4f29aeead611ca271f858d04613f55f341e6f438bdc2ee0c4","max_size_mb":160}, + {"source":"segmentation_models","name":"segformer__mobileone_s1","architecture":"segformer__mobileone_s1","task":"segmentation","input_shape":[1,3,256,256],"architecture_sha256":"b7f5119d4f80f6e33f60be0d2d7ec5e09a912cede403cd20977d0441db788f82","max_size_mb":160}, + {"source":"segmentation_models","name":"segformer__mobileone_s2","architecture":"segformer__mobileone_s2","task":"segmentation","input_shape":[1,3,256,256],"architecture_sha256":"84b0514b4064fb2457e0c688f5f2f8ea24c210ff8d10ae7c9d79b9dd68c72cca","max_size_mb":160}, + {"source":"segmentation_models","name":"segformer__mobileone_s3","architecture":"segformer__mobileone_s3","task":"segmentation","input_shape":[1,3,256,256],"architecture_sha256":"e1e60fd07c810addd6ff995ae97359161f92f5a882ea3ee9a9ee3046d9083822","max_size_mb":160}, + {"source":"segmentation_models","name":"segformer__mobileone_s4","architecture":"segformer__mobileone_s4","task":"segmentation","input_shape":[1,3,256,256],"architecture_sha256":"216f8e42f62b04190a48f19945f0e1a031de4078be3c7519dc35ad6491f52b5e","max_size_mb":160}, + {"source":"segmentation_models","name":"segformer__resnet18","architecture":"segformer__resnet18","task":"segmentation","input_shape":[1,3,256,256],"architecture_sha256":"a3431e0d5676c4e90b70aabdcc0f1c2e43744e406b1f36ec0f7d0782250d2000","max_size_mb":160}, + {"source":"segmentation_models","name":"segformer__resnet34","architecture":"segformer__resnet34","task":"segmentation","input_shape":[1,3,256,256],"architecture_sha256":"6f8d7ff67c68433be1f2179968bd15584887e2808e321832647e9e254bf6ee8d","max_size_mb":160}, + {"source":"segmentation_models","name":"segformer__resnet50","architecture":"segformer__resnet50","task":"segmentation","input_shape":[1,3,256,256],"architecture_sha256":"1117662c50ab135a6898ac1eb9c0734cce365ea19224dc4e925c48d3a76efae8","max_size_mb":160}, + {"source":"segmentation_models","name":"segformer__resnext50_32x4d","architecture":"segformer__resnext50_32x4d","task":"segmentation","input_shape":[1,3,256,256],"architecture_sha256":"1ae54bd80cac5dfa3856242d76111af9008d3eaecb0f98b03d928efb551fbde6","max_size_mb":160}, + {"source":"segmentation_models","name":"segformer__se_resnet50","architecture":"segformer__se_resnet50","task":"segmentation","input_shape":[1,3,256,256],"architecture_sha256":"ea8b1383f706bc20ff41f6239c695d2fe5e30c09aec343f45fc305b9f899ea59","max_size_mb":160}, + {"source":"segmentation_models","name":"segformer__se_resnext50_32x4d","architecture":"segformer__se_resnext50_32x4d","task":"segmentation","input_shape":[1,3,256,256],"architecture_sha256":"b5dcd5a75aa5acefb437d79d8a6bd3d61271b5352b87c5de4954874ce9af8c82","max_size_mb":160}, + {"source":"segmentation_models","name":"segformer__vgg11","architecture":"segformer__vgg11","task":"segmentation","input_shape":[1,3,256,256],"architecture_sha256":"bd44adfa51b9e69641b85394cf17695500ee8432ea21feadc84784f3a3065810","max_size_mb":160}, + {"source":"segmentation_models","name":"segformer__vgg11_bn","architecture":"segformer__vgg11_bn","task":"segmentation","input_shape":[1,3,256,256],"architecture_sha256":"6eda1e9b43fed03a56d3102ea1037b5cb5d65aa40cd255c64f089dc86109a0ba","max_size_mb":160}, + {"source":"segmentation_models","name":"segformer__vgg13","architecture":"segformer__vgg13","task":"segmentation","input_shape":[1,3,256,256],"architecture_sha256":"b23a8f776cfaa112dee050277c740492312e525024d5a3bb7a7ffb7bcea46fc7","max_size_mb":160}, + {"source":"segmentation_models","name":"segformer__vgg13_bn","architecture":"segformer__vgg13_bn","task":"segmentation","input_shape":[1,3,256,256],"architecture_sha256":"3adfb612d885ef0e7a659d990f1fc04d36ddc95d11a960e03f36d53704b0c2c0","max_size_mb":160}, + {"source":"segmentation_models","name":"segformer__vgg16","architecture":"segformer__vgg16","task":"segmentation","input_shape":[1,3,256,256],"architecture_sha256":"1a11f2b097baaf64df6a5bb584a7fad7f9bc309f6140e73559e3a7cc042bbd19","max_size_mb":160}, + {"source":"segmentation_models","name":"segformer__vgg16_bn","architecture":"segformer__vgg16_bn","task":"segmentation","input_shape":[1,3,256,256],"architecture_sha256":"60aba81c67e50898cb1b5460a1b55dcf5e1f055f9d7b0881a2888ab7285607a2","max_size_mb":160}, + {"source":"segmentation_models","name":"segformer__vgg19","architecture":"segformer__vgg19","task":"segmentation","input_shape":[1,3,256,256],"architecture_sha256":"c7369db324a4177c05ccbbdbd7da325e8e1456e35afeb65892ad0c71b7914ffb","max_size_mb":160}, + {"source":"segmentation_models","name":"segformer__vgg19_bn","architecture":"segformer__vgg19_bn","task":"segmentation","input_shape":[1,3,256,256],"architecture_sha256":"a3a2a331d3424b2988a27fe5e600bc651ffacba865a15bc2739cc63050aa608b","max_size_mb":160}, + {"source":"segmentation_models","name":"segformer__xception","architecture":"segformer__xception","task":"segmentation","input_shape":[1,3,256,256],"architecture_sha256":"723a3d2fdde96b8ca9bebd376788923ad55dddb9ef7e0da21510ec04f70457ab","max_size_mb":160}, + {"source":"segmentation_models","name":"unet__densenet121","architecture":"unet__densenet121","task":"segmentation","input_shape":[1,3,256,256],"architecture_sha256":"5d51618e59f2e4f5ccb7ede81fc369730af7db13e173d21d6da2a30833d3edc7","max_size_mb":160}, + {"source":"segmentation_models","name":"unet__densenet161","architecture":"unet__densenet161","task":"segmentation","input_shape":[1,3,256,256],"architecture_sha256":"6131b27f6cd7656801184b6580690477149be00e0195f880b8ccb297c338b3c2","max_size_mb":160}, + {"source":"segmentation_models","name":"unet__densenet169","architecture":"unet__densenet169","task":"segmentation","input_shape":[1,3,256,256],"architecture_sha256":"e28316faec873aa53a87fad99958763fecf7061fc1d77367bbd76ef207982390","max_size_mb":160}, + {"source":"segmentation_models","name":"unet__densenet201","architecture":"unet__densenet201","task":"segmentation","input_shape":[1,3,256,256],"architecture_sha256":"f925910fc2d5d6bcd00fb9df9985ef8b6110ca971d2b134170e8268fccf2ed79","max_size_mb":160}, + {"source":"segmentation_models","name":"unet__dpn68","architecture":"unet__dpn68","task":"segmentation","input_shape":[1,3,256,256],"architecture_sha256":"caca1958764adad096fd7091697b9b1ad981c83fac9b5631cd248fbd8f29c319","max_size_mb":160}, + {"source":"segmentation_models","name":"unet__dpn68b","architecture":"unet__dpn68b","task":"segmentation","input_shape":[1,3,256,256],"architecture_sha256":"f334047750853c0ad8023618f45ece1de508ca482cf5e6ef3f69a8d80ffbfde9","max_size_mb":160}, + {"source":"segmentation_models","name":"unet__mit_b0","architecture":"unet__mit_b0","task":"segmentation","input_shape":[1,3,256,256],"architecture_sha256":"7c951fc7d3bed9b460784b32ca1e919f1524926324da70d3a943e85af392e9ec","max_size_mb":160}, + {"source":"segmentation_models","name":"unet__mit_b1","architecture":"unet__mit_b1","task":"segmentation","input_shape":[1,3,256,256],"architecture_sha256":"13d12db6f87a1121ff0659e0368eeb716a6357376cc47f701a719a08fd9738f4","max_size_mb":160}, + {"source":"segmentation_models","name":"unet__mit_b2","architecture":"unet__mit_b2","task":"segmentation","input_shape":[1,3,256,256],"architecture_sha256":"e9903c0f0a9741e8ae4ac519ba9ec344e21a483567ee194e146a6cae8452f838","max_size_mb":160}, + {"source":"segmentation_models","name":"unet__mobilenet_v2","architecture":"unet__mobilenet_v2","task":"segmentation","input_shape":[1,3,256,256],"architecture_sha256":"128b86634f39abfe7bb69978fad8f6f8491f95b6526cd3f67bbb0bc6229ed9a2","max_size_mb":160}, + {"source":"segmentation_models","name":"unet__mobileone_s1","architecture":"unet__mobileone_s1","task":"segmentation","input_shape":[1,3,256,256],"architecture_sha256":"bece037da5debd15ef5e0f3ddbaeac0710a8b6c25ed7661f26f08c46eeb8cc05","max_size_mb":160}, + {"source":"segmentation_models","name":"unet__mobileone_s2","architecture":"unet__mobileone_s2","task":"segmentation","input_shape":[1,3,256,256],"architecture_sha256":"176e8fcb028dcd89cf4f9f22f6a8b8aa524d1afc69a179e68ddfc9308e8cd258","max_size_mb":160}, + {"source":"segmentation_models","name":"unet__mobileone_s3","architecture":"unet__mobileone_s3","task":"segmentation","input_shape":[1,3,256,256],"architecture_sha256":"a44e987fd0b02ed2124d38ab5dbcf901e4cd058fb6d6a1eb7cddefdffbd91aac","max_size_mb":160}, + {"source":"segmentation_models","name":"unet__mobileone_s4","architecture":"unet__mobileone_s4","task":"segmentation","input_shape":[1,3,256,256],"architecture_sha256":"9cc21844e274e51e6591b23890a0c6073194e205c2b1ff8a47c6b7213ec0504b","max_size_mb":160}, + {"source":"segmentation_models","name":"unet__resnet18","architecture":"unet__resnet18","task":"segmentation","input_shape":[1,3,256,256],"architecture_sha256":"e727db2ddac7380498115d061fa71eabb5eba3c5b00c00cc49140d5ee526577a","max_size_mb":160}, + {"source":"segmentation_models","name":"unet__resnet34","architecture":"unet__resnet34","task":"segmentation","input_shape":[1,3,256,256],"architecture_sha256":"c61c6a7ff78c724356baa3fd95dda1f34a74801a5477f4f93a2871c2d0376f03","max_size_mb":160}, + {"source":"segmentation_models","name":"unet__resnet50","architecture":"unet__resnet50","task":"segmentation","input_shape":[1,3,256,256],"architecture_sha256":"6d4162e3b9256387b1fc95b6b7fffae1354bee268e194717ec44084cbf957f8f","max_size_mb":160}, + {"source":"segmentation_models","name":"unet__resnext50_32x4d","architecture":"unet__resnext50_32x4d","task":"segmentation","input_shape":[1,3,256,256],"architecture_sha256":"af11b7de77bf329631a52c7652c59210c98a34c2c709f75235cbe3118ddc37a2","max_size_mb":160}, + {"source":"segmentation_models","name":"unet__se_resnet50","architecture":"unet__se_resnet50","task":"segmentation","input_shape":[1,3,256,256],"architecture_sha256":"dcd8ae0656d64267b128a7637be5af35171294e534dd51af9e5cd25fbf0436b9","max_size_mb":160}, + {"source":"segmentation_models","name":"unet__se_resnext50_32x4d","architecture":"unet__se_resnext50_32x4d","task":"segmentation","input_shape":[1,3,256,256],"architecture_sha256":"b09801d282c5c58dc453914221bd506f16655f256912963b33d2f9f44436d530","max_size_mb":160}, + {"source":"segmentation_models","name":"unet__vgg11","architecture":"unet__vgg11","task":"segmentation","input_shape":[1,3,256,256],"architecture_sha256":"83369931a946c973a4db53691f65fdea9d5474b2e75742b104819ba94ac1111c","max_size_mb":160}, + {"source":"segmentation_models","name":"unet__vgg13","architecture":"unet__vgg13","task":"segmentation","input_shape":[1,3,256,256],"architecture_sha256":"a683a3ee43f98fe252689358a172a3f78402b540bf10a16073370cceba8b3bd3","max_size_mb":160}, + {"source":"segmentation_models","name":"unet__vgg16","architecture":"unet__vgg16","task":"segmentation","input_shape":[1,3,256,256],"architecture_sha256":"a6850376ba0a390035d98b105c2c64cab8c276bb31da0f516cbf5145d4677dca","max_size_mb":160}, + {"source":"segmentation_models","name":"unet__vgg19","architecture":"unet__vgg19","task":"segmentation","input_shape":[1,3,256,256],"architecture_sha256":"3f0c73ff1b9cfebc24aaff3fba64efd78f348518ff203c3c529571db5a04abcd","max_size_mb":160}, + {"source":"segmentation_models","name":"unet__xception","architecture":"unet__xception","task":"segmentation","input_shape":[1,3,256,256],"architecture_sha256":"04a3f19db0806e30a8bf8c594a58f2cf935373e1c7e4cad8f2b0b1a84901ab55","max_size_mb":160}, + {"source":"segmentation_models","name":"unetplusplus__densenet121","architecture":"unetplusplus__densenet121","task":"segmentation","input_shape":[1,3,256,256],"architecture_sha256":"c723019ae00b56f464268d1e877b3625d093831dcdfcf8bb37d4b126e61bd0b5","max_size_mb":160}, + {"source":"segmentation_models","name":"unetplusplus__densenet169","architecture":"unetplusplus__densenet169","task":"segmentation","input_shape":[1,3,256,256],"architecture_sha256":"0783658082d76f739e4a85ddc67a5c4631525cbf9c3a4e173c60b2337b826c86","max_size_mb":160}, + {"source":"segmentation_models","name":"unetplusplus__dpn68","architecture":"unetplusplus__dpn68","task":"segmentation","input_shape":[1,3,256,256],"architecture_sha256":"5f9f8e48a326767c65970fd2222e24764594579613e1d2ab3a107cebca6e6006","max_size_mb":160}, + {"source":"segmentation_models","name":"unetplusplus__dpn68b","architecture":"unetplusplus__dpn68b","task":"segmentation","input_shape":[1,3,256,256],"architecture_sha256":"4e6fdfa26f6c370b85beba0bf2b6b6992992464333e7b1895d92492cc04b9f65","max_size_mb":160}, + {"source":"segmentation_models","name":"unetplusplus__mobilenet_v2","architecture":"unetplusplus__mobilenet_v2","task":"segmentation","input_shape":[1,3,256,256],"architecture_sha256":"42eb8b51036b77a60a7567523d29c5bd0c72d8abc76be3e6d571bafcb174aa1b","max_size_mb":160}, + {"source":"segmentation_models","name":"unetplusplus__mobileone_s1","architecture":"unetplusplus__mobileone_s1","task":"segmentation","input_shape":[1,3,256,256],"architecture_sha256":"b48f8c39b1046d8ff9120867275c5de0e07f77670c260bb2d46088d14e1b2530","max_size_mb":160}, + {"source":"segmentation_models","name":"unetplusplus__mobileone_s2","architecture":"unetplusplus__mobileone_s2","task":"segmentation","input_shape":[1,3,256,256],"architecture_sha256":"b7cf60632eb6003128a0122d81f42a7b22c88238ab51b3f60347c2e62ca0b3b5","max_size_mb":160}, + {"source":"segmentation_models","name":"unetplusplus__mobileone_s3","architecture":"unetplusplus__mobileone_s3","task":"segmentation","input_shape":[1,3,256,256],"architecture_sha256":"c5524f285acd06564045884fa8490101a578b8f32eedb663031917bec69c57ad","max_size_mb":160}, + {"source":"segmentation_models","name":"unetplusplus__mobileone_s4","architecture":"unetplusplus__mobileone_s4","task":"segmentation","input_shape":[1,3,256,256],"architecture_sha256":"e55a62214f2a2f525bf5864a59dc4a76068ad048ec9524ea429b1e3fe45936b6","max_size_mb":160}, + {"source":"segmentation_models","name":"unetplusplus__resnet18","architecture":"unetplusplus__resnet18","task":"segmentation","input_shape":[1,3,256,256],"architecture_sha256":"60aecec1c794aa5d3542da2e1f715d8c20f4a0146da876d87374c4aa3326a852","max_size_mb":160}, + {"source":"segmentation_models","name":"unetplusplus__resnet34","architecture":"unetplusplus__resnet34","task":"segmentation","input_shape":[1,3,256,256],"architecture_sha256":"99b75ab3a62b6c34d29c672477a1e3f9471290924e81de23088011b4194aa10e","max_size_mb":160}, + {"source":"segmentation_models","name":"unetplusplus__vgg11","architecture":"unetplusplus__vgg11","task":"segmentation","input_shape":[1,3,256,256],"architecture_sha256":"a5e36accc14ebd5aba39c4117c182a29c84c04e4b91737ef9db14340245eb9b8","max_size_mb":160}, + {"source":"segmentation_models","name":"unetplusplus__vgg13","architecture":"unetplusplus__vgg13","task":"segmentation","input_shape":[1,3,256,256],"architecture_sha256":"76658a30c266520f4dd7dde99090804cafb361aee8e9d459789d6b2b697d9ee6","max_size_mb":160}, + {"source":"segmentation_models","name":"unetplusplus__vgg16","architecture":"unetplusplus__vgg16","task":"segmentation","input_shape":[1,3,256,256],"architecture_sha256":"4041dae93d7cfd62d0d4271fa5b01fe53087715fa63e561964b487d58d68effc","max_size_mb":160}, + {"source":"segmentation_models","name":"unetplusplus__xception","architecture":"unetplusplus__xception","task":"segmentation","input_shape":[1,3,256,256],"architecture_sha256":"7f55dadf3233be1c73be6752bee36c71c842791c80ef2d7d407a8b2db6de9dbf","max_size_mb":160}, + {"source":"timm","name":"bat_resnext26ts","architecture":"bat_resnext26ts","task":"classification","input_shape":[1,3,256,256],"architecture_sha256":"ce1e12bd43aa47e94ce8e6106dbb5d5672f66921887d287218df51b7a0cdb2d0","max_size_mb":160}, + {"source":"timm","name":"botnet26t_256","architecture":"botnet26t_256","task":"classification","input_shape":[1,3,256,256],"architecture_sha256":"2d7547a9d4b8f804aabfd47023fefaae7fd3e229c1006fe146df6ff80bc25371","max_size_mb":160}, + {"source":"timm","name":"botnet50ts_256","architecture":"botnet50ts_256","task":"classification","input_shape":[1,3,256,256],"architecture_sha256":"3433360788eb85a2cad85a8717f7e8afd4cd6120bbee9b481ab4d35931f35c55","max_size_mb":160}, + {"source":"timm","name":"caformer_s18","architecture":"caformer_s18","task":"classification","input_shape":[1,3,224,224],"architecture_sha256":"22e225d67e16b2bae4ebd9e0e3766d8019af34d27df2d250714dbc2a09183252","max_size_mb":160}, + {"source":"timm","name":"caformer_s36","architecture":"caformer_s36","task":"classification","input_shape":[1,3,224,224],"architecture_sha256":"2a4a76119f5910b1f089f977dd79a461a34719e8192c76b1a6b28530cafe2615","max_size_mb":160}, + {"source":"timm","name":"cait_xs24_384","architecture":"cait_xs24_384","task":"classification","input_shape":[1,3,384,384],"architecture_sha256":"3836c9eb20bf38194de58ece97194df3d47ac086dbb101f9212edc5c0eb8370c","max_size_mb":160}, + {"source":"timm","name":"cait_xxs24_224","architecture":"cait_xxs24_224","task":"classification","input_shape":[1,3,224,224],"architecture_sha256":"cc991c579fa65c663b7586c2cb95ea159a04106ee551206f3811779d8d7e7925","max_size_mb":160}, + {"source":"timm","name":"cait_xxs24_384","architecture":"cait_xxs24_384","task":"classification","input_shape":[1,3,384,384],"architecture_sha256":"cb81dc6ec63679ab0269f312fbc065a744492747e2b85ad01142e938071d3fbd","max_size_mb":160}, + {"source":"timm","name":"cait_xxs36_224","architecture":"cait_xxs36_224","task":"classification","input_shape":[1,3,224,224],"architecture_sha256":"801d0df33fd8fd6cdedc5b42175954e130ef8dbb9021e73c048e099b57e971bb","max_size_mb":160}, + {"source":"timm","name":"cait_xxs36_384","architecture":"cait_xxs36_384","task":"classification","input_shape":[1,3,384,384],"architecture_sha256":"6bf302ee4097a76429c559da9f141bb6f6965b577d41fad8bd71bbc90d1666a2","max_size_mb":160}, + {"source":"timm","name":"coat_lite_mini","architecture":"coat_lite_mini","task":"classification","input_shape":[1,3,224,224],"architecture_sha256":"c8a3352b46f5c83c64f9cf0a5436f429141721ef1c82de282105e142b42da66f","max_size_mb":160}, + {"source":"timm","name":"coat_lite_small","architecture":"coat_lite_small","task":"classification","input_shape":[1,3,224,224],"architecture_sha256":"865f842ad25e02bff6320665cd472278c73209cc04e522db865f3fb017cd3263","max_size_mb":160}, + {"source":"timm","name":"coat_lite_tiny","architecture":"coat_lite_tiny","task":"classification","input_shape":[1,3,224,224],"architecture_sha256":"2bc1ac2fb8f0e5c192c1f596f883e1aa4959953d4a8a1ff4da0066c77e1a0a20","max_size_mb":160}, + {"source":"timm","name":"coat_mini","architecture":"coat_mini","task":"classification","input_shape":[1,3,224,224],"architecture_sha256":"dc2a3da632c0db40de3ed5d2aaa2fc0f8de2758fb83a87fbcbca7a6cfe736d5e","max_size_mb":160}, + {"source":"timm","name":"coat_small","architecture":"coat_small","task":"classification","input_shape":[1,3,224,224],"architecture_sha256":"e89f70c5fd05e26b99ff0e30d17a70a0161d8e6b2bfe89c83ab3fc542c48ba29","max_size_mb":160}, + {"source":"timm","name":"coat_tiny","architecture":"coat_tiny","task":"classification","input_shape":[1,3,224,224],"architecture_sha256":"7c916394d202e3aaef118a74c4232b33818efd21a2270d085891336874989ecd","max_size_mb":160}, + {"source":"timm","name":"coatnet_0_224","architecture":"coatnet_0_224","task":"classification","input_shape":[1,3,224,224],"architecture_sha256":"ffd260404bbef194255815cd2a35205995bbeb9e1202238f34c84564c5dd34a8","max_size_mb":160}, + {"source":"timm","name":"coatnet_0_rw_224","architecture":"coatnet_0_rw_224","task":"classification","input_shape":[1,3,224,224],"architecture_sha256":"d61bbaea8eda790d8033c7c837185f9be12a76d5e40830a188d0375bfb41e74a","max_size_mb":160}, + {"source":"timm","name":"coatnet_bn_0_rw_224","architecture":"coatnet_bn_0_rw_224","task":"classification","input_shape":[1,3,224,224],"architecture_sha256":"df59a8e7076f46380e7e236c2bbe8bbb27df1fdc74fc175d43da67c83aa2a0e2","max_size_mb":160}, + {"source":"timm","name":"coatnet_nano_cc_224","architecture":"coatnet_nano_cc_224","task":"classification","input_shape":[1,3,224,224],"architecture_sha256":"39ae75ffe00fa519f59dcc08dffa82aa54a62c7c4cfa12f335f861de11279742","max_size_mb":160}, + {"source":"timm","name":"coatnet_nano_rw_224","architecture":"coatnet_nano_rw_224","task":"classification","input_shape":[1,3,224,224],"architecture_sha256":"31cd167ad58f67b1d18d4762ad2b8b56b5871cba9309bc74783df82d11f8aef7","max_size_mb":160}, + {"source":"timm","name":"coatnet_pico_rw_224","architecture":"coatnet_pico_rw_224","task":"classification","input_shape":[1,3,224,224],"architecture_sha256":"78c199e51c158e3f81af1891530574ca7be65fa0f891fea43e1f123a33cd9127","max_size_mb":160}, + {"source":"timm","name":"coatnet_rmlp_0_rw_224","architecture":"coatnet_rmlp_0_rw_224","task":"classification","input_shape":[1,3,224,224],"architecture_sha256":"80df82fac6328a88ef5602d9f0256f46d86513e6fed89687aa40909eda0e8b0f","max_size_mb":160}, + {"source":"timm","name":"coatnet_rmlp_1_rw2_224","architecture":"coatnet_rmlp_1_rw2_224","task":"classification","input_shape":[1,3,224,224],"architecture_sha256":"c2bc236c5406e99ba97d0a863c2f9a526248f253b550710257b1b5bf76185523","max_size_mb":160}, + {"source":"timm","name":"coatnet_rmlp_1_rw_224","architecture":"coatnet_rmlp_1_rw_224","task":"classification","input_shape":[1,3,224,224],"architecture_sha256":"7ed51ad4af4123d691acde1158063afd8d2fcc364b4866b92cfb2b099bf3c96a","max_size_mb":160}, + {"source":"timm","name":"coatnet_rmlp_nano_rw_224","architecture":"coatnet_rmlp_nano_rw_224","task":"classification","input_shape":[1,3,224,224],"architecture_sha256":"1a46dee32a6b112f4b5dad33d4adf80548c819556088e6502d12821fb4e11349","max_size_mb":160}, + {"source":"timm","name":"coatnext_nano_rw_224","architecture":"coatnext_nano_rw_224","task":"classification","input_shape":[1,3,224,224],"architecture_sha256":"a375aa894067ae86f6ee02ace0e547775ac7ffef227c8ef788f4a67ffc5e1c5f","max_size_mb":160}, + {"source":"timm","name":"convformer_s18","architecture":"convformer_s18","task":"classification","input_shape":[1,3,224,224],"architecture_sha256":"e46d79b4fdfcc184c21da04ee5f52f25ddf4036f9d810cfa64631b3dddcf833d","max_size_mb":160}, + {"source":"timm","name":"convformer_s36","architecture":"convformer_s36","task":"classification","input_shape":[1,3,224,224],"architecture_sha256":"c84154aab1eccb6be4739803261eec2dc119cef87157f23019a9913dbd35c6c3","max_size_mb":160}, + {"source":"timm","name":"convit_small","architecture":"convit_small","task":"classification","input_shape":[1,3,224,224],"architecture_sha256":"a54f7ee5964c88032446322ea82d0c2dd015c04591f11a71eebb80c1fd38fa8a","max_size_mb":160}, + {"source":"timm","name":"convit_tiny","architecture":"convit_tiny","task":"classification","input_shape":[1,3,224,224],"architecture_sha256":"a555e8b05f6751eb1f06e10489e69255c0de9d64f21e369eb1f0a8bf49eb787c","max_size_mb":160}, + {"source":"timm","name":"convmixer_1024_20_ks9_p14","architecture":"convmixer_1024_20_ks9_p14","task":"classification","input_shape":[1,3,224,224],"architecture_sha256":"98f531b258f75ca84ba30e46b085d4062a5c8122259fb363d191f621fed4cb81","max_size_mb":160}, + {"source":"timm","name":"convmixer_768_32","architecture":"convmixer_768_32","task":"classification","input_shape":[1,3,224,224],"architecture_sha256":"bfa234d89435cc269762457cf5ef142627fe273f3d7072182f71e46ac7d6705c","max_size_mb":160}, + {"source":"timm","name":"convnext_atto","architecture":"convnext_atto","task":"classification","input_shape":[1,3,224,224],"architecture_sha256":"0c7bc04f0b25fb90ed6d6ecf528087c178973446f2df3c6b055133bf26ae5250","max_size_mb":160}, + {"source":"timm","name":"convnext_atto_ols","architecture":"convnext_atto_ols","task":"classification","input_shape":[1,3,224,224],"architecture_sha256":"f658cd99d2125349e2530d4ffb2bd0397ef5ea32d5a99eb5da9ea0d5ac938ae6","max_size_mb":160}, + {"source":"timm","name":"convnext_atto_rms","architecture":"convnext_atto_rms","task":"classification","input_shape":[1,3,224,224],"architecture_sha256":"08236403479ca2be196a9e8fbbea4e5fe4dbd1cd65f54580abb37f7f59e81942","max_size_mb":160}, + {"source":"timm","name":"convnext_femto","architecture":"convnext_femto","task":"classification","input_shape":[1,3,224,224],"architecture_sha256":"4c26d9fbfc800bbd186d81e32644ecc124d86ec8f7f6ce7a31568aad2623dbb6","max_size_mb":160}, + {"source":"timm","name":"convnext_femto_ols","architecture":"convnext_femto_ols","task":"classification","input_shape":[1,3,224,224],"architecture_sha256":"e4562c7db4d9db9e75f5980f3ff3265f03c526dfbe91bcae4d4f493211519ec2","max_size_mb":160}, + {"source":"timm","name":"convnext_nano","architecture":"convnext_nano","task":"classification","input_shape":[1,3,224,224],"architecture_sha256":"5328cf937868e83507bc368a2e314cb5e5b2669ca8250f034f8f76e86f896a69","max_size_mb":160}, + {"source":"timm","name":"convnext_nano_ols","architecture":"convnext_nano_ols","task":"classification","input_shape":[1,3,224,224],"architecture_sha256":"99a143e83ea64e926575426fa71a4409f80619ccf455cb0f56601f08d89c4a49","max_size_mb":160}, + {"source":"timm","name":"convnext_pico","architecture":"convnext_pico","task":"classification","input_shape":[1,3,224,224],"architecture_sha256":"858dfdfbc0211062e1180512850ba499e4ee5215f19c56f40edf5bbb47d3b495","max_size_mb":160}, + {"source":"timm","name":"convnext_pico_ols","architecture":"convnext_pico_ols","task":"classification","input_shape":[1,3,224,224],"architecture_sha256":"0324503615f8fec03217257e0f152b2049b6e791ec9b7f86348a242f6421b0c9","max_size_mb":160}, + {"source":"timm","name":"convnext_tiny","architecture":"convnext_tiny","task":"classification","input_shape":[1,3,224,224],"architecture_sha256":"dbe1c059edda91fa325818d699284f6a51bdb40594c82262984af8f708f57c57","max_size_mb":160}, + {"source":"timm","name":"convnext_tiny_hnf","architecture":"convnext_tiny_hnf","task":"classification","input_shape":[1,3,224,224],"architecture_sha256":"ddb986f2279ca480b6a34ef054fbda60619026732c59aa97dc7e766eef4f3c86","max_size_mb":160}, + {"source":"timm","name":"convnext_zepto_rms","architecture":"convnext_zepto_rms","task":"classification","input_shape":[1,3,224,224],"architecture_sha256":"53a05506d40bdff80b885867f8e00b5aa6357a743cb606c7abe4a4cfbf0fc4b1","max_size_mb":160}, + {"source":"timm","name":"convnext_zepto_rms_ols","architecture":"convnext_zepto_rms_ols","task":"classification","input_shape":[1,3,224,224],"architecture_sha256":"70a80b0c78863e3c5848528f8a296f204ae68049ffa247c905f6980098f1acf7","max_size_mb":160}, + {"source":"timm","name":"convnextv2_atto","architecture":"convnextv2_atto","task":"classification","input_shape":[1,3,224,224],"architecture_sha256":"3254c1b4c1ecb2c6a4493d5c560942f2957463295d0067f20741a3d66bb8de37","max_size_mb":160}, + {"source":"timm","name":"convnextv2_femto","architecture":"convnextv2_femto","task":"classification","input_shape":[1,3,224,224],"architecture_sha256":"6bbd6dc7d9311e1d3144c029e37667020c2a868288da51c05a1296e0826ada52","max_size_mb":160}, + {"source":"timm","name":"convnextv2_nano","architecture":"convnextv2_nano","task":"classification","input_shape":[1,3,224,224],"architecture_sha256":"bbb4d19e39d1f1a59cb9519ff67f067b6681384846db118578cf3ece9bfd0e31","max_size_mb":160}, + {"source":"timm","name":"convnextv2_pico","architecture":"convnextv2_pico","task":"classification","input_shape":[1,3,224,224],"architecture_sha256":"0edbfe2f0212e118d80ad3ba101813f9639e3ba1610b29b3de70b3ffa2c70234","max_size_mb":160}, + {"source":"timm","name":"convnextv2_tiny","architecture":"convnextv2_tiny","task":"classification","input_shape":[1,3,224,224],"architecture_sha256":"22eb79acdd31bede768a3d07508c414c66dec622a6fa1273805569c38230828f","max_size_mb":160}, + {"source":"timm","name":"crossvit_15_240","architecture":"crossvit_15_240","task":"classification","input_shape":[1,3,240,240],"architecture_sha256":"156b9b7b4798236141fec10e796aba9760339905aa21e55bc6194ff7d73f2725","max_size_mb":160}, + {"source":"timm","name":"crossvit_15_dagger_240","architecture":"crossvit_15_dagger_240","task":"classification","input_shape":[1,3,240,240],"architecture_sha256":"b9c8f42861f5ca9364f49817ba8b8e9b56d04b2cbeaf5a81faa583568e48454a","max_size_mb":160}, + {"source":"timm","name":"crossvit_15_dagger_408","architecture":"crossvit_15_dagger_408","task":"classification","input_shape":[1,3,408,408],"architecture_sha256":"10e1102ef065c3243e61401c074fc32ef4c9e82cfa34e646caf713d3d8f74f2d","max_size_mb":160}, + {"source":"timm","name":"crossvit_9_240","architecture":"crossvit_9_240","task":"classification","input_shape":[1,3,240,240],"architecture_sha256":"fe19570152a4945c27791453d31c2597ff7f1f3ba870912cfbe2dd9081bdfb31","max_size_mb":160}, + {"source":"timm","name":"crossvit_9_dagger_240","architecture":"crossvit_9_dagger_240","task":"classification","input_shape":[1,3,240,240],"architecture_sha256":"01905c645e57e79d75f5439994ce3655a11203785c570a5100d42fd79c6fdf05","max_size_mb":160}, + {"source":"timm","name":"crossvit_small_240","architecture":"crossvit_small_240","task":"classification","input_shape":[1,3,240,240],"architecture_sha256":"aeca58e411d349db840492ad1286cfa9748f37fcd8bcbf0f3742ed94ac79f388","max_size_mb":160}, + {"source":"timm","name":"crossvit_tiny_240","architecture":"crossvit_tiny_240","task":"classification","input_shape":[1,3,240,240],"architecture_sha256":"caca579dfc8f3d7470aaec4b6610319fc6489930e315b85df969b3bd472fd1e5","max_size_mb":160}, + {"source":"timm","name":"cs3darknet_focus_l","architecture":"cs3darknet_focus_l","task":"classification","input_shape":[1,3,256,256],"architecture_sha256":"996f34fe03c248f6852154d87aa1390c2788b3453f159e88f4676b6616743228","max_size_mb":160}, + {"source":"timm","name":"cs3darknet_focus_m","architecture":"cs3darknet_focus_m","task":"classification","input_shape":[1,3,256,256],"architecture_sha256":"f6de9e577d54bef88e10d314528316a82fbc35652165561580d21abd7c8d2ae3","max_size_mb":160}, + {"source":"timm","name":"cs3darknet_focus_s","architecture":"cs3darknet_focus_s","task":"classification","input_shape":[1,3,256,256],"architecture_sha256":"0bf6d39eeae2ffd7699a09fe314db68921aed4d1ba7b1d37611a600f0accbcb9","max_size_mb":160}, + {"source":"timm","name":"cs3darknet_focus_x","architecture":"cs3darknet_focus_x","task":"classification","input_shape":[1,3,256,256],"architecture_sha256":"2932cfb7b476a61313e3aa1b4932a15da36e3b0572aef313a6a2cc83fa6efaac","max_size_mb":160}, + {"source":"timm","name":"cs3darknet_l","architecture":"cs3darknet_l","task":"classification","input_shape":[1,3,256,256],"architecture_sha256":"c3cb2b8c76eb2c29a3cf65dc0bef6469f43cf971e13fc4b5650965ef5331a77a","max_size_mb":160}, + {"source":"timm","name":"cs3darknet_m","architecture":"cs3darknet_m","task":"classification","input_shape":[1,3,256,256],"architecture_sha256":"da16b324f3b06fec3a04ef98c4861a34820c448948b2c3286b8fdb031180d13f","max_size_mb":160}, + {"source":"timm","name":"cs3darknet_s","architecture":"cs3darknet_s","task":"classification","input_shape":[1,3,256,256],"architecture_sha256":"5ebd725cf66121b35e181435456a9031cb0e89de0f28f63d213a2a896966e1a7","max_size_mb":160}, + {"source":"timm","name":"cs3darknet_x","architecture":"cs3darknet_x","task":"classification","input_shape":[1,3,256,256],"architecture_sha256":"35970bded38a572bc1e1ff43a73eb0fc707fc9f71f687f707f5eb7eb6b8312e6","max_size_mb":160}, + {"source":"timm","name":"cs3sedarknet_l","architecture":"cs3sedarknet_l","task":"classification","input_shape":[1,3,256,256],"architecture_sha256":"eadc210e23ecdfd57b8a2be919b3161f8135f5c94f4f0b259ef3f11fee586346","max_size_mb":160}, + {"source":"timm","name":"cs3sedarknet_x","architecture":"cs3sedarknet_x","task":"classification","input_shape":[1,3,256,256],"architecture_sha256":"ee4d474288270cf4dd5a35ac2f3b7e547b45e337d288857851fabd5557f9dd1a","max_size_mb":160}, + {"source":"timm","name":"cs3sedarknet_xdw","architecture":"cs3sedarknet_xdw","task":"classification","input_shape":[1,3,256,256],"architecture_sha256":"637a4bf063cec5b3b24b7c6789b70d6d5bc03bffcf9e41e27ceeec98ccdbed1b","max_size_mb":160}, + {"source":"timm","name":"cspdarknet53","architecture":"cspdarknet53","task":"classification","input_shape":[1,3,256,256],"architecture_sha256":"30391607e8eef98ba0de93d0a96e9dbbdf4bd4c1dd77d05626dc12a133ec76c0","max_size_mb":160}, + {"source":"timm","name":"cspresnet50","architecture":"cspresnet50","task":"classification","input_shape":[1,3,256,256],"architecture_sha256":"c2838f5bd62d53f84651233eecff16d4011748e2ebba6236c98a3195eb1b1dc8","max_size_mb":160}, + {"source":"timm","name":"cspresnet50d","architecture":"cspresnet50d","task":"classification","input_shape":[1,3,256,256],"architecture_sha256":"25e2584c0251e96f18ccab1fbe3ee6b8f407c8bf39d43e3b0f49835cf38cb10b","max_size_mb":160}, + {"source":"timm","name":"cspresnet50w","architecture":"cspresnet50w","task":"classification","input_shape":[1,3,256,256],"architecture_sha256":"738ac6bfb16fb6b527385e3380cf4d7f9deecf6f7c0dd28e0000c0c907bdd4a2","max_size_mb":160}, + {"source":"timm","name":"cspresnext50","architecture":"cspresnext50","task":"classification","input_shape":[1,3,256,256],"architecture_sha256":"f53601ee39021f1ad8d5df4608f12b70707fc274fe67a2fd861bb5d2f89d0240","max_size_mb":160}, + {"source":"timm","name":"darknet17","architecture":"darknet17","task":"classification","input_shape":[1,3,256,256],"architecture_sha256":"e65878d0d18218e4450608372b59fbdada8bd323d49068e05174bdbb0cd1cc1d","max_size_mb":160}, + {"source":"timm","name":"darknet21","architecture":"darknet21","task":"classification","input_shape":[1,3,256,256],"architecture_sha256":"05ae53f12dec997c7ced4108464cbc4638b938c61681db09288716f602b21c37","max_size_mb":160}, + {"source":"timm","name":"darknet53","architecture":"darknet53","task":"classification","input_shape":[1,3,256,256],"architecture_sha256":"35953940adc847462babb5518974eaab91547d64886e95a9ad9e6eb6afeab4e2","max_size_mb":160}, + {"source":"timm","name":"darknetaa53","architecture":"darknetaa53","task":"classification","input_shape":[1,3,256,256],"architecture_sha256":"47c979bee5c1d7442726e3ea4f23560afbbec630bd480306484e776ed40a363f","max_size_mb":160}, + {"source":"timm","name":"davit_tiny","architecture":"davit_tiny","task":"classification","input_shape":[1,3,224,224],"architecture_sha256":"a1226146a9806eb99ced48618d4b6f45890e1d3de4eec34f61c4e276ba34140c","max_size_mb":160}, + {"source":"timm","name":"deit3_medium_patch16_224","architecture":"deit3_medium_patch16_224","task":"classification","input_shape":[1,3,224,224],"architecture_sha256":"f632eb86156830cbb55a757389b814d5c0f983813d3c95e5d3d88a00b8986076","max_size_mb":160}, + {"source":"timm","name":"deit3_small_patch16_224","architecture":"deit3_small_patch16_224","task":"classification","input_shape":[1,3,224,224],"architecture_sha256":"572e087e9b809568bcd1c1edeba1e113b246d7eebcc8696d6b4cbe97e4008631","max_size_mb":160}, + {"source":"timm","name":"deit3_small_patch16_384","architecture":"deit3_small_patch16_384","task":"classification","input_shape":[1,3,384,384],"architecture_sha256":"c511423dd4e62ce3f8422925458d9c4126772223dd9908b64a76200f3773cb14","max_size_mb":160}, + {"source":"timm","name":"deit_small_distilled_patch16_224","architecture":"deit_small_distilled_patch16_224","task":"classification","input_shape":[1,3,224,224],"architecture_sha256":"96421c609f4d0cd25b8d8d494e456d32763927149c33609f1df1b9e5e4d9749f","max_size_mb":160}, + {"source":"timm","name":"deit_small_patch16_224","architecture":"deit_small_patch16_224","task":"classification","input_shape":[1,3,224,224],"architecture_sha256":"454e99327c04b7e87827edf63ee5d629a913677d6138149e5a7cc7e1c66e2b04","max_size_mb":160}, + {"source":"timm","name":"deit_tiny_distilled_patch16_224","architecture":"deit_tiny_distilled_patch16_224","task":"classification","input_shape":[1,3,224,224],"architecture_sha256":"a5239a90a40e9388ccff766e2fd535bf8580e465e44184fdbc8f00d76d59f525","max_size_mb":160}, + {"source":"timm","name":"deit_tiny_patch16_224","architecture":"deit_tiny_patch16_224","task":"classification","input_shape":[1,3,224,224],"architecture_sha256":"bb936b3a12028a5bd8446fd3dc731c655f16bc81aedb9feef7a893b71732a6e2","max_size_mb":160}, + {"source":"timm","name":"densenetblur121d","architecture":"densenetblur121d","task":"classification","input_shape":[1,3,224,224],"architecture_sha256":"4a81ee48afb6ec975592c10b7e20482919eb5407869449eb702ffbae24b7493d","max_size_mb":160}, + {"source":"timm","name":"dla60_res2net","architecture":"dla60_res2net","task":"classification","input_shape":[1,3,224,224],"architecture_sha256":"109f146af7c549c407d4a690c74ea954d70e066a58651835ab049fe71dc4cac6","max_size_mb":160}, + {"source":"timm","name":"dla60_res2next","architecture":"dla60_res2next","task":"classification","input_shape":[1,3,224,224],"architecture_sha256":"4e97ac88a6d381aefb1923c895b930b69bcca5cae0fc9171542fec1da6ca6931","max_size_mb":160}, + {"source":"timm","name":"dpn48b","architecture":"dpn48b","task":"classification","input_shape":[1,3,224,224],"architecture_sha256":"457a0c0ca7f2ca776cc66750097a0f61c50d23dd4b7b75f4e62b16abb1e1e6a3","max_size_mb":160}, + {"source":"timm","name":"dpn92","architecture":"dpn92","task":"classification","input_shape":[1,3,224,224],"architecture_sha256":"b1ffb472a6246ebeb7583307e2a49792f8fe67755bbd8fdd5bde9f5f5933cbae","max_size_mb":160}, + {"source":"timm","name":"eca_botnext26ts_256","architecture":"eca_botnext26ts_256","task":"classification","input_shape":[1,3,256,256],"architecture_sha256":"98745e9dbf575d3c6794d7d8881c3219477053abde6fba48224ded7d02bbd24a","max_size_mb":160}, + {"source":"timm","name":"eca_resnet33ts","architecture":"eca_resnet33ts","task":"classification","input_shape":[1,3,256,256],"architecture_sha256":"1284aaaf88397c8b5518288eeaf7fd3280587256177a5346ad3f79e67410eb7b","max_size_mb":160}, + {"source":"timm","name":"eca_resnext26ts","architecture":"eca_resnext26ts","task":"classification","input_shape":[1,3,256,256],"architecture_sha256":"55ac95341be9e94518c15620f1c23d1b0a28b1ef531888225d0d7570233c84af","max_size_mb":160}, + {"source":"timm","name":"eca_vovnet39b","architecture":"eca_vovnet39b","task":"classification","input_shape":[1,3,224,224],"architecture_sha256":"dd5e05fed482fde2705373e896a4420b55dd09996d3d365b0b428ae90279bc2e","max_size_mb":160}, + {"source":"timm","name":"ecaresnet101d_pruned","architecture":"ecaresnet101d_pruned","task":"classification","input_shape":[1,3,224,224],"architecture_sha256":"005606ee2b27b130231a2c361383fff9f98a59218d72165028a8cc8c9dc3852d","max_size_mb":160}, + {"source":"timm","name":"ecaresnet26t","architecture":"ecaresnet26t","task":"classification","input_shape":[1,3,256,256],"architecture_sha256":"bc501c4f0ab3e7c044ee4b5f26c71c3b400d95f1f0d89e616b864344551e6d5a","max_size_mb":160}, + {"source":"timm","name":"ecaresnet50d","architecture":"ecaresnet50d","task":"classification","input_shape":[1,3,224,224],"architecture_sha256":"d359a04039fde5df66dd0ae836b8c2570a5be120f56524683216a11d2cd68e08","max_size_mb":160}, + {"source":"timm","name":"ecaresnet50d_pruned","architecture":"ecaresnet50d_pruned","task":"classification","input_shape":[1,3,224,224],"architecture_sha256":"4cde11d3ea99fe95342a62e92aa85a6d4a66a438abbe4bfc8fd89f3c4cab5540","max_size_mb":160}, + {"source":"timm","name":"ecaresnet50t","architecture":"ecaresnet50t","task":"classification","input_shape":[1,3,256,256],"architecture_sha256":"7f9b2c11144a0b9b563f8ce755bccdbd3a4030c7fd3dd626eedf325c8b131bde","max_size_mb":160}, + {"source":"timm","name":"ecaresnetlight","architecture":"ecaresnetlight","task":"classification","input_shape":[1,3,224,224],"architecture_sha256":"38f031d2a5368c075046fdc28d6e55dc4e9e6a471976579a5abf4a200f71e68b","max_size_mb":160}, + {"source":"timm","name":"ecaresnext26t_32x4d","architecture":"ecaresnext26t_32x4d","task":"classification","input_shape":[1,3,224,224],"architecture_sha256":"980dc29c695a075961a8ebb0909845e692b288880f621dcdb17e64b4c8848145","max_size_mb":160}, + {"source":"timm","name":"edgenext_base","architecture":"edgenext_base","task":"classification","input_shape":[1,3,256,256],"architecture_sha256":"3505b07658c2662ecb0fce0c80f50f6634a07ca0d24c9e3a592799c82cdac013","max_size_mb":160}, + {"source":"timm","name":"edgenext_small","architecture":"edgenext_small","task":"classification","input_shape":[1,3,256,256],"architecture_sha256":"a77a72fd12ae7d139d22de8adf40c51da7dafa11e5efe776100a3f7676a869d0","max_size_mb":160}, + {"source":"timm","name":"edgenext_small_rw","architecture":"edgenext_small_rw","task":"classification","input_shape":[1,3,256,256],"architecture_sha256":"423bad3ab2f29213bce0c5e1008ca7744b35acb3143584ccd18fe298af696f77","max_size_mb":160}, + {"source":"timm","name":"edgenext_x_small","architecture":"edgenext_x_small","task":"classification","input_shape":[1,3,256,256],"architecture_sha256":"0e3f44d67dfd9125d88c43282c36f951df2fce1b64c4ef625f8e89b716cdcf7e","max_size_mb":160}, + {"source":"timm","name":"edgenext_xx_small","architecture":"edgenext_xx_small","task":"classification","input_shape":[1,3,256,256],"architecture_sha256":"ee0f79ff57626f9d30f64d0784dc948b9a6d4bf8d8e5d39ac0f4caf0715184e4","max_size_mb":160}, + {"source":"timm","name":"efficientformer_l1","architecture":"efficientformer_l1","task":"classification","input_shape":[1,3,224,224],"architecture_sha256":"1cad02eb6b50ea5aef0c3fb9da295bf2604c7d46c91cc4a342eea22c5c7e228d","max_size_mb":160}, + {"source":"timm","name":"efficientformer_l3","architecture":"efficientformer_l3","task":"classification","input_shape":[1,3,224,224],"architecture_sha256":"5fe339467a32f8b1f120970d126c24145b4e8580c7fd0cb62307462d803cbd0a","max_size_mb":160}, + {"source":"timm","name":"efficientformerv2_l","architecture":"efficientformerv2_l","task":"classification","input_shape":[1,3,224,224],"architecture_sha256":"427a46957895af86f9090cbc4103112a7f1bbf2cced5a84b17994728bfd7f9c0","max_size_mb":160}, + {"source":"timm","name":"efficientformerv2_s0","architecture":"efficientformerv2_s0","task":"classification","input_shape":[1,3,224,224],"architecture_sha256":"6b21c3e0e4b739ac1307bb7f854211aa8b99923fa5355200d82e46e3840d1961","max_size_mb":160}, + {"source":"timm","name":"efficientformerv2_s1","architecture":"efficientformerv2_s1","task":"classification","input_shape":[1,3,224,224],"architecture_sha256":"f3d2cef5776047c61e4d61b7f63811aa8a2ec148dd850d66c7a702232cbcf04a","max_size_mb":160}, + {"source":"timm","name":"efficientformerv2_s2","architecture":"efficientformerv2_s2","task":"classification","input_shape":[1,3,224,224],"architecture_sha256":"3ce0d8ec0df8f5f402373c831921e15665633d8eb517d3453b363c6851e120b7","max_size_mb":160}, + {"source":"timm","name":"efficientnet_b0_g16_evos","architecture":"efficientnet_b0_g16_evos","task":"classification","input_shape":[1,3,224,224],"architecture_sha256":"71a7fd0e47557fd1747064b9e8d681b4bd82152d9545a00f10e86335169ad86c","max_size_mb":160}, + {"source":"timm","name":"efficientnet_b0_g8_gn","architecture":"efficientnet_b0_g8_gn","task":"classification","input_shape":[1,3,224,224],"architecture_sha256":"d60420cf67146762582b79a5fd7bd564fa88f98be481a155337a60de096878c1","max_size_mb":160}, + {"source":"timm","name":"efficientnet_b0_gn","architecture":"efficientnet_b0_gn","task":"classification","input_shape":[1,3,224,224],"architecture_sha256":"2b5391e7557c2a33d3acbb38a57967bc60e15847dcf3105a94af14a72e1083a4","max_size_mb":160}, + {"source":"timm","name":"efficientnet_b1_pruned","architecture":"efficientnet_b1_pruned","task":"classification","input_shape":[1,3,240,240],"architecture_sha256":"c0f51372ec18ed9de737776bb1b17d5eb42f239b79df4598033fe29bbe30dc6a","max_size_mb":160}, + {"source":"timm","name":"efficientnet_b2_pruned","architecture":"efficientnet_b2_pruned","task":"classification","input_shape":[1,3,260,260],"architecture_sha256":"22ebf65cdc2bcad588aec394607fa096479c6c86882d7170db008547c6caf178","max_size_mb":160}, + {"source":"timm","name":"efficientnet_b3_g8_gn","architecture":"efficientnet_b3_g8_gn","task":"classification","input_shape":[1,3,288,288],"architecture_sha256":"09d44786df6be0c3c7f6712d7b46fca98f2b7a6baac16ea2b6dd05e5131c87bd","max_size_mb":160}, + {"source":"timm","name":"efficientnet_b3_gn","architecture":"efficientnet_b3_gn","task":"classification","input_shape":[1,3,288,288],"architecture_sha256":"24982c6464ee07802a93834ec5410533e18b6ac0f286486335d49a13976736d8","max_size_mb":160}, + {"source":"timm","name":"efficientnet_b3_pruned","architecture":"efficientnet_b3_pruned","task":"classification","input_shape":[1,3,300,300],"architecture_sha256":"2c3e73144b05f2a210ceafd5a35e8575efd750f9ab70fd73e89b9907719b0781","max_size_mb":160}, + {"source":"timm","name":"efficientnet_blur_b0","architecture":"efficientnet_blur_b0","task":"classification","input_shape":[1,3,224,224],"architecture_sha256":"db134bb4a4e10236e7bf9b377922ef4578922603483436fd5c2658decf3a1d6c","max_size_mb":160}, + {"source":"timm","name":"efficientnet_cc_b0_4e","architecture":"efficientnet_cc_b0_4e","task":"classification","input_shape":[1,3,224,224],"architecture_sha256":"f4987ed7c8d7bfc5cee8aadb0e79303277637e4e074cd7570cb0bd75f8c3d5d7","max_size_mb":160}, + {"source":"timm","name":"efficientnet_cc_b0_8e","architecture":"efficientnet_cc_b0_8e","task":"classification","input_shape":[1,3,224,224],"architecture_sha256":"96ee21d18d4b7e9cae88ff2e13335907b925ce1ff751ea747a20cb72457f5e0d","max_size_mb":160}, + {"source":"timm","name":"efficientnet_cc_b1_8e","architecture":"efficientnet_cc_b1_8e","task":"classification","input_shape":[1,3,240,240],"architecture_sha256":"64ae1087a3bc5e7a3b105c7a10862f9498c9cf0eaf04e80fd0c106dce30301bc","max_size_mb":160}, + {"source":"timm","name":"efficientnet_el","architecture":"efficientnet_el","task":"classification","input_shape":[1,3,300,300],"architecture_sha256":"960e8bd514960f34dae47745766dc9e496a33f5c1417109e155950759fe171bd","max_size_mb":160}, + {"source":"timm","name":"efficientnet_em","architecture":"efficientnet_em","task":"classification","input_shape":[1,3,240,240],"architecture_sha256":"2511a4fe3778431859abe399bb217252a8feef3a56ec79a9c908bf8e608e4802","max_size_mb":160}, + {"source":"timm","name":"efficientnet_es","architecture":"efficientnet_es","task":"classification","input_shape":[1,3,224,224],"architecture_sha256":"55ab152794bd437f75403d7dcd9ec2692068a03d7494f666b9f3472adb8d641f","max_size_mb":160}, + {"source":"timm","name":"efficientnet_lite0","architecture":"efficientnet_lite0","task":"classification","input_shape":[1,3,224,224],"architecture_sha256":"acd289e7099bbca65aaba551552bfddcf2afcfcee12cface285cd44ebe01f48a","max_size_mb":160}, + {"source":"timm","name":"efficientnet_lite1","architecture":"efficientnet_lite1","task":"classification","input_shape":[1,3,240,240],"architecture_sha256":"bf20553b852c469e056f6e29d61ae97009ed50bf49a410a0a5976a684fbb8a99","max_size_mb":160}, + {"source":"timm","name":"efficientnet_lite2","architecture":"efficientnet_lite2","task":"classification","input_shape":[1,3,260,260],"architecture_sha256":"e7d8d8e8562bc8c8d8dfc76842eca236ff149c7875de990bf330a4ab66c415eb","max_size_mb":160}, + {"source":"timm","name":"efficientnet_lite3","architecture":"efficientnet_lite3","task":"classification","input_shape":[1,3,300,300],"architecture_sha256":"dc5612cd81111d05a5899d0502a1a5eb096344eedd3f15e3b66b3d97e6551c45","max_size_mb":160}, + {"source":"timm","name":"efficientnet_lite4","architecture":"efficientnet_lite4","task":"classification","input_shape":[1,3,380,380],"architecture_sha256":"a72a7b05d9d2e26d2a27baa6445fc1fd4d7141c1290f1d899232d7b4658dbd04","max_size_mb":160}, + {"source":"timm","name":"efficientnet_x_b3","architecture":"efficientnet_x_b3","task":"classification","input_shape":[1,3,288,288],"architecture_sha256":"240883fbea69afe32b2f00c0fa515d55ec32eb3df03c196e96dbeb94051ae52b","max_size_mb":160}, + {"source":"timm","name":"efficientnet_x_b5","architecture":"efficientnet_x_b5","task":"classification","input_shape":[1,3,448,448],"architecture_sha256":"f91524c92c912ca1585c9efe771aa8850061fa6ff39711acc9bcbd10343884fb","max_size_mb":160}, + {"source":"timm","name":"efficientnetv2_rw_s","architecture":"efficientnetv2_rw_s","task":"classification","input_shape":[1,3,288,288],"architecture_sha256":"e279db7e9d8ef507d2afcaa698dac93a3f5be42bc46fca30ce12ff7eb7cff7db","max_size_mb":160}, + {"source":"timm","name":"efficientnetv2_rw_t","architecture":"efficientnetv2_rw_t","task":"classification","input_shape":[1,3,224,224],"architecture_sha256":"65f61b4d4064e645f30c90d5b9829340ec638b78d84c2dca1c81e3fd13bce199","max_size_mb":160}, + {"source":"timm","name":"efficientnetv2_s","architecture":"efficientnetv2_s","task":"classification","input_shape":[1,3,288,288],"architecture_sha256":"0e79515e9244cc22674c7c27e7627bce698a79fd5c89c62f712a8f1795b75a7c","max_size_mb":160}, + {"source":"timm","name":"efficientvit_b0","architecture":"efficientvit_b0","task":"classification","input_shape":[1,3,224,224],"architecture_sha256":"d2957c1a55352e36de1559aa00b1db447f8392181658fef99bf79ce1f1d97170","max_size_mb":160}, + {"source":"timm","name":"efficientvit_b1","architecture":"efficientvit_b1","task":"classification","input_shape":[1,3,224,224],"architecture_sha256":"18781793f80ec10f539ad702004e47233dffa215cd8f11d5e027acb4b80287bf","max_size_mb":160}, + {"source":"timm","name":"efficientvit_b2","architecture":"efficientvit_b2","task":"classification","input_shape":[1,3,224,224],"architecture_sha256":"8fd14c883671b76a811756755bf3572fc5bc59a4f65ec4489864894e0fd7b478","max_size_mb":160}, + {"source":"timm","name":"efficientvit_m0","architecture":"efficientvit_m0","task":"classification","input_shape":[1,3,224,224],"architecture_sha256":"6c05a7b17c0c42c0f63d5cf2401f5b254941d5b24b7b5c4c3a06d275ca22e8d6","max_size_mb":160}, + {"source":"timm","name":"efficientvit_m1","architecture":"efficientvit_m1","task":"classification","input_shape":[1,3,224,224],"architecture_sha256":"3e28d2e41d95e9f70b0d8dc8a7523508e248c51fa07b03a67fe72ea9df3c99d4","max_size_mb":160}, + {"source":"timm","name":"efficientvit_m2","architecture":"efficientvit_m2","task":"classification","input_shape":[1,3,224,224],"architecture_sha256":"2b0d9d78a95995c4cfc3f59ada12570e99e33f0176bc9cd013f59ac7643d61a8","max_size_mb":160}, + {"source":"timm","name":"efficientvit_m3","architecture":"efficientvit_m3","task":"classification","input_shape":[1,3,224,224],"architecture_sha256":"a7748338ebf9683e1aaa10f0524fef1e7049b0f1f9fd99329d054a7beb3781aa","max_size_mb":160}, + {"source":"timm","name":"efficientvit_m4","architecture":"efficientvit_m4","task":"classification","input_shape":[1,3,224,224],"architecture_sha256":"9566b37e06f010804aeeabc256c24272679e2eee9ae4b615cc9586db0c9b3107","max_size_mb":160}, + {"source":"timm","name":"efficientvit_m5","architecture":"efficientvit_m5","task":"classification","input_shape":[1,3,224,224],"architecture_sha256":"0cd1e6e938c2099a4f822a274b48b7f1752c26961732b2cfa25927abd50f4ca2","max_size_mb":160}, + {"source":"timm","name":"ese_vovnet19b_dw","architecture":"ese_vovnet19b_dw","task":"classification","input_shape":[1,3,224,224],"architecture_sha256":"3506ff6f7a0a600c6d3ff1420e6e7785e874bd90575748154eb88e21c7fc1f65","max_size_mb":160}, + {"source":"timm","name":"ese_vovnet19b_slim","architecture":"ese_vovnet19b_slim","task":"classification","input_shape":[1,3,224,224],"architecture_sha256":"934ec37ce8b024d07dab698123e2014961f97602fd1df1ddfbb0982f1cbc10d6","max_size_mb":160}, + {"source":"timm","name":"ese_vovnet19b_slim_dw","architecture":"ese_vovnet19b_slim_dw","task":"classification","input_shape":[1,3,224,224],"architecture_sha256":"0b49f0e618658facc35121c31ecc69b83735be6fb540c2481abd338eb2e0ec9f","max_size_mb":160}, + {"source":"timm","name":"ese_vovnet39b","architecture":"ese_vovnet39b","task":"classification","input_shape":[1,3,224,224],"architecture_sha256":"3848fbc95be54b4d79fbce3201863cdf31466a9e67dac88bcee75e80d0cae9c8","max_size_mb":160}, + {"source":"timm","name":"ese_vovnet39b_evos","architecture":"ese_vovnet39b_evos","task":"classification","input_shape":[1,3,224,224],"architecture_sha256":"57b7c959e3e73c25ed362df86a0b220dc42d46f6108f641d94be53232c32221e","max_size_mb":160}, + {"source":"timm","name":"ese_vovnet57b","architecture":"ese_vovnet57b","task":"classification","input_shape":[1,3,256,256],"architecture_sha256":"be3460645cd5d0af8cc9c1c8fb77ca7924aa179cfc3948bcd2f671c395c7aad5","max_size_mb":160}, + {"source":"timm","name":"eva02_small_patch14_224","architecture":"eva02_small_patch14_224","task":"classification","input_shape":[1,3,224,224],"architecture_sha256":"1da323a2823f53610c00d42ded4b0cebc4be0d60e545f6cff952d012f2b5d7cc","max_size_mb":160}, + {"source":"timm","name":"eva02_small_patch14_336","architecture":"eva02_small_patch14_336","task":"classification","input_shape":[1,3,336,336],"architecture_sha256":"257522bb265cc72bb580499bcdb929c486014238ff306b2ad765f9c1d48d73cc","max_size_mb":160}, + {"source":"timm","name":"eva02_tiny_patch14_224","architecture":"eva02_tiny_patch14_224","task":"classification","input_shape":[1,3,224,224],"architecture_sha256":"8d8c08a8e20f8d1eb4b41cf383c1a3fbdd25c92fea25fdb1dbe4fcb849d885e1","max_size_mb":160}, + {"source":"timm","name":"eva02_tiny_patch14_336","architecture":"eva02_tiny_patch14_336","task":"classification","input_shape":[1,3,336,336],"architecture_sha256":"f1da5ea771533774fc6089e5422ba384efa72fd7e759709a217e7bd19173296e","max_size_mb":160}, + {"source":"timm","name":"fasternet_s","architecture":"fasternet_s","task":"classification","input_shape":[1,3,224,224],"architecture_sha256":"8427b5727c251c234184155a9224a5165f17cc7d3fff06bab671b71712dba1f7","max_size_mb":160}, + {"source":"timm","name":"fasternet_t0","architecture":"fasternet_t0","task":"classification","input_shape":[1,3,224,224],"architecture_sha256":"492c84972cf6cee30417768bb073ec977b4b36676717767e359fa1e2d546bef0","max_size_mb":160}, + {"source":"timm","name":"fasternet_t1","architecture":"fasternet_t1","task":"classification","input_shape":[1,3,224,224],"architecture_sha256":"9e5fc841b7c0b945e440798d5b411ed11399bb95c940e937bb74e2dbe9e337e3","max_size_mb":160}, + {"source":"timm","name":"fasternet_t2","architecture":"fasternet_t2","task":"classification","input_shape":[1,3,224,224],"architecture_sha256":"1055d09dfd86573d14e898e80b07cebf115d9193cae6732442669a4a1404ce40","max_size_mb":160}, + {"source":"timm","name":"fastvit_mci0","architecture":"fastvit_mci0","task":"classification","input_shape":[1,3,256,256],"architecture_sha256":"4c88438c77bcd1921dad59cc99bae1a055d871c4f98c88a3a86c96452ad48d86","max_size_mb":160}, + {"source":"timm","name":"fastvit_mci1","architecture":"fastvit_mci1","task":"classification","input_shape":[1,3,256,256],"architecture_sha256":"57728fe8c59f3bea73b1136ca2fa944a6d5c2b383398c932c729ca3c28fff06a","max_size_mb":160}, + {"source":"timm","name":"fastvit_mci2","architecture":"fastvit_mci2","task":"classification","input_shape":[1,3,256,256],"architecture_sha256":"d4de959f1e88f524a64e35fa8c8e962c30dfb1ed20ad64178f5a5e084dd00f1c","max_size_mb":160}, + {"source":"timm","name":"fastvit_s12","architecture":"fastvit_s12","task":"classification","input_shape":[1,3,256,256],"architecture_sha256":"7258a1d5773d55eaecdba303f28e22accab99e87cef5cbee2847cf7fead24ad4","max_size_mb":160}, + {"source":"timm","name":"fastvit_sa12","architecture":"fastvit_sa12","task":"classification","input_shape":[1,3,256,256],"architecture_sha256":"fb53380b91f14c1c0ebdb83d94c5c493c8549386fbe9b8aded8b87c94a451f61","max_size_mb":160}, + {"source":"timm","name":"fastvit_sa24","architecture":"fastvit_sa24","task":"classification","input_shape":[1,3,256,256],"architecture_sha256":"c25f80493ca4571ed66e07dfcd8450f2fe407a086998add08ea9e725d98c0164","max_size_mb":160}, + {"source":"timm","name":"fastvit_sa36","architecture":"fastvit_sa36","task":"classification","input_shape":[1,3,256,256],"architecture_sha256":"dc76066c0adcf28b5b3e54bc1a74c5d80a08b638220e372c43d00999f41434bc","max_size_mb":160}, + {"source":"timm","name":"fastvit_t12","architecture":"fastvit_t12","task":"classification","input_shape":[1,3,256,256],"architecture_sha256":"78ce227d18276cc8d248c41ce30b842b94451e444d0b4fb7e74d28b14b9812c1","max_size_mb":160}, + {"source":"timm","name":"fastvit_t8","architecture":"fastvit_t8","task":"classification","input_shape":[1,3,256,256],"architecture_sha256":"7baa957c3c4488d1d4d2536748a200f9f87f7e641d4591a163adf0fc3a371360","max_size_mb":160}, + {"source":"timm","name":"fbnetc_100","architecture":"fbnetc_100","task":"classification","input_shape":[1,3,224,224],"architecture_sha256":"a635053037e69ec3c292dad86ca334a36869e2935bfca3eebdd19dabe45f92e8","max_size_mb":160}, + {"source":"timm","name":"fbnetv3_b","architecture":"fbnetv3_b","task":"classification","input_shape":[1,3,224,224],"architecture_sha256":"8b18968b0f8840175a4fc2903dcc517479e9547d683028040b26a97137e1be9a","max_size_mb":160}, + {"source":"timm","name":"fbnetv3_d","architecture":"fbnetv3_d","task":"classification","input_shape":[1,3,224,224],"architecture_sha256":"619021655d7f02ccb5708c041d37ad3d982fcb3e268c71a7d5fe6b30aa2cfb1b","max_size_mb":160}, + {"source":"timm","name":"fbnetv3_g","architecture":"fbnetv3_g","task":"classification","input_shape":[1,3,240,240],"architecture_sha256":"a54fb01f8b804d42efdfed7b4b8832654ccdf8d8e1b960be0c9e2538cda0143a","max_size_mb":160}, + {"source":"timm","name":"flexivit_small","architecture":"flexivit_small","task":"classification","input_shape":[1,3,240,240],"architecture_sha256":"65810d12a16625af6085c268967da81ea29a0db8988e8308aabc265d428f2168","max_size_mb":160}, + {"source":"timm","name":"focalnet_tiny_lrf","architecture":"focalnet_tiny_lrf","task":"classification","input_shape":[1,3,224,224],"architecture_sha256":"8053247bb48f305d61efe98c55eed0bae7f99741f18dd1135a12d3fc1e2cfc8c","max_size_mb":160}, + {"source":"timm","name":"focalnet_tiny_srf","architecture":"focalnet_tiny_srf","task":"classification","input_shape":[1,3,224,224],"architecture_sha256":"2a3c437a0ad5b2ef94658fb481604e06b1689f30f424938178aea903dac1ed0e","max_size_mb":160}, + {"source":"timm","name":"gc_efficientnetv2_rw_t","architecture":"gc_efficientnetv2_rw_t","task":"classification","input_shape":[1,3,224,224],"architecture_sha256":"41a2716a675cc52b8ade3d36f75e10bec52b9b1c5e1c7e4dbd3fe5974cf40918","max_size_mb":160}, + {"source":"timm","name":"gcresnet33ts","architecture":"gcresnet33ts","task":"classification","input_shape":[1,3,256,256],"architecture_sha256":"35177af3bedba077718eccc1a2d30c4d73fde4e4cbac8d14b8608625d71928a4","max_size_mb":160}, + {"source":"timm","name":"gcresnet50t","architecture":"gcresnet50t","task":"classification","input_shape":[1,3,256,256],"architecture_sha256":"6e62ff6d97ce0a53f2d8c1b882ca0f34e9d8362c2c922a91da93842ff5e763a6","max_size_mb":160}, + {"source":"timm","name":"gcresnext26ts","architecture":"gcresnext26ts","task":"classification","input_shape":[1,3,256,256],"architecture_sha256":"c6a57c434df2c79aebf9579d2710f97a5309171854f9c02b2224c66b474d63cd","max_size_mb":160}, + {"source":"timm","name":"gcresnext50ts","architecture":"gcresnext50ts","task":"classification","input_shape":[1,3,256,256],"architecture_sha256":"5d9ba1c23abae22eb27bbaab4107fec17214ceb3a39ae7568b5b1688fcc1d7b7","max_size_mb":160}, + {"source":"timm","name":"gcvit_tiny","architecture":"gcvit_tiny","task":"classification","input_shape":[1,3,224,224],"architecture_sha256":"bdacc6c1a70369be7f041206b8bfffe8c9a19c88dbd9d5833e34515347b96a09","max_size_mb":160}, + {"source":"timm","name":"gcvit_xtiny","architecture":"gcvit_xtiny","task":"classification","input_shape":[1,3,224,224],"architecture_sha256":"5d62ab593fe5e9ee84de7ecaac9336d9ccaf2b10e5795d2b3ae7019910618428","max_size_mb":160}, + {"source":"timm","name":"gcvit_xxtiny","architecture":"gcvit_xxtiny","task":"classification","input_shape":[1,3,224,224],"architecture_sha256":"463c1cff0b58e640f21fd724a31660a853d697f17818324549488b26c3c5695d","max_size_mb":160}, + {"source":"timm","name":"gernet_l","architecture":"gernet_l","task":"classification","input_shape":[1,3,256,256],"architecture_sha256":"1d02993c39ed81917b4e0a162bd58ed9db0c8350003f0301056923a0fd2dfdcf","max_size_mb":160}, + {"source":"timm","name":"gernet_m","architecture":"gernet_m","task":"classification","input_shape":[1,3,224,224],"architecture_sha256":"95550950ae3fd7ff5c2431ecdc16ff1eecbf2bf5ed0ff52effd1c88422593dff","max_size_mb":160}, + {"source":"timm","name":"gernet_s","architecture":"gernet_s","task":"classification","input_shape":[1,3,224,224],"architecture_sha256":"beabf31ae5e69050d34250e95fc97e48d6bb0ae8881d206754a20448e6a7316e","max_size_mb":160}, + {"source":"timm","name":"ghostnet_050","architecture":"ghostnet_050","task":"classification","input_shape":[1,3,224,224],"architecture_sha256":"d8831fcce1af01282764a3db6a0ce1efb8cfca5e12a1accd2edbdd91603293d0","max_size_mb":160}, + {"source":"timm","name":"ghostnet_100","architecture":"ghostnet_100","task":"classification","input_shape":[1,3,224,224],"architecture_sha256":"ddcc16a8d204cc2425f4569f07deb02aa04b76000556dd30e2ca703f1d6b58d5","max_size_mb":160}, + {"source":"timm","name":"ghostnet_130","architecture":"ghostnet_130","task":"classification","input_shape":[1,3,224,224],"architecture_sha256":"657546249fc06d7e061fb5d93d91275531ec7bd47a072eb9e34417cd1b8dd184","max_size_mb":160}, + {"source":"timm","name":"ghostnetv2_100","architecture":"ghostnetv2_100","task":"classification","input_shape":[1,3,224,224],"architecture_sha256":"156e2d9b29e9f8c6a54a95f57c7ff1192c005aa3484bcfdd2af8ed4773970a03","max_size_mb":160}, + {"source":"timm","name":"ghostnetv2_130","architecture":"ghostnetv2_130","task":"classification","input_shape":[1,3,224,224],"architecture_sha256":"5b01fdbdf5976aa5c0a34d6807fc6be15ab994fb923e92c35913e870b54f9357","max_size_mb":160}, + {"source":"timm","name":"ghostnetv2_160","architecture":"ghostnetv2_160","task":"classification","input_shape":[1,3,224,224],"architecture_sha256":"8e62da8ddc7685cad74d5eeb73ac44649830f647ac7b38f24a69c7550b317753","max_size_mb":160}, + {"source":"timm","name":"ghostnetv3_050","architecture":"ghostnetv3_050","task":"classification","input_shape":[1,3,224,224],"architecture_sha256":"a7b11747301efe58ce0cbdcf30c634f7dbc3a83b385fbe65d6982e01d5a655d4","max_size_mb":160}, + {"source":"timm","name":"ghostnetv3_100","architecture":"ghostnetv3_100","task":"classification","input_shape":[1,3,224,224],"architecture_sha256":"110b131b479e23dac7d7610770eba325fc12f2ba9b5f5ffcc09951b50905ff7a","max_size_mb":160}, + {"source":"timm","name":"ghostnetv3_130","architecture":"ghostnetv3_130","task":"classification","input_shape":[1,3,224,224],"architecture_sha256":"3c1b767d09852fa48bc1f6f311d68ef389a8fb4e95b85aa72868e8056cbd44ef","max_size_mb":160}, + {"source":"timm","name":"ghostnetv3_160","architecture":"ghostnetv3_160","task":"classification","input_shape":[1,3,224,224],"architecture_sha256":"b8739a0ab72e28920417fcc6f29795297b91eab9d73bb75afbe186a89f126109","max_size_mb":160}, + {"source":"timm","name":"gmixer_12_224","architecture":"gmixer_12_224","task":"classification","input_shape":[1,3,224,224],"architecture_sha256":"8dd6563489127774fe73e6416bfe2bb3a3557aee57617424542c6d1b116c61db","max_size_mb":160}, + {"source":"timm","name":"gmixer_24_224","architecture":"gmixer_24_224","task":"classification","input_shape":[1,3,224,224],"architecture_sha256":"d4df69a4de0ac170a3b6f851de7261fe44985d8c0649fb7010f10f8e332d12db","max_size_mb":160}, + {"source":"timm","name":"gmlp_s16_224","architecture":"gmlp_s16_224","task":"classification","input_shape":[1,3,224,224],"architecture_sha256":"eec0ee57436a65fa2bdb7019a0ed5a9c77379d3f08a08a808c834005f8884793","max_size_mb":160}, + {"source":"timm","name":"gmlp_ti16_224","architecture":"gmlp_ti16_224","task":"classification","input_shape":[1,3,224,224],"architecture_sha256":"ee73315ed6ae3d2eeb73eb519af8a3a61498831209fb0172a954903b3c5fec53","max_size_mb":160}, + {"source":"timm","name":"hardcorenas_a","architecture":"hardcorenas_a","task":"classification","input_shape":[1,3,224,224],"architecture_sha256":"e5f32ffaffbc957a2871c073e097df5e228b7aa8a61e036422050600c19b6129","max_size_mb":160}, + {"source":"timm","name":"hardcorenas_b","architecture":"hardcorenas_b","task":"classification","input_shape":[1,3,224,224],"architecture_sha256":"fa58d5bf854be5099320db07fa1f47a449bed6edccbfb1fe5f161178726586fe","max_size_mb":160}, + {"source":"timm","name":"hardcorenas_c","architecture":"hardcorenas_c","task":"classification","input_shape":[1,3,224,224],"architecture_sha256":"737f1567c8dcb412225ddf87263434e3356959980026547bfa7bcc6080965280","max_size_mb":160}, + {"source":"timm","name":"hardcorenas_d","architecture":"hardcorenas_d","task":"classification","input_shape":[1,3,224,224],"architecture_sha256":"eecd9fabb5d0d9c7700290fd45d5d702bfb2c5f15715119d6cc0479b3331a02f","max_size_mb":160}, + {"source":"timm","name":"hardcorenas_e","architecture":"hardcorenas_e","task":"classification","input_shape":[1,3,224,224],"architecture_sha256":"6c72fe273c5df4f2ec1f17234dabc920604d1e93cb0169abcc1cb603aebcbb07","max_size_mb":160}, + {"source":"timm","name":"hardcorenas_f","architecture":"hardcorenas_f","task":"classification","input_shape":[1,3,224,224],"architecture_sha256":"e0558009fa0ef37766254303dc47279dd387b6ce62e86fa0e39c95f80ea1d849","max_size_mb":160}, + {"source":"timm","name":"hgnet_small","architecture":"hgnet_small","task":"classification","input_shape":[1,3,224,224],"architecture_sha256":"3ae184e9c399f4e29a05a0a33069247e76984a18d3972e1c15c54a4004781c7f","max_size_mb":160}, + {"source":"timm","name":"hgnet_tiny","architecture":"hgnet_tiny","task":"classification","input_shape":[1,3,224,224],"architecture_sha256":"7def2f2c30e2ca5230d7025ce764b7d393e30511e107da7544a4a59cd75bca53","max_size_mb":160}, + {"source":"timm","name":"hgnetv2_b0","architecture":"hgnetv2_b0","task":"classification","input_shape":[1,3,224,224],"architecture_sha256":"14fe8a796ec57c440f00ed657d7f38d2f8d3141b3557c3351188d753269b3913","max_size_mb":160}, + {"source":"timm","name":"hgnetv2_b1","architecture":"hgnetv2_b1","task":"classification","input_shape":[1,3,224,224],"architecture_sha256":"f21891fea250151784a07781a46e2c906744ab93bf21b4c9f86adc051d9d7dde","max_size_mb":160}, + {"source":"timm","name":"hgnetv2_b2","architecture":"hgnetv2_b2","task":"classification","input_shape":[1,3,224,224],"architecture_sha256":"363710613c13b6de37fd814703162173bbeb3a8079ec9fd696736fb9e5b47432","max_size_mb":160}, + {"source":"timm","name":"hgnetv2_b3","architecture":"hgnetv2_b3","task":"classification","input_shape":[1,3,224,224],"architecture_sha256":"a86cc701a8528bd0e87850019af93eb8b923c72e44bbab90e38d693afeae2f63","max_size_mb":160}, + {"source":"timm","name":"hgnetv2_b4","architecture":"hgnetv2_b4","task":"classification","input_shape":[1,3,224,224],"architecture_sha256":"b4a1ca6c904efd3964a4e58058a4158deed95e1d649b5812c5984c7e0999a418","max_size_mb":160}, + {"source":"timm","name":"hgnetv2_b5","architecture":"hgnetv2_b5","task":"classification","input_shape":[1,3,224,224],"architecture_sha256":"2e093f801198aa8115dc5cceee86a5d2d439e797ef3a6209f35c7a35118be07b","max_size_mb":160}, + {"source":"timm","name":"hiera_small_224","architecture":"hiera_small_224","task":"classification","input_shape":[1,3,224,224],"architecture_sha256":"a841b2550a74a73a14389647f548cbb360a15cc05689f1fca417a733bfb9afa4","max_size_mb":160}, + {"source":"timm","name":"hiera_tiny_224","architecture":"hiera_tiny_224","task":"classification","input_shape":[1,3,224,224],"architecture_sha256":"64a02eabbec1688e1cd36e6cbdb3f8a8334cbd56c25f5c6a6380ee577266f3c6","max_size_mb":160}, + {"source":"timm","name":"hieradet_small","architecture":"hieradet_small","task":"classification","input_shape":[1,3,256,256],"architecture_sha256":"705665e2821606f9c88753ee5d82664755711a0268de0053d090e887a11583e5","max_size_mb":160}, + {"source":"timm","name":"hrnet_w18_small","architecture":"hrnet_w18_small","task":"classification","input_shape":[1,3,224,224],"architecture_sha256":"e8e21c6ea65e9a7c4d6e41d886de8ffdd8b760f2f47441bb9b24b39b9547b9ff","max_size_mb":160}, + {"source":"timm","name":"hrnet_w18_ssld","architecture":"hrnet_w18_ssld","task":"classification","input_shape":[1,3,224,224],"architecture_sha256":"cebcacd02d1d8a6e211da49c7440180b33d4cd8dba202318ece63d54a37e79e8","max_size_mb":160}, + {"source":"timm","name":"hrnet_w30","architecture":"hrnet_w30","task":"classification","input_shape":[1,3,224,224],"architecture_sha256":"17fa494acc0324ee5b224c8c88d64bdfb19ebc3e60431dcb380f495d1ae6e1d3","max_size_mb":160}, + {"source":"timm","name":"hrnet_w32","architecture":"hrnet_w32","task":"classification","input_shape":[1,3,224,224],"architecture_sha256":"3e30c64723a2ddd8a86994f2377e80fd17dadfc4bb0b84e5e265bf143805ffe9","max_size_mb":160}, + {"source":"timm","name":"inception_next_atto","architecture":"inception_next_atto","task":"classification","input_shape":[1,3,224,224],"architecture_sha256":"6f98facf44e3df112b4cd14a0d6005a7f368ac6679c353dd3187744766821065","max_size_mb":160}, + {"source":"timm","name":"inception_next_tiny","architecture":"inception_next_tiny","task":"classification","input_shape":[1,3,224,224],"architecture_sha256":"87fc8285bcb2865e0c92b7d5347ff7a207305af1bfb7584e55e1c6a9791e9162","max_size_mb":160}, + {"source":"timm","name":"lambda_resnet26rpt_256","architecture":"lambda_resnet26rpt_256","task":"classification","input_shape":[1,3,256,256],"architecture_sha256":"069c35a83b4197576ad76461e4c830aabe03baac3acc0066264fd868812a53f7","max_size_mb":160}, + {"source":"timm","name":"lambda_resnet26t","architecture":"lambda_resnet26t","task":"classification","input_shape":[1,3,256,256],"architecture_sha256":"173e5c7086b41bf1b69337091947a073fdfe0770c64f72d73cda609e2f063eee","max_size_mb":160}, + {"source":"timm","name":"lambda_resnet50ts","architecture":"lambda_resnet50ts","task":"classification","input_shape":[1,3,256,256],"architecture_sha256":"79059bcb850e4757537046d683ef9dbf4a65bd5364c39d0897069fc8fadf902e","max_size_mb":160}, + {"source":"timm","name":"lcnet_035","architecture":"lcnet_035","task":"classification","input_shape":[1,3,224,224],"architecture_sha256":"da92ae6783f959c43fe23a8633f569e761d829166518e8e0962e3f5b55e8353d","max_size_mb":160}, + {"source":"timm","name":"lcnet_050","architecture":"lcnet_050","task":"classification","input_shape":[1,3,224,224],"architecture_sha256":"306f53b6ef72f3d7cea362786f0067b014efd41ff04df17118b4bc9a06ba18ec","max_size_mb":160}, + {"source":"timm","name":"lcnet_075","architecture":"lcnet_075","task":"classification","input_shape":[1,3,224,224],"architecture_sha256":"aa4f15404969de866b989b4c8da54251a04432d0624dce168eb0b19669e6e9e6","max_size_mb":160}, + {"source":"timm","name":"lcnet_100","architecture":"lcnet_100","task":"classification","input_shape":[1,3,224,224],"architecture_sha256":"70679f65384dd79c9ee2d421bb6610060f127a99b515024dc6cdb4e061e879b7","max_size_mb":160}, + {"source":"timm","name":"lcnet_150","architecture":"lcnet_150","task":"classification","input_shape":[1,3,224,224],"architecture_sha256":"f6817671ffe9a685858ddb19d43acbb26c560eee6fa7b3ed0a058528bbef9b6f","max_size_mb":160}, + {"source":"timm","name":"legacy_seresnet18","architecture":"legacy_seresnet18","task":"classification","input_shape":[1,3,224,224],"architecture_sha256":"2c9f58314464a00e6408333e1a516c7fc1f98a37d44c85d20c83c626b255e01d","max_size_mb":160}, + {"source":"timm","name":"legacy_seresnet34","architecture":"legacy_seresnet34","task":"classification","input_shape":[1,3,224,224],"architecture_sha256":"1949fd8c56f57d18419101a9b49689d542756dbc662698a9e631b8aeccbdcb3d","max_size_mb":160}, + {"source":"timm","name":"legacy_seresnet50","architecture":"legacy_seresnet50","task":"classification","input_shape":[1,3,224,224],"architecture_sha256":"7cd138296c38708ce9f9371524392649789fe2d158e8bc3e107133e598c994b2","max_size_mb":160}, + {"source":"timm","name":"legacy_seresnext26_32x4d","architecture":"legacy_seresnext26_32x4d","task":"classification","input_shape":[1,3,224,224],"architecture_sha256":"c463b8dd561bf52bc184931afb738405e1098ac04225f9ae21b8da8a8eea5f60","max_size_mb":160}, + {"source":"timm","name":"legacy_seresnext50_32x4d","architecture":"legacy_seresnext50_32x4d","task":"classification","input_shape":[1,3,224,224],"architecture_sha256":"b9ae467b713200d4f0c575cbbb7464d9435db7418d54585f32def92bc8c07f4c","max_size_mb":160}, + {"source":"timm","name":"legacy_xception","architecture":"legacy_xception","task":"classification","input_shape":[1,3,299,299],"architecture_sha256":"4b4078031d67998965161f80993788fe999ddcb8985604117249e984576deb56","max_size_mb":160}, + {"source":"timm","name":"levit_128","architecture":"levit_128","task":"classification","input_shape":[1,3,224,224],"architecture_sha256":"6295f1b654a61be8e33c7eaf987c7a0de0bbebdfc9cdb6ad91cf14cd10ed699f","max_size_mb":160}, + {"source":"timm","name":"levit_128s","architecture":"levit_128s","task":"classification","input_shape":[1,3,224,224],"architecture_sha256":"cc0fefa2e11cc4f38c14b38093546d2ff4394cbfc6e44750edf354d8f1730171","max_size_mb":160}, + {"source":"timm","name":"levit_192","architecture":"levit_192","task":"classification","input_shape":[1,3,224,224],"architecture_sha256":"58bcaec7de61e84a4a93894fea806aeb7665a4778dda068caaa8def936f254a4","max_size_mb":160}, + {"source":"timm","name":"levit_256","architecture":"levit_256","task":"classification","input_shape":[1,3,224,224],"architecture_sha256":"6150771bda90918aca16cbd6bc96ad2213eaee48599744267c7b86486598ec3a","max_size_mb":160}, + {"source":"timm","name":"levit_256d","architecture":"levit_256d","task":"classification","input_shape":[1,3,224,224],"architecture_sha256":"3bd9281676fc43708f9f418a72e8132ca542b80ef2f538bd4c0fd4ad6bc0588a","max_size_mb":160}, + {"source":"timm","name":"levit_384","architecture":"levit_384","task":"classification","input_shape":[1,3,224,224],"architecture_sha256":"fbc4580600cc8d68b035a1870234f0448298d81189ff84c9da4bdbc5ace060b3","max_size_mb":160}, + {"source":"timm","name":"levit_384_s8","architecture":"levit_384_s8","task":"classification","input_shape":[1,3,224,224],"architecture_sha256":"8e53bb3383550232324095d41e8b69eb62739ecd01e20e9ab96d8111f5cc0bf4","max_size_mb":160}, + {"source":"timm","name":"levit_conv_128","architecture":"levit_conv_128","task":"classification","input_shape":[1,3,224,224],"architecture_sha256":"30a5d10c5519e04a63e1791e845d8a9eab4bd12c5f61611bd35fe3b07a673703","max_size_mb":160}, + {"source":"timm","name":"levit_conv_128s","architecture":"levit_conv_128s","task":"classification","input_shape":[1,3,224,224],"architecture_sha256":"32eb3f6e389df4cc81b911fcbddd13e56491ced59da73c906b3af8c7a47a9268","max_size_mb":160}, + {"source":"timm","name":"levit_conv_192","architecture":"levit_conv_192","task":"classification","input_shape":[1,3,224,224],"architecture_sha256":"5d98524b6db094f7e5d6d647f3fd10c9f9e9da521af01844a097e6bf1e9d6cec","max_size_mb":160}, + {"source":"timm","name":"levit_conv_256","architecture":"levit_conv_256","task":"classification","input_shape":[1,3,224,224],"architecture_sha256":"ce9730f8edb6fec498354b0c4df9dbc7828e68a2161905706c3a2d848c117606","max_size_mb":160}, + {"source":"timm","name":"levit_conv_256d","architecture":"levit_conv_256d","task":"classification","input_shape":[1,3,224,224],"architecture_sha256":"05a8d0bf3b2371e0366efd9ea3a64a391564a2d132ba21c5931e7bd14a639151","max_size_mb":160}, + {"source":"timm","name":"levit_conv_384","architecture":"levit_conv_384","task":"classification","input_shape":[1,3,224,224],"architecture_sha256":"c168a2de2accc22371a933941791dd8a9fb7f04775110c166a6094946630028b","max_size_mb":160}, + {"source":"timm","name":"levit_conv_384_s8","architecture":"levit_conv_384_s8","task":"classification","input_shape":[1,3,224,224],"architecture_sha256":"2b83fc5235ec72d70f78655404f3bc2bc74b2728338f7e339f9fd9bfd60ec47b","max_size_mb":160}, + {"source":"timm","name":"mambaout_femto","architecture":"mambaout_femto","task":"classification","input_shape":[1,3,224,224],"architecture_sha256":"c11f04f0df1f6b4948748f17a66645ec5648fdad2a46eff6acb5cc12c63e8540","max_size_mb":160}, + {"source":"timm","name":"mambaout_kobe","architecture":"mambaout_kobe","task":"classification","input_shape":[1,3,224,224],"architecture_sha256":"d7a90d631ee361561e7cf45ee61dd7e3a76ec549dbae3d6f120b0a5ff087109f","max_size_mb":160}, + {"source":"timm","name":"mambaout_tiny","architecture":"mambaout_tiny","task":"classification","input_shape":[1,3,224,224],"architecture_sha256":"fb6697f2f0d25c153dffe8449bce829a63eff94336e54664408832d8efea5330","max_size_mb":160}, + {"source":"timm","name":"maxvit_nano_rw_256","architecture":"maxvit_nano_rw_256","task":"classification","input_shape":[1,3,256,256],"architecture_sha256":"7183c05778c12b66a975906fa632afaa6f4c683891e96101277d924e16b0b5b4","max_size_mb":160}, + {"source":"timm","name":"maxvit_pico_rw_256","architecture":"maxvit_pico_rw_256","task":"classification","input_shape":[1,3,256,256],"architecture_sha256":"a97cddd6646c4b9c48b1b8cb4c203420f4b1f7b3846f5070491372fb2ab62d61","max_size_mb":160}, + {"source":"timm","name":"maxvit_rmlp_nano_rw_256","architecture":"maxvit_rmlp_nano_rw_256","task":"classification","input_shape":[1,3,256,256],"architecture_sha256":"a4f98646f76d7ac947ff7d8bb945b78e048d9046fc0defe0245e7f11accc3c10","max_size_mb":160}, + {"source":"timm","name":"maxvit_rmlp_pico_rw_256","architecture":"maxvit_rmlp_pico_rw_256","task":"classification","input_shape":[1,3,256,256],"architecture_sha256":"2b3ecbdaa3bc85b530ae47709e61390f322b961e63b3a483aa53cad35aabac97","max_size_mb":160}, + {"source":"timm","name":"maxvit_rmlp_tiny_rw_256","architecture":"maxvit_rmlp_tiny_rw_256","task":"classification","input_shape":[1,3,256,256],"architecture_sha256":"907d4bcfa4bc7e31945a4bdf444f10f5f6d442b5676529aa965913f93b1fb849","max_size_mb":160}, + {"source":"timm","name":"maxvit_tiny_pm_256","architecture":"maxvit_tiny_pm_256","task":"classification","input_shape":[1,3,256,256],"architecture_sha256":"143e38f9c1eeeb4b2665976af5020eae65fba35c52c681f3333cc9a3d6fb9519","max_size_mb":160}, + {"source":"timm","name":"maxvit_tiny_rw_224","architecture":"maxvit_tiny_rw_224","task":"classification","input_shape":[1,3,224,224],"architecture_sha256":"3ec8151c08225e095b8ff12f98859600f770342e6f416e29003754dde26b635a","max_size_mb":160}, + {"source":"timm","name":"maxvit_tiny_rw_256","architecture":"maxvit_tiny_rw_256","task":"classification","input_shape":[1,3,256,256],"architecture_sha256":"d0e9122f6dcdd7bea10c1d973472718e37dbae2527a3911d20e58ca7bc10777f","max_size_mb":160}, + {"source":"timm","name":"maxvit_tiny_tf_224","architecture":"maxvit_tiny_tf_224","task":"classification","input_shape":[1,3,224,224],"architecture_sha256":"6b7cf16f4adc4789f292fa0da46f04f571a9280ba31f4379b19a8a5cdb2386d9","max_size_mb":160}, + {"source":"timm","name":"maxvit_tiny_tf_384","architecture":"maxvit_tiny_tf_384","task":"classification","input_shape":[1,3,384,384],"architecture_sha256":"3234eeeb5be001ced9469c0e6f556e3a261cd9407e5f139311b7cd16186fac24","max_size_mb":160}, + {"source":"timm","name":"maxvit_tiny_tf_512","architecture":"maxvit_tiny_tf_512","task":"classification","input_shape":[1,3,512,512],"architecture_sha256":"7699b2ada65f0395cca7f9ff9e2c026d5b952fea30a2739da549f652e3d755e1","max_size_mb":160}, + {"source":"timm","name":"maxxvit_rmlp_nano_rw_256","architecture":"maxxvit_rmlp_nano_rw_256","task":"classification","input_shape":[1,3,256,256],"architecture_sha256":"5c7ad28df30451f43e0c6098265e8a63f8ca861359928ed424fddbe80fa7fc49","max_size_mb":160}, + {"source":"timm","name":"maxxvit_rmlp_tiny_rw_256","architecture":"maxxvit_rmlp_tiny_rw_256","task":"classification","input_shape":[1,3,256,256],"architecture_sha256":"e4f52bf57fbb438fee7f3f37cd5cbec785c9c77e46b8c3810be7967203223542","max_size_mb":160}, + {"source":"timm","name":"maxxvitv2_nano_rw_256","architecture":"maxxvitv2_nano_rw_256","task":"classification","input_shape":[1,3,256,256],"architecture_sha256":"5f8d530d42880077f4fab104e6f4aa4ef7ab47a0830e20667277737a7c89ea92","max_size_mb":160}, + {"source":"timm","name":"mixer_s16_224","architecture":"mixer_s16_224","task":"classification","input_shape":[1,3,224,224],"architecture_sha256":"82897d41b945dbfdb352c157e1749811fadae5f2d312f67b11ca1c22d42ecc35","max_size_mb":160}, + {"source":"timm","name":"mixer_s32_224","architecture":"mixer_s32_224","task":"classification","input_shape":[1,3,224,224],"architecture_sha256":"e27477a716a49b290c02dd2d1f2fa9cd402d52fe9c4c3766e4f39d878be83e63","max_size_mb":160}, + {"source":"timm","name":"mixnet_m","architecture":"mixnet_m","task":"classification","input_shape":[1,3,224,224],"architecture_sha256":"a2644dd703e9c3df1c6f27cb126f98ef5495f18426cde7c2bb96cc44c0c3ec3f","max_size_mb":160}, + {"source":"timm","name":"mixnet_xl","architecture":"mixnet_xl","task":"classification","input_shape":[1,3,224,224],"architecture_sha256":"0c75f4b2d82c0318ad7dd493452b71a2f3e29510fb054a6709c1880a265b89e1","max_size_mb":160}, + {"source":"timm","name":"mnasnet_050","architecture":"mnasnet_050","task":"classification","input_shape":[1,3,224,224],"architecture_sha256":"d2840f60053de5eebc57c43120839688050d8bf807eaff09278ee9475faba439","max_size_mb":160}, + {"source":"timm","name":"mnasnet_075","architecture":"mnasnet_075","task":"classification","input_shape":[1,3,224,224],"architecture_sha256":"44b6228be89e0587bc5724ff34252c0324f06e1c4ae949d8d39bfbef9dd46541","max_size_mb":160}, + {"source":"timm","name":"mnasnet_100","architecture":"mnasnet_100","task":"classification","input_shape":[1,3,224,224],"architecture_sha256":"8197ed5054d1526576320d9ab53b521a100afe15af43b9f131f78256f0c9099a","max_size_mb":160}, + {"source":"timm","name":"mnasnet_140","architecture":"mnasnet_140","task":"classification","input_shape":[1,3,224,224],"architecture_sha256":"8de17b5f55598d89faab37b9368516177b54693feaf2df3ab9bc4ee7e4be0a44","max_size_mb":160}, + {"source":"timm","name":"mobilenet_edgetpu_100","architecture":"mobilenet_edgetpu_100","task":"classification","input_shape":[1,3,224,224],"architecture_sha256":"cf1a87cc59c02061ed89b587c0e11349f25292a7f54904e2254531fafae21dbd","max_size_mb":160}, + {"source":"timm","name":"mobilenet_edgetpu_v2_l","architecture":"mobilenet_edgetpu_v2_l","task":"classification","input_shape":[1,3,224,224],"architecture_sha256":"a996fd3955349142eb03e58d97f3f65b078d8c26082e1fe2bac24fdf79f01f11","max_size_mb":160}, + {"source":"timm","name":"mobilenet_edgetpu_v2_m","architecture":"mobilenet_edgetpu_v2_m","task":"classification","input_shape":[1,3,224,224],"architecture_sha256":"885fbccf00ab162b29ba510fb977e5255419ffbe944abe2ad5c914d4ddd85fa3","max_size_mb":160}, + {"source":"timm","name":"mobilenet_edgetpu_v2_s","architecture":"mobilenet_edgetpu_v2_s","task":"classification","input_shape":[1,3,224,224],"architecture_sha256":"1557bde68bda7f3552706e38e6f176e278284404282c15b1356415e55ec48db7","max_size_mb":160}, + {"source":"timm","name":"mobilenet_edgetpu_v2_xs","architecture":"mobilenet_edgetpu_v2_xs","task":"classification","input_shape":[1,3,224,224],"architecture_sha256":"f9e0df6d92158c1ec3013b1d916b8dfc8ec0af9a9f7371c589a685cae12884b7","max_size_mb":160}, + {"source":"timm","name":"mobilenetv1_100","architecture":"mobilenetv1_100","task":"classification","input_shape":[1,3,224,224],"architecture_sha256":"b7d8ee2bdbb072d2c5a2b571899a749522e5b2ca1da39cb7b3ccb10fe11a60cb","max_size_mb":160}, + {"source":"timm","name":"mobilenetv1_100h","architecture":"mobilenetv1_100h","task":"classification","input_shape":[1,3,224,224],"architecture_sha256":"77c7e08d392b2896509ef27b4d6bcb081dda41b229679870732bbccb8e8f00b1","max_size_mb":160}, + {"source":"timm","name":"mobilenetv1_125","architecture":"mobilenetv1_125","task":"classification","input_shape":[1,3,224,224],"architecture_sha256":"b17679af59598328acf49e1cdd1119ea0234089f6fe492b5e52ec35f519c7e3c","max_size_mb":160}, + {"source":"timm","name":"mobilenetv2_035","architecture":"mobilenetv2_035","task":"classification","input_shape":[1,3,224,224],"architecture_sha256":"a04d74e79588cb9816f4bf934c2fab43b9cff640648e8914b975faa535ff0507","max_size_mb":160}, + {"source":"timm","name":"mobilenetv2_050","architecture":"mobilenetv2_050","task":"classification","input_shape":[1,3,224,224],"architecture_sha256":"ade857e8b9933ac223c6fea2309c4c10ed9b44b4791904cff3bfccf37a622e4b","max_size_mb":160}, + {"source":"timm","name":"mobilenetv2_075","architecture":"mobilenetv2_075","task":"classification","input_shape":[1,3,224,224],"architecture_sha256":"5565b82d9ff6bd591a692715fb7f573c961fabb6de1741fc8d4f3138ee29d3fa","max_size_mb":160}, + {"source":"timm","name":"mobilenetv2_100","architecture":"mobilenetv2_100","task":"classification","input_shape":[1,3,224,224],"architecture_sha256":"c8e7b9f01fc46ef7214d0422355a46122dba797528350208ba83b4594b6c2a5a","max_size_mb":160}, + {"source":"timm","name":"mobilenetv2_110d","architecture":"mobilenetv2_110d","task":"classification","input_shape":[1,3,224,224],"architecture_sha256":"a632cd320c0cef67297e618d246fb40c14f26d6abbd708f70141e1a655811969","max_size_mb":160}, + {"source":"timm","name":"mobilenetv2_120d","architecture":"mobilenetv2_120d","task":"classification","input_shape":[1,3,224,224],"architecture_sha256":"7bc16f09c7051352f6db949b7d9ab3133b37ff06072511c8f2c176ff864144e9","max_size_mb":160}, + {"source":"timm","name":"mobilenetv2_140","architecture":"mobilenetv2_140","task":"classification","input_shape":[1,3,224,224],"architecture_sha256":"08b807089b5d5e62c5c4683a007ea71d5acadb1c16af00174528822dd31ad57d","max_size_mb":160}, + {"source":"timm","name":"mobilenetv3_rw","architecture":"mobilenetv3_rw","task":"classification","input_shape":[1,3,224,224],"architecture_sha256":"ac63569c4480cd7b565bbe902f47697cf342a93fe8ee3a59a4877e16844e435f","max_size_mb":160}, + {"source":"timm","name":"mobilenetv3_small_050","architecture":"mobilenetv3_small_050","task":"classification","input_shape":[1,3,224,224],"architecture_sha256":"2dcd93a5d83ae55461d82e54f99750d2bce2bd4996f92d7ed5ab5149aaaaaec7","max_size_mb":160}, + {"source":"timm","name":"mobilenetv3_small_075","architecture":"mobilenetv3_small_075","task":"classification","input_shape":[1,3,224,224],"architecture_sha256":"cb7a2e2465f521b910a65eccbd30c60ee7e119bc93aa35861dcf2ca2c608448b","max_size_mb":160}, + {"source":"timm","name":"mobilenetv3_small_100","architecture":"mobilenetv3_small_100","task":"classification","input_shape":[1,3,224,224],"architecture_sha256":"a259994b915c16dd71721e0a979e29dc1fc4e53951b94aae58942e66e3725b8c","max_size_mb":160}, + {"source":"timm","name":"mobilenetv4_conv_aa_large","architecture":"mobilenetv4_conv_aa_large","task":"classification","input_shape":[1,3,448,448],"architecture_sha256":"00cdca0aea1b6159509a0041ec7558dd7d3f5c66dd7b622ca2d95572006c90cb","max_size_mb":160}, + {"source":"timm","name":"mobilenetv4_conv_aa_medium","architecture":"mobilenetv4_conv_aa_medium","task":"classification","input_shape":[1,3,256,256],"architecture_sha256":"e65373b3c9e450e7007ba1cde7333bf9b62e981569e41e73317186dfa2865cc7","max_size_mb":160}, + {"source":"timm","name":"mobilenetv4_conv_blur_medium","architecture":"mobilenetv4_conv_blur_medium","task":"classification","input_shape":[1,3,224,224],"architecture_sha256":"3ede74fa69d927557c8b9db059280ec579945e8a9cb00df32b22923dba93969e","max_size_mb":160}, + {"source":"timm","name":"mobilenetv4_conv_large","architecture":"mobilenetv4_conv_large","task":"classification","input_shape":[1,3,384,384],"architecture_sha256":"4dab60ea7534faa155297730be08dce4704f4b82771a78cbf32ad7dba0484a36","max_size_mb":160}, + {"source":"timm","name":"mobilenetv4_conv_medium","architecture":"mobilenetv4_conv_medium","task":"classification","input_shape":[1,3,256,256],"architecture_sha256":"2443bcefe775f2180c94ac7e274afc1dce6647545439f229170741266b4cbdbe","max_size_mb":160}, + {"source":"timm","name":"mobilenetv4_conv_small","architecture":"mobilenetv4_conv_small","task":"classification","input_shape":[1,3,224,224],"architecture_sha256":"d6d5aebd5bfc830816dbe54a74042f4824805b606c2877030d1fa213ab3a7d6c","max_size_mb":160}, + {"source":"timm","name":"mobilenetv4_conv_small_035","architecture":"mobilenetv4_conv_small_035","task":"classification","input_shape":[1,3,224,224],"architecture_sha256":"78d5d6eec2b783464d9e74651bf53e9d413072bc145ad8b58cf6bcac0464e1f5","max_size_mb":160}, + {"source":"timm","name":"mobilenetv4_conv_small_050","architecture":"mobilenetv4_conv_small_050","task":"classification","input_shape":[1,3,224,224],"architecture_sha256":"c5160137ca071b049cab472eee3a3193720291dadb30c3529822f72f96e29d71","max_size_mb":160}, + {"source":"timm","name":"mobilenetv4_hybrid_large","architecture":"mobilenetv4_hybrid_large","task":"classification","input_shape":[1,3,384,384],"architecture_sha256":"4862dba5aab0c421b7cd1007070e2116ccdd03f88275a5fbf376648d76610e39","max_size_mb":160}, + {"source":"timm","name":"mobilenetv4_hybrid_medium","architecture":"mobilenetv4_hybrid_medium","task":"classification","input_shape":[1,3,256,256],"architecture_sha256":"2f1910d9409017b34ca5efdd8127a1a763cd8901caaf3ae84b61ed31b9d239bc","max_size_mb":160}, + {"source":"timm","name":"mobilenetv4_hybrid_medium_075","architecture":"mobilenetv4_hybrid_medium_075","task":"classification","input_shape":[1,3,224,224],"architecture_sha256":"32703add76b42ea2762c9dbec7e70bf0d623dcd1406da8bb222065e86287656f","max_size_mb":160}, + {"source":"timm","name":"mobileone_s0","architecture":"mobileone_s0","task":"classification","input_shape":[1,3,224,224],"architecture_sha256":"6790ff85cdbc1300a244211bb48679299c23d30f6a380c209f46c9388cd1856d","max_size_mb":160}, + {"source":"timm","name":"mobileone_s1","architecture":"mobileone_s1","task":"classification","input_shape":[1,3,224,224],"architecture_sha256":"9963c744bc90b1e13360c96f415ee581f69e2513c5f03f703510e05bbe26d753","max_size_mb":160}, + {"source":"timm","name":"mobileone_s2","architecture":"mobileone_s2","task":"classification","input_shape":[1,3,224,224],"architecture_sha256":"e48d40b15652f21bd0f4580dfd01ab092f7a3b04e278841c303276db7f12fddf","max_size_mb":160}, + {"source":"timm","name":"mobileone_s3","architecture":"mobileone_s3","task":"classification","input_shape":[1,3,224,224],"architecture_sha256":"c1ab57beba7ef2d2a8037929edd6544ef18a033a34f8aaf482e77a20b3203287","max_size_mb":160}, + {"source":"timm","name":"mobileone_s4","architecture":"mobileone_s4","task":"classification","input_shape":[1,3,224,224],"architecture_sha256":"ad2c6936f78a8f65b0be304ca26b6148f8362efc786e183c385619f5e969fd97","max_size_mb":160}, + {"source":"timm","name":"mobilevit_s","architecture":"mobilevit_s","task":"classification","input_shape":[1,3,256,256],"architecture_sha256":"0bbab02ce1fa5c58d85d7881b2164deb78286e3aac33119d13fc031b1689d0c2","max_size_mb":160}, + {"source":"timm","name":"mobilevit_xs","architecture":"mobilevit_xs","task":"classification","input_shape":[1,3,256,256],"architecture_sha256":"e7a20e63ce51dd68eba9c3572bb956740b9afdc9a755b9a7e91c4455fa3f2d2f","max_size_mb":160}, + {"source":"timm","name":"mobilevit_xxs","architecture":"mobilevit_xxs","task":"classification","input_shape":[1,3,256,256],"architecture_sha256":"4e4051cdeee0a4dc9c3e95098e0a9b84d9865856842d5808fde7f7cd9196fa10","max_size_mb":160}, + {"source":"timm","name":"mobilevitv2_050","architecture":"mobilevitv2_050","task":"classification","input_shape":[1,3,256,256],"architecture_sha256":"715099fbe256fff88d710bca73761c6e1ee3f8b5031c43fad55117694d810fbf","max_size_mb":160}, + {"source":"timm","name":"mobilevitv2_075","architecture":"mobilevitv2_075","task":"classification","input_shape":[1,3,256,256],"architecture_sha256":"311c048187636817cd20ad7bf35090efd6226d30e879dc27517765c26a00d881","max_size_mb":160}, + {"source":"timm","name":"mobilevitv2_100","architecture":"mobilevitv2_100","task":"classification","input_shape":[1,3,256,256],"architecture_sha256":"1e738f20cc12eb622e00afb42e223b5c08741560212491abfb82de1836ceb818","max_size_mb":160}, + {"source":"timm","name":"mobilevitv2_125","architecture":"mobilevitv2_125","task":"classification","input_shape":[1,3,256,256],"architecture_sha256":"1cd4837343622abc16cea424494c9cec666246f2b9da99e6676058705e33cdcd","max_size_mb":160}, + {"source":"timm","name":"mobilevitv2_150","architecture":"mobilevitv2_150","task":"classification","input_shape":[1,3,256,256],"architecture_sha256":"15bc4b0bfa5cc6b7685dc8bfd2c90bebddb4db037cc2c7a12d26a35863e545b5","max_size_mb":160}, + {"source":"timm","name":"mobilevitv2_175","architecture":"mobilevitv2_175","task":"classification","input_shape":[1,3,256,256],"architecture_sha256":"edbcef71ee918125f82b70a0711fcc7ec7f0871582bd691a09932092c23c62ab","max_size_mb":160}, + {"source":"timm","name":"mobilevitv2_200","architecture":"mobilevitv2_200","task":"classification","input_shape":[1,3,256,256],"architecture_sha256":"bb87219a77551b9b1332c00343bdb85c2890610749920986cf15aa48173dffef","max_size_mb":160}, + {"source":"timm","name":"mvitv2_small","architecture":"mvitv2_small","task":"classification","input_shape":[1,3,224,224],"architecture_sha256":"dec0a2b9ddde4cbe4336fc561d6003e8d3c87bf948a7adaaa6f593e4b978c9ca","max_size_mb":160}, + {"source":"timm","name":"mvitv2_small_cls","architecture":"mvitv2_small_cls","task":"classification","input_shape":[1,3,224,224],"architecture_sha256":"8893d86262167a7c41cca6c9359bd98aff99dbad9cce5b069a59e979191eedf0","max_size_mb":160}, + {"source":"timm","name":"mvitv2_tiny","architecture":"mvitv2_tiny","task":"classification","input_shape":[1,3,224,224],"architecture_sha256":"ea63b4580a0715d4953205a15159a63e0ea1696090efb032db8b8025dceb53d3","max_size_mb":160}, + {"source":"timm","name":"nest_small","architecture":"nest_small","task":"classification","input_shape":[1,3,224,224],"architecture_sha256":"cbd5ec4fe72a58e3089a4167cbc050a97490c5d4574806a001cff1ecc5f5cf53","max_size_mb":160}, + {"source":"timm","name":"nest_small_jx","architecture":"nest_small_jx","task":"classification","input_shape":[1,3,224,224],"architecture_sha256":"c5d46fff7986ce502cd900568973993dcaeac15e95a6e22ea10789dc6c7c546b","max_size_mb":160}, + {"source":"timm","name":"nest_tiny","architecture":"nest_tiny","task":"classification","input_shape":[1,3,224,224],"architecture_sha256":"4e32e593328a6d31aa88050ed2fedba6f2eb529361285b461664f08cc524576a","max_size_mb":160}, + {"source":"timm","name":"nest_tiny_jx","architecture":"nest_tiny_jx","task":"classification","input_shape":[1,3,224,224],"architecture_sha256":"04cf59ddd7a952ffc931e7ac08a1131048c63c4215859a4ae36aed9ffa264c1f","max_size_mb":160}, + {"source":"timm","name":"nextvit_small","architecture":"nextvit_small","task":"classification","input_shape":[1,3,224,224],"architecture_sha256":"6f7532788ab8e1e9f8eec948026a070c28772baf4d5bc079b622976dc47063d6","max_size_mb":160}, + {"source":"timm","name":"nf_ecaresnet26","architecture":"nf_ecaresnet26","task":"classification","input_shape":[1,3,224,224],"architecture_sha256":"925f99795cd6702604d81292f20657bb2bf97ee59dc4379bc3c53c6774f10377","max_size_mb":160}, + {"source":"timm","name":"nf_regnet_b0","architecture":"nf_regnet_b0","task":"classification","input_shape":[1,3,192,192],"architecture_sha256":"3458a1a4f36f383e610f0474827a1c7e4524d2dc77f36dd2fca363ff59fb72ed","max_size_mb":160}, + {"source":"timm","name":"nf_regnet_b1","architecture":"nf_regnet_b1","task":"classification","input_shape":[1,3,256,256],"architecture_sha256":"3bf81e122164a34ede15ad6d2884992d19be2ceb6ea491c011f7ba854d1c13d4","max_size_mb":160}, + {"source":"timm","name":"nf_regnet_b2","architecture":"nf_regnet_b2","task":"classification","input_shape":[1,3,240,240],"architecture_sha256":"2036ea91bebb8cf8fb1dc826d5db6962c5a9e33296de93ea5dfb33f4c55bc75d","max_size_mb":160}, + {"source":"timm","name":"nf_regnet_b3","architecture":"nf_regnet_b3","task":"classification","input_shape":[1,3,288,288],"architecture_sha256":"56bb74462ba8f84d92400ccf0fbb172d74f3cdb01a7135969ed6af3743a6ed42","max_size_mb":160}, + {"source":"timm","name":"nf_resnet26","architecture":"nf_resnet26","task":"classification","input_shape":[1,3,224,224],"architecture_sha256":"b493a8babc9a58678dd0fb47d7d87cc446ca29a77ff91c946544dc1908dba357","max_size_mb":160}, + {"source":"timm","name":"nf_seresnet26","architecture":"nf_seresnet26","task":"classification","input_shape":[1,3,224,224],"architecture_sha256":"2d66feecd1e5f289c1e2f53ee3e647ff4113c58a5ea475a45c783df2a07a2a90","max_size_mb":160}, + {"source":"timm","name":"pit_s_224","architecture":"pit_s_224","task":"classification","input_shape":[1,3,224,224],"architecture_sha256":"3c74dd88119fbfc932ccd9f103e851cbd5533ea776ce63f9374f0e5dd31f54bd","max_size_mb":160}, + {"source":"timm","name":"pit_s_distilled_224","architecture":"pit_s_distilled_224","task":"classification","input_shape":[1,3,224,224],"architecture_sha256":"d32653be99fb4384aaa90fb039454608ed01dd95896e9740134a34f99716049b","max_size_mb":160}, + {"source":"timm","name":"pit_ti_224","architecture":"pit_ti_224","task":"classification","input_shape":[1,3,224,224],"architecture_sha256":"cedcf222279fbd123fb244ffc4f37a3716b1faabc273c801b7af27dae923c3ee","max_size_mb":160}, + {"source":"timm","name":"pit_ti_distilled_224","architecture":"pit_ti_distilled_224","task":"classification","input_shape":[1,3,224,224],"architecture_sha256":"45f7726f44adf34d07e84abb9a0a25d6e628e296b8d3686492c04fbd8102587b","max_size_mb":160}, + {"source":"timm","name":"pit_xs_224","architecture":"pit_xs_224","task":"classification","input_shape":[1,3,224,224],"architecture_sha256":"8da5c0db29519a5251ebfbe7b72d902c4e6d03813502735a72024b7fc40db41a","max_size_mb":160}, + {"source":"timm","name":"pit_xs_distilled_224","architecture":"pit_xs_distilled_224","task":"classification","input_shape":[1,3,224,224],"architecture_sha256":"6c0d969389e6c6982aa74c3c2c4c1952a4987f4c053953d9cc88ed8e8ecad61c","max_size_mb":160}, + {"source":"timm","name":"poolformer_s12","architecture":"poolformer_s12","task":"classification","input_shape":[1,3,224,224],"architecture_sha256":"0e8bfd92aac366cecf1a366ced956aaf6283dede0a072d691abeb2efa4cb7b46","max_size_mb":160}, + {"source":"timm","name":"poolformer_s24","architecture":"poolformer_s24","task":"classification","input_shape":[1,3,224,224],"architecture_sha256":"7bb4a2b279fdc61648c156f762d796a65c268802056e9837606821fa4fef27f0","max_size_mb":160}, + {"source":"timm","name":"poolformer_s36","architecture":"poolformer_s36","task":"classification","input_shape":[1,3,224,224],"architecture_sha256":"4cc68d6a6ac3c43bf7343dced8a007a84d4e917533a94a73d5bf4386a567db77","max_size_mb":160}, + {"source":"timm","name":"poolformerv2_s12","architecture":"poolformerv2_s12","task":"classification","input_shape":[1,3,224,224],"architecture_sha256":"8008a54063a466a4038009ed979681ffc4306f9ccb1d5aa85bee11808aad8cda","max_size_mb":160}, + {"source":"timm","name":"poolformerv2_s24","architecture":"poolformerv2_s24","task":"classification","input_shape":[1,3,224,224],"architecture_sha256":"582bab363cc37b24da6548ce0a6ec8cfe3a7ecbc50bbeee13f907fa1b4a0ab7e","max_size_mb":160}, + {"source":"timm","name":"poolformerv2_s36","architecture":"poolformerv2_s36","task":"classification","input_shape":[1,3,224,224],"architecture_sha256":"52dbb5f4c2a43b1078a8c5a6b3ba7f28151ff6e32dea87ed652dbb067b98ee90","max_size_mb":160}, + {"source":"timm","name":"pvt_v2_b0","architecture":"pvt_v2_b0","task":"classification","input_shape":[1,3,224,224],"architecture_sha256":"d55ff06bb9d70fbfe10258a139f732ae6baf96d6deb328344db85f8bdb873d00","max_size_mb":160}, + {"source":"timm","name":"pvt_v2_b1","architecture":"pvt_v2_b1","task":"classification","input_shape":[1,3,224,224],"architecture_sha256":"fa8c636c8a9686d4dd44c07184c7b713c30691012f9f0bea219b0db410a3666e","max_size_mb":160}, + {"source":"timm","name":"pvt_v2_b2","architecture":"pvt_v2_b2","task":"classification","input_shape":[1,3,224,224],"architecture_sha256":"5d4ae78314a5ef97aa6e6b22a16a953223d94ab0d158a23f229d06e3d62636d5","max_size_mb":160}, + {"source":"timm","name":"pvt_v2_b2_li","architecture":"pvt_v2_b2_li","task":"classification","input_shape":[1,3,224,224],"architecture_sha256":"81340871763998ec3a1b1cb6d61a939e38e6caf0b700102f5783b42cd8214401","max_size_mb":160}, + {"source":"timm","name":"rdnet_tiny","architecture":"rdnet_tiny","task":"classification","input_shape":[1,3,224,224],"architecture_sha256":"a07baf2783e5547f4a254a63c683cfb567b35b16b4a2e90716d53898d8457210","max_size_mb":160}, + {"source":"timm","name":"regnetv_040","architecture":"regnetv_040","task":"classification","input_shape":[1,3,224,224],"architecture_sha256":"9494b28863badf25544190a23219194a20a90fc0bf5083f0ca29d39fed884666","max_size_mb":160}, + {"source":"timm","name":"regnetv_064","architecture":"regnetv_064","task":"classification","input_shape":[1,3,224,224],"architecture_sha256":"001038312f4da7b00413462930b3a51cb4a1c0ee02a57cf52a1e6b7e94800bca","max_size_mb":160}, + {"source":"timm","name":"regnetx_004_tv","architecture":"regnetx_004_tv","task":"classification","input_shape":[1,3,224,224],"architecture_sha256":"8465a13bf5ed5c72f44fa7b394c86b8d6b84080c11a350d9f6f1ca5bd56d7ef1","max_size_mb":160}, + {"source":"timm","name":"regnetx_032","architecture":"regnetx_032","task":"classification","input_shape":[1,3,224,224],"architecture_sha256":"8fd588cf2bcfeec94c105873c87841d3f356f65727c64e5e03f3c53395afb5f5","max_size_mb":160}, + {"source":"timm","name":"regnety_008_tv","architecture":"regnety_008_tv","task":"classification","input_shape":[1,3,224,224],"architecture_sha256":"992705606932d143d9132d9f3754f0050c93fc1d2998e6a898c2ca0c1afbc567","max_size_mb":160}, + {"source":"timm","name":"regnety_016","architecture":"regnety_016","task":"classification","input_shape":[1,3,224,224],"architecture_sha256":"62bb69ed1f1b3859c45e5cfeff613af28b7ae76ea1bd32e597ad1619f3e03b12","max_size_mb":160}, + {"source":"timm","name":"regnety_040","architecture":"regnety_040","task":"classification","input_shape":[1,3,224,224],"architecture_sha256":"c2e3b1fa8d37a97576a64fd0ef3ad2168063e4b822aff618d5f5b7d821639241","max_size_mb":160}, + {"source":"timm","name":"regnety_040_sgn","architecture":"regnety_040_sgn","task":"classification","input_shape":[1,3,224,224],"architecture_sha256":"d15007a4e4650747cdc66b1e4bd936379cb7c1331439b22cd7a7ab2d23d44fd1","max_size_mb":160}, + {"source":"timm","name":"regnety_080_tv","architecture":"regnety_080_tv","task":"classification","input_shape":[1,3,224,224],"architecture_sha256":"44acaa58f47a5535a5e793ec3a000543c80daaf0cfc3c2580c105b6720b3e049","max_size_mb":160}, + {"source":"timm","name":"regnetz_005","architecture":"regnetz_005","task":"classification","input_shape":[1,3,224,224],"architecture_sha256":"505883cf4bf3ab17d751186e999969af0b9879564029e6badff86d8153a7e3e8","max_size_mb":160}, + {"source":"timm","name":"regnetz_040","architecture":"regnetz_040","task":"classification","input_shape":[1,3,256,256],"architecture_sha256":"8983f3ffee0e128221a135a53207180a059a0777bd41c09000d872a02a9364d0","max_size_mb":160}, + {"source":"timm","name":"regnetz_040_h","architecture":"regnetz_040_h","task":"classification","input_shape":[1,3,256,256],"architecture_sha256":"436ec553985f337a72be0a80007178df7c171065150174c2cf1aaa35e8b6fd48","max_size_mb":160}, + {"source":"timm","name":"regnetz_b16","architecture":"regnetz_b16","task":"classification","input_shape":[1,3,224,224],"architecture_sha256":"a203f149ef5db1561f73495b86d13ee08a398c76408eb8ef632c1875ec080933","max_size_mb":160}, + {"source":"timm","name":"regnetz_b16_evos","architecture":"regnetz_b16_evos","task":"classification","input_shape":[1,3,224,224],"architecture_sha256":"df544b9d5180b8326a95a0a3acb4b579cb2147282f4b93861950a73a9a249628","max_size_mb":160}, + {"source":"timm","name":"regnetz_c16","architecture":"regnetz_c16","task":"classification","input_shape":[1,3,256,256],"architecture_sha256":"89c5da0b69d380a70c996d20294b4af00088449514f7b2bf1c79e8d0180327c0","max_size_mb":160}, + {"source":"timm","name":"regnetz_c16_evos","architecture":"regnetz_c16_evos","task":"classification","input_shape":[1,3,256,256],"architecture_sha256":"5305a853b1d220d8ca86b0fbed00e512978b7ad41350dcc333f0ffd9427eb9c4","max_size_mb":160}, + {"source":"timm","name":"regnetz_d32","architecture":"regnetz_d32","task":"classification","input_shape":[1,3,256,256],"architecture_sha256":"b17bbe1ee31563a0e07ba2cd4e6ee8cd4d6bf616379bca960d41a63c38b2ec40","max_size_mb":160}, + {"source":"timm","name":"regnetz_d8","architecture":"regnetz_d8","task":"classification","input_shape":[1,3,256,256],"architecture_sha256":"1ce16fbf04d19f0935e794f39fae0b548b8db6f44a9b6b40c5411716e121133a","max_size_mb":160}, + {"source":"timm","name":"regnetz_d8_evos","architecture":"regnetz_d8_evos","task":"classification","input_shape":[1,3,256,256],"architecture_sha256":"2828b0375aa761df3f33cc4e3d2c1b94d2f5cd919d21a0101f6bc04cfcfc0b45","max_size_mb":160}, + {"source":"timm","name":"repghostnet_050","architecture":"repghostnet_050","task":"classification","input_shape":[1,3,224,224],"architecture_sha256":"490b6a2ea3d2dfb662cf50dbfae5c72e3a341875d93544a43bcada944bdd4cbc","max_size_mb":160}, + {"source":"timm","name":"repghostnet_058","architecture":"repghostnet_058","task":"classification","input_shape":[1,3,224,224],"architecture_sha256":"1777ea4800db7883cd7488b3028491a15f0d1aad3ecfd72c82b33cb648baf9b3","max_size_mb":160}, + {"source":"timm","name":"repghostnet_080","architecture":"repghostnet_080","task":"classification","input_shape":[1,3,224,224],"architecture_sha256":"05ff486ea5324a67b7b93e83d1399f5f4218ca1ddf936fe5fad0f5712a612f80","max_size_mb":160}, + {"source":"timm","name":"repghostnet_100","architecture":"repghostnet_100","task":"classification","input_shape":[1,3,224,224],"architecture_sha256":"88666470a2a1ace89fc03c07397e3fb6e891ba56c3f30053bd0f34d4f9e2c3fd","max_size_mb":160}, + {"source":"timm","name":"repghostnet_111","architecture":"repghostnet_111","task":"classification","input_shape":[1,3,224,224],"architecture_sha256":"b5b7ca9d1cce3f8d9a3e6144f53005009ccf2900e2918564f21113b9107cd911","max_size_mb":160}, + {"source":"timm","name":"repghostnet_130","architecture":"repghostnet_130","task":"classification","input_shape":[1,3,224,224],"architecture_sha256":"02e0091dfd2fff7193aebe0b12509c3ea5cdcbfbb0c7fa62b0ae4a9ae9f63c40","max_size_mb":160}, + {"source":"timm","name":"repghostnet_150","architecture":"repghostnet_150","task":"classification","input_shape":[1,3,224,224],"architecture_sha256":"8cc38fa46f2d949b628789e1cd4e1fe3cf3e1823d816c4f9aad757d71140dde2","max_size_mb":160}, + {"source":"timm","name":"repghostnet_200","architecture":"repghostnet_200","task":"classification","input_shape":[1,3,224,224],"architecture_sha256":"312be7944017808f1e9bb7da12dc8e3b096b8d6a754c6a72f8b16fa78bb2891e","max_size_mb":160}, + {"source":"timm","name":"repvgg_a0","architecture":"repvgg_a0","task":"classification","input_shape":[1,3,224,224],"architecture_sha256":"ba98f85cb2f1727bdd8555ae50cecad55591eacbe5946cc44b9a93e5b7c93293","max_size_mb":160}, + {"source":"timm","name":"repvgg_a1","architecture":"repvgg_a1","task":"classification","input_shape":[1,3,224,224],"architecture_sha256":"00587094e16540fb351b5902e7e2cab6da6254aedf758eb29f44092dd27a592a","max_size_mb":160}, + {"source":"timm","name":"repvgg_a2","architecture":"repvgg_a2","task":"classification","input_shape":[1,3,224,224],"architecture_sha256":"32822b8526b3914829dc0c0b0e1ef18238482569c130e5862071144c7d9bab2a","max_size_mb":160}, + {"source":"timm","name":"repvgg_b0","architecture":"repvgg_b0","task":"classification","input_shape":[1,3,224,224],"architecture_sha256":"29a5301b497f7cda96352daba59400be602a274620fe2b896a721c2691d7d8d7","max_size_mb":160}, + {"source":"timm","name":"repvgg_b1g4","architecture":"repvgg_b1g4","task":"classification","input_shape":[1,3,224,224],"architecture_sha256":"a46b962006f3ad3b3965aab5fdc313a5f50b22af53b93769f1ef1bdfd4c88c8a","max_size_mb":160}, + {"source":"timm","name":"repvit_m0_9","architecture":"repvit_m0_9","task":"classification","input_shape":[1,3,224,224],"architecture_sha256":"3c6070f50b163b1aa8c23df60378d1c5ce36c2f02d3bae88ca6a68d4802460a8","max_size_mb":160}, + {"source":"timm","name":"repvit_m1","architecture":"repvit_m1","task":"classification","input_shape":[1,3,224,224],"architecture_sha256":"35a47afdf91622d5d6ab4d683ce35cf78b4fa30c107065664c927c58d6eafef0","max_size_mb":160}, + {"source":"timm","name":"repvit_m1_0","architecture":"repvit_m1_0","task":"classification","input_shape":[1,3,224,224],"architecture_sha256":"f9da31adb25fd897f71ec34ce1013a13b66e191685b88a92f8f0c258e35d1be4","max_size_mb":160}, + {"source":"timm","name":"repvit_m1_1","architecture":"repvit_m1_1","task":"classification","input_shape":[1,3,224,224],"architecture_sha256":"8e605f007379706b758aef124f2ee832239140309f8079a528539e1f72b42cb5","max_size_mb":160}, + {"source":"timm","name":"repvit_m1_5","architecture":"repvit_m1_5","task":"classification","input_shape":[1,3,224,224],"architecture_sha256":"84b695c4fea9e17f7428ae83a4b03d5009e5a66d8ac956be0d8c55d32d1f6b35","max_size_mb":160}, + {"source":"timm","name":"repvit_m2","architecture":"repvit_m2","task":"classification","input_shape":[1,3,224,224],"architecture_sha256":"a63f286e6bb99e2459850aaf2618993a06a0aedbb1b994f5ee49fd752daaef02","max_size_mb":160}, + {"source":"timm","name":"repvit_m2_3","architecture":"repvit_m2_3","task":"classification","input_shape":[1,3,224,224],"architecture_sha256":"7e363904b632deb6db7c03cab3a0561eb71b97f33b465afbc9b0784ceb330ef5","max_size_mb":160}, + {"source":"timm","name":"repvit_m3","architecture":"repvit_m3","task":"classification","input_shape":[1,3,224,224],"architecture_sha256":"3e30294fc1558205fe6bbbf026e36172ee5520f439b4b880f5d97b4a249ecb76","max_size_mb":160}, + {"source":"timm","name":"res2net50_14w_8s","architecture":"res2net50_14w_8s","task":"classification","input_shape":[1,3,224,224],"architecture_sha256":"d56d097c8b5e95414fd006f6c377a15b659f1ec2bd073bb60391b148fe921ffe","max_size_mb":160}, + {"source":"timm","name":"res2net50_26w_4s","architecture":"res2net50_26w_4s","task":"classification","input_shape":[1,3,224,224],"architecture_sha256":"f9967140d3a3b055b63a3fff9fc8a6681405fc6a0f8e83c2292a93fbb9cce7ae","max_size_mb":160}, + {"source":"timm","name":"res2net50_26w_6s","architecture":"res2net50_26w_6s","task":"classification","input_shape":[1,3,224,224],"architecture_sha256":"af6314075cb68e059b8d04aad67cd0e09093e2d5d971d48ac1c961c6be9c5af8","max_size_mb":160}, + {"source":"timm","name":"res2net50_48w_2s","architecture":"res2net50_48w_2s","task":"classification","input_shape":[1,3,224,224],"architecture_sha256":"d06fdab18d35bd542cd301196fbed2d43b5f543643d07f5c87de1990e12d9100","max_size_mb":160}, + {"source":"timm","name":"res2net50d","architecture":"res2net50d","task":"classification","input_shape":[1,3,224,224],"architecture_sha256":"2a8d10a26bcc532c283402028a18438a705a6864df9193da72ec12e3d0a3ed8a","max_size_mb":160}, + {"source":"timm","name":"res2next50","architecture":"res2next50","task":"classification","input_shape":[1,3,224,224],"architecture_sha256":"27bd8af8651e7abe769677792ae3fcf4059646bb0b8a17f09b6462ce590726f9","max_size_mb":160}, + {"source":"timm","name":"resmlp_12_224","architecture":"resmlp_12_224","task":"classification","input_shape":[1,3,224,224],"architecture_sha256":"5e10dd4fffef594b53e80a416a1b0eb6f6c0052da6450bb5565faed17820533a","max_size_mb":160}, + {"source":"timm","name":"resmlp_24_224","architecture":"resmlp_24_224","task":"classification","input_shape":[1,3,224,224],"architecture_sha256":"0b89dab5d4e06ef58dd686ec1528a229d0a5b23d101204bc3d6af32502d9cf75","max_size_mb":160}, + {"source":"timm","name":"resnest14d","architecture":"resnest14d","task":"classification","input_shape":[1,3,224,224],"architecture_sha256":"00918f573c1195a577a5bf94c849b8917026f14aa8cf35cd1dc3a7060b96d02e","max_size_mb":160}, + {"source":"timm","name":"resnest26d","architecture":"resnest26d","task":"classification","input_shape":[1,3,224,224],"architecture_sha256":"60e68e5786f29aae23f1c84ff5234e1a2dd0f88503feb737d69e58220e2c5947","max_size_mb":160}, + {"source":"timm","name":"resnest50d","architecture":"resnest50d","task":"classification","input_shape":[1,3,224,224],"architecture_sha256":"26d94902efb4267e9cd193dea446beb7135f07efedc579ef94fd6dc2b98fbaf8","max_size_mb":160}, + {"source":"timm","name":"resnest50d_1s4x24d","architecture":"resnest50d_1s4x24d","task":"classification","input_shape":[1,3,224,224],"architecture_sha256":"965c2fff3afd832a93302f42d088b6a43b18630841a6282df4d180652a67f87e","max_size_mb":160}, + {"source":"timm","name":"resnest50d_4s2x40d","architecture":"resnest50d_4s2x40d","task":"classification","input_shape":[1,3,224,224],"architecture_sha256":"6da6a7356c7c210f9acb2acad2cf690071aa269b39754472e249e53346b996ad","max_size_mb":160}, + {"source":"timm","name":"resnet10t","architecture":"resnet10t","task":"classification","input_shape":[1,3,176,176],"architecture_sha256":"63458f5486807d98c2dc0d842b9371698d7e7bfca2a5f2917d31f2ab9abafba2","max_size_mb":160}, + {"source":"timm","name":"resnet14t","architecture":"resnet14t","task":"classification","input_shape":[1,3,176,176],"architecture_sha256":"8956c2b21c90c6d7b11762c05b95284c4c9d13ef4e168e69bdaf0266c0882a98","max_size_mb":160}, + {"source":"timm","name":"resnet18d","architecture":"resnet18d","task":"classification","input_shape":[1,3,224,224],"architecture_sha256":"5bd2827e127c918d848e253a266ffd6f3d73262044a27d8ad4d66e9811fa22b3","max_size_mb":160}, + {"source":"timm","name":"resnet26d","architecture":"resnet26d","task":"classification","input_shape":[1,3,224,224],"architecture_sha256":"564850ad69ba3ee94f2a52eaee72f7fab756f9b91594f0a3a4aa0db7fdb0c773","max_size_mb":160}, + {"source":"timm","name":"resnet26t","architecture":"resnet26t","task":"classification","input_shape":[1,3,256,256],"architecture_sha256":"0046a2c4e332f900eb6a63daf17e095557b245216922ab84166bdac7985d0514","max_size_mb":160}, + {"source":"timm","name":"resnet32ts","architecture":"resnet32ts","task":"classification","input_shape":[1,3,256,256],"architecture_sha256":"55b1660338c2300cb950b54d704973d7248171deb6bf255b1a7b821cd5493df0","max_size_mb":160}, + {"source":"timm","name":"resnet33ts","architecture":"resnet33ts","task":"classification","input_shape":[1,3,256,256],"architecture_sha256":"dc0455b5fce8cbcbb59bcf6017d63ba59497a62b7ab1bb60198c56f38c758c07","max_size_mb":160}, + {"source":"timm","name":"resnet34d","architecture":"resnet34d","task":"classification","input_shape":[1,3,224,224],"architecture_sha256":"f98e5857de460f5ae441dfc0f10b291aa8f4550a20ff5175b393aac293c04cea","max_size_mb":160}, + {"source":"timm","name":"resnet50_clip","architecture":"resnet50_clip","task":"classification","input_shape":[1,3,224,224],"architecture_sha256":"8cd0dcdb74bb0a1f6827657193379c9a8ceede8b47fc4fee3d9234d1d4eea786","max_size_mb":160}, + {"source":"timm","name":"resnet50_clip_gap","architecture":"resnet50_clip_gap","task":"classification","input_shape":[1,3,224,224],"architecture_sha256":"14b91061ca352d925642c5f6e7feb692477a5ed0034c6e62e4399ed0dcf63e68","max_size_mb":160}, + {"source":"timm","name":"resnet50_gn","architecture":"resnet50_gn","task":"classification","input_shape":[1,3,224,224],"architecture_sha256":"ead8bfa5ed4273c0247b96976f8718eb3139e4c87049255e7f813e79d6f6bebe","max_size_mb":160}, + {"source":"timm","name":"resnet50_mlp","architecture":"resnet50_mlp","task":"classification","input_shape":[1,3,256,256],"architecture_sha256":"0e71f8fe720c6739356dcd92e6baf5b461cec0985cbd46d0da10f0608dd14de3","max_size_mb":160}, + {"source":"timm","name":"resnet50c","architecture":"resnet50c","task":"classification","input_shape":[1,3,224,224],"architecture_sha256":"0a83911e0dd418fb6cba9ce8e8cd5c743b944bad573fc85bf59f7f27a1b52a69","max_size_mb":160}, + {"source":"timm","name":"resnet50d","architecture":"resnet50d","task":"classification","input_shape":[1,3,224,224],"architecture_sha256":"3682e5d9fd0370da0286a3f35ebb29f18fa4c0762a2c37e6ff954c16bcab36e0","max_size_mb":160}, + {"source":"timm","name":"resnet50s","architecture":"resnet50s","task":"classification","input_shape":[1,3,224,224],"architecture_sha256":"77ac4a9ff530674c8b8ad7f0c91812a215294a10a922289f0fddaf02b5b684dc","max_size_mb":160}, + {"source":"timm","name":"resnet50t","architecture":"resnet50t","task":"classification","input_shape":[1,3,224,224],"architecture_sha256":"cba5a0aba33cd3d3f47867cb641dfa38bf85a1725e7ce1ee3bec2b942ec7ded1","max_size_mb":160}, + {"source":"timm","name":"resnet51q","architecture":"resnet51q","task":"classification","input_shape":[1,3,256,256],"architecture_sha256":"8ba9c741a78808cf8345c311a037f6084ebb60bb67b047d3310505e0da5534e3","max_size_mb":160}, + {"source":"timm","name":"resnet61q","architecture":"resnet61q","task":"classification","input_shape":[1,3,256,256],"architecture_sha256":"38647a2de0273f5a39a5e376a7268d4afe90b369aba675b8173452fe9ac68151","max_size_mb":160}, + {"source":"timm","name":"resnetaa34d","architecture":"resnetaa34d","task":"classification","input_shape":[1,3,224,224],"architecture_sha256":"a1f1d4bbe29680da913ab29311e6740b3555e4cb8de7839a2d5729f74e6aed2d","max_size_mb":160}, + {"source":"timm","name":"resnetaa50","architecture":"resnetaa50","task":"classification","input_shape":[1,3,224,224],"architecture_sha256":"6a812d96d75b4a0b6d17f628b111b244f995ecf17c0736c3f12b15c365220bf3","max_size_mb":160}, + {"source":"timm","name":"resnetblur18","architecture":"resnetblur18","task":"classification","input_shape":[1,3,224,224],"architecture_sha256":"86b1ef52ff698c972e14bb9c6df3d0c66adbfbbe212aa294ac8f3a7dd3519ffb","max_size_mb":160}, + {"source":"timm","name":"resnetblur50","architecture":"resnetblur50","task":"classification","input_shape":[1,3,224,224],"architecture_sha256":"d9aa348b044ad445b94d34297a5eb3d3f87d7dc414f2f07ceaf13fe2a60b5afa","max_size_mb":160}, + {"source":"timm","name":"resnetblur50d","architecture":"resnetblur50d","task":"classification","input_shape":[1,3,224,224],"architecture_sha256":"1d87fb1dc5299ab2f2915771ab26a60aba67c5a9117067aa7211cb046e1027cf","max_size_mb":160}, + {"source":"timm","name":"resnetrs50","architecture":"resnetrs50","task":"classification","input_shape":[1,3,160,160],"architecture_sha256":"9dfddc8b9681dcd43098d15163a72133f149b1a49e203cba0238644c041dd5c4","max_size_mb":160}, + {"source":"timm","name":"resnetv2_18","architecture":"resnetv2_18","task":"classification","input_shape":[1,3,224,224],"architecture_sha256":"13690fce710892474db76145578a2900b4a3a0653e3371c5796c8ea5007cf774","max_size_mb":160}, + {"source":"timm","name":"resnetv2_18d","architecture":"resnetv2_18d","task":"classification","input_shape":[1,3,224,224],"architecture_sha256":"9380d8ad5c58fce8bd26b8b4197c61668e77fa4085cedf5ba65088ef88d3c086","max_size_mb":160}, + {"source":"timm","name":"resnetv2_34","architecture":"resnetv2_34","task":"classification","input_shape":[1,3,224,224],"architecture_sha256":"52d0eda00924048cc40875061cad90e150d0820b660520419396f46397171ce4","max_size_mb":160}, + {"source":"timm","name":"resnetv2_34d","architecture":"resnetv2_34d","task":"classification","input_shape":[1,3,224,224],"architecture_sha256":"20f6bc662dcbe99884072d26235d960b15cf926d751a6c1b0abe38229a4f4551","max_size_mb":160}, + {"source":"timm","name":"resnetv2_50","architecture":"resnetv2_50","task":"classification","input_shape":[1,3,224,224],"architecture_sha256":"88557cb00dbede7a9b00315a4f9750434f9088797bf5f887602ae41eb7927f08","max_size_mb":160}, + {"source":"timm","name":"resnetv2_50d","architecture":"resnetv2_50d","task":"classification","input_shape":[1,3,224,224],"architecture_sha256":"701e0a4c1fa7648cab5df29a4f5cfed707f533b270a4d963b9d63bcb05f0106c","max_size_mb":160}, + {"source":"timm","name":"resnetv2_50d_evos","architecture":"resnetv2_50d_evos","task":"classification","input_shape":[1,3,224,224],"architecture_sha256":"f8d71e689d482b824cc92c3adc907923c5585e1c97c370fbdb368ed0bcd1fc07","max_size_mb":160}, + {"source":"timm","name":"resnetv2_50d_frn","architecture":"resnetv2_50d_frn","task":"classification","input_shape":[1,3,224,224],"architecture_sha256":"ae28efec8286419e7cd067c31314ae7e71a40fb1734d35b5821c611e025404f6","max_size_mb":160}, + {"source":"timm","name":"resnetv2_50d_gn","architecture":"resnetv2_50d_gn","task":"classification","input_shape":[1,3,224,224],"architecture_sha256":"ce21cdc010abd25a2ae2f0b84656cca824a7921424d4c5a4161fc2ed2eff7356","max_size_mb":160}, + {"source":"timm","name":"resnetv2_50t","architecture":"resnetv2_50t","task":"classification","input_shape":[1,3,224,224],"architecture_sha256":"45cefc14d2cf962f5b90b4648bfbfdfa0335d55b2576f1ea86ed2b9079fbbb44","max_size_mb":160}, + {"source":"timm","name":"resnext26ts","architecture":"resnext26ts","task":"classification","input_shape":[1,3,256,256],"architecture_sha256":"af0ed484df18dc3ed8e0932e4a7281aa838f776e7422bedd7c5f9a65c09eebfb","max_size_mb":160}, + {"source":"timm","name":"resnext50d_32x4d","architecture":"resnext50d_32x4d","task":"classification","input_shape":[1,3,224,224],"architecture_sha256":"a65838bf1c5b4d067fcf08ce1cd8b99430adbd4c9c34233ed149ed6cdee30f84","max_size_mb":160}, + {"source":"timm","name":"rexnet_100","architecture":"rexnet_100","task":"classification","input_shape":[1,3,224,224],"architecture_sha256":"dd33960b2fc995252445ee25988216f1f9393e0d47abbdb81c3885f3b4f488bc","max_size_mb":160}, + {"source":"timm","name":"rexnet_130","architecture":"rexnet_130","task":"classification","input_shape":[1,3,224,224],"architecture_sha256":"53744740bd4ec0571b0b1b77d41898f0413c878610151e27aafce6e0f7a8705e","max_size_mb":160}, + {"source":"timm","name":"rexnet_150","architecture":"rexnet_150","task":"classification","input_shape":[1,3,224,224],"architecture_sha256":"9a76bca85f87cbcb7d4eaa434779453e7455b8f135323406f41739d7b9793aad","max_size_mb":160}, + {"source":"timm","name":"rexnet_200","architecture":"rexnet_200","task":"classification","input_shape":[1,3,224,224],"architecture_sha256":"83df1cef2a5f85607672e03c79eddbd5b905c9820ff6d8bcb5f02e8659293c80","max_size_mb":160}, + {"source":"timm","name":"rexnet_300","architecture":"rexnet_300","task":"classification","input_shape":[1,3,224,224],"architecture_sha256":"83a424107e7a07eeb73448d30c7293fdd4335af225a5420e72e76fe501713b98","max_size_mb":160}, + {"source":"timm","name":"rexnetr_100","architecture":"rexnetr_100","task":"classification","input_shape":[1,3,224,224],"architecture_sha256":"1a5cd08ea4526cca863a3b58d815d0164f5fd6ae20de5a94257253a7eb840506","max_size_mb":160}, + {"source":"timm","name":"rexnetr_130","architecture":"rexnetr_130","task":"classification","input_shape":[1,3,224,224],"architecture_sha256":"debd877ad4a9a9184677d50d55d1c6131049c9a6c38ee1579182420de76bf1aa","max_size_mb":160}, + {"source":"timm","name":"rexnetr_150","architecture":"rexnetr_150","task":"classification","input_shape":[1,3,224,224],"architecture_sha256":"1bc854814c0d4605753e4596eb4b93b8b970eeb1b67e7e2e1f7c1979dbe295cc","max_size_mb":160}, + {"source":"timm","name":"rexnetr_200","architecture":"rexnetr_200","task":"classification","input_shape":[1,3,224,224],"architecture_sha256":"80e4b70569bf2593ce8ec419b4beb1f1e3e6bff532a01aa9e1a4f40dbb3830f5","max_size_mb":160}, + {"source":"timm","name":"rexnetr_300","architecture":"rexnetr_300","task":"classification","input_shape":[1,3,224,224],"architecture_sha256":"d94f24a982c838a84f8bfbef1169e2dbc89f5612b02bb2d4a835f3eb4527ae61","max_size_mb":160}, + {"source":"timm","name":"sam2_hiera_small","architecture":"sam2_hiera_small","task":"classification","input_shape":[1,3,896,896],"architecture_sha256":"4d0e61289dc65fe6f5aa1b30920e1f375db9e54d80f88005a147422191b18628","max_size_mb":160}, + {"source":"timm","name":"sam2_hiera_tiny","architecture":"sam2_hiera_tiny","task":"classification","input_shape":[1,3,896,896],"architecture_sha256":"1d939b58f2449322c1bce07ec20c301500838ad89767fb8b99181282bf3733ea","max_size_mb":160}, + {"source":"timm","name":"sebotnet33ts_256","architecture":"sebotnet33ts_256","task":"classification","input_shape":[1,3,256,256],"architecture_sha256":"5dbb3ebbc63b01604cd772f06380e6376a0fb74f6b07a5c003bfe29780946d87","max_size_mb":160}, + {"source":"timm","name":"sedarknet21","architecture":"sedarknet21","task":"classification","input_shape":[1,3,256,256],"architecture_sha256":"29b1111d6a736e4f5dce9a0da5c78b426a6bc8fa0f95a3a349336c8625a22f63","max_size_mb":160}, + {"source":"timm","name":"semnasnet_050","architecture":"semnasnet_050","task":"classification","input_shape":[1,3,224,224],"architecture_sha256":"74cd8a8c9ec79122374a2dbf280b0052f16b6a3a2da31a7ef2561a3f3d6bd07b","max_size_mb":160}, + {"source":"timm","name":"semnasnet_075","architecture":"semnasnet_075","task":"classification","input_shape":[1,3,224,224],"architecture_sha256":"8f3f96a4a00f458de1b1a8285d61e46c104eb75bc1c027148bc98c108663525b","max_size_mb":160}, + {"source":"timm","name":"semnasnet_100","architecture":"semnasnet_100","task":"classification","input_shape":[1,3,224,224],"architecture_sha256":"04c4d44b152ffdfd05566248f290cc510203d938b37ddc1880494060e84136cc","max_size_mb":160}, + {"source":"timm","name":"semnasnet_140","architecture":"semnasnet_140","task":"classification","input_shape":[1,3,224,224],"architecture_sha256":"4c5c69f73dadc951be14d6a5842af6e542c07263973824a6a26f846718ddeb2b","max_size_mb":160}, + {"source":"timm","name":"sequencer2d_m","architecture":"sequencer2d_m","task":"classification","input_shape":[1,3,224,224],"architecture_sha256":"7ee4354077fe252b3361ca13bd318ec60d0a19b72960b23a860fb5d297c09bce","max_size_mb":160}, + {"source":"timm","name":"sequencer2d_s","architecture":"sequencer2d_s","task":"classification","input_shape":[1,3,224,224],"architecture_sha256":"b4467d2f023ff52236f96fd4a3eb2a6e0512a930b8634a41e3cd1b3bcc38dbfb","max_size_mb":160}, + {"source":"timm","name":"seresnet33ts","architecture":"seresnet33ts","task":"classification","input_shape":[1,3,256,256],"architecture_sha256":"6aae4e6e54cd244424a7b84d6849adcbef07053229bad0e932e6716da1def3e1","max_size_mb":160}, + {"source":"timm","name":"seresnet50t","architecture":"seresnet50t","task":"classification","input_shape":[1,3,224,224],"architecture_sha256":"6927165072ffb2fd1a96aff63b18234013166cda201f1803e41ae5a637a94c21","max_size_mb":160}, + {"source":"timm","name":"seresnetaa50d","architecture":"seresnetaa50d","task":"classification","input_shape":[1,3,224,224],"architecture_sha256":"20c733aac1efbe0fdd2aac8ff6b8ab6ee0d6e95d7ee0df87029045288fe63045","max_size_mb":160}, + {"source":"timm","name":"seresnext26d_32x4d","architecture":"seresnext26d_32x4d","task":"classification","input_shape":[1,3,224,224],"architecture_sha256":"9a9a4d19614a3898048605c60aef5f5a2675991c01713f868458ee03c2c4d64b","max_size_mb":160}, + {"source":"timm","name":"seresnext26t_32x4d","architecture":"seresnext26t_32x4d","task":"classification","input_shape":[1,3,224,224],"architecture_sha256":"30f9fe441e6c2bee3badc0e597ce96b2b42452c4474cc7ff6a583e6ace80263c","max_size_mb":160}, + {"source":"timm","name":"seresnext26ts","architecture":"seresnext26ts","task":"classification","input_shape":[1,3,256,256],"architecture_sha256":"fa3af12287a3922c4564812fd9d7663691b16f0c81f6058049bc8d9445630340","max_size_mb":160}, + {"source":"timm","name":"shvit_s1","architecture":"shvit_s1","task":"classification","input_shape":[1,3,224,224],"architecture_sha256":"cea714e2b6d2ff4608d888b2df87531198a1c3bc1d6e39a8936f3494fc31a619","max_size_mb":160}, + {"source":"timm","name":"shvit_s2","architecture":"shvit_s2","task":"classification","input_shape":[1,3,224,224],"architecture_sha256":"77811e6d0fb1dabe4c857682fd0d58cfab89fd9630adf2ebe4f397c402954b7e","max_size_mb":160}, + {"source":"timm","name":"shvit_s3","architecture":"shvit_s3","task":"classification","input_shape":[1,3,224,224],"architecture_sha256":"1a056d195af4792f5a3fef0c934eaf2245a9d359d798914fc343f6d40b0b8877","max_size_mb":160}, + {"source":"timm","name":"shvit_s4","architecture":"shvit_s4","task":"classification","input_shape":[1,3,256,256],"architecture_sha256":"c1fbf4514acb02f2a553e6e7cbc710d42c9b5b2a971bac43e3b7428c98a3645c","max_size_mb":160}, + {"source":"timm","name":"skresnet18","architecture":"skresnet18","task":"classification","input_shape":[1,3,224,224],"architecture_sha256":"fc815c952b83c347e309a638e2dbae5251c6c69860199bd21c50297f0195a3b8","max_size_mb":160}, + {"source":"timm","name":"skresnet34","architecture":"skresnet34","task":"classification","input_shape":[1,3,224,224],"architecture_sha256":"2b785f36d2373a1c17e70bffb4b204e1ab6827c6f8443a86f42860a6ece084d0","max_size_mb":160}, + {"source":"timm","name":"skresnet50","architecture":"skresnet50","task":"classification","input_shape":[1,3,224,224],"architecture_sha256":"1cf4b6e7b96cacb81665d4b27b87737851e2018063f009055656f04fafdf03b7","max_size_mb":160}, + {"source":"timm","name":"skresnet50d","architecture":"skresnet50d","task":"classification","input_shape":[1,3,224,224],"architecture_sha256":"d2e4cd53221cac5f8702cd2afebca7035182725b4bbb07e56d39d662628bdae3","max_size_mb":160}, + {"source":"timm","name":"skresnext50_32x4d","architecture":"skresnext50_32x4d","task":"classification","input_shape":[1,3,224,224],"architecture_sha256":"f4f99392bd5d599a2fcb85dabf043d8f2568dece72c235b9f2fc3073ebbdd353","max_size_mb":160}, + {"source":"timm","name":"spnasnet_100","architecture":"spnasnet_100","task":"classification","input_shape":[1,3,224,224],"architecture_sha256":"c132e5f1a843df6224d2538f2d473e9543f1d6f5ed02c1a7d88509b53c22fa77","max_size_mb":160}, + {"source":"timm","name":"starnet_s050","architecture":"starnet_s050","task":"classification","input_shape":[1,3,224,224],"architecture_sha256":"cdbfc944cb9259f41af71b176697256bcf8aac32d39161327cb2d664eb7345df","max_size_mb":160}, + {"source":"timm","name":"starnet_s1","architecture":"starnet_s1","task":"classification","input_shape":[1,3,224,224],"architecture_sha256":"bd6dbc5eb7180894519b616d6ad7a885d2e98d9978b4765c706d6cbdb5f3a5aa","max_size_mb":160}, + {"source":"timm","name":"starnet_s100","architecture":"starnet_s100","task":"classification","input_shape":[1,3,224,224],"architecture_sha256":"58bc684f39cbcf7ac7f27dad4299b626c4aba797d2ba44f4f5ee2c54093d5938","max_size_mb":160}, + {"source":"timm","name":"starnet_s150","architecture":"starnet_s150","task":"classification","input_shape":[1,3,224,224],"architecture_sha256":"2b5660ef16fde0e9fda3142b57dc1a43c671b95a88dbe317de5fcb13afdb07bb","max_size_mb":160}, + {"source":"timm","name":"starnet_s2","architecture":"starnet_s2","task":"classification","input_shape":[1,3,224,224],"architecture_sha256":"b5e26640e35d519d98b5db3a51ada1440166cf0d876507ed6d82594bd11f7b2f","max_size_mb":160}, + {"source":"timm","name":"starnet_s3","architecture":"starnet_s3","task":"classification","input_shape":[1,3,224,224],"architecture_sha256":"ca2244c252347acb5c562ba5e574f46a882ac9330732c615e8f1d8d2d54184b4","max_size_mb":160}, + {"source":"timm","name":"starnet_s4","architecture":"starnet_s4","task":"classification","input_shape":[1,3,224,224],"architecture_sha256":"9c0851841e48e0e144a33a8a2cdf33f9e29798efabca29dc885f38d0e100d7bd","max_size_mb":160}, + {"source":"timm","name":"swiftformer_l1","architecture":"swiftformer_l1","task":"classification","input_shape":[1,3,224,224],"architecture_sha256":"fd7049dd89bf13a233e0aa7204f8fa6247786a01c6af49e65597ba58273a9fab","max_size_mb":160}, + {"source":"timm","name":"swiftformer_l3","architecture":"swiftformer_l3","task":"classification","input_shape":[1,3,224,224],"architecture_sha256":"99e02030c5cca1c5cbeb0f92b0fd8afe547962a90b027b8710375d58ba06bf69","max_size_mb":160}, + {"source":"timm","name":"swiftformer_s","architecture":"swiftformer_s","task":"classification","input_shape":[1,3,224,224],"architecture_sha256":"6af0d9e5f547a084aa83e2572062f552455200bc795eeaaadbfa59b51bea3cca","max_size_mb":160}, + {"source":"timm","name":"swiftformer_xs","architecture":"swiftformer_xs","task":"classification","input_shape":[1,3,224,224],"architecture_sha256":"f43e5fe6a3a0583ed4c6796e3fd15ec5a52e5cca156832af2cfad80e2c73994b","max_size_mb":160}, + {"source":"timm","name":"swin_s3_tiny_224","architecture":"swin_s3_tiny_224","task":"classification","input_shape":[1,3,224,224],"architecture_sha256":"61067984fe76c56bcd1ccbf2cd28200a0187e769d28cb0841ff3a9fa026a3af5","max_size_mb":160}, + {"source":"timm","name":"swin_tiny_patch4_window7_224","architecture":"swin_tiny_patch4_window7_224","task":"classification","input_shape":[1,3,224,224],"architecture_sha256":"895ee27275cd7618e5aa8c99559cd3ac6f6382a0f9851901ba982de797da7215","max_size_mb":160}, + {"source":"timm","name":"swinv2_cr_tiny_224","architecture":"swinv2_cr_tiny_224","task":"classification","input_shape":[1,3,224,224],"architecture_sha256":"4858de15e104f0d8379641fe68fa135986a03c6cbe9feabfd97ea5ab5f758a1a","max_size_mb":160}, + {"source":"timm","name":"swinv2_cr_tiny_384","architecture":"swinv2_cr_tiny_384","task":"classification","input_shape":[1,3,384,384],"architecture_sha256":"d41393ff3d4eae0a014b6140bf0a983f7607949852df8d623587778564bad025","max_size_mb":160}, + {"source":"timm","name":"swinv2_cr_tiny_ns_224","architecture":"swinv2_cr_tiny_ns_224","task":"classification","input_shape":[1,3,224,224],"architecture_sha256":"0b6fe15a9bcfd451e405e77b8a3fa84a84271b998161287c79633c57c6286b42","max_size_mb":160}, + {"source":"timm","name":"swinv2_tiny_window16_256","architecture":"swinv2_tiny_window16_256","task":"classification","input_shape":[1,3,256,256],"architecture_sha256":"fae2315f9a34d83721344e9d90c84ed5432ea5216d8a3fc00b442e3ffc924a2b","max_size_mb":160}, + {"source":"timm","name":"swinv2_tiny_window8_256","architecture":"swinv2_tiny_window8_256","task":"classification","input_shape":[1,3,256,256],"architecture_sha256":"7ca69cdefaa49869bb4fbbf27894250e5a76e41ae1e6bb953b207d45278f9920","max_size_mb":160}, + {"source":"timm","name":"test_byobnet","architecture":"test_byobnet","task":"classification","input_shape":[1,3,160,160],"architecture_sha256":"f30803ef742657dafebdc46ab5e5f73926768f218ed08f08a94fa923b5dd06fc","max_size_mb":160}, + {"source":"timm","name":"test_convnext","architecture":"test_convnext","task":"classification","input_shape":[1,3,160,160],"architecture_sha256":"05bc2f7b3b88f98f9dd4fa13b758bda6bf9ff7c2faa00eadb36afb634a92a81e","max_size_mb":160}, + {"source":"timm","name":"test_convnext2","architecture":"test_convnext2","task":"classification","input_shape":[1,3,160,160],"architecture_sha256":"e543baa8e9fdbd7f1f245d3778afbb475c45369a870d62e3701b5459f12f6715","max_size_mb":160}, + {"source":"timm","name":"test_convnext3","architecture":"test_convnext3","task":"classification","input_shape":[1,3,160,160],"architecture_sha256":"8da4435baa9b2dc7975afecdc1ebb6ffdc437fdc89421dd5f2a657daee808c86","max_size_mb":160}, + {"source":"timm","name":"test_efficientnet","architecture":"test_efficientnet","task":"classification","input_shape":[1,3,160,160],"architecture_sha256":"503802745da9d4f279830a18d9c1b0533b39e05b2747ebb5cf26874f2afe70ee","max_size_mb":160}, + {"source":"timm","name":"test_efficientnet_evos","architecture":"test_efficientnet_evos","task":"classification","input_shape":[1,3,160,160],"architecture_sha256":"0aa3745bbcc8dc0b23bec250045446c912a443a7772c7f1d9edfcd3a6164d97a","max_size_mb":160}, + {"source":"timm","name":"test_efficientnet_gn","architecture":"test_efficientnet_gn","task":"classification","input_shape":[1,3,160,160],"architecture_sha256":"328b606a2f8a60d1848b28760778900060047a4d2f160b0c900f1d3f8a0d3935","max_size_mb":160}, + {"source":"timm","name":"test_efficientnet_ln","architecture":"test_efficientnet_ln","task":"classification","input_shape":[1,3,160,160],"architecture_sha256":"7e99f49478b8527d960cfda1f5bcc9114d996ba78c24ec5d8b8f2f61dc5b5bbe","max_size_mb":160}, + {"source":"timm","name":"test_mambaout","architecture":"test_mambaout","task":"classification","input_shape":[1,3,160,160],"architecture_sha256":"ffe0595e9ce11f8c3dce7dd4a4cb116216fc46c6ac82eb7000686c626105758a","max_size_mb":160}, + {"source":"timm","name":"test_nfnet","architecture":"test_nfnet","task":"classification","input_shape":[1,3,160,160],"architecture_sha256":"ae3112fe70b1b4cc16bf128311f0f04824e8ac2c059cc47c2c3df9a44604379e","max_size_mb":160}, + {"source":"timm","name":"test_resnet","architecture":"test_resnet","task":"classification","input_shape":[1,3,160,160],"architecture_sha256":"9bb684cefbafff662bf3b866cd3130414874c7e11777483cbe2030c7555fa6a3","max_size_mb":160}, + {"source":"timm","name":"test_vit","architecture":"test_vit","task":"classification","input_shape":[1,3,160,160],"architecture_sha256":"090c119428de5f1f745a2ab75ecc0c74868bee4035645fda99317165f18459a2","max_size_mb":160}, + {"source":"timm","name":"test_vit2","architecture":"test_vit2","task":"classification","input_shape":[1,3,160,160],"architecture_sha256":"7957ff7bd45d287a433e62f867242c01283f1068cf8998ca16857269947c9886","max_size_mb":160}, + {"source":"timm","name":"test_vit3","architecture":"test_vit3","task":"classification","input_shape":[1,3,160,160],"architecture_sha256":"d86c88152af65ea61f53fe2906cc14ca374fb69e11edbb286fae75e33f6c1253","max_size_mb":160}, + {"source":"timm","name":"tf_efficientnet_b0","architecture":"tf_efficientnet_b0","task":"classification","input_shape":[1,3,224,224],"architecture_sha256":"10e37e8a7e90a33274add63534f0671fc1e5032318bb03f88c423c64c299d0e4","max_size_mb":160}, + {"source":"timm","name":"tf_efficientnet_b1","architecture":"tf_efficientnet_b1","task":"classification","input_shape":[1,3,240,240],"architecture_sha256":"d88a41476cae61344a25f021b28097d638a8322f6e7e15866dba12a94ea632eb","max_size_mb":160}, + {"source":"timm","name":"tf_efficientnet_b2","architecture":"tf_efficientnet_b2","task":"classification","input_shape":[1,3,260,260],"architecture_sha256":"febcccc74bbb987207b7e91f2deab52cb98a68898c6f3fa5a6ac453701050039","max_size_mb":160}, + {"source":"timm","name":"tf_efficientnet_b3","architecture":"tf_efficientnet_b3","task":"classification","input_shape":[1,3,300,300],"architecture_sha256":"9fbe18b34ed13ace7903d336e17f15ff3484205ef2b14a734cd9a06e458726d2","max_size_mb":160}, + {"source":"timm","name":"tf_efficientnet_b4","architecture":"tf_efficientnet_b4","task":"classification","input_shape":[1,3,380,380],"architecture_sha256":"8765072b2bcb423461131289b9f84f5e411225fc9ace21b4b8834a94a5778305","max_size_mb":160}, + {"source":"timm","name":"tf_efficientnet_b5","architecture":"tf_efficientnet_b5","task":"classification","input_shape":[1,3,456,456],"architecture_sha256":"75bfefeb343491f23e7ae2137d31bd1b6bcd4c32bb0e418332caf140725624f4","max_size_mb":160}, + {"source":"timm","name":"tf_efficientnet_el","architecture":"tf_efficientnet_el","task":"classification","input_shape":[1,3,300,300],"architecture_sha256":"56824a9647697677e93d5858f2159bc296fb35231372c5103b166f6c15adda5e","max_size_mb":160}, + {"source":"timm","name":"tf_efficientnet_em","architecture":"tf_efficientnet_em","task":"classification","input_shape":[1,3,240,240],"architecture_sha256":"cbae39d12cd44643cc2aa95e1fafe80af7059e5d9372b19a61a189cae2f2a820","max_size_mb":160}, + {"source":"timm","name":"tf_efficientnet_es","architecture":"tf_efficientnet_es","task":"classification","input_shape":[1,3,224,224],"architecture_sha256":"1dee23762eb6de4f63de274d0b43033c660bd5793cd83f3892dc338eda7ef8ef","max_size_mb":160}, + {"source":"timm","name":"tf_efficientnet_lite0","architecture":"tf_efficientnet_lite0","task":"classification","input_shape":[1,3,224,224],"architecture_sha256":"7fd6976b9f240e13db9160799ed490909a5cb55008ec45277cf3af9dee36e871","max_size_mb":160}, + {"source":"timm","name":"tf_efficientnet_lite1","architecture":"tf_efficientnet_lite1","task":"classification","input_shape":[1,3,240,240],"architecture_sha256":"7ee3c9b0e8c085d4f7c0ace38d7630fe1a8f47baccc758b983cc5ae32154b2a6","max_size_mb":160}, + {"source":"timm","name":"tf_efficientnet_lite2","architecture":"tf_efficientnet_lite2","task":"classification","input_shape":[1,3,260,260],"architecture_sha256":"1175aa05d9c00a3d7057f29206920aae6c0a9ae674773191c24c7e8e0a5aa381","max_size_mb":160}, + {"source":"timm","name":"tf_efficientnet_lite3","architecture":"tf_efficientnet_lite3","task":"classification","input_shape":[1,3,300,300],"architecture_sha256":"13b1a84851bc39c22be9fbe32d21cbc07bdb1eaa9342654c61141a351110725e","max_size_mb":160}, + {"source":"timm","name":"tf_efficientnet_lite4","architecture":"tf_efficientnet_lite4","task":"classification","input_shape":[1,3,380,380],"architecture_sha256":"af06245324b050369c258499fa171c8ae37b79a087d572e85b3c397aa51f6480","max_size_mb":160}, + {"source":"timm","name":"tf_efficientnetv2_b0","architecture":"tf_efficientnetv2_b0","task":"classification","input_shape":[1,3,192,192],"architecture_sha256":"7f04966aaad1720fc8c0eb8f8be4bea488f1d7979e63c4eeeb2ee8032355a77c","max_size_mb":160}, + {"source":"timm","name":"tf_efficientnetv2_b1","architecture":"tf_efficientnetv2_b1","task":"classification","input_shape":[1,3,192,192],"architecture_sha256":"16698a16d429ca6de5a3066bf2c1ee34c10b054b9cbca98175baa907918a96f5","max_size_mb":160}, + {"source":"timm","name":"tf_efficientnetv2_b2","architecture":"tf_efficientnetv2_b2","task":"classification","input_shape":[1,3,208,208],"architecture_sha256":"3b8992ebd315f2921e5c7f9d1b73eb38bb6060a1a014e6d2f4c4fe2bf935bc80","max_size_mb":160}, + {"source":"timm","name":"tf_efficientnetv2_b3","architecture":"tf_efficientnetv2_b3","task":"classification","input_shape":[1,3,240,240],"architecture_sha256":"4422014de72d7d69540f3f9d50c6273efbf710855571ecc7560454ecc1a985c2","max_size_mb":160}, + {"source":"timm","name":"tf_efficientnetv2_s","architecture":"tf_efficientnetv2_s","task":"classification","input_shape":[1,3,300,300],"architecture_sha256":"993ff743e94ccc9f13b2777c722f35f446d8e98593b00b3d2cfbc0dedc17f428","max_size_mb":160}, + {"source":"timm","name":"tf_mixnet_l","architecture":"tf_mixnet_l","task":"classification","input_shape":[1,3,224,224],"architecture_sha256":"90039988ec9d933f095d7a09ec2bbcfaa791585316337d57edbe2d12a411a1aa","max_size_mb":160}, + {"source":"timm","name":"tf_mixnet_m","architecture":"tf_mixnet_m","task":"classification","input_shape":[1,3,224,224],"architecture_sha256":"32e96fb95a8d5cb1614867dfd2672fe449e8a3fe066963c64e83055ac874fbef","max_size_mb":160}, + {"source":"timm","name":"tf_mixnet_s","architecture":"tf_mixnet_s","task":"classification","input_shape":[1,3,224,224],"architecture_sha256":"e49eec4cb00b2b68a5b97eb0536b9f21314e2b560f8cb6380f76076c6be55f07","max_size_mb":160}, + {"source":"timm","name":"tf_mobilenetv3_small_075","architecture":"tf_mobilenetv3_small_075","task":"classification","input_shape":[1,3,224,224],"architecture_sha256":"89e620488fe478193a903738c5e0ecda897a8455c6396fa3d9370fd72ba58a4e","max_size_mb":160}, + {"source":"timm","name":"tf_mobilenetv3_small_100","architecture":"tf_mobilenetv3_small_100","task":"classification","input_shape":[1,3,224,224],"architecture_sha256":"99aa0d42de5e7c325a03112eaeca847a2f98ca9d0fd64eebdaba89f704cb1249","max_size_mb":160}, + {"source":"timm","name":"tf_mobilenetv3_small_minimal_100","architecture":"tf_mobilenetv3_small_minimal_100","task":"classification","input_shape":[1,3,224,224],"architecture_sha256":"ad371171ed4d2a5500411eaae42ce90b616788f5cc95b57b51a8d5cde71b316f","max_size_mb":160}, + {"source":"timm","name":"tiny_vit_11m_224","architecture":"tiny_vit_11m_224","task":"classification","input_shape":[1,3,224,224],"architecture_sha256":"c7938523becc0d73058f70bd3c1a17c7957eebae879ce10170ee90613d913126","max_size_mb":160}, + {"source":"timm","name":"tiny_vit_21m_224","architecture":"tiny_vit_21m_224","task":"classification","input_shape":[1,3,224,224],"architecture_sha256":"beb1bad593c6b0294a434d98314a8e96209227314b1a882e13431724e48060f4","max_size_mb":160}, + {"source":"timm","name":"tiny_vit_21m_384","architecture":"tiny_vit_21m_384","task":"classification","input_shape":[1,3,384,384],"architecture_sha256":"2c57b2c559ae6a9ddd82f9e5253a5187a4b6542dda17b4f54e30a00d17f0d5ba","max_size_mb":160}, + {"source":"timm","name":"tiny_vit_21m_512","architecture":"tiny_vit_21m_512","task":"classification","input_shape":[1,3,512,512],"architecture_sha256":"9084e672a9829af9dd77c02e5f91cdfa41240926202e0163f3f178274f74c393","max_size_mb":160}, + {"source":"timm","name":"tiny_vit_5m_224","architecture":"tiny_vit_5m_224","task":"classification","input_shape":[1,3,224,224],"architecture_sha256":"6139fcaa1aae761b8c64edc6ee1c8f76bdefa224bf5c2f16552f5bcd417ccd31","max_size_mb":160}, + {"source":"timm","name":"tinynet_a","architecture":"tinynet_a","task":"classification","input_shape":[1,3,192,192],"architecture_sha256":"4ded6b0a01d1e1ff0c13505cc04920882b3b9b708c16f5b662d3af171bf0c84b","max_size_mb":160}, + {"source":"timm","name":"tinynet_b","architecture":"tinynet_b","task":"classification","input_shape":[1,3,188,188],"architecture_sha256":"16b5ad3d5b573982b652a08a71cc9435452acf791746fde720acc616c20df4f2","max_size_mb":160}, + {"source":"timm","name":"tinynet_c","architecture":"tinynet_c","task":"classification","input_shape":[1,3,184,184],"architecture_sha256":"80f1757131e3f006fa74b615b9985ba209e9e227beada74edfd02a8bace3eac8","max_size_mb":160}, + {"source":"timm","name":"tinynet_d","architecture":"tinynet_d","task":"classification","input_shape":[1,3,152,152],"architecture_sha256":"baac596e3842d77531054a20c4f82f889da5582c5504039ca76f7ba44c2b6ce6","max_size_mb":160}, + {"source":"timm","name":"tinynet_e","architecture":"tinynet_e","task":"classification","input_shape":[1,3,106,106],"architecture_sha256":"187a20da782d6d5c76d9359972f509a6009e5b12336867156366b393f3823536","max_size_mb":160}, + {"source":"timm","name":"tnt_s_legacy_patch16_224","architecture":"tnt_s_legacy_patch16_224","task":"classification","input_shape":[1,3,224,224],"architecture_sha256":"b521577911a3144e3f25a67a371ff52a908eecd6adb7c75856a16bcefb8e8cd8","max_size_mb":160}, + {"source":"timm","name":"tnt_s_patch16_224","architecture":"tnt_s_patch16_224","task":"classification","input_shape":[1,3,224,224],"architecture_sha256":"d34fbcf3c120880eb59df3fc621acd6334076d116afe320833ce36cf046e467b","max_size_mb":160}, + {"source":"timm","name":"tresnet_m","architecture":"tresnet_m","task":"classification","input_shape":[1,3,224,224],"architecture_sha256":"388ddb7142402b7776042eae98538e8ea04db5dc38c9b57c6dcc4480d573988c","max_size_mb":160}, + {"source":"timm","name":"twins_pcpvt_small","architecture":"twins_pcpvt_small","task":"classification","input_shape":[1,3,224,224],"architecture_sha256":"9e88b250236e2b5da93306182881e73757815ead09c1650a6ffb0dfaddcca54d","max_size_mb":160}, + {"source":"timm","name":"twins_svt_small","architecture":"twins_svt_small","task":"classification","input_shape":[1,3,224,224],"architecture_sha256":"48799cda3c96ff9812e2d129a04a1fd033b74d9d488d243b3f425c659dbca741","max_size_mb":160}, + {"source":"timm","name":"visformer_tiny","architecture":"visformer_tiny","task":"classification","input_shape":[1,3,224,224],"architecture_sha256":"eaca4226aa5672c9b2bd4502c4ca98225efe8e1a5fb01b17667b7cbb3a824b0b","max_size_mb":160}, + {"source":"timm","name":"vit_little_patch16_reg1_gap_256","architecture":"vit_little_patch16_reg1_gap_256","task":"classification","input_shape":[1,3,256,256],"architecture_sha256":"a1b04cca35797f6798772dae9e41983dbac575d32fdfa6a1d3b685f1a49789c3","max_size_mb":160}, + {"source":"timm","name":"vit_little_patch16_reg4_gap_256","architecture":"vit_little_patch16_reg4_gap_256","task":"classification","input_shape":[1,3,256,256],"architecture_sha256":"6d3132378e381ed6c9f7b580393caf0fa00764f1b555617b4d985bfa0b400fc5","max_size_mb":160}, + {"source":"timm","name":"vit_medium_patch16_clip_224","architecture":"vit_medium_patch16_clip_224","task":"classification","input_shape":[1,3,224,224],"architecture_sha256":"850ac68c2974e5796e0e483f0069e9c55983457e773c7d971117053654db6b5c","max_size_mb":160}, + {"source":"timm","name":"vit_medium_patch16_gap_240","architecture":"vit_medium_patch16_gap_240","task":"classification","input_shape":[1,3,240,240],"architecture_sha256":"ce0c6876d81308311068e12df83e13dd1ee5bf920eaafc6d587e47a7f3e29543","max_size_mb":160}, + {"source":"timm","name":"vit_medium_patch16_gap_256","architecture":"vit_medium_patch16_gap_256","task":"classification","input_shape":[1,3,256,256],"architecture_sha256":"99b3cf47330fe8c29376c8d4d742c8a45123f9d5db1b5a8857d270b287baa9e2","max_size_mb":160}, + {"source":"timm","name":"vit_medium_patch16_gap_384","architecture":"vit_medium_patch16_gap_384","task":"classification","input_shape":[1,3,384,384],"architecture_sha256":"eb930382db3a49044e1f2e936fba3c60418d7c23fcaeac47c17595ebd3730bbd","max_size_mb":160}, + {"source":"timm","name":"vit_medium_patch16_reg1_gap_256","architecture":"vit_medium_patch16_reg1_gap_256","task":"classification","input_shape":[1,3,256,256],"architecture_sha256":"8d1266cc47435ed3a14b726fab2d3a89bd2a42f163286275c0ec5e4b808f7012","max_size_mb":160}, + {"source":"timm","name":"vit_medium_patch16_reg4_gap_256","architecture":"vit_medium_patch16_reg4_gap_256","task":"classification","input_shape":[1,3,256,256],"architecture_sha256":"37e58e4622fb79cedd2b9abbe18ae00c95fd5d01af912e2a4ec449db8754c78d","max_size_mb":160}, + {"source":"timm","name":"vit_medium_patch16_rope_reg1_gap_256","architecture":"vit_medium_patch16_rope_reg1_gap_256","task":"classification","input_shape":[1,3,256,256],"architecture_sha256":"4fe6272f39790607063284ecec3620980d60febfb829ef9f48f5f9af41ae3cb0","max_size_mb":160}, + {"source":"timm","name":"vit_medium_patch32_clip_224","architecture":"vit_medium_patch32_clip_224","task":"classification","input_shape":[1,3,224,224],"architecture_sha256":"cbd3c9bfbbf7f02ca85b0da6b8891134b4435b5d6d1ae538be87b2f9f7a4eb79","max_size_mb":160}, + {"source":"timm","name":"vit_pe_core_small_patch16_384","architecture":"vit_pe_core_small_patch16_384","task":"classification","input_shape":[1,3,384,384],"architecture_sha256":"756ecbf287582e419361a2b8406f450fe30a19627cc02744c8e7521574817809","max_size_mb":160}, + {"source":"timm","name":"vit_pe_core_tiny_patch16_384","architecture":"vit_pe_core_tiny_patch16_384","task":"classification","input_shape":[1,3,384,384],"architecture_sha256":"b574c4d708a48ddd50edc41a16050ffc06c32def0f15db0abf5f9667f01321ee","max_size_mb":160}, + {"source":"timm","name":"vit_pe_spatial_small_patch16_512","architecture":"vit_pe_spatial_small_patch16_512","task":"classification","input_shape":[1,3,512,512],"architecture_sha256":"f7704d427000849410c74d76d8842c16a6d309a9edb40923204e47b3d28f9dc3","max_size_mb":160}, + {"source":"timm","name":"vit_pe_spatial_tiny_patch16_512","architecture":"vit_pe_spatial_tiny_patch16_512","task":"classification","input_shape":[1,3,512,512],"architecture_sha256":"c84ea3eab16634ec3359dc5fb30fcd9b3c64ee81219c38736d677a667c4fd48a","max_size_mb":160}, + {"source":"timm","name":"vit_pwee_patch16_reg1_gap_256","architecture":"vit_pwee_patch16_reg1_gap_256","task":"classification","input_shape":[1,3,256,256],"architecture_sha256":"fc0600d67296df4931950061bbb58e51d9ad81c5ad2c5c735f9e2de5769fce55","max_size_mb":160}, + {"source":"timm","name":"vit_relpos_medium_patch16_224","architecture":"vit_relpos_medium_patch16_224","task":"classification","input_shape":[1,3,224,224],"architecture_sha256":"fab504efe938035a3c1698e998ea697c53fe8e9aeb515b69f892625fbb4bce10","max_size_mb":160}, + {"source":"timm","name":"vit_relpos_medium_patch16_cls_224","architecture":"vit_relpos_medium_patch16_cls_224","task":"classification","input_shape":[1,3,224,224],"architecture_sha256":"5a8a3846d46114643dd720ce97c3842e32e5a78035d11bf50ac52fe51c136ee6","max_size_mb":160}, + {"source":"timm","name":"vit_relpos_medium_patch16_rpn_224","architecture":"vit_relpos_medium_patch16_rpn_224","task":"classification","input_shape":[1,3,224,224],"architecture_sha256":"b402ab63ce5d9b0a054029fcc378a80ea361b427ea71bfc8f467e51bc01a3345","max_size_mb":160}, + {"source":"timm","name":"vit_relpos_small_patch16_224","architecture":"vit_relpos_small_patch16_224","task":"classification","input_shape":[1,3,224,224],"architecture_sha256":"ec7a3f57a6c3078aff69b9969ce75acf2e6fa2c465bfc511fd6d4d535d944fae","max_size_mb":160}, + {"source":"timm","name":"vit_relpos_small_patch16_rpn_224","architecture":"vit_relpos_small_patch16_rpn_224","task":"classification","input_shape":[1,3,224,224],"architecture_sha256":"774048cde3b2eccb5e95962b6a8e9ac32da31a5ee1a4f7f0b6bbb6bbffcef73a","max_size_mb":160}, + {"source":"timm","name":"vit_small_patch14_dinov2","architecture":"vit_small_patch14_dinov2","task":"classification","input_shape":[1,3,518,518],"architecture_sha256":"81ce47e705e2774c2f9f58f1b632cca7c3e7c472390121f1310b1853b12edc85","max_size_mb":160}, + {"source":"timm","name":"vit_small_patch14_reg4_dinov2","architecture":"vit_small_patch14_reg4_dinov2","task":"classification","input_shape":[1,3,518,518],"architecture_sha256":"ed1703a8e5dadd17070ff00c4a1094479612a29bf729d9ac105f70c60cd3d29e","max_size_mb":160}, + {"source":"timm","name":"vit_small_patch16_384","architecture":"vit_small_patch16_384","task":"classification","input_shape":[1,3,384,384],"architecture_sha256":"3709727c2200ec56f4b0bd11965b6c54f9a71b83920f6a194a2bb62947f61c44","max_size_mb":160}, + {"source":"timm","name":"vit_small_patch16_dinov3","architecture":"vit_small_patch16_dinov3","task":"classification","input_shape":[1,3,256,256],"architecture_sha256":"fcc1350a3bd38a953bda0bb35dae4669b8e1016ffcddd3d5a025e1b4dfe18ea6","max_size_mb":160}, + {"source":"timm","name":"vit_small_patch16_dinov3_qkvb","architecture":"vit_small_patch16_dinov3_qkvb","task":"classification","input_shape":[1,3,256,256],"architecture_sha256":"977058ecc4e7a6716d2a3e74bf09fb0c3cf33e2eb802aa4136c880c3572dd043","max_size_mb":160}, + {"source":"timm","name":"vit_small_patch16_rope_224","architecture":"vit_small_patch16_rope_224","task":"classification","input_shape":[1,3,224,224],"architecture_sha256":"362dbc3633b043269f76f216936f427b3d0c2a04eec0d719f0126339e9ca90da","max_size_mb":160}, + {"source":"timm","name":"vit_small_patch16_rope_ape_224","architecture":"vit_small_patch16_rope_ape_224","task":"classification","input_shape":[1,3,224,224],"architecture_sha256":"abc846fc20931e9e8f6ceba9d538bfcda88716236763facaa8827b4733796bf5","max_size_mb":160}, + {"source":"timm","name":"vit_small_patch32_224","architecture":"vit_small_patch32_224","task":"classification","input_shape":[1,3,224,224],"architecture_sha256":"d837b5fb0e9292e334d06933dda82b3f886f60241289ca0b67729a146a332f45","max_size_mb":160}, + {"source":"timm","name":"vit_small_patch32_384","architecture":"vit_small_patch32_384","task":"classification","input_shape":[1,3,384,384],"architecture_sha256":"b888da1be43b723a03ea27e7b42e89144a3aca1a4d51873c74c0a7d0405a85b2","max_size_mb":160}, + {"source":"timm","name":"vit_small_patch8_224","architecture":"vit_small_patch8_224","task":"classification","input_shape":[1,3,224,224],"architecture_sha256":"d0df6cec48bb90ff9a3dd8d97428b89e40030e284f34aa68781db861785e88d2","max_size_mb":160}, + {"source":"timm","name":"vit_small_plus_patch16_dinov3","architecture":"vit_small_plus_patch16_dinov3","task":"classification","input_shape":[1,3,256,256],"architecture_sha256":"598fc650c7b5cbef4b571241db27bcaa02e89bc695dc286855c48483bc4e52ec","max_size_mb":160}, + {"source":"timm","name":"vit_small_plus_patch16_dinov3_qkvb","architecture":"vit_small_plus_patch16_dinov3_qkvb","task":"classification","input_shape":[1,3,256,256],"architecture_sha256":"5ba9fbd3809b6f2eb459a9253b5581ed2792e6a1de2fc3988ea474aca093da26","max_size_mb":160}, + {"source":"timm","name":"vit_srelpos_medium_patch16_224","architecture":"vit_srelpos_medium_patch16_224","task":"classification","input_shape":[1,3,224,224],"architecture_sha256":"76e9fcceec9989f1876abe385a6a3e1810070efe228bcbb8cbfb28c4509f8c23","max_size_mb":160}, + {"source":"timm","name":"vit_srelpos_small_patch16_224","architecture":"vit_srelpos_small_patch16_224","task":"classification","input_shape":[1,3,224,224],"architecture_sha256":"fd1923c256e5249ce8ea21a328e1b47b1f5d080fd1ebcba707a94058da5f4aac","max_size_mb":160}, + {"source":"timm","name":"vit_tiny_patch16_384","architecture":"vit_tiny_patch16_384","task":"classification","input_shape":[1,3,384,384],"architecture_sha256":"dd688dd2b859b6b86ca305daa54c0204d90739f3b4aebce8a9aa91f61b078418","max_size_mb":160}, + {"source":"timm","name":"vit_tiny_r_s16_p8_224","architecture":"vit_tiny_r_s16_p8_224","task":"classification","input_shape":[1,3,224,224],"architecture_sha256":"73f5668e8bf27d696b81338ccd218df011c16a53acc00f799e88f8fcd2ff0b31","max_size_mb":160}, + {"source":"timm","name":"vit_tiny_r_s16_p8_384","architecture":"vit_tiny_r_s16_p8_384","task":"classification","input_shape":[1,3,384,384],"architecture_sha256":"6fe72d600019640bca967395330e9850ddc5545039df50bc2d8dbfb3b8af9391","max_size_mb":160}, + {"source":"timm","name":"vit_wee_patch16_reg1_gap_256","architecture":"vit_wee_patch16_reg1_gap_256","task":"classification","input_shape":[1,3,256,256],"architecture_sha256":"57df95559f1347d5ed64da31ea9ef976eeb6cceec04f17b52a0c79123a260aee","max_size_mb":160}, + {"source":"timm","name":"vit_xsmall_patch16_clip_224","architecture":"vit_xsmall_patch16_clip_224","task":"classification","input_shape":[1,3,224,224],"architecture_sha256":"0cc914aab18cc4873acb1b1bc7c7043cb8de50e9d2d9e11dd37aa0914fbadf80","max_size_mb":160}, + {"source":"timm","name":"vitamin_small_224","architecture":"vitamin_small_224","task":"classification","input_shape":[1,3,224,224],"architecture_sha256":"6dfd6e945c490e2946585cd4ac19c825fa1c524c4d296f9200f93d3bb1e7c47d","max_size_mb":160}, + {"source":"timm","name":"vovnet39a","architecture":"vovnet39a","task":"classification","input_shape":[1,3,224,224],"architecture_sha256":"e31b9da786a442485d692293f94dfc8032c48a6f8cd797a0654f0f45b5c3f5da","max_size_mb":160}, + {"source":"timm","name":"vovnet57a","architecture":"vovnet57a","task":"classification","input_shape":[1,3,224,224],"architecture_sha256":"b8c1ee6e96e377ee9b3f15d5b56947c9d11019f308257a556b85f1bc1e7acd11","max_size_mb":160}, + {"source":"timm","name":"xception41","architecture":"xception41","task":"classification","input_shape":[1,3,299,299],"architecture_sha256":"befea89f488a40e972a804adefbe014ce523a12c47b4818fcda9176f26b89c4a","max_size_mb":160}, + {"source":"timm","name":"xception41p","architecture":"xception41p","task":"classification","input_shape":[1,3,299,299],"architecture_sha256":"97af98b968264338aa9138c2a44ab4a5120eac9ee31049355a214091253945db","max_size_mb":160}, + {"source":"timm","name":"xception65","architecture":"xception65","task":"classification","input_shape":[1,3,299,299],"architecture_sha256":"167347ffa1dacf1ac03d86f42a0f733661283d5036dec2ebcfd36e18d55af32c","max_size_mb":160}, + {"source":"timm","name":"xception65p","architecture":"xception65p","task":"classification","input_shape":[1,3,299,299],"architecture_sha256":"ce0118b1195fd765ef4ba2d0276c7b8478fd36182ae433b73dd38259c6f2c22e","max_size_mb":160}, + {"source":"timm","name":"xcit_nano_12_p16_224","architecture":"xcit_nano_12_p16_224","task":"classification","input_shape":[1,3,224,224],"architecture_sha256":"c09d4831c3446376d6ec0bfdffeec32be8e57eb9194b1059cfe7cfa9dfa51a29","max_size_mb":160}, + {"source":"timm","name":"xcit_nano_12_p16_384","architecture":"xcit_nano_12_p16_384","task":"classification","input_shape":[1,3,384,384],"architecture_sha256":"138119d1398322fa2b725428de91b4736c226e60b681c684b2752c0e2d6be874","max_size_mb":160}, + {"source":"timm","name":"xcit_nano_12_p8_224","architecture":"xcit_nano_12_p8_224","task":"classification","input_shape":[1,3,224,224],"architecture_sha256":"9ec511c922104ece98c952ba2073a74637d15a38506e122d086a35c24b4861da","max_size_mb":160}, + {"source":"timm","name":"xcit_nano_12_p8_384","architecture":"xcit_nano_12_p8_384","task":"classification","input_shape":[1,3,384,384],"architecture_sha256":"4df8530daabb6301029b958306ac71110440cae1650a62fc929f0b397a749864","max_size_mb":160}, + {"source":"timm","name":"xcit_small_12_p16_224","architecture":"xcit_small_12_p16_224","task":"classification","input_shape":[1,3,224,224],"architecture_sha256":"b8401fc7853729ddf860b8c796854dab5dd93e8dd8419778b49b5675656f7e47","max_size_mb":160}, + {"source":"timm","name":"xcit_small_12_p16_384","architecture":"xcit_small_12_p16_384","task":"classification","input_shape":[1,3,384,384],"architecture_sha256":"94a858cebd52272b117a31c6f917cc8ea7ce5d4baed701e927a4024fe3c0e84e","max_size_mb":160}, + {"source":"timm","name":"xcit_small_12_p8_224","architecture":"xcit_small_12_p8_224","task":"classification","input_shape":[1,3,224,224],"architecture_sha256":"018b484e36f144aeaca56fd65543db1f2fc18722b8a1c23f29abad50957479ab","max_size_mb":160}, + {"source":"timm","name":"xcit_small_12_p8_384","architecture":"xcit_small_12_p8_384","task":"classification","input_shape":[1,3,384,384],"architecture_sha256":"02da3129ad83f896d900981cb994b848d65393f6733a0be323972d4023af65c6","max_size_mb":160}, + {"source":"timm","name":"xcit_tiny_12_p16_224","architecture":"xcit_tiny_12_p16_224","task":"classification","input_shape":[1,3,224,224],"architecture_sha256":"5945aec743f27801a3c9e09f97d0af75597863ae15cdd9d9d0c5147f6cbe840c","max_size_mb":160}, + {"source":"timm","name":"xcit_tiny_12_p16_384","architecture":"xcit_tiny_12_p16_384","task":"classification","input_shape":[1,3,384,384],"architecture_sha256":"21fe2ecdce75608500bf984ee2a0ba738f751b4b160cea24cece484769fc0fc7","max_size_mb":160}, + {"source":"timm","name":"xcit_tiny_12_p8_224","architecture":"xcit_tiny_12_p8_224","task":"classification","input_shape":[1,3,224,224],"architecture_sha256":"03534aad7d40433c0175c318a6f263aa54c5c7fdafbc26501fc7b4e292237a20","max_size_mb":160}, + {"source":"timm","name":"xcit_tiny_12_p8_384","architecture":"xcit_tiny_12_p8_384","task":"classification","input_shape":[1,3,384,384],"architecture_sha256":"246591771c30d7c98d93b924b4964141c69e4be9858c8239bcb366413482b587","max_size_mb":160}, + {"source":"timm","name":"xcit_tiny_24_p16_224","architecture":"xcit_tiny_24_p16_224","task":"classification","input_shape":[1,3,224,224],"architecture_sha256":"f8f28547134b174a7de69f195710f54fae294c2087b5ccef708218fd4974db4a","max_size_mb":160}, + {"source":"timm","name":"xcit_tiny_24_p16_384","architecture":"xcit_tiny_24_p16_384","task":"classification","input_shape":[1,3,384,384],"architecture_sha256":"91e491e194f1c1d846062156cb47adeed78e44d1a7dff3ee085d78fa28859b32","max_size_mb":160}, + {"source":"timm","name":"xcit_tiny_24_p8_224","architecture":"xcit_tiny_24_p8_224","task":"classification","input_shape":[1,3,224,224],"architecture_sha256":"d26355d36a1f13c5d8e142ede9e231f7f9b43a434f2adca7a30933b8a186cda3","max_size_mb":160}, + {"source":"timm","name":"xcit_tiny_24_p8_384","architecture":"xcit_tiny_24_p8_384","task":"classification","input_shape":[1,3,384,384],"architecture_sha256":"9aa253ca8c6b4036043239a3095f2a981e326c260b9981a5a24e7d097ecff498","max_size_mb":160}, + {"source":"torchsr","name":"carn_m_x2","architecture":"carn_m_x2","task":"super_resolution","input_shape":[1,3,32,32],"architecture_sha256":"0aed758dad7b777a09ec5c40b78114ded8e09e3a7a5fa3325cc96f48aa2107c3","inputs_sha256":"ccbb3620e155afa12ae605b6d5d58fb5a1f0b8698a10ac5a84ee114f65998f46","max_size_mb":768}, + {"source":"torchsr","name":"carn_m_x3","architecture":"carn_m_x3","task":"super_resolution","input_shape":[1,3,32,32],"architecture_sha256":"e1f968271e6759ef7ab2ee3bd963dfb7e749b7f3b26485e763e0641647e2e3d1","inputs_sha256":"a6df57d1111830328ea62bdca9e84c171faae6be99c1e991eba452e4cba90469","max_size_mb":768}, + {"source":"torchsr","name":"carn_m_x4","architecture":"carn_m_x4","task":"super_resolution","input_shape":[1,3,32,32],"architecture_sha256":"4825bf001ec62f650121d29c19e1a0d28f66e9ba341e6948615a8144a7a6a8e0","inputs_sha256":"815c88e862a30ab9d57c86d2bd6c7a22cd443bbbc3cee87f805fd852a6a0d09a","max_size_mb":768}, + {"source":"torchsr","name":"carn_x2","architecture":"carn_x2","task":"super_resolution","input_shape":[1,3,32,32],"architecture_sha256":"a2705bb7394625d3905b8edbad56ba6d95966a3ecf3199f9d1b33d001312c2b7","inputs_sha256":"3aa94bba0e519687d78b89971a5bb08279d0d550733f13a54b3b82841f26b9fa","max_size_mb":768}, + {"source":"torchsr","name":"carn_x3","architecture":"carn_x3","task":"super_resolution","input_shape":[1,3,32,32],"architecture_sha256":"8f9c013eecf99c5cd134ec22a50da0ce6ec97894ed0fcf41cd75b1937a3c8aaa","inputs_sha256":"01f6d058a7037a4666431face72e490b4f836b312896f9e228c9aab2a15af6f2","max_size_mb":768}, + {"source":"torchsr","name":"carn_x4","architecture":"carn_x4","task":"super_resolution","input_shape":[1,3,32,32],"architecture_sha256":"628f797f029adac4abf6f270058e2d16031234e56320f3becc81799a504bbc38","inputs_sha256":"50dbde6b3de84c8117ea4c6dfd483a2d5ffbd1ea3b121a3d435027f90878d8e5","max_size_mb":768}, + {"source":"torchsr","name":"edsr_baseline_x2","architecture":"edsr_baseline_x2","task":"super_resolution","input_shape":[1,3,32,32],"architecture_sha256":"bf2d04c9dd146aa628c5ba4cf3ca81b57aff2e500c84e23c1a7b4016167e2198","inputs_sha256":"2f410e33633a40cea31bb9a62bd23ede76d723720fc9a91238d77c53ac86949b","max_size_mb":768}, + {"source":"torchsr","name":"edsr_baseline_x3","architecture":"edsr_baseline_x3","task":"super_resolution","input_shape":[1,3,32,32],"architecture_sha256":"bddbdc579eab744e09414534641965f0646db11ce28e44d51a33c6efdeb98d8e","inputs_sha256":"1a414803709582e244dc02327c7c5058956801566dc8ddd9ece8cfcbcd272a54","max_size_mb":768}, + {"source":"torchsr","name":"ninasr_b0_x2","architecture":"ninasr_b0_x2","task":"super_resolution","input_shape":[1,3,32,32],"architecture_sha256":"73897c1eb5bbf685d552e77ca9f80c5ebb019d1099556237d1ca853086dd44c5","inputs_sha256":"09182684dd797c2ae831ca8fcb14996853e35d76c7e7f03cb386899265536300","max_size_mb":768}, + {"source":"torchsr","name":"ninasr_b0_x3","architecture":"ninasr_b0_x3","task":"super_resolution","input_shape":[1,3,32,32],"architecture_sha256":"ba41fd8b4c720900689091eac00d8dcfcd31d032b6a81f67afbefc5b8f78d964","inputs_sha256":"b60ac62716947b918ce189bc28d9a73681beda8bbb1126a382e6fa1f8b317d7c","max_size_mb":768}, + {"source":"torchsr","name":"ninasr_b0_x4","architecture":"ninasr_b0_x4","task":"super_resolution","input_shape":[1,3,32,32],"architecture_sha256":"cc2c6b774adf3a1edd5d062700e0d191411a41dac72f8d0c4b08cc2929e083a6","inputs_sha256":"fe4b6bec27be1e45c20fce05650eeb6120fd4fed15bce6b99b073aaff9276afb","max_size_mb":768}, + {"source":"torchsr","name":"ninasr_b1_x2","architecture":"ninasr_b1_x2","task":"super_resolution","input_shape":[1,3,32,32],"architecture_sha256":"1f3add33aa4786932747e2b788788b2ee87b07adc4af45e4890bc8916675e621","inputs_sha256":"55af2e4e6c4ad6805074429958beed26f6228d327e8d9a6c172a5ecf1627ded9","max_size_mb":768}, + {"source":"torchsr","name":"ninasr_b1_x3","architecture":"ninasr_b1_x3","task":"super_resolution","input_shape":[1,3,32,32],"architecture_sha256":"22eab6ec2d01b3686c674f874cd7ec4ced23e5867b4b6f0c6bea34829e75b492","inputs_sha256":"0cd52b5dbc0e935e3e30de838e507671f2887b558d9ea05401ffd2bb7bd001d2","max_size_mb":768}, + {"source":"torchsr","name":"ninasr_b1_x4","architecture":"ninasr_b1_x4","task":"super_resolution","input_shape":[1,3,32,32],"architecture_sha256":"8a425a5ecacca5fa063cd06e8ee63a4c345ce0ef9336f714fc30de5310aa51d8","inputs_sha256":"4f7b17a1dfcb51cde88012755e63df538ce8510209f9d7b67a3846671c4f94ea","max_size_mb":768}, + {"source":"torchsr","name":"ninasr_b2_x2","architecture":"ninasr_b2_x2","task":"super_resolution","input_shape":[1,3,32,32],"architecture_sha256":"35e62cb3179e659e84a1aab97cff85f9179c022cb960b49ef4fb5f9be6f416da","inputs_sha256":"1cce4f04ce49b97e1f862e940a00e00a60b0b7fffddf52ece36a88eaf1aa0ece","max_size_mb":768}, + {"source":"torchsr","name":"ninasr_b2_x3","architecture":"ninasr_b2_x3","task":"super_resolution","input_shape":[1,3,32,32],"architecture_sha256":"f32e60d483be5b6eff0683dca24f69d7a4c1c46984ac3b668a610fa24c4cb56e","inputs_sha256":"78aa55897c38cbad9420376eff9d3c46961386c9fc6e79c15f3d6adfe215a354","max_size_mb":768}, + {"source":"torchsr","name":"rdn_x2","architecture":"rdn_x2","task":"super_resolution","input_shape":[1,3,32,32],"architecture_sha256":"56edb38f626f547cf1164196a43f80e0cac822248c9f272529315aee950c5800","inputs_sha256":"d3644dbcd319eaea7b955def6ac25e1bd73cf94e8d5ff2b4917cbcfec803317d","max_size_mb":768}, + {"source":"torchsr","name":"rdn_x3","architecture":"rdn_x3","task":"super_resolution","input_shape":[1,3,32,32],"architecture_sha256":"e4ca2d958c683c1649e1e61ed6bb5a9a4474232a460ace1cf8a8274716b07f17","inputs_sha256":"96ae3d9c2c7f7bf46d35bd8acdde59bb0089f1626334dbb9c4e0cab6ae4a877c","max_size_mb":768}, + {"source":"torchsr","name":"rdn_x4","architecture":"rdn_x4","task":"super_resolution","input_shape":[1,3,32,32],"architecture_sha256":"df66901481e92b7fe5f71b96d34503de9cb1a1e201c4aa8636d38fa87e773167","inputs_sha256":"3fec9989d9f314e57bfbc101322330b96b36bcfb88dcac559e5f954df276baf0","max_size_mb":768}, + {"source":"torchaudio","name":"conv_tasnet","architecture":"conv_tasnet","task":"audio_separation","input_shape":[1,1,1024],"architecture_sha256":"be5e3eceb4312ae382c907e20747a5244d56af96594af9116103fc5f94a93c90","inputs_sha256":"28d45a862bd8ab094176e57f1318bf17db60179c3df8fce5514fd2b7ee51db0f","max_size_mb":768}, + {"source":"torchsr","name":"edsr_baseline_x4","architecture":"edsr_baseline_x4","task":"super_resolution","input_shape":[1,3,32,32],"architecture_sha256":"c445f05f2f2cfca6a1dd89e8ecc45105cb6f37ba39cb802e042a4ea7395c2b08","inputs_sha256":"d36c36fe886dcd0e091e4ffbe7f18e633edcc19ded355fd92e3c4aba7324ee6f","max_size_mb":768}, + {"source":"torchsr","name":"edsr_x2","architecture":"edsr_x2","task":"super_resolution","input_shape":[1,3,32,32],"architecture_sha256":"5b6d66d18ffbb0f333bc07e1d57148c9bf589c623ce223a85499f024a27f53dd","inputs_sha256":"b53f8f258ee2f209889d56dca43d0ad4e04f3f898586dfd9fa70d8d2609dcfb8","max_size_mb":768}, + {"source":"torchsr","name":"edsr_x3","architecture":"edsr_x3","task":"super_resolution","input_shape":[1,3,32,32],"architecture_sha256":"ed01e267939626f8790301e7ab2488e6303baebd1b469495b1569e6d649e076e","inputs_sha256":"066c9a0004f8a11269448e5a9ded53706c1601c2768628931f53c4f363e6dc73","max_size_mb":768}, + {"source":"torchsr","name":"edsr_x4","architecture":"edsr_x4","task":"super_resolution","input_shape":[1,3,32,32],"architecture_sha256":"ad9acf55e4058027ac6dcf6c7f138a293ee783196c9b54f1171ab7e8684af1db","inputs_sha256":"07bf4763903df7279eefb0d93080bc4edad6fd61bb5672c51e85e4d957f1f2ea","max_size_mb":768}, + {"source":"torchaudio","name":"deepspeech","architecture":"deepspeech","task":"speech_recognition","input_shape":[1,1,32,64],"architecture_sha256":"02f601c9ef3b91311aee40ea9aec1804ef9e19f93bfd6ac77cb3b287618c7e85","inputs_sha256":"e67634bd9511c7b8f5cf32fce40e5618bf9f0706fc53aa0270153059c50e5f96","max_size_mb":768}, + {"source":"torchaudio","name":"wav2letter","architecture":"wav2letter","task":"speech_recognition","input_shape":[1,1,8000],"architecture_sha256":"ac97a22f281919847d16c677041a70074e85d94bf4780ba2f1382cf4e7eb74cb","inputs_sha256":"f915e2dbcfb94c44ddb8e624b499d820835dde2aeadfd538c746f216ee379e3a","max_size_mb":768}, + {"source":"transformers","name":"albert_base_v2_masked_lm","architecture":"albert_base_v2_masked_lm","task":"language_modeling","input_shape":[1,16],"architecture_sha256":"10b51d255c75b77c128a604371c127acc90f345da39fcebdd4bffb63c17b3ec4","inputs_sha256":"7efc05494ea834b84b767cc0f729ccaef6db105819492f05540fa63136f93ac3","max_size_mb":768}, + {"source":"transformers","name":"albert_base_v2_question_answering","architecture":"albert_base_v2_question_answering","task":"question_answering","input_shape":[1,16],"architecture_sha256":"2c4c45506efeb3ab3092eab10ada5d2a94b22ac7ba73328acc98364e8e471b4d","inputs_sha256":"7efc05494ea834b84b767cc0f729ccaef6db105819492f05540fa63136f93ac3","max_size_mb":768}, + {"source":"torchsr","name":"ninasr_b2_x4","architecture":"ninasr_b2_x4","task":"super_resolution","input_shape":[1,3,32,32],"architecture_sha256":"5d1610af1bed29e38e310687813598cc171e5097d8d5390fce42f957ac549974","inputs_sha256":"7143653da206fdd99deb115696d71ba36b06eeed7cc45a40403da2282ad7c648","max_size_mb":768}, + {"source":"torchsr","name":"rcan_x2","architecture":"rcan_x2","task":"super_resolution","input_shape":[1,3,32,32],"architecture_sha256":"ca7264ad23aa7aab1d45fea9a9c96ab1aa742a74f10f1ec3a1c3ef9749bcf26c","inputs_sha256":"24b1c900c148499b7921fa58f456b83c9727fde103c8bf35bea8167229842daa","max_size_mb":768}, + {"source":"torchsr","name":"rcan_x3","architecture":"rcan_x3","task":"super_resolution","input_shape":[1,3,32,32],"architecture_sha256":"7fbdd0e7250da99773a3c0b6d003457acc1969ff520a4ef2e3d457430004f3c5","inputs_sha256":"c9e5706ad12dc303920b3d11c0adfb48ceebbd44585ad8eeb4e348c87dad4396","max_size_mb":768}, + {"source":"torchsr","name":"rcan_x4","architecture":"rcan_x4","task":"super_resolution","input_shape":[1,3,32,32],"architecture_sha256":"8465ef12d3cc0e13b1042b80ef0830a467c7904973278037aa0491e40b555b9b","inputs_sha256":"55d53ee35a9c5ec827d7446091adfb6e522c9fc74271f5b5344188bc4b587107","max_size_mb":768}, + {"source":"transformers","name":"electra_sequence_classification","architecture":"electra_sequence_classification","task":"text_classification","input_shape":[1,16],"architecture_sha256":"87b8103c5276655004f4d25be680ec842ae67decf7c055659b4840ddf0251ca0","inputs_sha256":"7efc05494ea834b84b767cc0f729ccaef6db105819492f05540fa63136f93ac3","max_size_mb":768}, + {"source":"transformers","name":"electra_token_classification","architecture":"electra_token_classification","task":"token_classification","input_shape":[1,16],"architecture_sha256":"e739dd72af94544909c379c3ce5d936df7ead91d7eeba793a1145ff71a5931a1","inputs_sha256":"7efc05494ea834b84b767cc0f729ccaef6db105819492f05540fa63136f93ac3","max_size_mb":768}, + {"source":"transformers","name":"gpt2_causal_lm","architecture":"gpt2_causal_lm","task":"language_modeling","input_shape":[1,16],"architecture_sha256":"d2e698e30a58e59efaf6e07c647720837c5b24e40517cd846a267cb52ff1197a","inputs_sha256":"7736768fe1002cb41f73bf902d379a590f7120850b458733fa26fd050164f776","max_size_mb":768}, + {"source":"transformers","name":"albert_base_v2_sequence_classification","architecture":"albert_base_v2_sequence_classification","task":"text_classification","input_shape":[1,16],"architecture_sha256":"244b2231ceb8bad5fada0880fa883c1aab645c26565f2f8c832176de99c8b0cb","inputs_sha256":"7efc05494ea834b84b767cc0f729ccaef6db105819492f05540fa63136f93ac3","max_size_mb":768}, + {"source":"transformers","name":"albert_base_v2_token_classification","architecture":"albert_base_v2_token_classification","task":"token_classification","input_shape":[1,16],"architecture_sha256":"fca05e8c349c8edda2fb19e38e0e1b8c0ec635a4f294d392464c5126886f12db","inputs_sha256":"7efc05494ea834b84b767cc0f729ccaef6db105819492f05540fa63136f93ac3","max_size_mb":768}, + {"source":"transformers","name":"bert_masked_lm","architecture":"bert_masked_lm","task":"language_modeling","input_shape":[1,16],"architecture_sha256":"6f671c91b8acf7231dc7123f133a7d31d19bd29d4fdfa732efbdc3244663a12e","inputs_sha256":"7efc05494ea834b84b767cc0f729ccaef6db105819492f05540fa63136f93ac3","max_size_mb":768}, + {"source":"transformers","name":"bert_question_answering","architecture":"bert_question_answering","task":"question_answering","input_shape":[1,16],"architecture_sha256":"4b42f707e42ea999211597c34a6f4e37a4427d5afe562914f04072440013233d","inputs_sha256":"7efc05494ea834b84b767cc0f729ccaef6db105819492f05540fa63136f93ac3","max_size_mb":768}, + {"source":"transformers","name":"distilbert_sequence_classification","architecture":"distilbert_sequence_classification","task":"text_classification","input_shape":[1,16],"architecture_sha256":"18164afa59904bbfa795a73f62bfd9256bd7ca5c8778e1e0bda968a7c00722bd","inputs_sha256":"e49318df2b78ec437ce4f64723479127855c96177b091833d21a608b536cb147","max_size_mb":768}, + {"source":"transformers","name":"distilbert_token_classification","architecture":"distilbert_token_classification","task":"token_classification","input_shape":[1,16],"architecture_sha256":"bb9dee9381a241070690f4692e7e319d6ee14a651fb69472965a2ecd272eb2d0","inputs_sha256":"e49318df2b78ec437ce4f64723479127855c96177b091833d21a608b536cb147","max_size_mb":768}, + {"source":"transformers","name":"electra_masked_lm","architecture":"electra_masked_lm","task":"language_modeling","input_shape":[1,16],"architecture_sha256":"b9e1ce9fb36432fea1e1e36194cf16f89bc5f475dfcf01026144a6c4d539f4ed","inputs_sha256":"7efc05494ea834b84b767cc0f729ccaef6db105819492f05540fa63136f93ac3","max_size_mb":768}, + {"source":"transformers","name":"electra_question_answering","architecture":"electra_question_answering","task":"question_answering","input_shape":[1,16],"architecture_sha256":"d2adc1b61de00a6fee28db1e950aca69775a2f6ee0b59a9f18f77f2a7092e637","inputs_sha256":"7efc05494ea834b84b767cc0f729ccaef6db105819492f05540fa63136f93ac3","max_size_mb":768}, + {"source":"transformers","name":"bert_sequence_classification","architecture":"bert_sequence_classification","task":"text_classification","input_shape":[1,16],"architecture_sha256":"d179b02b0d1fd7df2c3fd5a53a8e6041e441f92a28f425437f303a09edf6b12c","inputs_sha256":"7efc05494ea834b84b767cc0f729ccaef6db105819492f05540fa63136f93ac3","max_size_mb":768}, + {"source":"transformers","name":"bert_token_classification","architecture":"bert_token_classification","task":"token_classification","input_shape":[1,16],"architecture_sha256":"70da6bdd0adc8222d495f287f77122eb53fac839b38e007c4274487b1859dcca","inputs_sha256":"7efc05494ea834b84b767cc0f729ccaef6db105819492f05540fa63136f93ac3","max_size_mb":768}, + {"source":"transformers","name":"distilbert_masked_lm","architecture":"distilbert_masked_lm","task":"language_modeling","input_shape":[1,16],"architecture_sha256":"09a05d79ad9fb7f0514d609f8d4b9b661a4036b548eccc6122d3697d69c4b4ff","inputs_sha256":"e49318df2b78ec437ce4f64723479127855c96177b091833d21a608b536cb147","max_size_mb":768}, + {"source":"transformers","name":"distilbert_question_answering","architecture":"distilbert_question_answering","task":"question_answering","input_shape":[1,16],"architecture_sha256":"879c53704ef24eb2ad1c3af2cf4bae71601c06c43a82e893602ad6e7712bbc6b","inputs_sha256":"e49318df2b78ec437ce4f64723479127855c96177b091833d21a608b536cb147","max_size_mb":768}, + {"source":"torchvision_tasks","name":"r2plus1d_18","architecture":"r2plus1d_18","task":"video_classification","input_shape":[1,3,8,112,112],"architecture_sha256":"723fc6070a1264a96a4487a4a807ae07d8fe5cdd8759b05f94e91c2dbdc6ef99","inputs_sha256":"abe0f073f3bb17fb390e21a484016d77d3b7d6691d8353a32a3b8362f089e57f","max_size_mb":768}, + {"source":"torchvision_tasks","name":"r3d_18","architecture":"r3d_18","task":"video_classification","input_shape":[1,3,8,112,112],"architecture_sha256":"5fadd6780b56de0fe08c4b946baf1f82dd4a609eb7c74c9274defada6f63c984","inputs_sha256":"430c5dc98b59446ae6f4e975688fe3a2d40fc4c0f5864764bdd1e3f57370a383","max_size_mb":768}, + {"source":"torchvision_tasks","name":"raft_large","architecture":"raft_large","task":"optical_flow","input_shape":[1,3,128,128],"architecture_sha256":"fca4254c16404860f8d9c986e4dd64c524ba9ce0121b75f55809f8576df9857b","inputs_sha256":"69e712fc9bec81f96b2ca6f26351959861e50ec2ca81f4788d2490baad85c8b3","max_size_mb":768}, + {"source":"transformers","name":"t5_small","architecture":"t5_small","task":"text_generation","input_shape":[1,16],"architecture_sha256":"87a5c2fdb8eed014204d0a8766566383a1a889468138afa3abb38207e5d5dd09","inputs_sha256":"6960013fe78aaf66302c59013547afaafae7ad7e240a9865d5fa2f6f30ba081c","max_size_mb":768}, + {"source":"torchvision_tasks","name":"fasterrcnn_mobilenet_v3_large_320_fpn","architecture":"fasterrcnn_mobilenet_v3_large_320_fpn","task":"detection","input_shape":[1,3,320,320],"architecture_sha256":"abc44e92694814b8e0592d92490ca91254d0d0f979fd94c7b153605732073745","inputs_sha256":"0aa3cd22f9a2aebc97347a7698167e1580b46d4d23de277b1b4e12495ea1a57e","max_size_mb":768}, + {"source":"torchvision_tasks","name":"fasterrcnn_resnet50_fpn","architecture":"fasterrcnn_resnet50_fpn","task":"detection","input_shape":[1,3,320,320],"architecture_sha256":"696e58fa9026e7fc4e95136891e0c400c14c7e0de6680c28f8e340e55d16d7ca","inputs_sha256":"6978f751badc8e815f9b9d36370feed803274a2edf35110568d3d814587db014","max_size_mb":768}, + {"source":"torchvision_tasks","name":"raft_small","architecture":"raft_small","task":"optical_flow","input_shape":[1,3,128,128],"architecture_sha256":"4fcda0b436301a9c1d2e3257eada82407060fa4a37facbbc828d27bf4931b581","inputs_sha256":"1f7ae603a12193a42a8e0df7275cf9d2de7888e78d7f11c19c305e7d16172eee","max_size_mb":768}, + {"source":"torchvision_tasks","name":"retinanet_resnet50_fpn","architecture":"retinanet_resnet50_fpn","task":"detection","input_shape":[1,3,320,320],"architecture_sha256":"0c434fb89b88b09d7f72590d106d5c434090f9a5ff8ced2776b7d4a920933bea","inputs_sha256":"08473c64c7dc9a95c108c1678f82afc27f298b4409bb653f1e66b9a55aa00c68","max_size_mb":768}, + {"source":"torchvision_tasks","name":"s3d","architecture":"s3d","task":"video_classification","input_shape":[1,3,32,224,224],"architecture_sha256":"feb443fb57393c2e09550bf2d7dcb87e79d6d0e95931cc06e2c50a697721a365","inputs_sha256":"49f4277e4a07bebef62ec1d11df257d467b917ef02191a5396999c7be0293e8e","max_size_mb":768}, + {"source":"torchvision_tasks","name":"swin3d_t","architecture":"swin3d_t","task":"video_classification","input_shape":[1,3,32,224,224],"architecture_sha256":"7c4d1115fc72561681ca5e5802b237f8865f1f13d2fb3fb4d7481c1f4572a42a","inputs_sha256":"1bcd98676a71da8c7d71207c0a2c3cf0b1be47939d84f978811e2328b4945889","max_size_mb":768}, + {"source":"torchvision_tasks","name":"fcos_resnet50_fpn","architecture":"fcos_resnet50_fpn","task":"detection","input_shape":[1,3,320,320],"architecture_sha256":"49f99892c37627f20ec8b035db1fdd2597b9d24886867d58bd949e7b14ef58da","inputs_sha256":"cc670d2aed424e914d0ae8b7a080d962ca443acaa6392e017b189a3c5f0a8dfc","max_size_mb":768}, + {"source":"torchvision_tasks","name":"mc3_18","architecture":"mc3_18","task":"video_classification","input_shape":[1,3,8,112,112],"architecture_sha256":"87e88e1036c6952aaa8aa882188857cea5416f3caebe9058aaf7c1a2ecccf1a2","inputs_sha256":"ff7a7fd94790c62393e003bbcea674b5db9a3d06c3991ee4349321154b236069","max_size_mb":768}, + {"source":"transformers","name":"detr_object_detection","architecture":"detr_object_detection","task":"detection","input_shape":[1,3,320,320],"architecture_sha256":"328f0b499e1a05350dfcab7f8879889d178acbcd5adc00be18f8641a9dc5b19a","inputs_sha256":"4e9e60bcd9fcf7c1baa4adba62a6784c815c67957e48f964d5f0d03774da20af","max_size_mb":768}, + {"source":"transformers","name":"dpt_depth_estimation","architecture":"dpt_depth_estimation","task":"depth_estimation","input_shape":[1,3,384,384],"architecture_sha256":"d5f43e57be63a2855aec61bd6fb4015d9e2b73224b1103bbaf543e2f0f715ac6","inputs_sha256":"3e584911b2b390989af678838810bfbbad06471796031128bc80597f69008749","max_size_mb":768}, + {"source":"transformers","name":"time_series_transformer_teacher_forced","architecture":"time_series_transformer_teacher_forced","task":"time_series_forecasting","input_shape":[1,31],"architecture_sha256":"0ed04d32098878e076761a733155841e73184b265706c8838a0c0d25bc113779","inputs_sha256":"a34bd912b09730c2c4924ede6a687b58550d6c08b3c256be34c6056f2e7c8b6a","max_size_mb":768} + ] +} diff --git a/configs/constraints-diverse.txt b/configs/constraints-diverse.txt new file mode 100644 index 0000000..3bbf6a4 --- /dev/null +++ b/configs/constraints-diverse.txt @@ -0,0 +1,6 @@ +-r constraints-networks.txt +torchaudio==2.9.1 +torchsr==1.0.4 +transformers==4.57.1 +huggingface-hub==0.36.2 +tokenizers==0.22.2 diff --git a/configs/constraints-networks.txt b/configs/constraints-networks.txt new file mode 100644 index 0000000..30bc1c5 --- /dev/null +++ b/configs/constraints-networks.txt @@ -0,0 +1,10 @@ +# Reproduced with Python 3.12.3 (Linux) / 3.12.14 (Windows). +# Install the CPU torch/torchvision wheels first, following docs/model-expansion.md. +torch==2.9.1 +torchvision==0.24.1 +numpy==1.26.4 +onnx==1.17.0 +onnxruntime==1.20.1 +timm==1.0.22 +pytorchcv==0.0.74 +segmentation-models-pytorch==0.5.0 diff --git a/configs/constraints-paddle.txt b/configs/constraints-paddle.txt new file mode 100644 index 0000000..c3be039 --- /dev/null +++ b/configs/constraints-paddle.txt @@ -0,0 +1,21 @@ +paddlepaddle==3.0.0 +paddle2onnx==2.0.1 +onnxoptimizer==0.3.13 +numpy==1.26.4 +onnx==1.17.0 +onnxruntime==1.20.1 +protobuf==4.25.3 +setuptools==78.1.0 +opencv-python-headless==4.11.0.86 +scipy==1.17.1 +scikit-learn==1.7.2 +scikit-image==0.26.0 +shapely==2.2.0 +pyclipper==1.4.0 +rapidfuzz==3.14.6 +filelock==4.2.4 +prettytable==3.18.0 +pymatting==1.1.14 +numba==0.68.0 +llvmlite==0.50.0 +visualdl==2.5.3 diff --git a/configs/diverse-source-smoke.json b/configs/diverse-source-smoke.json new file mode 100644 index 0000000..b592d5a --- /dev/null +++ b/configs/diverse-source-smoke.json @@ -0,0 +1,12 @@ +{ + "schema_version": 1, + "required_tasks": ["super_resolution", "audio_separation", "question_answering", "time_series_forecasting", "video_classification", "optical_flow"], + "models": [ + {"source": "torchsr", "name": "ninasr_b0_x2"}, + {"source": "torchaudio", "name": "conv_tasnet"}, + {"source": "transformers", "name": "electra_question_answering"}, + {"source": "transformers", "name": "time_series_transformer_teacher_forced"}, + {"source": "torchvision_tasks", "name": "mc3_18"}, + {"source": "torchvision_tasks", "name": "raft_small"} + ] +} diff --git a/configs/diverse-sources.yaml b/configs/diverse-sources.yaml new file mode 100644 index 0000000..48a0847 --- /dev/null +++ b/configs/diverse-sources.yaml @@ -0,0 +1,4 @@ +torchvision_tasks: {} +torchsr: {} +torchaudio: {} +transformers: {} diff --git a/configs/network-source-smoke.json b/configs/network-source-smoke.json new file mode 100644 index 0000000..cab92ef --- /dev/null +++ b/configs/network-source-smoke.json @@ -0,0 +1,8 @@ +{ + "schema_version": 1, + "models": [ + {"source": "timm", "name": "mobilenetv2_050"}, + {"source": "pytorchcv", "name": "resnet20_cifar10"}, + {"source": "segmentation_models", "name": "unet__mobilenet_v2"} + ] +} diff --git a/configs/network-sources.yaml b/configs/network-sources.yaml new file mode 100644 index 0000000..6981ed6 --- /dev/null +++ b/configs/network-sources.yaml @@ -0,0 +1,6 @@ +# Optional source selection for exploratory collection. +# Do not supply this file when replaying the full accepted manifest. +pytorchcv: {} +segmentation_models: + decoders: [Unet, UnetPlusPlus, MAnet, Linknet, FPN, PSPNet, PAN, DeepLabV3, DeepLabV3Plus, Segformer] +timm: {} diff --git a/configs/paddle-source-smoke.json b/configs/paddle-source-smoke.json new file mode 100644 index 0000000..54656bf --- /dev/null +++ b/configs/paddle-source-smoke.json @@ -0,0 +1,10 @@ +{ + "schema_version": 1, + "required_tasks": ["text_detection", "text_recognition", "table_structure_recognition", "image_matting"], + "models": [ + {"source": "paddleocr", "name": "db_mobilenet_v3"}, + {"source": "paddleocr", "name": "crnn_mobilenet_v3"}, + {"source": "paddleocr", "name": "slanet"}, + {"source": "paddleseg", "name": "modnet_mobilenet_v2"} + ] +} diff --git a/configs/paddle-sources.yaml b/configs/paddle-sources.yaml new file mode 100644 index 0000000..eb87f4c --- /dev/null +++ b/configs/paddle-sources.yaml @@ -0,0 +1,4 @@ +paddleocr: {} +paddleseg: {} +# Experimental: this checkout currently needs additional training/import dependencies. +paddledetection: {} diff --git a/docs/model-expansion-results.json b/docs/model-expansion-results.json new file mode 100644 index 0000000..34c4879 --- /dev/null +++ b/docs/model-expansion-results.json @@ -0,0 +1,508 @@ +{ + "schema_version": 1, + "libraries": { + "torch": "2.9.1+cpu", + "torchvision": "0.24.1+cpu", + "numpy": "1.26.4", + "onnx": "1.17.0", + "onnxruntime": "1.20.1", + "timm": "1.0.22", + "pytorchcv": "0.0.74", + "segmentation-models-pytorch": "0.5.0" + }, + "candidates": 2595, + "candidate_states": { + "valid": 1487, + "excluded": 871, + "failed": 237 + }, + "failed_by_stage": { + "export_mismatch": 74, + "collection_failure": 111, + "reference_failure": 50, + "invalid_model": 2 + }, + "validated_unique": 1347, + "duplicates": 140, + "by_source": { + "pytorchcv": 477, + "segmentation_models": 255, + "timm": 615 + }, + "by_task": { + "classification": 1076, + "segmentation": 266, + "detection": 4, + "pose_estimation": 1 + }, + "device_validation": "not performed; CPU export/reference checks on the provided A100 host", + "comparison": { + "atol": 0.001, + "rtol": 0.001, + "all_outputs": true, + "nonfinite": "fail" + }, + "date": "2026-10-27", + "manifest": "catalogs/real-networks.json", + "strict_replay": { + "attempted": 1347, + "validated_unique": 1347, + "failed": 0, + "excluded": 0, + "duplicates": 0, + "complete": true, + "exit_code": 0, + "required": 1347, + "elapsed_s": 110.27, + "cache_policy": "Reuse content-verified model packages and recorded reference checks; initial screening executed export and parity per candidate. Use --force for fresh export and reference execution.", + "code_revision": "c7430c4c0bb50540ebd19b47aa62c416c38a6b56", + "manifest_payload_sha256": "0d55b175f14b2c07761737cfb1c7df6f09daeadb5cea3946d39e4d1ae3757cfc", + "source_and_tests_normalized_sha256": "1bc03618546380e9ba876ca2e3477f3f7ca5226a3136ede173ece4a44a695068" + }, + "synthetic": { + "positive": 548, + "negative": 18, + "included_in_real_count": false + }, + "manifest_payload_sha256": "0d55b175f14b2c07761737cfb1c7df6f09daeadb5cea3946d39e4d1ae3757cfc", + "source_and_tests_normalized_sha256": "936de4df48178361a46e8135cfdc6e8a91ff7009d98a7ab347d0d9ae0e76ece5", + "tests": { + "unit_and_operator_tests": 170, + "server_exit_code": 0, + "local_exit_code": 0, + "source_smoke_validated_unique": 3, + "source_smoke_exit_code": 0, + "github_hosted_ci": "pending for review fixes" + }, + "review_followup": { + "reviewed_revision": "c7430c4c0bb50540ebd19b47aa62c416c38a6b56", + "added_regression_tests": 30, + "validation_environment": [ + "python", + "torch", + "torchvision", + "onnx", + "onnxruntime", + "numpy" + ], + "existing_packages_checked": 1487, + "unchanged_manifest_fingerprints": 1340, + "subgraph_manifest_models": 7, + "fingerprint_migrations": [ + { + "source": "timm", + "name": "hieradet_small", + "old": "27bf3eecd1fc7191263e0553596ff071b215cf74e012d534a32c99980b8450fd", + "new": "705665e2821606f9c88753ee5d82664755711a0268de0053d090e887a11583e5", + "previous_rule_matches_manifest": true + }, + { + "source": "timm", + "name": "vit_small_plus_patch16_dinov3_qkvb", + "old": "d8d887879ceb4fa7b4ebb3771a5e0f5bedb02b4b5d1b84bf45ef49461733d284", + "new": "5ba9fbd3809b6f2eb459a9253b5581ed2792e6a1de2fc3988ea474aca093da26", + "previous_rule_matches_manifest": true + }, + { + "source": "timm", + "name": "sam2_hiera_small", + "old": "a2377c9f8833370f23a30db028abb9d3b8d9e5056827f0c63c652f7e8dea9f1c", + "new": "4d0e61289dc65fe6f5aa1b30920e1f375db9e54d80f88005a147422191b18628", + "previous_rule_matches_manifest": true + }, + { + "source": "timm", + "name": "sam2_hiera_tiny", + "old": "5e60291e2ab0c81416bc1473cb04215de307c93de415bc5db4ebf72642ea38fa", + "new": "1d939b58f2449322c1bce07ec20c301500838ad89767fb8b99181282bf3733ea", + "previous_rule_matches_manifest": true + }, + { + "source": "timm", + "name": "vit_small_patch16_dinov3_qkvb", + "old": "97fb46c41cf22d107a12604b6088d0373b14393d49aa19d3013b03c828e0553d", + "new": "977058ecc4e7a6716d2a3e74bf09fb0c3cf33e2eb802aa4136c880c3572dd043", + "previous_rule_matches_manifest": true + }, + { + "source": "timm", + "name": "vit_small_plus_patch16_dinov3", + "old": "4dec067bc94886075a70ad9bcca562bc40e4f8052711b4bd99166e6998aefd50", + "new": "598fc650c7b5cbef4b571241db27bcaa02e89bc695dc286855c48483bc4e52ec", + "previous_rule_matches_manifest": true + }, + { + "source": "timm", + "name": "vit_small_patch16_dinov3", + "old": "718cb464dcad86f0d4b44a2dc6e0953a126008d07e09a43361aad99ae6cbc07c", + "new": "fcc1350a3bd38a953bda0bb35dae4669b8e1016ffcddd3d5a025e1b4dfe18ea6", + "previous_rule_matches_manifest": true + } + ], + "unique_after_rehash": 1347, + "duplicates_after_rehash": 140, + "accepted_task_corrections": [ + { + "name": "edanet_cityscapes", + "old": "classification", + "new": "segmentation", + "in_manifest": true + }, + { + "name": "linknet_cityscapes", + "old": "classification", + "new": "segmentation", + "in_manifest": true + }, + { + "name": "erfnet_cityscapes", + "old": "classification", + "new": "segmentation", + "in_manifest": true + }, + { + "name": "esnet_cityscapes", + "old": "classification", + "new": "segmentation", + "in_manifest": true + }, + { + "name": "sqnet_cityscapes", + "old": "classification", + "new": "segmentation", + "in_manifest": true + }, + { + "name": "unet_cityscapes", + "old": "classification", + "new": "segmentation", + "in_manifest": true + } + ], + "fresh_affected_model_validation": { + "schema_version": 1, + "real_candidates": 13, + "validated_unique": 13, + "duplicates": 0, + "excluded": 0, + "by_source": { + "pytorchcv": 6, + "timm": 7 + }, + "by_task": { + "segmentation": 6, + "classification": 7 + }, + "complete": true, + "attempted": 13, + "required": 13, + "failed": 0, + "elapsed_s": 182.74, + "minimum_real_models": 13, + "exit_code": 0, + "fresh_exports": 13 + }, + "full_1347_reexport_after_fixes": false, + "scope": "Existing package hashes and architecture fingerprints checked for all 1487 previously valid candidates; all 13 affected configurations freshly exported and compared; three-source smoke and 146 tests passed. No device execution.", + "reviewed_subset_manifest_payload_sha256": "184e29852d54cad3cf7eff90e50e9d1be0a21d9f05e0c379b8d14bc2e7777912", + "current_general_manifest_payload_sha256": "f95d91d166b4695cf2b01f84302dec8e21fcd59eca07a9333a3522f055fdbbb8", + "pr2_integration": { + "previous_head": "cd4e03d3b00cff8f4dd935f26b3fd564f8946d33", + "additional_packages_checked": 75, + "additional_fingerprint_migrations": [ + { + "source": "torchvision_tasks", + "name": "fasterrcnn_mobilenet_v3_large_320_fpn", + "old": "d59da17eea63451f70ca578221f998d0ba23ea37dd248ebb658a61e7ca1f9e3a", + "new": "689e723e48890ff04bdc42e5400dd550028b19b5817b8b3526c001e56c1c5abc", + "changed": true, + "has_subgraphs": true + }, + { + "source": "torchvision_tasks", + "name": "fasterrcnn_resnet50_fpn", + "old": "939821300729030620eee078ab62b15a51df84d4bf7d91cc1f0fc7287fe0b9d0", + "new": "105edf7943f338ebf346ff4e420981965cb6680671943a1121c6178bfd7949c9", + "changed": true, + "has_subgraphs": true + }, + { + "source": "torchvision_tasks", + "name": "retinanet_resnet50_fpn", + "old": "ea72f865002783580dff4f0a70c5069210f0559b21fda44342e7b23308a8c7e7", + "new": "e85474ff32a647a70a3f384e51defd98a4e48e4131206ce779f4801575683c20", + "changed": true, + "has_subgraphs": true + }, + { + "source": "torchvision_tasks", + "name": "fcos_resnet50_fpn", + "old": "4a3ad1f50df105c4f0c2712c0ed9e97e84b1fca7ef95781af44ffa455866e0e3", + "new": "73bf625bed3b4b00277f903a4cffaaba473341e08157d44e722a6512659f0203", + "changed": true, + "has_subgraphs": true + }, + { + "source": "paddleocr", + "name": "slanet", + "old": "30258e44373674ef8a07d1366dd42db8fa1d140fd9b0f0dc45b3f24dfbe38f57", + "new": "cd4eac49d1e464fb8a6daf85298cd4eca65a05ceb850896ba0d758bcc24ea646", + "changed": true, + "has_subgraphs": true + }, + { + "source": "paddleocr", + "name": "table_attention_mobilenet_v3", + "old": "c2c3f4a3aec508d73989b191dc37fef29bc413061c16f0e64c0bd8d0c3c1d038", + "new": "ffec20a37bfac04d84d0a5c4fbeba81bc2c717dc893351e7e910f496d6154a77", + "changed": true, + "has_subgraphs": true + } + ], + "unit_and_operator_tests": 170, + "local_exit_code": 0, + "server_exit_code": 0, + "general_manifest_models": 1409, + "general_and_paddle_unique": 1422, + "general_by_task": { + "classification": 1076, + "segmentation": 266, + "detection": 9, + "pose_estimation": 1, + "super_resolution": 27, + "audio_separation": 1, + "speech_recognition": 2, + "language_modeling": 5, + "question_answering": 4, + "text_classification": 4, + "token_classification": 4, + "video_classification": 5, + "optical_flow": 2, + "text_generation": 1, + "depth_estimation": 1, + "time_series_forecasting": 1 + }, + "current_general_manifest_payload_sha256": "f95d91d166b4695cf2b01f84302dec8e21fcd59eca07a9333a3522f055fdbbb8", + "current_diverse_manifest_payload_sha256": "83e6b3a7e2b9419b84f1e235b17dc0300b9038299a0a6f173e21a1b092d01942", + "current_paddle_manifest_payload_sha256": "b2184dcb2e805fe375d4b33bc0fbe31385729319e61ee4571b3dcde8c7b1cc68", + "output_metadata_migrations": [ + { + "source": "torchvision_tasks", + "name": "fasterrcnn_mobilenet_v3_large_320_fpn", + "old_scoped_fingerprint": "689e723e48890ff04bdc42e5400dd550028b19b5817b8b3526c001e56c1c5abc", + "new": "abc44e92694814b8e0592d92490ca91254d0d0f979fd94c7b153605732073745", + "same_inputs": true, + "torch_reference": "passed", + "reason": "Fresh signed export uses concrete output sizes; cached baseline retained symbolic output descriptions. Computational graph canonical diff is otherwise identical.", + "outputs": { + "boxes": { + "shape": [ + 0, + 4 + ], + "dtype": "float32", + "sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855" + }, + "labels": { + "shape": [ + 0 + ], + "dtype": "int64", + "sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855" + }, + "scores": { + "shape": [ + 0 + ], + "dtype": "float32", + "sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855" + } + } + }, + { + "source": "torchvision_tasks", + "name": "fasterrcnn_resnet50_fpn", + "old_scoped_fingerprint": "105edf7943f338ebf346ff4e420981965cb6680671943a1121c6178bfd7949c9", + "new": "696e58fa9026e7fc4e95136891e0c400c14c7e0de6680c28f8e340e55d16d7ca", + "same_inputs": true, + "torch_reference": "passed", + "reason": "Fresh signed export uses concrete output sizes; cached baseline retained symbolic output descriptions. Computational graph canonical diff is otherwise identical.", + "outputs": { + "boxes": { + "shape": [ + 100, + 4 + ], + "dtype": "float32", + "sha256": "2d776897829b63d120232b81a773e012db70e29cb26c465ab50ef382f4792e0d" + }, + "labels": { + "shape": [ + 100 + ], + "dtype": "int64", + "sha256": "9bc463f5782714d9d67fa58b37bd2be5c0ab6cbc457cb38efca8cf29d29b747d" + }, + "scores": { + "shape": [ + 100 + ], + "dtype": "float32", + "sha256": "c11e8fdf04ac0f626c4a46cf4c4fe48bd42dd520d4b0fe2f06ae08f978659592" + } + } + }, + { + "source": "torchvision_tasks", + "name": "fcos_resnet50_fpn", + "old_scoped_fingerprint": "73bf625bed3b4b00277f903a4cffaaba473341e08157d44e722a6512659f0203", + "new": "49f99892c37627f20ec8b035db1fdd2597b9d24886867d58bd949e7b14ef58da", + "same_inputs": true, + "torch_reference": "passed", + "reason": "Fresh signed export uses concrete output sizes; cached baseline retained symbolic output descriptions. Computational graph canonical diff is otherwise identical.", + "outputs": { + "boxes": { + "shape": [ + 0, + 4 + ], + "dtype": "float32", + "sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855" + }, + "labels": { + "shape": [ + 0 + ], + "dtype": "int64", + "sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855" + }, + "scores": { + "shape": [ + 0 + ], + "dtype": "float32", + "sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855" + } + } + }, + { + "source": "torchvision_tasks", + "name": "retinanet_resnet50_fpn", + "old_scoped_fingerprint": "e85474ff32a647a70a3f384e51defd98a4e48e4131206ce779f4801575683c20", + "new": "0c434fb89b88b09d7f72590d106d5c434090f9a5ff8ced2776b7d4a920933bea", + "same_inputs": true, + "torch_reference": "passed", + "reason": "Fresh signed export uses concrete output sizes; cached baseline retained symbolic output descriptions. Computational graph canonical diff is otherwise identical.", + "outputs": { + "boxes": { + "shape": [ + 0, + 4 + ], + "dtype": "float32", + "sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855" + }, + "labels": { + "shape": [ + 0 + ], + "dtype": "int64", + "sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855" + }, + "scores": { + "shape": [ + 0 + ], + "dtype": "float32", + "sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855" + } + } + } + ], + "source_and_tests_normalized_sha256": "936de4df48178361a46e8135cfdc6e8a91ff7009d98a7ab347d0d9ae0e76ece5", + "original_smoke": { + "schema_version": 1, + "real_candidates": 3, + "validated_unique": 3, + "duplicates": 0, + "excluded": 0, + "by_source": { + "pytorchcv": 1, + "segmentation_models": 1, + "timm": 1 + }, + "by_task": { + "classification": 2, + "segmentation": 1 + }, + "missing_tasks": [], + "complete": true, + "attempted": 3, + "required": 3, + "failed": 0, + "elapsed_s": 5.43, + "minimum_real_models": 3, + "exit_code": 0 + }, + "diverse_smoke": { + "schema_version": 1, + "real_candidates": 10, + "validated_unique": 10, + "duplicates": 0, + "excluded": 0, + "by_source": { + "torchaudio": 1, + "torchsr": 1, + "torchvision": 6, + "transformers": 2 + }, + "by_task": { + "audio_separation": 1, + "super_resolution": 1, + "detection": 4, + "video_classification": 1, + "optical_flow": 1, + "question_answering": 1, + "time_series_forecasting": 1 + }, + "missing_tasks": [], + "complete": true, + "attempted": 10, + "required": 10, + "failed": 0, + "elapsed_s": 15.43, + "minimum_real_models": 10, + "exit_code": 0 + }, + "paddle_smoke": { + "schema_version": 1, + "real_candidates": 5, + "validated_unique": 5, + "duplicates": 0, + "excluded": 0, + "by_source": { + "paddleocr": 4, + "paddleseg": 1 + }, + "by_task": { + "text_recognition": 1, + "text_detection": 1, + "table_structure_recognition": 2, + "image_matting": 1 + }, + "missing_tasks": [], + "complete": true, + "attempted": 5, + "required": 5, + "failed": 0, + "elapsed_s": 24.23, + "minimum_real_models": 5, + "exit_code": 0 + }, + "scope": "Current PR #2 integrated tests and source smoke; all affected new control-flow models re-exported and compared. No full 1409/1422 fresh replay or device execution." + }, + "standalone_review_source_and_tests_normalized_sha256": "24b1a07e0ec94f706ba2828e243ef45060d62396bab9e6660d8826c75c7d3455" + }, + "scope": "Original 1347-network subset with reviewed task labels; strict_replay records c7430c4. See task-expansion-results.json and paddle-models-results.json for the current combined corpus.", + "initial_manifest_revision": "c7430c4c0bb50540ebd19b47aa62c416c38a6b56" +} diff --git a/docs/model-expansion.md b/docs/model-expansion.md new file mode 100644 index 0000000..a87ba55 --- /dev/null +++ b/docs/model-expansion.md @@ -0,0 +1,126 @@ +# 真实网络模型扩充与复验 + +本文记录首轮提交 c7430c4 的 1347 项基线。当前统一清单已扩充到 1409 项、16 种任务;安装与最新复验入口见[多任务扩充说明](task-expansion.md)。下述首轮复验命令应与 c7430c4 版本的清单配套使用。 + +本功能将真实网络架构配置与合成用例分别统计。通过数量仅包含成功导出、通过 ONNX 检查及 ONNX Runtime 执行、且全部输出与原始 PyTorch 一致的网络。随机初始化的参数用于编译器验证,不代表模型任务精度或训练结果。 + +## 接入来源 + +| 来源 | 用途 | 来源与许可 | +|---|---|---| +| timm | CNN、视觉 Transformer、MLP 等分类网络;按官方默认输入尺寸导出,启用 exportable 配置,排除权重标签别名 | [上游仓库](https://github.com/huggingface/pytorch-image-models),Apache-2.0 | +| PyTorchCV | ImageNet/CIFAR/SVHN 等网络及分割、检测、姿态候选;从模型实际 in_size 和第一层卷积读取输入 | [上游仓库](https://github.com/osmr/pytorchcv),MIT | +| Segmentation Models PyTorch | 官方解码器与编码器构成的完整分割网络,使用 encoder_weights=None | [上游仓库](https://github.com/qubvel-org/segmentation_models.pytorch),MIT | + +SMP 的组合是候选配置,不代表每个编码器都兼容每个解码器。只有实际验证成功的组合才进入清单。分类网络的预训练权重标签、同一网络重复导出、不同随机种子及合成用例不能用来凑真实模型数量。 + +[ONNX Model Zoo 官方](https://github.com/onnx/models)已停止旧 Git LFS 模型下载,现有模型迁移到 [Hugging Face 镜像](https://huggingface.co/onnxmodelzoo)。本轮没有将其不同 opset/框架副本直接累加进目标数量;带 token、索引和动态控制输入的来源还需要显式输入合同,不能随机伪造输入。原有 onnx_zoo/huggingface 小型来源保留,但不作为本轮数量证明。 + +## 本轮实测结果 + +首轮基线包含 **1347 个去重的真实网络配置**。初版提交 c7430c4 的严格复验为 **1347/1347、0 失败、0 排除、0 重复、退出 0**;审核修复后的核对范围见下方“审核修复”。原有 548 个合成正例和 18 个负例另计;有效正例合计 1895,但真实网络指标始终单列。 + +| 来源 | 固定清单中的独立通过项 | +|---|---:| +| timm | 615 | +| PyTorchCV | 477 | +| Segmentation Models PyTorch | 255 | +| 合计 | 1347 | + +任务分布为分类 1076、分割 266、检测 4、姿态 1。部分分类项来自同一家族不同深度/宽度/分类头的官方具名配置,不应把 1347 解读成 1347 个独立模型家族。 + +2595 个候选的最终状态为:1487 个通过全部参考检查,去除 140 个重复后为 1347;871 个按参数/模型包预算排除;237 个失败,全部保留诊断。其中 74 个导出数值不一致、50 个参考执行失败、2 个模型检查失败,另外 111 个为构建/导出等失败(包含缺少部分候选专用依赖)。这些失败不是 InfiniTensor 设备失败。 + +PSPNet 的合法输入修复恢复了 32 个候选,通过去重新增 30 项,没有更改模型结构或容差。完整统计和固定依赖版本见 [机器可读验收摘要](model-expansion-results.json)。 + +## 固定环境 + +本轮批量导出在 Linux / Python 3.12 的独立 CPU 环境进行,依赖见 configs/constraints-networks.txt。使用 A100 服务器的 CPU 资源导出和参考校验,没有将这项验证描述为 InfiniTensor/A100 设备支持率。 + +```bash +python3.12 -m venv .venv-networks +source .venv-networks/bin/activate +python -m pip install torch==2.9.1 torchvision==0.24.1 --index-url https://download.pytorch.org/whl/cpu +python -m pip install -e '.[networks,test]' -c configs/constraints-networks.txt +python -m pip check +``` + +基础安装仍不需要这些来源库。也可以分别安装 `.[pytorchcv]`、`.[segmentation]` 或 `.[timm]`。选择缺依赖来源时明确失败。 + +## 全量候选筛选 + +```bash +OMP_NUM_THREADS=1 OPENBLAS_NUM_THREADS=1 MKL_NUM_THREADS=1 \ +infinitensor-test-expand --sources pytorchcv segmentation_models timm \ + --data-dir data/real-networks --source-config configs/network-sources.yaml \ + --offline --max-size-mb 160 --minimum-real-models 1001 \ + --jobs 4 --batch-size 8 --timeout 180 +``` + +来源发现只生成具名规格,不下载预训练权重。每个进程按批次复用依赖导入;每个用例仍独立落盘,超时或崩溃后回收该 worker 并继续剩余用例。默认两个 worker;并发数应根据 CPU、内存和磁盘调整。 + +若模型支持 meta 构建,先估算参数字节数,避免实际分配明显超过预算的模型;不支持时正常构建后检查。`parameter_size_limit` 是参数预算排除,`size_limit` 是完整 ONNX 包大小排除,两者都不等于设备不支持。160 MiB 是本轮资源策略,用户可显式更改;来源配置中的 `max_size_mb` 与全局预算取较小值。 + +真实模型导出使用库的网络实现,固定随机种子,不下载检查点、不训练。原始 PyTorch 与 ONNX 采用同一确定性输入,全部输出检查数量、shape、dtype 和有限值;浮点逐元素要求 `abs(actual-reference) <= 1e-3 + 1e-3*abs(reference)`,整数精确相等。所有差异保留为失败,不放宽容差。 + +SMP 普通分割输入为 256×256。PSPNet 使用合法的 384×384,使 stride 8 特征图为 48×48,可被金字塔池化的 1/2/3/6 各档整除;不修改网络结构或替换算子。 + +## 固定清单严格复验 + +```bash +infinitensor-test-expand --manifest catalogs/real-networks.json \ + --data-dir data/real-networks --offline --max-size-mb 160 \ + --minimum-real-models 1001 --jobs 4 --batch-size 8 --timeout 180 +``` + +固定清单只包含已通过的独立真实网络配置,具有来源、名称和结构摘要。模型发生结构变化、必测项失败/被排除/漏执行、去重后数量不足或执行不完整,都不能通过严格复验,包括使用 `--limit` 只执行清单子集的情况。验收不会自动缩减或改写输入清单;生成的子集另存为 validated-models.json。输入清单不得放在模型缓存或报告输出目录中,探索产生的 accepted-models.json 除外,避免输出覆盖输入。 + +`--resume` 仅在请求的源码、配置、来源库及验证环境签名相同时复用已完成任务记录,并检查成功模型包摘要。验证环境统一包含 Python、Torch、Torchvision、ONNX、ORT、NumPy 版本;源码签名也传入底层模型缓存,避免任务记录失效后继续复用旧模型和旧 PyTorch 比较证据。升级到审核修复版本后,旧缓存会失效并重新导出。 + +成功记录还必须重新读取实际输入,校验名称、shape、dtype、有限值,并将全部数组摘要与保存的 `validation.inputs_sha256` 核对;NPZ 缺失、损坏或内容不符时交回正常 worker。输入合同生成的 NPZ 可由 worker 重建;显式外部输入仍无效时,记录输入或参考失败,不能沿用旧成功状态。等值数组重新打包 NPZ 不会引起重复执行。 + +`timeout` 和 `crash` 是未完成任务,使用 `--resume` 时始终重新执行,可调大 `--timeout` 后继续,同时保留验证证据仍有效的成功项。签名不变的明确 `failed` / `excluded` 记录仍复用;需要重试这类已完成诊断时使用 `--force` 或不使用 `--resume`。 + +`--resume` 适用于恢复一次被中断的探索;正式复验不使用该参数。采集器仍可复用相同验证签名下、模型包及输入摘要校验通过的参考验证缓存,初版 1347 项严格复验采用此方式;首次候选筛选逐项执行了导出与 PyTorch/ONNX 比较。需要重新导出和计算参考结果时增加 `--force`,该参数优先于 `--resume`。清单版本更新需要显式审查,不会自动修改仓库中的清单。 + +若希望保留探索报告、同时复用模型缓存,可将复验输出放到另一个 data_dir,并设置绝对路径 `ITEST_MODELS_DIR` 指向原缓存目录。 + +## 数量与去重 + +同时使用具名架构身份和 ONNX 结构指纹去重,采用传递合并,选择稳定代表项。结构指纹忽略节点/张量名称和浮点参数值,保留算子、属性、opset、连线、参数形状/dtype、整数控制常量及输入输出描述。因此同一个网络换权重或随机种子不会提高计数。它不是任意两个图数学等价的证明;清单表示通过上述规则去重的具名网络配置,不是 1000 个独立研究模型家族。 + +子图的输入、initializer 和节点输出具有独立作用域,捕获值沿外层作用域解析,包括只在子图中使用的外层 initializer。平面图指纹保持兼容;含子图的清单项需要显式迁移指纹,不能直接沿用旧结果。 + +输出目录包括: + +- models/catalog.json:保留增量采集记录,包含模型与参考验证证据。 +- expansion/inventory.json:唯一通过项、重复项、排除项、来源和任务统计。 +- expansion/results.json:本次每个候选的执行状态。 +- expansion/accepted-models.json:探索产生的候选通过清单;严格复验写 validated-models.json。 +- expansion/tasks/:逐用例请求/结果。 +- expansion/batches/:worker 日志、活动状态和崩溃/超时诊断。 +- expansion/progress.json:明确标记任务是否完整结束。 + +退出码:完整完成、达到真实模型最低数量且没有失败为 0;候选失败、超时/崩溃、空集合、数量不足或固定清单未全部通过为 1;配置或来源环境错误为 2。探索阶段有失败时退出 1 是诊断结果,不应当用通过项数量覆盖失败状态。 + +## CI 与设备边界 + +新增来源 CI 固定依赖,执行基础测试以及三个来源各一个真实网络的导出和 PyTorch/ONNX 比较,上传 JSON/XML/worker 日志。审核修复与当前 PR 整合后,本地和服务器均为 170 项测试通过,三来源全新导出冒烟 3/3 通过;修复版本的 GitHub 托管 CI 尚待触发。1000+ 全量复验在提供的服务器执行,不强制普通 GitHub runner 保存数十 GiB 模型权重。 + +## 审核修复 + +审核针对 c7430c4 的三项问题均已复现并修正:两层缓存统一绑定源码和验证环境;补齐 PyTorchCV 非分类任务映射;子图结构身份增加作用域。新增 30 项回归测试,覆盖真实 PyTorch 实现从 Add 改成 Mul 后禁止复用旧 parity、依赖版本变化、22 个分割模块的分类筛选,以及合法 If 图的捕获值与局部值混淆。 + +在服务器对已有 1487 个通过候选重新检查模型包摘要并计算结构指纹,去重仍为 1347 项、重复 140 项。其中 7 个 timm 模型含子图,需要更新指纹;其余 1340 个清单指纹不变。对同一批模型包重新运行旧指纹实现,7 项均能还原旧清单值,确认迁移来自指纹规则修正。 + +清单中的 edanet、erfnet、esnet、linknet、sqnet、unet 六个 Cityscapes 模型纠正为分割。发现阶段同时补齐 espcnet、fcn8sd、segnet 等候选及非分类任务;这些候选不会因此自动被计为通过。已有 catalog 需重新采集才能刷新任务标签。 + +上述 7 个子图模型和 6 个分类纠正项,已在独立缓存中使用 `--force` 全部重新导出,ONNX 检查、ORT 执行及 PyTorch/ONNX 比较 **13/13 通过、退出 0**。本轮没有重新导出全部 1347 项,也没有执行 InfiniTensor 设备测试;机器可读摘要保留初版全量复验的提交及清单摘要,并单独记录本次核对、指纹迁移和重新导出结果。 + +整合 PR #2 的后续扩充时,另核对 75 个新增模型包,更新 4 个检测模型、2 个 Paddle 表格模型的子图指纹。4 个检测模型的新导出还将旧缓存的符号输出首维改为实际尺寸;逐项规范化图对照确认除此之外没有计算结构变化,输入摘要相同且全部输出比较通过,因此显式迁移对应指纹。集成验证为 170 项测试、原来源 3/3、多任务及检测 10/10、Paddle 5/5;通用 1409 项与 Paddle 13 项联合结构摘要仍为 1422 个唯一值。本轮没有全量重新导出这 1422 项。 + +后续恢复逻辑审核修正了上述 NPZ 核对和未完成任务重试,同时将 PyTorchCV 姿态/语音网络映射至已有的 `pose_estimation` / `speech_recognition` 类别,使 `ModelCatalog.filter()` 和 collect/run 的类别筛选与 inventory 任务统计一致。清单中的任务、输入和结构未因此变化;原有 catalog 需要重新采集才能刷新类别。 + +本功能增加可供 InfiniTensor 测试的有效网络集合,不保证这些网络都已被 InfiniTensor 支持。设备执行隔离、全部输出数值门禁与 CPU/GPU 支持基线仍按后续计划交付。 + +本轮恢复与类别修复的验证范围及真实测试输出见[审核修复记录](resume-review.md)。 diff --git a/docs/paddle-models-results.json b/docs/paddle-models-results.json new file mode 100644 index 0000000..92ae84b --- /dev/null +++ b/docs/paddle-models-results.json @@ -0,0 +1,263 @@ +{ + "schema_version": 1, + "date": "2026-10-27", + "candidates": 17, + "validated_unique": 13, + "duplicates": 0, + "by_source": { + "paddleocr": 8, + "paddleseg": 5 + }, + "by_task": { + "text_recognition": 3, + "text_detection": 2, + "table_structure_recognition": 2, + "text_orientation": 1, + "segmentation": 2, + "image_matting": 3 + }, + "combined_validated_unique": 1422, + "combined_by_task": { + "classification": 1076, + "segmentation": 268, + "detection": 9, + "pose_estimation": 1, + "super_resolution": 27, + "audio_separation": 1, + "speech_recognition": 2, + "language_modeling": 5, + "question_answering": 4, + "text_classification": 4, + "token_classification": 4, + "video_classification": 5, + "optical_flow": 2, + "text_generation": 1, + "depth_estimation": 1, + "time_series_forecasting": 1, + "text_recognition": 3, + "text_detection": 2, + "table_structure_recognition": 2, + "text_orientation": 1, + "image_matting": 3 + }, + "libraries": { + "paddlepaddle": "3.0.0", + "paddle2onnx": "2.0.1", + "onnxoptimizer": "0.3.13", + "numpy": "1.26.4", + "onnx": "1.17.0", + "onnxruntime": "1.20.1", + "protobuf": "4.25.3", + "setuptools": "78.1.0", + "opencv-python-headless": "4.11.0.86", + "scipy": "1.17.1", + "scikit-learn": "1.7.2", + "pymatting": "1.1.14", + "numba": "0.68.0", + "llvmlite": "0.50.0", + "visualdl": "2.5.3", + "scikit-image": "0.26.0" + }, + "upstream_revisions": { + "paddleocr": { + "repository": "PaddleOCR", + "revision": "3f32858ce3fb95ba04a8202000e432bcc50a6016" + }, + "paddleseg": { + "repository": "PaddleSeg", + "revision": "3c4db66de1d9d59d0628ed87590b6308a2f4aa2a" + } + }, + "failed_by_stage": { + "export_mismatch": 2, + "environment_blocked": 2 + }, + "failures": [ + { + "source": "paddleocr", + "name": "east_resnet50_vd", + "stage": "export_mismatch", + "error": "ModelValidationError: fetch_name_1: framework/ONNX numerical mismatch (atol=rtol=1e-3)" + }, + { + "source": "paddleocr", + "name": "pse_resnet50_vd", + "stage": "export_mismatch", + "error": "ModelValidationError: fetch_name_0: framework/ONNX numerical mismatch (atol=rtol=1e-3)" + }, + { + "source": "paddledetection", + "name": "picodet_s_320", + "stage": "environment_blocked", + "error": "ModuleNotFoundError: No module named 'imgaug'" + }, + { + "source": "paddledetection", + "name": "tinypose_128x96", + "stage": "environment_blocked", + "error": "ModuleNotFoundError: No module named 'imgaug'" + } + ], + "manifest": "catalogs/paddle-networks.json", + "general_manifest": "catalogs/real-networks.json", + "paddle_manifest_payload_sha256": "ae22a6918d15332100e085bcfe157675ac9818729c890eb36cfa76f14d44475e", + "general_manifest_payload_sha256": "ce0fccb1a04dec0d961aeabebc8eda8d8941d2393e1c5fbd1668bb732bb110e1", + "normalized_source_and_tests_sha256": "07501fc3dc60137f030478e7233990c4cb1092d23825ea233630a11359cc4f5e", + "paddle_strict": { + "schema_version": 1, + "real_candidates": 13, + "validated_unique": 13, + "duplicates": 0, + "excluded": 0, + "by_source": { + "paddleocr": 8, + "paddleseg": 5 + }, + "by_task": { + "text_recognition": 3, + "text_detection": 2, + "table_structure_recognition": 2, + "text_orientation": 1, + "segmentation": 2, + "image_matting": 3 + }, + "missing_tasks": [], + "complete": true, + "attempted": 13, + "required": 13, + "failed": 0, + "elapsed_s": 14.05, + "minimum_real_models": 13, + "exit_code": 0 + }, + "general_strict": { + "schema_version": 1, + "real_candidates": 1409, + "validated_unique": 1409, + "duplicates": 0, + "excluded": 0, + "by_source": { + "pytorchcv": 477, + "segmentation_models": 255, + "timm": 615, + "torchaudio": 3, + "torchsr": 27, + "torchvision": 11, + "transformers": 21 + }, + "by_task": { + "classification": 1082, + "segmentation": 260, + "detection": 9, + "pose_estimation": 1, + "audio_separation": 1, + "speech_recognition": 2, + "super_resolution": 27, + "video_classification": 5, + "optical_flow": 2, + "language_modeling": 5, + "question_answering": 4, + "text_classification": 4, + "token_classification": 4, + "depth_estimation": 1, + "text_generation": 1, + "time_series_forecasting": 1 + }, + "missing_tasks": [], + "complete": true, + "attempted": 1409, + "required": 1409, + "failed": 0, + "elapsed_s": 152.7, + "minimum_real_models": 1001, + "exit_code": 0 + }, + "tests": { + "base_local": 140, + "paddle_server": 145, + "torch_server": 145, + "paddle_server_exit_code": 0, + "torch_server_exit_code": 0, + "paddle_four_task_smoke_exit_code": 0, + "github_hosted_ci": "pending", + "clean_install_exit_code": 0, + "clean_pip_check": "No broken requirements found.", + "clean_console_four_task_smoke_exit_code": 0, + "source_setup_actual_sparse_checkout_exit_code": 0 + }, + "device_validation": "not performed; CPU source-framework and ONNX checks on the provided A100 host", + "comparison": { + "atol": 0.001, + "rtol": 0.001, + "integer_and_bool": "exact", + "all_outputs": true, + "nonfinite": "fail" + }, + "reference_timing": "Original Paddle outputs captured and copied before static export.", + "integer_arithmetic_probe": "Known discrepancy in pinned Paddle/Paddle2ONNX must be rejected as export_mismatch; fixture excluded from real-model counts.", + "exploratory_upstream_revision": { + "paddledetection": "f049a01a94ccd5addf780641da3ffff276b60083" + }, + "synthetic": { + "positive": 548, + "negative": 18, + "included_in_real_count": false + }, + "packaging_and_constraints_normalized_sha256": { + "pyproject.toml": "00723d0c5c3828670236c11acf870cc312773dc1727a92a29a8f4515c00f733b", + "configs\\constraints-paddle.txt": "5abfeca094cfbd974c2f0b0ca55aae29eb848012ee1b8a3764de9cbc48fb4d62" + }, + "review_followup": { + "previous_manifest_hashes": { + "general_manifest_payload_sha256": "ce0fccb1a04dec0d961aeabebc8eda8d8941d2393e1c5fbd1668bb732bb110e1", + "paddle_manifest_payload_sha256": "ae22a6918d15332100e085bcfe157675ac9818729c890eb36cfa76f14d44475e" + }, + "changed_fingerprints": [ + { + "source": "paddleocr", + "name": "slanet", + "old": "30258e44373674ef8a07d1366dd42db8fa1d140fd9b0f0dc45b3f24dfbe38f57", + "new": "cd4eac49d1e464fb8a6daf85298cd4eca65a05ceb850896ba0d758bcc24ea646", + "changed": true, + "has_subgraphs": true + }, + { + "source": "paddleocr", + "name": "table_attention_mobilenet_v3", + "old": "c2c3f4a3aec508d73989b191dc37fef29bc413061c16f0e64c0bd8d0c3c1d038", + "new": "ffec20a37bfac04d84d0a5c4fbeba81bc2c717dc893351e7e910f496d6154a77", + "changed": true, + "has_subgraphs": true + } + ], + "current_general_manifest_payload_sha256": "f95d91d166b4695cf2b01f84302dec8e21fcd59eca07a9333a3522f055fdbbb8", + "scope": "Metadata/fingerprint migration only; original full replay evidence below retains its original source and manifest.", + "current_paddle_manifest_payload_sha256": "b2184dcb2e805fe375d4b33bc0fbe31385729319e61ee4571b3dcde8c7b1cc68", + "source_and_tests_normalized_sha256": "936de4df48178361a46e8135cfdc6e8a91ff7009d98a7ab347d0d9ae0e76ece5", + "smoke": { + "schema_version": 1, + "real_candidates": 5, + "validated_unique": 5, + "duplicates": 0, + "excluded": 0, + "by_source": { + "paddleocr": 4, + "paddleseg": 1 + }, + "by_task": { + "text_recognition": 1, + "text_detection": 1, + "table_structure_recognition": 2, + "image_matting": 1 + }, + "missing_tasks": [], + "complete": true, + "attempted": 5, + "required": 5, + "failed": 0, + "elapsed_s": 24.23, + "minimum_real_models": 5, + "exit_code": 0 + } + } +} diff --git a/docs/paddle-models.md b/docs/paddle-models.md new file mode 100644 index 0000000..a4db56c --- /dev/null +++ b/docs/paddle-models.md @@ -0,0 +1,91 @@ +# 飞桨模型仓库接入与复验 + +新增 13 个通过完整参考检查的真实 Paddle 网络,联合原有 1409 项去重后为 **1422 个网络配置、21 种任务**。两套清单分别验收,避免强制用户在同一环境安装两个框架;548 个合成正例和 18 个负例另计。 + +## 本轮引入结果 + +| 来源 | 通过网络 | 新增覆盖 | +|---|---|---| +| [PaddleOCR](https://github.com/PaddlePaddle/PaddleOCR) | DB MobileNetV3、DB ResNet50-vd;CRNN MobileNetV3、CRNN ResNet34-vd、SVTR Tiny;MobileNetV3 文字方向;TableAttention、SLANet | 文字检测 2、识别 3、方向 1、表格结构 2,共 8 项 | +| [PaddleSeg](https://github.com/PaddlePaddle/PaddleSeg) / Matting | PP-LiteSeg STDC1、BiSeNet V2;MODNet MobileNetV2、MODNet ResNet50-vd、PP-Matting HRNet18 | 语义分割 2、图像抠图 3,共 5 项 | +| [PaddleDetection](https://github.com/PaddlePaddle/PaddleDetection) | PicoDet、TinyPose 两个候选完成接口接入,但当前独立环境缺少 imgaug,尚未完成完整参考验证 | 2 项 environment_blocked,不计入可用清单 | + +17 个候选中 13 个通过,2 个数值失败、2 个环境阻塞,没有重复或资源排除。EAST 和 PSE 的 Paddle/ONNX 数值差异保留为失败;PaddleDetection 的依赖阻塞不被标为设备不支持。完整模型、固定输入和失败原因见 [机器可读结果](paddle-models-results.json)。 + +本轮新增的是原有集合没有覆盖的文字检测、文字识别、文字方向、表格结构和图像抠图五种任务。OCR 网络的输出为原始检测图、识别概率、方向概率或表格结构/位置张量,不包括 Python/OpenCV 文字框拼接、字典解码和业务流水线;抠图输出为 alpha,而非语义类别标签。 + +## 真实网络与导出边界 + +使用官方配置构建完整推理网络,参数随机初始化,不下载检查点、不训练。仅关闭 pretrained/weights 加载;未减少层数、通道数或表格最大长度,未用骨干替换完整网络。字符/表格输出通道由上游字典和后处理配置推导,与官方导出逻辑一致。不同静态输入是调用配置,不作为额外模型重复计数。 + +固定源码: + +- PaddleOCR:`3f32858ce3fb95ba04a8202000e432bcc50a6016`(release/2.9)。 +- PaddleSeg:`3c4db66de1d9d59d0628ed87590b6308a2f4aa2a`(release/2.10)。 +- PaddleDetection 探索:`f049a01a94ccd5addf780641da3ffff276b60083`(release/2.8.1)。 + +固定配置用于获得可复现的转换链路,不宣称覆盖飞桨最新全部网络。上游均保留 Apache-2.0 来源信息。模型二进制和上游源码不提交到本仓库。 + +Paddle2ONNX 的静态转换可能修改 Layer 内部状态。参考输出在转换前、同一显式输入下计算并复制保存,再与 ORT 全部输出比较;这恢复了 SLANet,避免将转换后的 Layer 错当原始参考。FLOAT 使用逐元素 `abs(actual-reference) <= 1e-3 + 1e-3*abs(reference)`,INT/BOOL 精确比较,数量、shape、dtype 或有限值不符均失败。没有降低容差。 + +为避免 PaddleSeg/Matting 的注册表互相影响,每个 Paddle 模型使用新的子进程,即使设置了较大的 `--batch-size`。超时、崩溃、日志、原子缓存、完整性和退出码规则与已有模型相同。Paddle 结果必须包含自己的 `paddle_reference` 证据,不能借用 PyTorch 比较证据;缓存及恢复签名包含 Paddle/Paddle2ONNX 版本。 + +## 独立 CPU 环境 + +推荐本轮实测的 Linux / Python 3.12。基础安装保持不依赖 Paddle;明确选择 Paddle 来源后,缺少依赖或固定源码会报错。 + +```bash +python3.12 -m venv .venv-paddle +source .venv-paddle/bin/activate +python -m pip install cmake==3.31.10 +export PATH="$(python -c 'import cmake; print(cmake.CMAKE_BIN_DIR)'):$PATH" +python -m pip install -e '.[paddle,test]' -c configs/constraints-paddle.txt +python -m pip check + +# 显式联网准备固定源码;默认只准备已验证的 OCR 和 Seg。 +infinitensor-test-paddle-setup --directory data/paddle-repos +export ITEST_PADDLE_REPOS_DIR="$PWD/data/paddle-repos" + +# 13 项独立真实网络,要求全部六种任务均出现。 +OMP_NUM_THREADS=1 OPENBLAS_NUM_THREADS=1 MKL_NUM_THREADS=1 \ +infinitensor-test-expand --manifest catalogs/paddle-networks.json \ + --data-dir data/paddle-networks --offline --max-size-mb 768 \ + --minimum-real-models 13 --jobs 3 --timeout 300 + +# 四任务冷缓存冒烟及实际框架测试,缺依赖不通过 skip 变绿。 +infinitensor-test-expand --manifest configs/paddle-source-smoke.json \ + --data-dir .validation/paddle-smoke --offline --max-size-mb 768 \ + --minimum-real-models 4 --jobs 2 --timeout 300 +python -m pytest tests/integration/test_paddle_exports.py -q +``` + +准备入口使用稀疏检出和固定提交;已有目录只检查,不 reset、不覆盖。正式采集会拒绝版本不符或修改过的上游源码。`--offline` 不自动克隆源码、不下载权重;准备代码与导出运行分开。 + +主要版本:Paddle 3.0.0、Paddle2ONNX 2.0.1、NumPy 1.26.4、ONNX 1.17.0、ORT 1.20.1、protobuf 4.25.3。Python 3.12 环境显式安装 setuptools;无桌面服务器使用 headless OpenCV。完整约束见 configs/constraints-paddle.txt。 + +正式复验不用 `--resume`。采集器重新检查模型包摘要及 ONNX/ORT 结果,并复用同一包和输入的原框架比较证据;增加 `--force` 可重新导出和计算全部参考输出。固定清单还检查结构、输入摘要、全部任务和执行完整性。 + +## 探索失败与已知限制 + +```bash +# 全量探索包含已知失败,因此诊断结束后退出 1。 +infinitensor-test-expand --sources paddleocr paddleseg \ + --data-dir data/paddle-networks --offline --max-size-mb 768 \ + --minimum-real-models 13 --jobs 3 --timeout 300 +``` + +PaddleDetection 插件仍属探索能力,可显式准备其源码并选择来源。当前环境未安装其 imgaug 训练/导入依赖,两个候选均保留 environment_blocked;尚未证明解决该依赖后就能完整导出。后续应建立适合该分支的独立环境,继续验证 PicoDet、PP-YOLOE、TinyPose,而非计入本轮通过数。 + +另有一个不计入真实网络的 INT64/BOOL 探针:大整数原样传递验证精度和全部输出检查;固定 Paddle/Paddle2ONNX 组合对大整数算术出现不一致时,必须被判为 export_mismatch。不能把 INT64 转成 FP32/FP64 来掩盖差异。 + +本轮没有构建或执行 InfiniTensor,也未在 A100 GPU 上运行设备测试。ONNX/参考通过说明模型已具备进入设备测试的条件,不代表 InfiniTensor 已实现其全部算子、dtype、形状和组合语义。随机参数验证也不代表 OCR/抠图任务精度。 + +## 后续飞桨来源优先级 + +| 仓库 | 候选价值 | 当前状态 | +|---|---|---| +| [PaddleSpeech](https://github.com/PaddlePaddle/PaddleSpeech) | TTS 声学模型和 vocoder,可补充 FastSpeech2/HiFiGAN 等方向;官方有 ONNX 使用文档 | 下一批优先,未计数 | +| [PaddleGAN](https://github.com/PaddlePaddle/PaddleGAN) | 图像修复、图像转换、生成及视频处理 | 下一批优先,需逐项验证,未计数 | +| [PaddleTS](https://github.com/PaddlePaddle/PaddleTS) | 时序预测、异常检测和表示学习 | 候选,需明确多输入合同,未计数 | +| [PaddleNLP](https://github.com/PaddlePaddle/PaddleNLP) | 语言模型及文本任务的不同实现 | 候选,需处理导出和 cache/控制输入,未计数 | +| [PaddleClas](https://github.com/PaddlePaddle/PaddleClas) | 分类和视觉识别实现 | 分类已覆盖较多,优先级低于新任务,未计数 | diff --git a/docs/resume-review.md b/docs/resume-review.md new file mode 100644 index 0000000..deb1ce0 --- /dev/null +++ b/docs/resume-review.md @@ -0,0 +1,42 @@ +# PR #2 恢复逻辑与类别筛选审核修复 + +审核基线:815d3b2。本次修复三项 P2 问题,范围为采集/导出框架,不修改 InfiniTensor 执行器。 + +- `--resume` 接受成功项之前,同时核对 ONNX/external-data 包摘要和实际输入数组摘要。输入读取沿用参考验证的名称、shape、dtype 和有限值检查,数组摘要必须等于保存的 `validation.inputs_sha256`。NPZ 丢失、损坏、改值或证据缺失时不能直接沿用旧成功状态,交回正常 worker。合同输入可重建,外部非法输入须明确失败;等值数组更换 NPZ 压缩方式仍可复用。 +- `timeout` / `crash` 默认重新执行,调大超时可保留已验证成功项并重试未完成项。相同签名的已完成 `failed` / `excluded` 诊断保留原有复用策略;强制重试使用 `--force` 或不使用 `--resume`。 +- PyTorchCV 的姿态和语音网络分别使用现有的 `POSE_ESTIMATION`、`SPEECH_RECOGNITION` 类别,确保 catalog/collect/run 筛选与任务统计一致。已有 catalog 需重新采集以刷新类别;模型结构、任务清单和 1422 项统计均不变。 + +## 回归验证 + +新增 19 项定向测试,在修复前为 18 失败、1 通过;修复后全部通过。测试使用真实 Gather ONNX、ORT、采集器和受控子进程复现输入破坏、输入重建和恢复后的退出码/清单统计,不需要 Torch 即可运行。超时/崩溃重试保留完成项,9 个姿态/语音模块的发现与类别筛选均被覆盖。 + +基础安装环境完整测试: + +```bash +python -m pytest tests/unit tests/operators -q +``` + +实际结果:`188 passed, 1 skipped in 70.94s`。唯一跳过项是缺少可选 Torch 时的真实 Torch 导出测试;新增恢复与类别测试均执行。 + +服务器固定 PyTorch 多任务环境: + +```bash +OMP_NUM_THREADS=1 OPENBLAS_NUM_THREADS=1 MKL_NUM_THREADS=1 \ +python -m pytest tests/unit tests/operators tests/integration/test_diverse_sources.py -q +``` + +服务器日志连续末尾原文: + +```text + +-- Docs: https://docs.pytest.org/en/stable/how-to/capture-warnings.html +194 passed, 28 warnings in 35.03s +``` + +真实 PyTorchCV 0.0.74 adapter 另核对:`lwopenpose2d_mobilenet_cmupan_coco` 可由姿态类别选中,`jasper5x3` 和 `quartznet5x5_en_ls` 可由语音类别选中;发现阶段不构建网络。 + +本机缺少 torchSR、torchaudio、Transformers,首次显式运行它们的集成检查时明确报依赖错误,随后在服务器固定依赖环境完成上述全部验证。本轮没有重新导出全部 1422 项,也没有进行 InfiniTensor 设备测试。 + +## 设备集成边界 + +目前 `runner/engine.py` 只写首个 FP32 输入、读取首个输出,且参考失败可能关闭比较继续执行。1422 项表示采集、导出和原框架/ONNX 比较通过,不代表主执行器已经验证设备正确;旧 `OK` 不能证明新增多输入、多输出和 INT64 合同已被正确消费。后续应优先接入 NPZ、全部输入输出比较和参考失败的明确失败状态。 diff --git a/docs/task-expansion-results.json b/docs/task-expansion-results.json new file mode 100644 index 0000000..59b88ee --- /dev/null +++ b/docs/task-expansion-results.json @@ -0,0 +1,393 @@ +{ + "schema_version": 1, + "new_candidates": 69, + "new_validated_unique": 62, + "new_failed": 7, + "new_excluded": 0, + "new_duplicates": 0, + "by_task": { + "audio_separation": 1, + "speech_recognition": 2, + "super_resolution": 27, + "detection": 5, + "video_classification": 5, + "optical_flow": 2, + "language_modeling": 5, + "question_answering": 4, + "text_classification": 4, + "token_classification": 4, + "depth_estimation": 1, + "text_generation": 1, + "time_series_forecasting": 1 + }, + "by_source": { + "torchaudio": 3, + "torchsr": 27, + "torchvision": 11, + "transformers": 21 + }, + "combined_validated_unique": 1409, + "combined_by_task": { + "classification": 1076, + "segmentation": 266, + "detection": 9, + "pose_estimation": 1, + "super_resolution": 27, + "audio_separation": 1, + "speech_recognition": 2, + "language_modeling": 5, + "question_answering": 4, + "text_classification": 4, + "token_classification": 4, + "video_classification": 5, + "optical_flow": 2, + "text_generation": 1, + "depth_estimation": 1, + "time_series_forecasting": 1 + }, + "libraries": { + "torch": "2.9.1+cpu", + "torchvision": "0.24.1+cpu", + "numpy": "1.26.4", + "onnx": "1.17.0", + "onnxruntime": "1.20.1", + "timm": "1.0.22", + "pytorchcv": "0.0.74", + "segmentation-models-pytorch": "0.5.0", + "torchaudio": "2.9.1+cpu", + "torchsr": "1.0.4", + "transformers": "4.57.1", + "huggingface-hub": "0.36.2", + "tokenizers": "0.22.2" + }, + "failures": [ + { + "source": "transformers", + "name": "patchtsmixer_forecasting", + "task": "time_series_forecasting", + "stage": "invalid_model", + "error": "ModelValidationError: [ShapeInferenceError] Inference error(s): (op_type:MatMul, node name: /network/model/encoder/mlp_mixer_encoder/mixers.0/patch_mixer/mlp/fc1/MatMul): [ShapeInferenceError] Incompatible dimensions for matrix multiplication\n" + }, + { + "source": "torchvision_tasks", + "name": "mvit_v1_b", + "task": "video_classification", + "stage": "reference_failure", + "error": "ModelValidationError: [ONNXRuntimeError] : 6 : RUNTIME_EXCEPTION : Non-zero status code returned while running If node. Name:'/blocks.1/pool_skip/If' Status Message: Non-zero status code returned while running Squeeze node. Name:'/blocks.1/pool_skip/Squeeze' Status Message: /onnxruntime_src/onnxruntime/core/framework/execution_frame.cc:171 onnxruntime::common::Status onnxruntime::IExecutionFrame::GetOrCreateNodeOutputMLValue(int, int, const onnxruntime::TensorShape*, OrtValue*&, const onnxruntime::Node&) shape && tensor.Shape() == *shape was false. OrtValue shape verification failed. Current shape:{1,31360,192} Requested shape:{1,6273,192}\n" + }, + { + "source": "transformers", + "name": "patchtst_forecasting", + "task": "time_series_forecasting", + "stage": "reference_failure", + "error": "ModelValidationError: prediction_outputs: shape (1, 24, 32) disagrees with model" + }, + { + "source": "torchvision_tasks", + "name": "ssd300_vgg16", + "task": "detection", + "stage": "export_mismatch", + "error": "ModelValidationError: torch/ONNX numerical mismatch (atol=rtol=1e-3)" + }, + { + "source": "torchvision_tasks", + "name": "ssdlite320_mobilenet_v3_large", + "task": "detection", + "stage": "export_mismatch", + "error": "ModelValidationError: torch/ONNX numerical mismatch (atol=rtol=1e-3)" + }, + { + "source": "torchvision_tasks", + "name": "keypointrcnn_resnet50_fpn", + "task": "pose_estimation", + "stage": "export_mismatch", + "error": "ModelValidationError: torch/ONNX numerical mismatch (atol=rtol=1e-3)" + }, + { + "source": "torchvision_tasks", + "name": "maskrcnn_resnet50_fpn", + "task": "instance_segmentation", + "stage": "export_mismatch", + "error": "ModelValidationError: torch/ONNX numerical mismatch (atol=rtol=1e-3)" + } + ], + "date": "2026-10-27", + "manifest": "catalogs/real-networks.json", + "diverse_manifest": "catalogs/diverse-networks.json", + "manifest_payload_sha256": "ce0fccb1a04dec0d961aeabebc8eda8d8941d2393e1c5fbd1668bb732bb110e1", + "diverse_manifest_payload_sha256": "2bd2f0082361c49af00b93df22702973668c6a29a32e961b4914f2d6bc206ab4", + "source_and_tests_normalized_sha256": "9742bafea2e2768318739074ea66f749a6d19493affd72030f591f9bf8a3e3a2", + "strict_replay": { + "schema_version": 1, + "real_candidates": 1409, + "validated_unique": 1409, + "duplicates": 0, + "excluded": 0, + "by_source": { + "pytorchcv": 477, + "segmentation_models": 255, + "timm": 615, + "torchaudio": 3, + "torchsr": 27, + "torchvision": 11, + "transformers": 21 + }, + "by_task": { + "classification": 1082, + "segmentation": 260, + "detection": 9, + "pose_estimation": 1, + "audio_separation": 1, + "speech_recognition": 2, + "super_resolution": 27, + "video_classification": 5, + "optical_flow": 2, + "language_modeling": 5, + "question_answering": 4, + "text_classification": 4, + "token_classification": 4, + "depth_estimation": 1, + "text_generation": 1, + "time_series_forecasting": 1 + }, + "missing_tasks": [], + "complete": true, + "attempted": 1409, + "required": 1409, + "failed": 0, + "elapsed_s": 159.85, + "minimum_real_models": 1001 + }, + "strict_replay_exit_code": 0, + "tests": { + "base_local": 126, + "base_and_actual_source_server": 131, + "server_warnings": 24, + "server_exit_code": 0, + "six_task_smoke_exit_code": 0, + "six_task_smoke_validated_unique": 6, + "github_hosted_ci": "pending" + }, + "device_validation": "not performed; CPU export and reference checks on the provided A100 host", + "comparison": { + "atol": 0.001, + "rtol": 0.001, + "integer_and_bool": "exact", + "all_outputs": true, + "nonfinite": "fail" + }, + "cache_policy": "Initial screening and six-task smoke exported and compared actual networks. Final strict replay rechecked model content and ONNX/ORT outputs, reusing matching stored PyTorch parity evidence. Use --force for fresh exports.", + "synthetic": { + "positive": 548, + "negative": 18, + "included_in_real_count": false + }, + "review_followup": { + "previous_manifest_hashes": { + "manifest_payload_sha256": "ce0fccb1a04dec0d961aeabebc8eda8d8941d2393e1c5fbd1668bb732bb110e1", + "diverse_manifest_payload_sha256": "2bd2f0082361c49af00b93df22702973668c6a29a32e961b4914f2d6bc206ab4" + }, + "changed_fingerprints": [ + { + "source": "torchvision_tasks", + "name": "fasterrcnn_mobilenet_v3_large_320_fpn", + "old": "d59da17eea63451f70ca578221f998d0ba23ea37dd248ebb658a61e7ca1f9e3a", + "new": "689e723e48890ff04bdc42e5400dd550028b19b5817b8b3526c001e56c1c5abc", + "changed": true, + "has_subgraphs": true + }, + { + "source": "torchvision_tasks", + "name": "fasterrcnn_resnet50_fpn", + "old": "939821300729030620eee078ab62b15a51df84d4bf7d91cc1f0fc7287fe0b9d0", + "new": "105edf7943f338ebf346ff4e420981965cb6680671943a1121c6178bfd7949c9", + "changed": true, + "has_subgraphs": true + }, + { + "source": "torchvision_tasks", + "name": "retinanet_resnet50_fpn", + "old": "ea72f865002783580dff4f0a70c5069210f0559b21fda44342e7b23308a8c7e7", + "new": "e85474ff32a647a70a3f384e51defd98a4e48e4131206ce779f4801575683c20", + "changed": true, + "has_subgraphs": true + }, + { + "source": "torchvision_tasks", + "name": "fcos_resnet50_fpn", + "old": "4a3ad1f50df105c4f0c2712c0ed9e97e84b1fca7ef95781af44ffa455866e0e3", + "new": "73bf625bed3b4b00277f903a4cffaaba473341e08157d44e722a6512659f0203", + "changed": true, + "has_subgraphs": true + } + ], + "current_general_manifest_payload_sha256": "f95d91d166b4695cf2b01f84302dec8e21fcd59eca07a9333a3522f055fdbbb8", + "scope": "Metadata/fingerprint migration only; original full replay evidence below retains its original source and manifest.", + "current_diverse_manifest_payload_sha256": "83e6b3a7e2b9419b84f1e235b17dc0300b9038299a0a6f173e21a1b092d01942", + "source_and_tests_normalized_sha256": "936de4df48178361a46e8135cfdc6e8a91ff7009d98a7ab347d0d9ae0e76ece5", + "output_metadata_migrations": [ + { + "source": "torchvision_tasks", + "name": "fasterrcnn_mobilenet_v3_large_320_fpn", + "old_scoped_fingerprint": "689e723e48890ff04bdc42e5400dd550028b19b5817b8b3526c001e56c1c5abc", + "new": "abc44e92694814b8e0592d92490ca91254d0d0f979fd94c7b153605732073745", + "same_inputs": true, + "torch_reference": "passed", + "reason": "Fresh signed export uses concrete output sizes; cached baseline retained symbolic output descriptions. Computational graph canonical diff is otherwise identical.", + "outputs": { + "boxes": { + "shape": [ + 0, + 4 + ], + "dtype": "float32", + "sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855" + }, + "labels": { + "shape": [ + 0 + ], + "dtype": "int64", + "sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855" + }, + "scores": { + "shape": [ + 0 + ], + "dtype": "float32", + "sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855" + } + } + }, + { + "source": "torchvision_tasks", + "name": "fasterrcnn_resnet50_fpn", + "old_scoped_fingerprint": "105edf7943f338ebf346ff4e420981965cb6680671943a1121c6178bfd7949c9", + "new": "696e58fa9026e7fc4e95136891e0c400c14c7e0de6680c28f8e340e55d16d7ca", + "same_inputs": true, + "torch_reference": "passed", + "reason": "Fresh signed export uses concrete output sizes; cached baseline retained symbolic output descriptions. Computational graph canonical diff is otherwise identical.", + "outputs": { + "boxes": { + "shape": [ + 100, + 4 + ], + "dtype": "float32", + "sha256": "2d776897829b63d120232b81a773e012db70e29cb26c465ab50ef382f4792e0d" + }, + "labels": { + "shape": [ + 100 + ], + "dtype": "int64", + "sha256": "9bc463f5782714d9d67fa58b37bd2be5c0ab6cbc457cb38efca8cf29d29b747d" + }, + "scores": { + "shape": [ + 100 + ], + "dtype": "float32", + "sha256": "c11e8fdf04ac0f626c4a46cf4c4fe48bd42dd520d4b0fe2f06ae08f978659592" + } + } + }, + { + "source": "torchvision_tasks", + "name": "fcos_resnet50_fpn", + "old_scoped_fingerprint": "73bf625bed3b4b00277f903a4cffaaba473341e08157d44e722a6512659f0203", + "new": "49f99892c37627f20ec8b035db1fdd2597b9d24886867d58bd949e7b14ef58da", + "same_inputs": true, + "torch_reference": "passed", + "reason": "Fresh signed export uses concrete output sizes; cached baseline retained symbolic output descriptions. Computational graph canonical diff is otherwise identical.", + "outputs": { + "boxes": { + "shape": [ + 0, + 4 + ], + "dtype": "float32", + "sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855" + }, + "labels": { + "shape": [ + 0 + ], + "dtype": "int64", + "sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855" + }, + "scores": { + "shape": [ + 0 + ], + "dtype": "float32", + "sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855" + } + } + }, + { + "source": "torchvision_tasks", + "name": "retinanet_resnet50_fpn", + "old_scoped_fingerprint": "e85474ff32a647a70a3f384e51defd98a4e48e4131206ce779f4801575683c20", + "new": "0c434fb89b88b09d7f72590d106d5c434090f9a5ff8ced2776b7d4a920933bea", + "same_inputs": true, + "torch_reference": "passed", + "reason": "Fresh signed export uses concrete output sizes; cached baseline retained symbolic output descriptions. Computational graph canonical diff is otherwise identical.", + "outputs": { + "boxes": { + "shape": [ + 0, + 4 + ], + "dtype": "float32", + "sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855" + }, + "labels": { + "shape": [ + 0 + ], + "dtype": "int64", + "sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855" + }, + "scores": { + "shape": [ + 0 + ], + "dtype": "float32", + "sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855" + } + } + } + ], + "smoke": { + "schema_version": 1, + "real_candidates": 10, + "validated_unique": 10, + "duplicates": 0, + "excluded": 0, + "by_source": { + "torchaudio": 1, + "torchsr": 1, + "torchvision": 6, + "transformers": 2 + }, + "by_task": { + "audio_separation": 1, + "super_resolution": 1, + "detection": 4, + "video_classification": 1, + "optical_flow": 1, + "question_answering": 1, + "time_series_forecasting": 1 + }, + "missing_tasks": [], + "complete": true, + "attempted": 10, + "required": 10, + "failed": 0, + "elapsed_s": 15.43, + "minimum_real_models": 10, + "exit_code": 0 + } + } +} diff --git a/docs/task-expansion.md b/docs/task-expansion.md new file mode 100644 index 0000000..452ef41 --- /dev/null +++ b/docs/task-expansion.md @@ -0,0 +1,94 @@ +# 多任务真实网络扩充 + +本文记录 e9660ba 的 1409 项通用基线。新增 13 项飞桨网络采用独立固定清单和环境,联合去重后共 1422 项、21 种任务,见[飞桨模型接入说明](paddle-models.md)。 + +统一清单从 1347 项扩充为 **1409 个去重真实网络配置、16 种任务**。本轮专门筛选非图像分类/语义分割网络:69 个候选中 62 个通过 ONNX 检查、ONNX Runtime 执行和全部输出 PyTorch/ONNX 比较,7 个失败如实保留。原有 548 个合成正例和 18 个负例另计。 + +## 新增任务和来源 + +| 任务 | 新增通过 | 网络实例 | 上游实现 | +|---|---:|---|---| +| 超分辨率 | 27 | CARN、EDSR、NinaSR、RCAN、RDN 的 x2/x3/x4 配置 | [torchSR](https://github.com/Coloquinte/torchSR),MIT | +| 语音识别 | 2 | Wav2Letter、DeepSpeech | [torchaudio](https://github.com/pytorch/audio),BSD-2-Clause | +| 音频分离 | 1 | Conv-TasNet | torchaudio | +| 视频动作识别 | 5 | R3D、MC3、R(2+1)D、S3D、Swin3D | [Torchvision](https://github.com/pytorch/vision),BSD-3-Clause | +| 双图光流 | 2 | RAFT Small / Large,保留全部迭代输出 | Torchvision | +| 目标检测 | 5 | Faster R-CNN 两种骨干、RetinaNet、FCOS、DETR | Torchvision / [Transformers](https://github.com/huggingface/transformers),Apache-2.0 | +| 文本分类 | 4 | BERT、DistilBERT、ELECTRA、ALBERT 的序列分类头 | Transformers | +| 序列标注 | 4 | 上述四种架构的 token 分类头 | Transformers | +| 抽取式问答 | 4 | 上述四种架构,比较 start/end 两个输出 | Transformers | +| 语言建模 | 5 | 四种 masked-LM 头以及 GPT-2 causal-LM | Transformers | +| 文本生成前向 | 1 | T5 Small 编码器—解码器 | Transformers | +| 单目深度估计 | 1 | DPT | Transformers | +| 时间序列预测前向 | 1 | Time Series Transformer | Transformers | +| 合计 | 62 | 13 种新增覆盖任务,其中目标检测原已存在 | 4 个来源插件 | + +累计还保留图像分类 1076、语义分割 266、姿态 1;检测累计 9。图像分类数量仍占多数,因此单独提供 [62 项多任务清单](../catalogs/diverse-networks.json),其 `required_tasks` 要求 13 种任务全部出现。数量达标但任务缺失时仍退出失败;统一清单同样要求全部 16 种任务。 + +网络使用上游实现及随机初始化参数,不下载权重、不训练。Transformers 使用库默认配置;ALBERT 使用 base-v2 的 768 隐藏维度、12 头、3072 中间维度。DETR 使用库内 ResNet-50,不下载骨干权重。没有通过缩减层数或用骨干替代完整网络来取得通过。 + +文本生成验证的是固定长度前向:GPT-2 关闭 KV cache、显式传入合法的 4D 加性因果 mask,T5 同时传入 encoder/decoder token 并比较 logits 和 encoder hidden state。它们不代表完整 tokenizer、采样循环或 KV-cache 解码服务。时间序列网络验证 teacher-forced 前向的三个 Student-t 分布参数、encoder hidden state、loc、scale、static features,共七个输出,不宣称验证了随机生成循环或预测精度。 + +## 输入和有效性 + +新来源声明输入名称、具体 shape、dtype、显式 token/控制值或浮点范围。采集器生成独立 `.npz`,原始 PyTorch 与 ORT 使用同一份数组;导出、参考和缓存保留输入摘要。浮点值由全局种子及用例/输入名称决定。整数 token 不从随机浮点数转换,动态形状不被替换成 1。 + +支持多输入、INT64/BOOL 输入、嵌套多输出及逐输出命名指标。整数/布尔输出精确比较,浮点使用 `abs(actual-reference) <= 1e-3 + 1e-3*abs(reference)`,shape/dtype 不同或 NaN/Inf 均失败。针对固定调用,用实际 PyTorch 输出补齐静态输出描述,避免 exporter 错误复用符号维度;不修改 ONNX 计算节点。ORT 检查和全部输出比较仍必须通过。 + +严格清单增加逐用例资源预算及输入摘要门禁,同时保留结构摘要、去重、完整性和数量门禁。来源插件 ID 随清单保存,避免将 torchvision_tasks 错误重放为原有分类来源。 + +## 安装与复验 + +完整复验环境为 Python 3.12、CPU torch/torchvision/torchaudio 2.9.1/0.24.1/2.9.1、torchSR 1.0.4、Transformers 4.57.1,完整约束见 configs/constraints-diverse.txt。保持 CPU 三个 PyTorch 包版本匹配。 + +```bash +python3.12 -m venv .venv-networks +source .venv-networks/bin/activate +python -m pip install torch==2.9.1 torchvision==0.24.1 torchaudio==2.9.1 --index-url https://download.pytorch.org/whl/cpu +python -m pip install -e '.[networks,diverse,test]' -c configs/constraints-diverse.txt +python -m pip check + +# 只验收 62 项多任务网络,必须覆盖全部 13 种任务 +OMP_NUM_THREADS=1 OPENBLAS_NUM_THREADS=1 MKL_NUM_THREADS=1 \ +infinitensor-test-expand --manifest catalogs/diverse-networks.json \ + --data-dir data/real-networks --offline --max-size-mb 768 \ + --minimum-real-models 62 --jobs 4 --batch-size 4 --timeout 300 + +# 完整 1409 项及全部 16 种任务 +OMP_NUM_THREADS=1 OPENBLAS_NUM_THREADS=1 MKL_NUM_THREADS=1 \ +infinitensor-test-expand --manifest catalogs/real-networks.json \ + --data-dir data/real-networks --offline --max-size-mb 768 \ + --minimum-real-models 1001 --jobs 4 --batch-size 8 --timeout 300 + +# 扩大候选,包含已知失败;诊断完成后因候选失败退出 1 +infinitensor-test-expand --sources torchsr torchaudio transformers torchvision_tasks \ + --source-config configs/diverse-sources.yaml --data-dir data/real-networks \ + --offline --max-size-mb 768 --minimum-real-models 62 --timeout 300 + +# 明确选择真实来源集成测试;缺依赖会失败 +python -m pytest tests/integration/test_diverse_sources.py -q +``` + +旧 1347 项预算仍为每项 160 MiB;新 62 项上限为每项 768 MiB,以容纳标准文本和深度网络。最终预算取 CLI、来源配置及清单单项预算的最小值。提高资源预算没有改变比较容差或任务通过标准。 + +正式复验不用 `--resume`;采集器可以复用内容校验通过的模型缓存并重新执行 ONNX/ORT 检查,复用相同包及输入的 PyTorch 比较证据。增加 `--force` 可重新导出并计算全部参考结果。首次候选筛选和 CI 冒烟均实际导出并比较输出。 + +## 保留的失败 + +| 候选 | 最终失败阶段 | 实际问题 | +|---|---|---| +| PatchTSMixer | invalid_model | 导出图 MatMul 维度冲突 | +| PatchTST | reference_failure | PyTorch 输出 (1,24,1),ORT 输出 (1,24,32) | +| MViT v1 B | reference_failure | 导出 If/Squeeze 路径运行时形状冲突 | +| SSD300、SSDLite320 | export_mismatch | PyTorch/ONNX 数值不一致 | +| Mask R-CNN、Keypoint R-CNN | export_mismatch | PyTorch/ONNX 数值不一致 | + +这些是采集/导出/参考侧失败,不计入通过清单,也不标为 InfiniTensor 不支持。完整诊断见 [机器可读结果](task-expansion-results.json)。实例分割和新增姿态候选目前没有新增通过项。 + +## InfiniTensor 能力边界 + +筛选以完整 ONNX 图、确定输入、CPU 参考执行和 PyTorch/ONNX 数值一致性为准,不要求 InfiniTensor 目前已经实现所有算子。新网络覆盖 Conv/ConvTranspose、MatMul、归一化、Softmax、Gather/索引、Resize、GridSample、ROI/NMS 等计算需求,可用于发现并推动后端缺口。 + +本轮没有构建或执行 InfiniTensor,也没有验证 A100 GPU 设备支持率。实际支持仍需要检查图中算子、dtype、形状和组合语义并运行设备比较。随机参数通过不代表模型任务精度;固定输入通过不代表所有动态形状或数据相关分支均已验证。 + +现有 `runner/engine.py` 尚未接入这里保存的输入 NPZ,仍只写入第一个 FP32 输入、读取第一个输出,且参考失败时可能关闭比较后继续执行。因此本 PR 的 1422 项采集/导出通过数不能作为设备正确执行数,也不能用旧执行器的 `OK` 证明新增多输入、INT64 或多输出模型已验证正确。后续执行器修复应优先接入 NPZ、全部输入输出比较,并将参考失败作为明确失败处理。 diff --git a/pyproject.toml b/pyproject.toml index 37420c6..fd207f3 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -24,12 +24,22 @@ dependencies = [ [project.optional-dependencies] test = ["pytest>=7.0"] torchvision = ["torch>=2.0", "torchvision>=0.15"] -timm = ["torch>=2.0", "torchvision>=0.15", "timm>=0.9"] +timm = ["torch>=2.0", "torchvision>=0.15", "timm>=1.0.22"] +pytorchcv = ["torch>=2.0", "torchvision>=0.15", "pytorchcv>=0.0.74"] +segmentation = ["torch>=2.0", "torchvision>=0.15", "segmentation-models-pytorch>=0.5"] +networks = ["torch>=2.0", "torchvision>=0.15", "timm>=1.0.22", "pytorchcv>=0.0.74", "segmentation-models-pytorch>=0.5"] +super-resolution = ["torch>=2.0", "torchvision>=0.15", "torchsr>=1.0.4"] +audio = ["torch>=2.0", "torchaudio>=2.0"] +text = ["torch>=2.0", "transformers>=4.57.1,<5"] +diverse = ["torch>=2.0", "torchvision>=0.15", "torchsr>=1.0.4", "torchaudio>=2.0", "transformers>=4.57.1,<5"] +paddle = ["paddlepaddle==3.0.0", "paddle2onnx==2.0.1", "numpy<2", "protobuf>=3.20.2,<5", "setuptools<81", "opencv-python-headless>=4.8,<4.12", "shapely", "pyclipper", "rapidfuzz", "scipy", "scikit-learn", "scikit-image", "filelock", "prettytable", "pymatting", "visualdl"] huggingface = ["huggingface_hub>=0.16"] full = [ + "pytorchcv>=0.0.74", + "segmentation-models-pytorch>=0.5", "torch>=2.0", "torchvision>=0.15", - "timm>=0.9", + "timm>=1.0.22", "huggingface_hub>=0.16", "pandas>=1.4", "pytest>=7.0", @@ -40,6 +50,8 @@ full = [ [project.scripts] infinitensor-test-collect = "infinitensor_test.scripts.collect:main" +infinitensor-test-expand = "infinitensor_test.scripts.expand:main" +infinitensor-test-paddle-setup = "infinitensor_test.scripts.setup_paddle:main" infinitensor-test-run = "infinitensor_test.scripts.run:main" infinitensor-test-report = "infinitensor_test.scripts.report:main" infinitensor-test-compare = "infinitensor_test.scripts.compare:main" diff --git a/src/infinitensor_test/models/collection_worker.py b/src/infinitensor_test/models/collection_worker.py new file mode 100644 index 0000000..865f656 --- /dev/null +++ b/src/infinitensor_test/models/collection_worker.py @@ -0,0 +1,75 @@ +"""One bounded, isolated real-network export and reference validation.""" + +import argparse +import gc +import json +from pathlib import Path +import time + +from infinitensor_test.artifacts import atomic_json, digest +from infinitensor_test.models.catalog import _spec_to_dict +from infinitensor_test.models.collector import _materialize_one +from infinitensor_test.models.inventory import architecture_digest +from infinitensor_test.models.registry import get_source +from infinitensor_test.models.validation import validation_environment + + +def run_request(request): + result_path = Path(request["result_path"]) + try: + params = dict(request["params"], include=[request["name"]], max_parameter_bytes=request["max_size_bytes"]) + spec = next(s for s in get_source(request["source"])(params) if s.name == request["name"]) + if spec.metadata.get("export_backend") == "torch": + import torch + torch.set_num_threads(1) + if torch.get_num_interop_threads() != 1: + torch.set_num_interop_threads(1) + if request["validation_environment"] != validation_environment(): + raise ValueError("worker validation environment differs from the signed request") + # Bind task recovery and model-package evidence while preserving the + # source's own definition identity. + spec.metadata["definition_sha256"] = digest({ + "source_definition": spec.metadata.get("definition_sha256"), + "code_sha256": request["code_sha256"], + }) + ok = _materialize_one(spec, Path(request["models_dir"]), request["max_size_bytes"], + request["force"], request["seed"]) + state = "valid" if ok else "excluded" if spec.is_skipped else "failed" + if ok: + spec.metadata["architecture_sha256"] = architecture_digest(spec.path) + expected = request.get("expected_architecture_sha256") + expected_inputs = request.get("expected_inputs_sha256") + mismatch = ("accepted architecture fingerprint changed" + if expected and expected != spec.metadata["architecture_sha256"] else + "accepted input fingerprint changed" if expected_inputs and expected_inputs != + spec.metadata["validation"].get("inputs_sha256") else None) + if mismatch: + state, spec.path = "failed", None + spec.metadata["collection_error"] = mismatch + spec.metadata.pop("validation", None) + atomic_json(result_path, {"request_sha256": request["request_sha256"], + "state": state, "spec": _spec_to_dict(spec)}) + except Exception as error: + atomic_json(result_path, {"request_sha256": request["request_sha256"], + "state": "failed", "error": f"{type(error).__name__}: {error}"}) + finally: + gc.collect() + + +def main(): + parser = argparse.ArgumentParser() + parser.add_argument("request") + args = parser.parse_args() + payload = json.loads(Path(args.request).read_text(encoding="utf-8")) + if "requests" in payload: + for index, request in enumerate(payload["requests"]): + atomic_json(Path(payload["status_path"]), {"active": index, "started": time.time()}) + run_request(request) + atomic_json(Path(payload["status_path"]), {"done": True}) + else: + run_request(payload) + return 0 + + +if __name__ == "__main__": + raise SystemExit(main()) diff --git a/src/infinitensor_test/models/collector.py b/src/infinitensor_test/models/collector.py index 04131b8..e407018 100644 --- a/src/infinitensor_test/models/collector.py +++ b/src/infinitensor_test/models/collector.py @@ -5,7 +5,7 @@ Every positive package must pass ONNX checks and CPU reference execution. """ -from contextlib import contextmanager, redirect_stdout +from contextlib import contextmanager, nullcontext, redirect_stdout import io import json from pathlib import Path @@ -22,9 +22,11 @@ from infinitensor_test.artifacts import atomic_json, copy_package, digest, model_manifest, stable_seed from infinitensor_test.models.catalog import ModelCatalog -from infinitensor_test.models.registry import OptionalDependencyError +from infinitensor_test.models.registry import OptionalDependencyError, SourceSizeLimitError from infinitensor_test.models.validation import (ModelValidationError, input_file_digest, - validate_reference) + validate_reference, validation_environment) +from infinitensor_test.models.torch_validation import flatten_torch_outputs, validate_torch_export +from infinitensor_test.models.torch_inputs import contract_arrays, materialize_contract # Bump when export/validation policy changes. Unversioned legacy caches are @@ -39,8 +41,18 @@ def factory_seed(spec, seed): np.random.seed(value) random.seed(value) try: + if spec.metadata.get("export_backend") == "paddle": + import paddle + paddle.set_device("cpu") + state = paddle.get_rng_state("cpu") + paddle.seed(value) + try: + yield + finally: + paddle.set_rng_state(state) + return torch = sys.modules.get("torch") - if spec.source.value in ("torchvision", "timm") and torch is None: + if (spec.source.value in ("torchvision", "timm") or spec.metadata.get("export_backend") == "torch") and torch is None: import torch if torch is not None: with torch.random.fork_rng(devices=[]): @@ -59,18 +71,40 @@ def validate_model(path, spec=None, seed=42): return manifest, validate_reference(path, spec, seed) -def _export_torch_to_onnx(model, dst, input_shape): +def _export_torch_to_onnx(model, dst, input_shape, spec=None, seed=42): try: import torch except ImportError as error: raise OptionalDependencyError( "Exporting a torch model requires infinitensor-test[torchvision]." ) from error - if not input_shape or any(not isinstance(d, int) or d <= 0 for d in input_shape): - raise ValueError("torch export requires a concrete, positive input_shape") + if spec is not None and "torch_input_contract" in spec.metadata: + values = contract_arrays(spec, seed) + inputs, names = tuple(torch.from_numpy(v) for v in values.values()), list(values) + else: + if not input_shape or any(not isinstance(d, int) or d <= 0 for d in input_shape): + raise ValueError("torch export requires a concrete, positive input_shape") + inputs, names = (torch.zeros(*input_shape),), ["x"] model.eval() - torch.onnx.export(model, torch.zeros(*input_shape), str(dst), opset_version=18, - dynamo=False, verbose=False, input_names=["x"], output_names=["y"]) + torch.onnx.export(model, inputs, str(dst), opset_version=18, + dynamo=False, verbose=False, input_names=names, + output_names=spec.metadata.get("torch_output_names", ["y"]) if spec else ["y"]) + if spec is not None and "torch_input_contract" in spec.metadata: + # These are explicitly static invocations. Replace exporter-generated + # symbolic output aliases with actual PyTorch shapes, never guessed shapes. + with torch.inference_mode(): + outputs = flatten_torch_outputs(model(*inputs)) + graph = onnx.load(str(dst), load_external_data=False) + if len(graph.graph.output) != len(outputs): + raise ValueError("exporter output count differs from torch invocation") + for info, value in zip(graph.graph.output, outputs): + if np.dtype(onnx.helper.tensor_dtype_to_np_dtype(info.type.tensor_type.elem_type)) != value.dtype: + raise ValueError("exporter output dtype differs from torch invocation") + shape = info.type.tensor_type.shape + shape.ClearField("dim") + for size in value.shape: + shape.dim.add().dim_value = size + onnx.save(graph, str(dst)) return dst.exists() @@ -99,6 +133,9 @@ def _record(spec, target, manifest, validation, cached): spec.size_hint_bytes = manifest["size_bytes"] spec.metadata.update(model_sha256=manifest["sha256"], validation=validation, cache_hit=cached, collector_version=GENERATOR_VERSION) + inputs = validation.get("inputs", {}) + if spec.input_shape is None and len(inputs) == 1: + spec.input_shape = list(next(iter(inputs.values()))["shape"]) @contextmanager @@ -128,6 +165,7 @@ def _materialize_one(spec, models_dir, max_size_bytes, force=False, seed=42): spec.metadata.pop(key, None) spec.skip_reason = None try: + materialize_contract(spec, root, seed) origin = None if spec.factory is None and spec.path: origin_path = Path(spec.metadata.get("origin_path", spec.path)).absolute() @@ -137,16 +175,25 @@ def _materialize_one(spec, models_dir, max_size_bytes, force=False, seed=42): elif spec.path.is_file(): origin = _origin_digest(spec.path) cache_key = digest({ - "collector_version": GENERATOR_VERSION, "onnx_version": onnx.__version__, - "onnxruntime_version": ort.__version__, "input_file_sha256": input_file_digest(spec), + "collector_version": GENERATOR_VERSION, + "validation_environment": validation_environment(), "input_file_sha256": input_file_digest(spec), "expected_rejection": spec.expected_rejection, "rejection_reason": spec.rejection_reason, - "numpy_version": np.__version__, "seed": seed, + "seed": seed, "source": spec.source.value, "name": spec.name, "input_shape": spec.input_shape, "num_classes": spec.num_classes, "generator_version": spec.metadata.get("generator_version", 0), "definition_sha256": spec.metadata.get("definition_sha256"), + **({"torch_input_contract": spec.metadata["torch_input_contract"], + "torch_output_names": spec.metadata.get("torch_output_names")} + if "torch_input_contract" in spec.metadata else {}), "source_params": spec.metadata.get("source_params", {}), "origin": origin, - "source_library_version": getattr(sys.modules.get(spec.source.value), "__version__", None), + "source_library_version": spec.metadata.get("source_library_version") or + getattr(sys.modules.get(spec.source.value), "__version__", None), + **({"input_contract": spec.metadata.get("input_contract"), + "upstream_revision": spec.metadata.get("upstream_revision"), + "paddle_version": spec.metadata.get("paddle_version"), + "paddle2onnx_version": spec.metadata.get("paddle2onnx_version")} + if spec.metadata.get("export_backend") == "paddle" else {}), }) if not force and current.is_file(): try: @@ -160,7 +207,14 @@ def _materialize_one(spec, models_dir, max_size_bytes, force=False, seed=42): if not target.is_relative_to(package / "files"): raise ValueError("cached main file escapes package") manifest, validation = validate_model(target, spec, seed) - if manifest == stamp["model"] and validation == stamp["validation"]: + old_validation = dict(stamp["validation"]) + parities = {key: old_validation.pop(key, None) for key in ("torch_reference", "paddle_reference")} + backend = spec.metadata.get("export_backend") + parity = parities.get(f"{backend}_reference") + if backend in ("torch", "paddle") and (not parity or parity.get("state") != "passed"): + raise ValueError("real network cache has no source-framework/ONNX parity evidence") + if manifest == stamp["model"] and validation == old_validation: + validation.update({k: v for k, v in parities.items() if v}) if manifest["size_bytes"] > max_size_bytes: spec.path = None spec.size_hint_bytes = manifest["size_bytes"] @@ -175,8 +229,12 @@ def _materialize_one(spec, models_dir, max_size_bytes, force=False, seed=42): with _staging_package(root) as (stage, retain): (stage / "files").mkdir() dst = stage / "files/model.onnx" + torch_model = None + paddle_model = None + paddle_expected = None if spec.factory: - with factory_seed(spec, seed), redirect_stdout(io.StringIO()): + output = nullcontext() if spec.metadata.get("export_backend") == "paddle" else redirect_stdout(io.StringIO()) + with factory_seed(spec, seed), output: result = spec.factory() if isinstance(result, onnx.ModelProto): onnx.save(result, str(dst)) @@ -189,13 +247,43 @@ def _materialize_one(spec, models_dir, max_size_bytes, force=False, seed=42): raise ValueError(f"unknown factory kind: {result[0]!r}") elif result is None: raise ValueError("factory returned None") + elif spec.metadata.get("export_backend") == "paddle": + from .paddle_validation import export_paddle + parameter_bytes = sum(int(np.prod(v.shape)) * np.dtype(str(v.dtype).split(".")[-1]).itemsize + for v in result.state_dict().values()) + spec.metadata["parameter_size_bytes"] = parameter_bytes + if parameter_bytes > max_size_bytes: + spec.path = None + spec.skip_reason = "parameter_size_limit" + return False + paddle_expected = export_paddle(result, dst, spec, seed) + paddle_model = result else: - _export_torch_to_onnx(result, dst, spec.input_shape) + # Bound large source libraries before expensive ONNX export. + parameter_bytes = sum(v.numel() * v.element_size() for v in result.state_dict().values()) + spec.metadata["parameter_size_bytes"] = parameter_bytes + if parameter_bytes > max_size_bytes: + spec.path = None + spec.skip_reason = "parameter_size_limit" + return False + if spec.input_shape is None: + size = getattr(result, "in_size", None) + import torch + first_conv = next((m for m in result.modules() if isinstance(m, torch.nn.Conv2d)), None) + if size is not None and len(size) == 2 and first_conv is not None: + spec.input_shape = [1, first_conv.in_channels, *size] + _export_torch_to_onnx(result, dst, spec.input_shape, spec, seed) + torch_model = result elif spec.path and spec.path.is_file(): dst = _copy_into_stage(spec.path, stage) else: raise ValueError("no factory and no existing model path") manifest, validation = validate_model(dst, spec, seed) + if torch_model is not None and spec.metadata.get("model_kind") == "real_network": + validation["torch_reference"] = validate_torch_export(torch_model, dst, spec, seed) + if paddle_model is not None: + from .paddle_validation import validate_paddle_export + validation["paddle_reference"] = validate_paddle_export(paddle_model, dst, spec, seed, paddle_expected) spec.size_hint_bytes = manifest["size_bytes"] if manifest["size_bytes"] > max_size_bytes: spec.path = None @@ -216,11 +304,18 @@ def _materialize_one(spec, models_dir, max_size_bytes, force=False, seed=42): return True except OptionalDependencyError: raise + except SourceSizeLimitError as error: + spec.path = None + spec.metadata["parameter_size_bytes"] = error.size_bytes + spec.skip_reason = "parameter_size_limit" + return False except Exception as error: spec.path = None spec.metadata["collection_error"] = f"{type(error).__name__}: {error}" spec.metadata["collection_error_code"] = ( - error.stage if isinstance(error, ModelValidationError) else "collection_failure") + error.stage if isinstance(error, ModelValidationError) else + "environment_blocked" if isinstance(error, ImportError) and spec.metadata.get("export_backend") == "paddle" + else "collection_failure") return False @@ -238,7 +333,7 @@ def collect(catalog, settings, sources=None, force=False, progress=True, limit=N "positive_validated": 0, "negative_rejected": 0, "errors_by_stage": {}} start = time.monotonic() for index, spec in enumerate(selected): - if spec.is_skipped and spec.skip_reason != "size_limit": + if spec.is_skipped and spec.skip_reason not in ("size_limit", "parameter_size_limit"): counts["skipped"] += 1 continue cap = settings.max_model_size_bytes diff --git a/src/infinitensor_test/models/inventory.py b/src/infinitensor_test/models/inventory.py new file mode 100644 index 0000000..e8f3844 --- /dev/null +++ b/src/infinitensor_test/models/inventory.py @@ -0,0 +1,138 @@ +"""Auditable real-network inventory; weights and tensor names do not inflate counts.""" + +from collections import Counter +import hashlib +import re + +import onnx +from onnx import helper, numpy_helper + +from infinitensor_test.artifacts import digest + + +def architecture_digest(path): + model = onnx.load(str(path)) + + def tensor(t, constant=False): + info = {"dtype": t.data_type, "shape": list(t.dims)} + if constant or t.data_type not in (1, 10, 11, 16): + value = numpy_helper.to_array(t) + info["value"] = hashlib.sha256(value.tobytes()).hexdigest() + return info + + symbols = {} + def value_info(info): + tensor_type = info.type.tensor_type + shape = [] + for d in tensor_type.shape.dim: + if d.HasField("dim_value"): + shape.append(d.dim_value) + elif d.dim_param: + shape.append(symbols.setdefault(d.dim_param, f"d{len(symbols)}")) + else: + shape.append(None) + return {"dtype": tensor_type.elem_type, "shape": shape} + + def graph(g, outer=None, scope=""): + names = {} + constants = {t.name: t for t in g.initializer} + inputs = [v for v in g.input if v.name not in constants] + for i, v in enumerate(inputs): + names[v.name] = f"{scope}input{i}" + initializer_info, nodes = {}, [] + def identify(name): + if not name: + return "" + if name not in names and name in constants: + names[name] = f"{scope}constant{len(initializer_info)}" + initializer_info[names[name]] = tensor(constants[name]) + if name in names: + return names[name] + # Resolve captures in the enclosing scope, including initializers + # that are used exclusively inside a subgraph. + return outer(name) if outer is not None else f"capture:{name}" + for index, node in enumerate(g.node): + args = [identify(n) for n in node.input] + attrs = {} + for a in sorted(node.attribute, key=lambda a: a.name): + value = helper.get_attribute_value(a) + if isinstance(value, onnx.TensorProto): + value = tensor(value, constant=True) + elif isinstance(value, onnx.GraphProto): + value = graph(value, identify, f"{scope}node{index}/{a.name}/") + elif a.type == onnx.AttributeProto.GRAPHS: + value = [graph(v, identify, f"{scope}node{index}/{a.name}/{j}/") + for j, v in enumerate(value)] + elif isinstance(value, bytes): + value = value.hex() + attrs[a.name] = value + for i, name in enumerate(node.output): + names[name] = f"{scope}node{index}:{i}" + nodes.append({"op": node.op_type, "domain": node.domain, + "inputs": args, "outputs": len(node.output), "attrs": attrs}) + outputs = [{"value": identify(v.name), **value_info(v)} for v in g.output] + return {"inputs": [value_info(v) for v in inputs], "nodes": nodes, + "constants": initializer_info, "outputs": outputs} + return digest({"opsets": sorted((o.domain, o.version) for o in model.opset_import), + "graph": graph(model.graph)}) + + +def real_inventory(specs): + rows, candidates, unique, duplicate, excluded = [], [], [], [], [] + seen_names, seen_graphs, parents = {}, {}, {} + seen_cases = set() + def representative(key): + parents.setdefault(key, key) + while parents[key] != key: + parents[key] = parents[parents[key]] + key = parents[key] + return key + for spec in sorted(specs, key=lambda s: (s.source.value, s.name)): + if spec.source.value == "synthetic" or spec.expected_rejection: + continue + row = {"case_id": spec.short_id(), "source": spec.source.value, + "source_id": spec.source_id or spec.source.value, + "architecture": spec.metadata.get("architecture"), + "task": spec.metadata.get("task", spec.category.value), + "path": str(spec.path or ""), "skip_reason": spec.skip_reason, + "error": spec.metadata.get("collection_error"), + "validation": spec.metadata.get("validation", {})} + rows.append(row) + if (spec.metadata.get("model_kind") != "real_network" or not spec.path or not spec.path.is_file() or spec.is_skipped + or row["validation"].get("reference") != "passed" + or (spec.metadata.get("export_backend") == "torch" and + row["validation"].get("torch_reference", {}).get("state") != "passed") + or (spec.metadata.get("export_backend") == "paddle" and + row["validation"].get("paddle_reference", {}).get("state") != "passed")): + row["state"] = "excluded" + excluded.append(row) + continue + if row["case_id"] in seen_cases: + row.update(state="duplicate", duplicate_of=row["case_id"]) + duplicate.append(row) + continue + seen_cases.add(row["case_id"]) + name = re.sub(r"[^a-z0-9/]", "", spec.metadata.get("architecture_id", spec.short_id()).lower()) + sha = spec.metadata.get("architecture_sha256") or architecture_digest(spec.path) + spec.metadata["architecture_sha256"] = row["architecture_sha256"] = sha + current = row["case_id"] + representative(current) + for original in (seen_names.get(name), seen_graphs.get(sha)): + if original: + a, b = representative(current), representative(original) + parents[max(a, b)] = min(a, b) + seen_names.setdefault(name, current) + seen_graphs.setdefault(sha, current) + candidates.append(row) + for row in candidates: + original = representative(row["case_id"]) + if original == row["case_id"]: + row["state"] = "validated_unique" + unique.append(row) + else: + row.update(state="duplicate", duplicate_of=original) + duplicate.append(row) + return {"schema_version": 1, "real_candidates": len(rows), "validated_unique": len(unique), + "duplicates": len(duplicate), "excluded": len(excluded), + "by_source": dict(Counter(r["source"] for r in unique)), + "by_task": dict(Counter(r["task"] for r in unique)), "models": rows} diff --git a/src/infinitensor_test/models/output_comparison.py b/src/infinitensor_test/models/output_comparison.py new file mode 100644 index 0000000..6d6829e --- /dev/null +++ b/src/infinitensor_test/models/output_comparison.py @@ -0,0 +1,24 @@ +"""Shared strict NumPy comparison for source-framework export validation.""" + +import numpy as np + + +def compare_outputs(actual, expected, names): + if not names or len(actual) != len(expected) or len(actual) != len(names): + raise ValueError("framework/ONNX output count differs") + metrics = [] + for name, a, b in zip(names, actual, expected): + if a.shape != b.shape or a.dtype != b.dtype: + raise ValueError(f"{name}: framework output {b.shape}/{b.dtype}, ONNX output {a.shape}/{a.dtype}") + if not np.isfinite(a).all() or not np.isfinite(b).all(): + raise ValueError(f"{name}: framework/ONNX output is nonfinite") + if np.issubdtype(b.dtype, np.floating): + difference = np.abs(a.astype(np.float64) - b.astype(np.float64)) + passed = bool(np.all(difference <= 1e-3 + 1e-3 * np.abs(b.astype(np.float64)))) + metrics.append({"name": name, "max_abs_diff": float(difference.max(initial=0)), "passed": passed}) + else: + passed = bool(np.array_equal(a, b)) + metrics.append({"name": name, "passed": passed}) + if not passed: + raise ValueError(f"{name}: framework/ONNX numerical mismatch (atol=rtol=1e-3)") + return metrics diff --git a/src/infinitensor_test/models/paddle_validation.py b/src/infinitensor_test/models/paddle_validation.py new file mode 100644 index 0000000..cc20fd2 --- /dev/null +++ b/src/infinitensor_test/models/paddle_validation.py @@ -0,0 +1,85 @@ +"""Real Paddle export and all-output parity; imports Paddle only when selected.""" + +import numpy as np +import onnx +import onnxruntime as ort + +from .output_comparison import compare_outputs +from .torch_inputs import contract_arrays, ordered_input_names +from .validation import ModelValidationError, prepare_reference_inputs + + +def flatten_outputs(value): + if isinstance(value, dict): + return [a for v in value.values() for a in flatten_outputs(v)] + if isinstance(value, (list, tuple)): + return [a for v in value for a in flatten_outputs(v)] + return [value] + + +def export_paddle(model, path, spec, seed): + import paddle + arrays = contract_arrays(spec, seed) + inputs = tuple(paddle.to_tensor(a) for a in arrays.values()) + model.eval() + # Return every network tensor in the original container order. + class Outputs(paddle.nn.Layer): + def __init__(self, network): + super().__init__() + self.network = network + + def forward(self, x): + return tuple(flatten_outputs(self.network(x))) + class TwoOutputs(Outputs): + def forward(self, x, y): + return tuple(flatten_outputs(self.network(x, y))) + class ThreeOutputs(Outputs): + def forward(self, x, y, z): + return tuple(flatten_outputs(self.network(x, y, z))) + if len(inputs) not in (1, 2, 3): + raise ModelValidationError("input_configuration_error", "Paddle export supports one to three named tensor inputs") + wrapper = {1: Outputs, 2: TwoOutputs, 3: ThreeOutputs}[len(inputs)](model) + wrapper.eval() + with paddle.no_grad(): + expected = [a.numpy().copy() for a in wrapper(*inputs)] + input_spec = [paddle.static.InputSpec(a.shape, str(a.dtype), name) for name, a in arrays.items()] + try: + paddle.onnx.export(wrapper, str(path.with_suffix("")), input_spec=input_spec, opset_version=18) + except SystemExit as error: + raise ModelValidationError("invalid_model", f"Paddle2ONNX exited {error.code}; see worker log") from error + if not path.is_file(): + raise ModelValidationError("invalid_model", "Paddle2ONNX did not produce a model") + graph = onnx.load(str(path), load_external_data=False) + if len(graph.graph.output) != len(expected): + raise ModelValidationError("export_mismatch", "Paddle exporter output count differs") + for info, value in zip(graph.graph.output, expected): + if np.dtype(onnx.helper.tensor_dtype_to_np_dtype(info.type.tensor_type.elem_type)) != value.dtype: + raise ModelValidationError("export_mismatch", "Paddle exporter output dtype differs") + shape = info.type.tensor_type.shape + shape.ClearField("dim") + for size in value.shape: + shape.dim.add().dim_value = size + onnx.save(graph, str(path)) + return expected + + +def validate_paddle_export(model, path, spec, seed, expected=None): + import paddle + inputs, _ = prepare_reference_inputs(onnx.load(str(path)), spec, seed) + reference_timing = "before_export" if expected is not None else "direct_call" + try: + names = ordered_input_names(spec, inputs) + if expected is None: + model.eval() + with paddle.no_grad(): + expected = [a.numpy() for a in flatten_outputs(model(*(paddle.to_tensor(inputs[n]) for n in names)))] + options = ort.SessionOptions() + options.intra_op_num_threads = options.inter_op_num_threads = 1 + options.log_severity_level = 3 + session = ort.InferenceSession(str(path), sess_options=options, providers=["CPUExecutionProvider"]) + output_names = [o.name for o in session.get_outputs()] + metrics = compare_outputs(session.run(output_names, inputs), expected, output_names) + return {"state": "passed", "paddle_version": paddle.__version__, "outputs": metrics, "atol": 1e-3, "rtol": 1e-3, + "reference_timing": reference_timing} + except Exception as error: + raise ModelValidationError("export_mismatch", str(error)) from error diff --git a/src/infinitensor_test/models/registry.py b/src/infinitensor_test/models/registry.py index 2e19d2f..8e0dbba 100644 --- a/src/infinitensor_test/models/registry.py +++ b/src/infinitensor_test/models/registry.py @@ -13,13 +13,26 @@ "reduction", "slice", "template", "norm") } _MODULES.update(torchvision="torchvision_source", timm="timm_source", + pytorchcv="pytorchcv_source", segmentation_models="segmentation_source", timm_small="timm_source", huggingface="huggingface_source", onnx_zoo="onnx_zoo_source") +_MODULES.update(torchvision_tasks="vision_tasks_source", torchsr="torchsr_source", + torchaudio="audio_source", transformers="transformers_source") +_MODULES.update({name: "paddle_source" for name in ("paddleocr", "paddleseg", "paddledetection")}) _DEPENDENCIES = { + "pytorchcv": ("pytorchcv", "pytorchcv"), + "segmentation_models": ("segmentation_models_pytorch", "segmentation"), "torchvision": ("torchvision", "torchvision"), "timm": ("timm", "timm"), "timm_small": ("timm", "timm"), "huggingface": ("huggingface_hub", "huggingface"), + "torchvision_tasks": ("torchvision", "torchvision"), + "torchsr": ("torchsr", "super-resolution"), + "torchaudio": ("torchaudio", "audio"), + "transformers": ("transformers", "text"), + "paddleocr": ("paddle", "paddle"), + "paddleseg": ("paddle", "paddle"), + "paddledetection": ("paddle", "paddle"), } @@ -27,6 +40,12 @@ class OptionalDependencyError(RuntimeError): """A selected source cannot initialize its optional dependencies.""" +class SourceSizeLimitError(ValueError): + def __init__(self, size_bytes): + self.size_bytes = size_bytes + super().__init__(f"network parameters require {size_bytes} bytes") + + def register_source(source_id): def decorate(fn): if source_id in _SOURCES: diff --git a/src/infinitensor_test/models/sources/audio_source.py b/src/infinitensor_test/models/sources/audio_source.py new file mode 100644 index 0000000..f6f06b1 --- /dev/null +++ b/src/infinitensor_test/models/sources/audio_source.py @@ -0,0 +1,26 @@ +"""Waveform networks from the official torchaudio model implementations.""" + +from infinitensor_test.models.registry import register_source +from infinitensor_test.models.spec import ModelSpec, ModelSource, ModelCategory +from .network_common import create_bounded_model, provenance, select_names + + +@register_source("torchaudio") +def audio_specs(params): + import torchaudio.models as models + entries = { + "conv_tasnet": ("ConvTasNet", {}, [1, 1, 1024], "audio_separation"), + "wav2letter": ("Wav2Letter", {}, [1, 1, 8000], "speech_recognition"), + "deepspeech": ("DeepSpeech", {"n_feature": 64}, [1, 1, 32, 64], "speech_recognition"), + } + specs = [] + for name in select_names(entries, params): + builder, kwargs, shape, task = entries[name] + def factory(b=builder, k=kwargs): + return create_bounded_model(getattr(models, b), k, params.get("max_parameter_bytes")) + metadata = provenance("torchaudio", "https://github.com/pytorch/audio", name, task) + metadata["torch_input_contract"] = {"waveform" if name != "deepspeech" else "features": + {"shape": shape, "dtype": "float32", "uniform": [-0.5, 0.5]}} + specs.append(ModelSpec(name, ModelSource.TORCHAUDIO, ModelCategory(task), factory=factory, + input_shape=shape, tags=["real_network", "audio", task], metadata=metadata)) + return specs diff --git a/src/infinitensor_test/models/sources/network_common.py b/src/infinitensor_test/models/sources/network_common.py new file mode 100644 index 0000000..5a46177 --- /dev/null +++ b/src/infinitensor_test/models/sources/network_common.py @@ -0,0 +1,54 @@ +"""Shared discovery policies for real, randomly initialized network architectures.""" + +import fnmatch +from functools import lru_cache +from importlib.metadata import version + +version = lru_cache()(version) + + +def create_bounded_model(builder, kwargs, limit=None): + """Avoid allocating large parameter tensors when a library supports meta construction.""" + import random + import numpy as np + import torch + from infinitensor_test.models.registry import SourceSizeLimitError + size = None + if limit: + python_state, numpy_state = random.getstate(), np.random.get_state() + try: + with torch.random.fork_rng(devices=[]), torch.device("meta"): + prototype = builder(**kwargs) + size = sum(v.numel() * v.element_size() for v in prototype.state_dict().values()) + del prototype + except Exception: + # Not every third-party builder supports meta tensors. Actual package + # size and reference execution are still checked after normal construction. + pass + finally: + random.setstate(python_state) + np.random.set_state(numpy_state) + if size is not None and size > limit: + raise SourceSizeLimitError(size) + return builder(**kwargs) + + +def select_names(names, params): + include, exclude = params.get("include", []), params.get("exclude", []) + if isinstance(include, str) or isinstance(exclude, str): + raise ValueError("source include/exclude must be lists of glob patterns") + return [name for name in sorted(set(names)) + if (not include or any(fnmatch.fnmatchcase(name, p) for p in include)) + and not any(fnmatch.fnmatchcase(name, p) for p in exclude)] + + +def provenance(package, repository, architecture, task): + return {"model_kind": "real_network", "architecture": architecture, + "export_backend": "torch", + "generator_version": 3, + "architecture_id": f"{task}/{architecture.lower()}", + "upstream_repository": repository, + "upstream_license": {"timm": "Apache-2.0", "transformers": "Apache-2.0", + "torchaudio": "BSD-2-Clause", "torchvision": "BSD-3-Clause"}.get(package, "MIT"), + "source_library_version": version(package), "weights": "random", + "task": task} diff --git a/src/infinitensor_test/models/sources/paddle_source.py b/src/infinitensor_test/models/sources/paddle_source.py new file mode 100644 index 0000000..4e14339 --- /dev/null +++ b/src/infinitensor_test/models/sources/paddle_source.py @@ -0,0 +1,162 @@ +"""Pinned official Paddle repositories, complete networks and no checkpoint downloads.""" + +import copy +import os +from pathlib import Path +import subprocess +import sys + +import yaml + +from infinitensor_test.artifacts import digest +from infinitensor_test.models.registry import register_source, OptionalDependencyError +from infinitensor_test.models.spec import ModelSpec, ModelSource, ModelCategory +from .network_common import select_names + + +REPOSITORIES = { + "paddleocr": ("PaddleOCR", "3f32858ce3fb95ba04a8202000e432bcc50a6016"), + "paddleseg": ("PaddleSeg", "3c4db66de1d9d59d0628ed87590b6308a2f4aa2a"), + "paddledetection": ("PaddleDetection", "f049a01a94ccd5addf780641da3ffff276b60083"), +} +# (configuration, task, static image shape). Configurations retain upstream architecture sizes. +ENTRIES = { + "paddleocr": { + "db_mobilenet_v3": ("configs/det/det_mv3_db.yml", "text_detection", [1, 3, 320, 320]), + "db_resnet50_vd": ("configs/det/det_r50_vd_db.yml", "text_detection", [1, 3, 320, 320]), + "east_resnet50_vd": ("configs/det/det_r50_vd_east.yml", "text_detection", [1, 3, 320, 320]), + "pse_resnet50_vd": ("configs/det/det_r50_vd_pse.yml", "text_detection", [1, 3, 320, 320]), + "crnn_mobilenet_v3": ("configs/rec/rec_mv3_none_bilstm_ctc.yml", "text_recognition", [1, 3, 32, 100]), + "crnn_resnet34_vd": ("configs/rec/rec_r34_vd_none_bilstm_ctc.yml", "text_recognition", [1, 3, 32, 100]), + "svtr_tiny": ("configs/rec/rec_svtrnet.yml", "text_recognition", [1, 3, 64, 256]), + "text_orientation_mobilenet_v3": ("configs/cls/cls_mv3.yml", "text_orientation", [1, 3, 48, 192]), + "table_attention_mobilenet_v3": ("configs/table/table_mv3.yml", "table_structure_recognition", [1, 3, 488, 488]), + "slanet": ("configs/table/SLANet.yml", "table_structure_recognition", [1, 3, 488, 488]), + }, + "paddleseg": { + "pp_liteseg_stdc1": ("configs/pp_liteseg/pp_liteseg_stdc1_cityscapes_1024x512_scale0.5_160k.yml", "segmentation", [1, 3, 256, 512]), + "bisenet_v2": ("configs/bisenet/bisenet_cityscapes_1024x1024_160k.yml", "segmentation", [1, 3, 256, 256]), + "modnet_mobilenet_v2": ("Matting/configs/modnet/modnet-mobilenetv2.yml", "image_matting", [1, 3, 512, 512]), + "modnet_resnet50_vd": ("Matting/configs/modnet/modnet-resnet50_vd.yml", "image_matting", [1, 3, 512, 512]), + "ppmatting_hrnet18": ("Matting/configs/ppmatting/ppmatting-hrnet_w18-human_512.yml", "image_matting", [1, 3, 512, 512]), + }, + "paddledetection": { + "picodet_s_320": ("configs/picodet/picodet_s_320_coco_lcnet.yml", "detection", [1, 3, 320, 320]), + "tinypose_128x96": ("configs/keypoint/tiny_pose/tinypose_128x96.yml", "pose_estimation", [1, 3, 128, 96]), + }, +} + + +def repository_path(source, params): + name, revision = REPOSITORIES[source] + root = Path(params.get("repository_root") or os.environ.get("ITEST_PADDLE_REPOS_DIR", "data/paddle-repos")).expanduser().resolve() / name + if not (root / ".git").is_dir(): + raise OptionalDependencyError(f"Missing pinned {name} checkout at {root}; see docs/paddle-models.md") + actual = subprocess.check_output(["git", "-C", str(root), "rev-parse", "HEAD"], text=True).strip() + dirty = subprocess.run(["git", "-c", "core.autocrlf=true", "-C", str(root), "diff", "--quiet", "HEAD"], check=False).returncode + if actual != revision or dirty: + raise ValueError(f"{name} requires clean revision {revision}, got {actual}") + return root + + +def remove_weights(value): + if isinstance(value, dict): + return {k: (False if isinstance(v, bool) else None) if k in ("pretrained", "pretrained_model", "pretrain_weights", "weights") else remove_weights(v) + for k, v in value.items()} + if isinstance(value, list): + return [remove_weights(v) for v in value] + return value + + +def build_model(source, name, root): + import paddle + path, task, shape = ENTRIES[source][name] + root = Path(root) + sys.path.insert(0, str(root)) + if source == "paddleocr": + from ppocr.modeling.architectures import build_model as build_ocr + config = yaml.safe_load((root / path).read_text(encoding="utf-8")) + arch = remove_weights(config["Architecture"]) + if task in ("text_recognition", "table_structure_recognition"): + from ppocr.postprocess import build_post_process + global_config = copy.deepcopy(config["Global"]) + if global_config.get("character_dict_path"): + global_config["character_dict_path"] = str(root / global_config["character_dict_path"]) + post = build_post_process(config["PostProcess"], global_config) + arch["Head"]["out_channels"] = len(post.character) + return build_ocr(arch) + if source == "paddleseg": + from paddleseg.cvlibs import Config, SegBuilder, manager + if task == "image_matting": + # Follow the upstream Matting export setup; every model gets a fresh worker. + manager.BACKBONES._components_dict.clear() + manager.TRANSFORMS._components_dict.clear() + sys.path.insert(0, str(root / "Matting")) + from ppmatting.utils import Config, MatBuilder + config = Config(str(root / path)) + model = MatBuilder(config).build_component(remove_weights(config.model_cfg)) + class Matting(paddle.nn.Layer): + def __init__(self, network): + super().__init__() + self.network = network + + def forward(self, x): + return self.network({"img": x}) + return Matting(model) + config = Config(str(root / path)) + model_config = remove_weights(config.model_cfg) + model_config.setdefault("num_classes", 19) # Both selected official Cityscapes configurations. + return SegBuilder(config).build_component(model_config) + from ppdet.core.workspace import load_config, create + config = load_config(str(root / path)) + config.use_gpu = False + model = create(config.architecture) + # These are upstream deployment modes, retaining the learned network and heads. + model.deploy = True + if hasattr(model, "export_onnx"): + model.export_onnx = True + class Detection(paddle.nn.Layer): + def __init__(self, network): + super().__init__() + self.network = network + + def forward(self, x): + return self.network({"image": x}) + if task == "detection": + class ScaledDetection(Detection): + def forward(self, x, scale_factor): + return self.network({"image": x, "scale_factor": scale_factor}) + return ScaledDetection(model) + return Detection(model) + + +def specs(source, params): + import paddle + import paddle2onnx + if not params.get("enabled", True): + return [] + root = repository_path(source, params) + repository, revision = REPOSITORIES[source] + result = [] + for name in select_names(ENTRIES[source], params): + config, task, shape = ENTRIES[source][name] + definition = yaml.safe_load((root / config).read_text(encoding="utf-8")) if source != "paddledetection" else None + def factory(n=name): + return build_model(source, n, root) + metadata = {"model_kind": "real_network", "export_backend": "paddle", "weights": "random", + "architecture": name, "architecture_id": f"{task}/{repository}/{name}", "task": task, + "generator_version": 2, "upstream_repository": f"https://github.com/PaddlePaddle/{repository}", + "upstream_license": "Apache-2.0", "upstream_revision": revision, "upstream_config": config, + "definition_sha256": digest(definition or {"revision": revision, "config": config}), + "source_library_version": f"git:{revision}", "paddle_version": paddle.__version__, + "paddle2onnx_version": paddle2onnx.__version__, "requires_fresh_process": True, + "input_contract": {"x": {"shape": shape, "dtype": "float32", "uniform": [0.1, 0.9]}}} + if source == "paddledetection" and task == "detection": + metadata["input_contract"]["scale_factor"] = {"shape": [1, 2], "dtype": "float32", "values": [[1.0, 1.0]]} + result.append(ModelSpec(name, ModelSource(source), ModelCategory(task), factory=factory, + input_shape=shape, tags=["real_network", "paddle", task], metadata=metadata)) + return result + + +for _source in REPOSITORIES: + register_source(_source)(lambda params, source=_source: specs(source, params)) diff --git a/src/infinitensor_test/models/sources/pytorchcv_source.py b/src/infinitensor_test/models/sources/pytorchcv_source.py new file mode 100644 index 0000000..c56b469 --- /dev/null +++ b/src/infinitensor_test/models/sources/pytorchcv_source.py @@ -0,0 +1,43 @@ +"""Named PyTorchCV networks; no checkpoint or training data downloads.""" + +from infinitensor_test.models.registry import register_source +from infinitensor_test.models.spec import ModelSpec, ModelSource, ModelCategory +from .network_common import create_bounded_model, provenance, select_names + + +SEGMENTATION_MODULES = frozenset({ + "bisenet", "cgnet", "contextnet", "dabnet", "danet", "deeplabv3", "edanet", + "enet", "erfnet", "esnet", "espcnet", "fastscnn", "fcn8sd", "fpenet", + "icnet", "lednet", "linknet", "pspnet", "segnet", "sinet", "sqnet", "unet", +}) + + +@register_source("pytorchcv") +def pytorchcv_specs(params): + from pytorchcv import model_provider + if not params.get("enabled", True): + return [] + specs = [] + for name in select_names(model_provider._models, params): + module = model_provider._models[name].__module__.rsplit(".", 1)[-1] + task, category = "classification", ModelCategory.CLASSIFICATION + if "pose" in module: + task, category = "pose_estimation", ModelCategory.POSE_ESTIMATION + elif module in SEGMENTATION_MODULES: + task, category = "segmentation", ModelCategory.SEGMENTATION + elif module in ("lffd", "retinaface", "centernet"): + task, category = "detection", ModelCategory.DETECTION + elif module in ("jasper", "jasperdr", "quartznet", "wav2letter"): + task, category = "speech_recognition", ModelCategory.SPEECH_RECOGNITION + elif "propainter" in module: + task, category = "video_inpainting", ModelCategory.OTHER + elif module == "voca": + task, category = "speech_driven_animation", ModelCategory.OTHER + def factory(n=name): + return create_bounded_model(model_provider.get_model, {"name": n, "pretrained": False}, + params.get("max_parameter_bytes")) + specs.append(ModelSpec( + name=name, source=ModelSource.PYTORCHCV, category=category, + factory=factory, tags=["real_network", "pytorchcv", "image"], + metadata=provenance("pytorchcv", "https://github.com/osmr/pytorchcv", name, task))) + return specs diff --git a/src/infinitensor_test/models/sources/segmentation_source.py b/src/infinitensor_test/models/sources/segmentation_source.py new file mode 100644 index 0000000..57b5d06 --- /dev/null +++ b/src/infinitensor_test/models/sources/segmentation_source.py @@ -0,0 +1,46 @@ +"""Official decoder/encoder network configurations from Segmentation Models PyTorch.""" + +from infinitensor_test.models.registry import register_source +from infinitensor_test.models.spec import ModelSpec, ModelSource, ModelCategory +from .network_common import create_bounded_model, provenance, select_names + + +DECODERS = ("Unet", "UnetPlusPlus", "MAnet", "Linknet", "FPN", "PSPNet", "PAN", + "DeepLabV3", "DeepLabV3Plus", "Segformer") + + +@register_source("segmentation_models") +def segmentation_specs(params): + import segmentation_models_pytorch as smp + if not params.get("enabled", True): + return [] + decoders = params.get("decoders", list(DECODERS)) + if not isinstance(decoders, list) or any(d not in DECODERS for d in decoders): + raise ValueError(f"decoders must be chosen from {DECODERS}") + requested_encoders = params.get("encoders", smp.encoders.get_encoder_names()) + if not isinstance(requested_encoders, list) or not all(isinstance(e, str) for e in requested_encoders): + raise ValueError("encoders must be a list of encoder names") + encoders = sorted(set(requested_encoders)) + # Universal encoders can be added explicitly; exclude deprecated aliases by default. + if "encoders" not in params: + encoders = [e for e in encoders if not e.startswith("timm-")] + builders = {f"{decoder.lower()}__{encoder}": (decoder, encoder) + for decoder in decoders for encoder in encoders} + specs = [] + for name in select_names(builders, params): + decoder, encoder = builders[name] + def factory(d=decoder, e=encoder): + return create_bounded_model(getattr(smp, d), + {"encoder_name": e, "encoder_weights": None, "in_channels": 3, "classes": 3}, + params.get("max_parameter_bytes")) + metadata = provenance("segmentation-models-pytorch", + "https://github.com/qubvel-org/segmentation_models.pytorch", name, "segmentation") + metadata.update(decoder=decoder, encoder=encoder) + # PSPNet's pyramid bins include 3 and 6. At encoder stride 8, 384 + # gives 48 feature cells, permitting exact ONNX average-pool export. + side = 384 if decoder == "PSPNet" else 256 + specs.append(ModelSpec(name=name, source=ModelSource.SEGMENTATION_MODELS, + category=ModelCategory.SEGMENTATION, factory=factory, + input_shape=[1, 3, side, side], num_classes=3, + tags=["real_network", "segmentation", decoder.lower(), encoder], metadata=metadata)) + return specs diff --git a/src/infinitensor_test/models/sources/timm_source.py b/src/infinitensor_test/models/sources/timm_source.py index ddc5a76..14eb7f9 100644 --- a/src/infinitensor_test/models/sources/timm_source.py +++ b/src/infinitensor_test/models/sources/timm_source.py @@ -19,6 +19,7 @@ ModelSource, ) from infinitensor_test.models.registry import register_source +from .network_common import create_bounded_model, provenance # Default filter to skip huge / weird / pretrained-only models @@ -69,13 +70,14 @@ def _make_timm_specs( exclude: List[str] = None, skip_patterns: List[str] = None, max_size_mb: int = 80, + max_parameter_bytes=None, ) -> List[ModelSpec]: """Build specs for all matching timm models.""" import timm - skip_patterns = list(skip_patterns or _DEFAULT_SKIP) + skip_patterns = list(_DEFAULT_SKIP if skip_patterns is None else skip_patterns) specs: List[ModelSpec] = [] - all_models = timm.list_models() + all_models = timm.list_models(include_tags=False) for m in all_models: if not timm.is_model(m): continue @@ -88,18 +90,24 @@ def _make_timm_specs( def factory(name=m): import timm as _timm - return _timm.create_model(name, pretrained=False, num_classes=1000) + return create_bounded_model(_timm.create_model, + {"model_name": name, "pretrained": False, "num_classes": 1000, "exportable": True}, + max_parameter_bytes) + + config = timm.get_pretrained_cfg(m) + input_size = getattr(config, "input_size", None) spec = ModelSpec( name=m, source=ModelSource.TIMM, category=_categorize(m), factory=factory, - input_shape=[1, 3, 224, 224], + input_shape=[1, *input_size] if input_size else None, tags=_classify_tags(m), size_hint_bytes=0, num_classes=1000, - metadata={"max_size_mb": max_size_mb}, + metadata={**provenance("timm", "https://github.com/huggingface/pytorch-image-models", + m, "classification"), "max_size_mb": max_size_mb}, ) specs.append(spec) return specs @@ -120,6 +128,7 @@ def timm_specs(params: dict) -> List[ModelSpec]: exclude=params.get("exclude"), skip_patterns=params.get("skip_patterns"), max_size_mb=params.get("max_size_mb", 80), + max_parameter_bytes=params.get("max_parameter_bytes"), ) @@ -129,4 +138,5 @@ def timm_small_specs(params: dict) -> List[ModelSpec]: return _make_timm_specs( skip_patterns=_DEFAULT_SKIP, max_size_mb=params.get("max_size_mb", 30), + max_parameter_bytes=params.get("max_parameter_bytes"), ) diff --git a/src/infinitensor_test/models/sources/torchsr_source.py b/src/infinitensor_test/models/sources/torchsr_source.py new file mode 100644 index 0000000..5e84a24 --- /dev/null +++ b/src/infinitensor_test/models/sources/torchsr_source.py @@ -0,0 +1,27 @@ +"""Complete upstream super-resolution networks, with no weight downloads.""" + +from infinitensor_test.models.registry import register_source +from infinitensor_test.models.spec import ModelSpec, ModelSource, ModelCategory +from .network_common import create_bounded_model, provenance, select_names + + +ARCHITECTURES = ("carn", "carn_m", "edsr_baseline", "edsr", "ninasr_b0", "ninasr_b1", + "ninasr_b2", "rcan", "rdn") + + +@register_source("torchsr") +def torchsr_specs(params): + import torchsr.models as models + specs = [] + # Keep scale as part of the named architecture; do not vary input shapes to inflate counts. + for name in select_names([f"{a}_x{s}" for a in ARCHITECTURES for s in (2, 3, 4)], params): + architecture, scale = name.rsplit("_x", 1) + def factory(a=architecture, s=int(scale)): + return create_bounded_model(getattr(models, a), {"scale": s, "pretrained": False}, + params.get("max_parameter_bytes")) + specs.append(ModelSpec(name, ModelSource.TORCHSR, ModelCategory.SUPER_RESOLUTION, + factory=factory, input_shape=[1, 3, 32, 32], + tags=["real_network", "super_resolution", "image"], + metadata=provenance("torchsr", "https://github.com/Coloquinte/torchSR", + name, "super_resolution"))) + return specs diff --git a/src/infinitensor_test/models/sources/torchvision_source.py b/src/infinitensor_test/models/sources/torchvision_source.py index c139084..128ff85 100644 --- a/src/infinitensor_test/models/sources/torchvision_source.py +++ b/src/infinitensor_test/models/sources/torchvision_source.py @@ -20,6 +20,7 @@ ModelSource, ) from infinitensor_test.models.registry import register_source +from .network_common import provenance def _safe_create(builder, name: str, **kwargs) -> nn.Module: @@ -89,6 +90,7 @@ def factory(b=builder, n=name): tags=["torchvision", "classification", "image"], size_hint_bytes=0, # unknown until materialization num_classes=1000, + metadata=provenance("torchvision", "https://github.com/pytorch/vision", name, "classification"), ) out.append(spec) return out @@ -111,6 +113,8 @@ def factory(): input_shape=[1, 3, 320, 320], tags=["torchvision", "detection", "ssd"], num_classes=10, + metadata=provenance("torchvision", "https://github.com/pytorch/vision", + "ssdlite320_mobilenet_v3_large", "detection"), )) return out diff --git a/src/infinitensor_test/models/sources/transformers_source.py b/src/infinitensor_test/models/sources/transformers_source.py new file mode 100644 index 0000000..10fd7ba --- /dev/null +++ b/src/infinitensor_test/models/sources/transformers_source.py @@ -0,0 +1,123 @@ +"""Offline official Transformer networks, with explicit token/mask/time-series inputs.""" + +from infinitensor_test.models.registry import register_source +from infinitensor_test.models.spec import ModelSpec, ModelSource, ModelCategory +from .network_common import create_bounded_model, provenance, select_names + + +HEADS = {"sequence_classification": ("ForSequenceClassification", "text_classification", ["logits"]), + "token_classification": ("ForTokenClassification", "token_classification", ["logits"]), + "question_answering": ("ForQuestionAnswering", "question_answering", ["start_logits", "end_logits"]), + "masked_lm": ("ForMaskedLM", "language_modeling", ["logits"])} +ENTRIES = {f"{family}_{head}": (family, head) for family in ("bert", "distilbert", "electra", "albert_base_v2") + for head in HEADS} +ENTRIES.update(gpt2_causal_lm=("gpt2", "causal_lm"), t5_small=("t5", "seq2seq"), + patchtst_forecasting=("patchtst", "forecasting"), patchtsmixer_forecasting=("patchtsmixer", "forecasting"), + dpt_depth_estimation=("dpt", "depth"), detr_object_detection=("detr", "detection")) +ENTRIES["time_series_transformer_teacher_forced"] = ("time_series_transformer", "distribution") + + +def build_model(name): + import torch + import transformers as t + family, head = ENTRIES[name] + if family == "time_series_transformer": + config = t.TimeSeriesTransformerConfig(prediction_length=12, context_length=24, num_time_features=1) + prefix = "TimeSeriesTransformer" + elif family == "albert_base_v2": + config = t.AlbertConfig(hidden_size=768, intermediate_size=3072, num_attention_heads=12) + prefix = "Albert" + else: + prefix = {"bert": "Bert", "distilbert": "DistilBert", "electra": "Electra", "gpt2": "GPT2", + "t5": "T5", "patchtst": "PatchTST", "patchtsmixer": "PatchTSMixer", "dpt": "DPT", "detr": "Detr"}[family] + config = getattr(t, prefix + "Config")() + if family == "detr": + # Native Transformers ResNet-50 avoids timm or checkpoint downloads. + config = t.DetrConfig(use_timm_backbone=False, backbone=None, + backbone_config=t.ResNetConfig(out_features=["stage4"]), use_pretrained_backbone=False) + config._attn_implementation = "eager" + config.use_cache = False + if head in HEADS: + suffix, _, outputs = HEADS[head] + elif head == "causal_lm": + suffix, outputs = "LMHeadModel", ["logits"] + elif head == "seq2seq": + suffix, outputs = "ForConditionalGeneration", ["logits", "encoder_last_hidden_state"] + elif head == "depth": + suffix, outputs = "ForDepthEstimation", ["predicted_depth"] + elif head == "detection": + suffix, outputs = "ForObjectDetection", ["logits", "pred_boxes", "last_hidden_state", "encoder_last_hidden_state"] + elif head == "distribution": + suffix, outputs = "ForPrediction", ["params", "encoder_last_hidden_state", "loc", "scale", "static_features"] + else: + suffix, outputs = "ForPrediction", ["prediction_outputs"] + config.do_mask_input = False + network = getattr(t, prefix + suffix)(config) + contract, _ = invocation(name) + + class Invocation(torch.nn.Module): + def __init__(self): + super().__init__() + self.network = network + + def forward(self, *inputs): + result = self.network(**dict(zip(contract, inputs)), return_dict=True) + return tuple(getattr(result, n) for n in outputs) + return Invocation() + + +def invocation(name): + family, head = ENTRIES[name] + if head == "distribution": + inputs = { + "past_values": {"shape": [1, 31], "dtype": "float32", "uniform": [-0.5, 0.5]}, + "past_time_features": {"shape": [1, 31, 1], "dtype": "float32", "uniform": [0, 1]}, + "past_observed_mask": {"shape": [1, 31], "dtype": "float32", "fill": 1.0}, + "future_values": {"shape": [1, 12], "dtype": "float32", "uniform": [-0.5, 0.5]}, + "future_time_features": {"shape": [1, 12, 1], "dtype": "float32", "uniform": [0, 1]}, + } + return inputs, ["df", "loc_parameter", "scale_parameter", "encoder_last_hidden_state", "loc", "scale", "static_features"] + if head in ("depth", "detection"): + size = 384 if head == "depth" else 320 + inputs = {"pixel_values": {"shape": [1, 3, size, size], "dtype": "float32", "uniform": [0.1, 0.9]}} + return inputs, ["predicted_depth"] if head == "depth" else ["logits", "pred_boxes", "last_hidden_state", "encoder_last_hidden_state"] + if head == "forecasting": + shape = [1, 32, 1] + mask = "observed_mask" if family == "patchtsmixer" else "past_observed_mask" + return {"past_values": {"shape": shape, "dtype": "float32", "uniform": [-0.5, 0.5]}, + mask: {"shape": shape, "dtype": "float32", "fill": 1.0}}, ["prediction_outputs"] + # Explicit in-vocabulary integers, not random floating inputs cast to token IDs. + tokens = [[101, 2023, 2003, 1037, 3231, 1997, 1996, 2944, 102, 2009, 2097, 2147, 2006, 2023, 102, 102]] + inputs = {"input_ids": {"shape": [1, 16], "dtype": "int64", "values": tokens}, + "attention_mask": {"shape": [1, 16], "dtype": "int64", "values": [[1]*14+[0, 0]]}} + if family == "gpt2": + # Official forward accepts an already prepared additive 4D causal mask. + # It also avoids tracing the library's Python/vmap mask construction. + mask = [[0.0 if j <= i and j < 14 else -10000.0 for j in range(16)] for i in range(16)] + inputs["attention_mask"] = {"shape": [1, 1, 16, 16], "dtype": "float32", "values": [[mask]]} + if family in ("bert", "electra", "albert_base_v2"): + inputs["token_type_ids"] = {"shape": [1, 16], "dtype": "int64", "values": [[0]*8+[1]*8]} + if head == "seq2seq": + inputs["decoder_input_ids"] = {"shape": [1, 8], "dtype": "int64", "values": [[0, 101, 2023, 2003, 1037, 3231, 102, 1]]} + return inputs, ["logits", "encoder_last_hidden_state"] + return inputs, HEADS[head][2] if head in HEADS else ["logits"] + + +@register_source("transformers") +def transformer_specs(params): + specs = [] + for name in select_names(ENTRIES, params): + family, head = ENTRIES[name] + task = HEADS[head][1] if head in HEADS else { + "causal_lm": "language_modeling", "seq2seq": "text_generation", "forecasting": "time_series_forecasting", + "distribution": "time_series_forecasting", "depth": "depth_estimation", "detection": "detection"}[head] + contract, outputs = invocation(name) + def factory(n=name): + return create_bounded_model(build_model, {"name": n}, params.get("max_parameter_bytes")) + metadata = provenance("transformers", "https://github.com/huggingface/transformers", name, task) + metadata.update(torch_input_contract=contract, torch_output_names=outputs, + configuration="library defaults; ALBERT uses the documented base-v2 dimensions; attention=eager; use_cache=False") + specs.append(ModelSpec(name, ModelSource.TRANSFORMERS, ModelCategory(task), factory=factory, + input_shape=list(next(iter(contract.values()))["shape"]), + tags=["real_network", "time_series" if head == "forecasting" else "text", task], metadata=metadata)) + return specs diff --git a/src/infinitensor_test/models/sources/vision_tasks_source.py b/src/infinitensor_test/models/sources/vision_tasks_source.py new file mode 100644 index 0000000..f955cfc --- /dev/null +++ b/src/infinitensor_test/models/sources/vision_tasks_source.py @@ -0,0 +1,71 @@ +"""Official video, optical-flow and end-to-end detection/pose networks.""" + +from infinitensor_test.models.registry import register_source +from infinitensor_test.models.spec import ModelSpec, ModelSource, ModelCategory +from .network_common import create_bounded_model, provenance, select_names + + +ENTRIES = { + **{n: ("video", "video_classification", [1, 3, 8, 112, 112]) + for n in ("r3d_18", "mc3_18", "r2plus1d_18", "s3d", "mvit_v1_b", "swin3d_t")}, + **{n: ("optical_flow", "optical_flow", [1, 3, 128, 128]) for n in ("raft_small", "raft_large")}, + **{n: ("detection", "detection", [1, 3, 320, 320]) for n in ( + "ssdlite320_mobilenet_v3_large", "ssd300_vgg16", "fcos_resnet50_fpn", + "retinanet_resnet50_fpn", "fasterrcnn_mobilenet_v3_large_320_fpn", "fasterrcnn_resnet50_fpn")}, + "maskrcnn_resnet50_fpn": ("detection", "instance_segmentation", [1, 3, 320, 320]), + "keypointrcnn_resnet50_fpn": ("detection", "pose_estimation", [1, 3, 320, 320]), +} +ENTRIES.update(s3d=("video", "video_classification", [1, 3, 32, 224, 224]), + mvit_v1_b=("video", "video_classification", [1, 3, 16, 224, 224]), + swin3d_t=("video", "video_classification", [1, 3, 32, 224, 224])) + + +def build_model(name): + import torch + import torchvision.models as models + family, task, _ = ENTRIES[name] + kwargs = {"weights": None} + if family == "detection": + kwargs["weights_backbone"] = None + network = getattr(getattr(models, family), name)(**kwargs) + if family == "video": + return network + class Invocation(torch.nn.Module): + def __init__(self): + super().__init__() + self.network = network + + def forward(self, *inputs): + if family == "optical_flow": + # Keep every refinement output; do not replace the flow network with a backbone. + return tuple(self.network(*inputs)) + result = self.network([inputs[0][0]])[0] + names = ["boxes", "labels", "scores"] + if task == "instance_segmentation": + names.append("masks") + if task == "pose_estimation": + names.extend(["keypoints", "keypoints_scores"]) + return tuple(result[n] for n in names) + return Invocation() + + +@register_source("torchvision_tasks") +def vision_task_specs(params): + specs = [] + for name in select_names(ENTRIES, params): + family, task, shape = ENTRIES[name] + def factory(n=name): + return create_bounded_model(build_model, {"name": n}, params.get("max_parameter_bytes")) + metadata = provenance("torchvision", "https://github.com/pytorch/vision", name, task) + names = ["image1", "image2"] if family == "optical_flow" else ["x"] + metadata["torch_input_contract"] = {n: {"shape": shape, "dtype": "float32", "uniform": [0.1, 0.9]} + for n in names} + if family == "detection": + metadata["torch_output_names"] = ["boxes", "labels", "scores"] + if task == "instance_segmentation": + metadata["torch_output_names"].append("masks") + if task == "pose_estimation": + metadata["torch_output_names"].extend(["keypoints", "keypoints_scores"]) + specs.append(ModelSpec(name, ModelSource.TORCHVISION, ModelCategory(task), factory=factory, + input_shape=shape, tags=["real_network", task], metadata=metadata)) + return specs diff --git a/src/infinitensor_test/models/spec.py b/src/infinitensor_test/models/spec.py index 68b56dc..379ed49 100644 --- a/src/infinitensor_test/models/spec.py +++ b/src/infinitensor_test/models/spec.py @@ -38,6 +38,25 @@ class ModelCategory(str, enum.Enum): ACTIVATION = "activation" # activation functions SYNTHETIC = "synthetic" # generic catch-all for synth OTHER = "other" + SUPER_RESOLUTION = "super_resolution" + OPTICAL_FLOW = "optical_flow" + VIDEO_CLASSIFICATION = "video_classification" + POSE_ESTIMATION = "pose_estimation" + INSTANCE_SEGMENTATION = "instance_segmentation" + SPEECH_RECOGNITION = "speech_recognition" + AUDIO_SEPARATION = "audio_separation" + TEXT_CLASSIFICATION = "text_classification" + TOKEN_CLASSIFICATION = "token_classification" + QUESTION_ANSWERING = "question_answering" + LANGUAGE_MODELING = "language_modeling" + TEXT_GENERATION = "text_generation" + TIME_SERIES_FORECASTING = "time_series_forecasting" + DEPTH_ESTIMATION = "depth_estimation" + TEXT_DETECTION = "text_detection" + TEXT_RECOGNITION = "text_recognition" + TEXT_ORIENTATION = "text_orientation" + TABLE_STRUCTURE_RECOGNITION = "table_structure_recognition" + IMAGE_MATTING = "image_matting" class ModelSource(str, enum.Enum): @@ -45,10 +64,18 @@ class ModelSource(str, enum.Enum): TORCHVISION = "torchvision" TIMM = "timm" + PYTORCHCV = "pytorchcv" + SEGMENTATION_MODELS = "segmentation_models" HUGGINGFACE = "huggingface" ONNX_ZOO = "onnx_zoo" SYNTHETIC = "synthetic" LOCAL = "local" # pre-existing user file + TORCHSR = "torchsr" + TORCHAUDIO = "torchaudio" + TRANSFORMERS = "transformers" + PADDLEOCR = "paddleocr" + PADDLESEG = "paddleseg" + PADDLEDETECTION = "paddledetection" @dataclass diff --git a/src/infinitensor_test/models/torch_inputs.py b/src/infinitensor_test/models/torch_inputs.py new file mode 100644 index 0000000..7e2ad59 --- /dev/null +++ b/src/infinitensor_test/models/torch_inputs.py @@ -0,0 +1,72 @@ +"""Explicit, reproducible invocation contracts for non-image and multi-input sources.""" + +import os +from pathlib import Path +import tempfile + +import numpy as np + +from infinitensor_test.artifacts import digest, stable_seed +from .validation import ModelValidationError + + +def get_input_contract(spec): + return spec.metadata.get("input_contract", spec.metadata.get("torch_input_contract")) + + +def contract_arrays(spec, seed): + contract = get_input_contract(spec) + if not isinstance(contract, dict) or not contract: + raise ModelValidationError("input_configuration_error", "empty torch input contract") + arrays = {} + for name, item in contract.items(): + shape = item["shape"] + if not isinstance(name, str) or not name or not isinstance(shape, list) or any( + isinstance(d, bool) or not isinstance(d, int) or d <= 0 for d in shape): + raise ModelValidationError("input_configuration_error", "contract requires named concrete shapes") + dtype = np.dtype(item["dtype"]) + if dtype.kind not in "fbiu": + raise ModelValidationError("input_configuration_error", "unsupported contract dtype") + if "values" in item: + value = np.asarray(item["values"], dtype=dtype) + elif "fill" in item: + value = np.full(shape, item["fill"], dtype=dtype) + elif dtype.kind == "f" and "uniform" in item: + low, high = item["uniform"] + if not np.isfinite([low, high]).all() or low >= high: + raise ModelValidationError("input_configuration_error", "invalid uniform range") + rng = np.random.default_rng(stable_seed(seed, f"{spec.short_id()}:{name}")) + value = rng.uniform(low, high, shape).astype(dtype) + else: + raise ModelValidationError("input_configuration_error", "constrained input requires explicit values or fill") + if list(value.shape) != shape or not np.isfinite(value).all(): + raise ModelValidationError("input_configuration_error", f"invalid contract values for {name}") + arrays[name] = value + return arrays + + +def materialize_contract(spec, root, seed): + """Persist actual NPZ inputs so ONNX validation never guesses token/control values.""" + if get_input_contract(spec) is None: + return + arrays = contract_arrays(spec, seed) + key = digest({"contract": get_input_contract(spec), "seed": seed, + "case": spec.short_id()}) + root = Path(root) + root.mkdir(parents=True, exist_ok=True) + path = root / f"inputs-{key}.npz" + handle, temporary = tempfile.mkstemp(prefix=".inputs-", suffix=".npz", dir=root) + try: + with os.fdopen(handle, "wb") as stream: + np.savez(stream, **arrays) + os.replace(temporary, path) + finally: + Path(temporary).unlink(missing_ok=True) + spec.metadata["input_file"] = str(path) + + +def ordered_input_names(spec, available): + names = list(get_input_contract(spec) or available) + if set(names) != set(available): + raise ModelValidationError("input_configuration_error", "torch/ONNX input names differ from contract") + return names diff --git a/src/infinitensor_test/models/torch_validation.py b/src/infinitensor_test/models/torch_validation.py new file mode 100644 index 0000000..360f041 --- /dev/null +++ b/src/infinitensor_test/models/torch_validation.py @@ -0,0 +1,42 @@ +"""Check that exporting a real network preserves its reference computation.""" + +import onnx +import onnxruntime as ort + +from .validation import ModelValidationError, prepare_reference_inputs +from .torch_inputs import ordered_input_names +from .output_comparison import compare_outputs + + +def flatten_torch_outputs(value): + import torch + if isinstance(value, torch.Tensor): + return [value.detach().cpu().numpy()] + if isinstance(value, dict): + return [a for v in value.values() for a in flatten_torch_outputs(v)] + if isinstance(value, (tuple, list)): + return [a for v in value for a in flatten_torch_outputs(v)] + raise ValueError(f"unsupported torch output: {type(value).__name__}") + + +def validate_torch_export(model, path, spec, seed): + import torch + inputs, _ = prepare_reference_inputs(onnx.load(str(path)), spec, seed) + names = ordered_input_names(spec, inputs) + try: + with torch.inference_mode(): + expected = flatten_torch_outputs(model(*(torch.from_numpy(inputs[name]) for name in names))) + options = ort.SessionOptions() + options.intra_op_num_threads = options.inter_op_num_threads = 1 + options.log_severity_level = 3 + session = ort.InferenceSession(str(path), sess_options=options, providers=["CPUExecutionProvider"]) + output_names = [o.name for o in session.get_outputs()] + declared = spec.metadata.get("torch_output_names") + if declared is not None and output_names != declared: + raise ValueError("torch/ONNX output names differ from contract") + actual = session.run(output_names, inputs) + metrics = compare_outputs(actual, expected, output_names) + return {"state": "passed", "torch_version": torch.__version__, "outputs": metrics, + "atol": 1e-3, "rtol": 1e-3} + except Exception as error: + raise ModelValidationError("export_mismatch", str(error)) from error diff --git a/src/infinitensor_test/models/validation.py b/src/infinitensor_test/models/validation.py index cce08f1..707b5e8 100644 --- a/src/infinitensor_test/models/validation.py +++ b/src/infinitensor_test/models/validation.py @@ -5,7 +5,9 @@ """ import hashlib +from importlib.metadata import PackageNotFoundError, version from pathlib import Path +import platform import numpy as np import onnx @@ -15,6 +17,19 @@ from infinitensor_test.artifacts import digest, stable_seed +def validation_environment(): + """One dependency signature for task recovery and model-package validation.""" + versions = {"python": platform.python_version(), "numpy": np.__version__, + "onnx": onnx.__version__, "onnxruntime": ort.__version__} + # Query optional dependencies without importing them in a base installation. + for package in ("torch", "torchvision"): + try: + versions[package] = version(package) + except PackageNotFoundError: + versions[package] = None + return versions + + class ModelValidationError(ValueError): def __init__(self, stage, message): self.stage = stage diff --git a/src/infinitensor_test/scripts/expand.py b/src/infinitensor_test/scripts/expand.py new file mode 100644 index 0000000..0c87220 --- /dev/null +++ b/src/infinitensor_test/scripts/expand.py @@ -0,0 +1,270 @@ +"""Collect real networks in isolated workers and emit a strictly counted inventory.""" + +import argparse +from concurrent.futures import ThreadPoolExecutor, as_completed +import hashlib +import json +import math +import os +from pathlib import Path +import subprocess +import sys +import time + +import onnx +import yaml + +from infinitensor_test.artifacts import atomic_json, digest, model_manifest +from infinitensor_test.config import load_settings +from infinitensor_test.models.catalog import ModelCatalog, _dict_to_spec +from infinitensor_test.models.inventory import real_inventory +from infinitensor_test.models.registry import get_source +from infinitensor_test.models.validation import (array_info, prepare_reference_inputs, + validation_environment) + + +def _run_batch(requests, root, timeout, resume): + """Reuse imports within a bounded batch; retain each result before moving on.""" + pending, results = [], [] + for request in requests: + key = digest((request["source"], request["name"]))[:24] + folder = root / "tasks" / key + folder.mkdir(parents=True, exist_ok=True) + request["result_path"] = str(folder / "result.json") + path = Path(request["result_path"]) + previous = None + if resume and path.is_file(): + try: + candidate = json.loads(path.read_text(encoding="utf-8")) + if candidate.get("request_sha256") == request["request_sha256"]: + if candidate["state"] in ("failed", "excluded"): + previous = candidate + elif candidate["state"] == "valid": + spec = _dict_to_spec(candidate["spec"]) + if spec.path and model_manifest(spec.path)["sha256"] == spec.metadata.get("model_sha256"): + # ONNX packages do not include the invocation NPZ. + # Read/type-check all actual inputs and bind their + # array identity to the saved reference evidence. + model = onnx.load(str(spec.path), load_external_data=False) + inputs, _ = prepare_reference_inputs(model, spec, request["seed"]) + if digest(array_info(inputs)) == spec.metadata.get("validation", {}).get("inputs_sha256"): + previous = candidate + # Timeout/crash records describe unfinished work, not a + # reusable result. Retry them even when the signature matches. + except (ValueError, KeyError, OSError): + pass + if previous is not None: + results.append((request, previous)) + else: + path.unlink(missing_ok=True) + pending.append(request) + folder = root / "batches" / digest([(r["source"], r["name"]) for r in requests])[:24] + folder.mkdir(parents=True, exist_ok=True) + status_path = folder / "status.json" + attempt = 0 + while pending: + status_path.unlink(missing_ok=True) + batch = folder / "request.json" + atomic_json(batch, {"requests": pending, "status_path": str(status_path)}) + active, changed, expired = 0, time.monotonic(), False + with (folder / f"worker-{attempt}.log").open("w", encoding="utf-8") as stream: + process = subprocess.Popen([sys.executable, "-m", "infinitensor_test.models.collection_worker", str(batch)], + stdout=stream, stderr=subprocess.STDOUT, + creationflags=getattr(subprocess, "CREATE_NO_WINDOW", 0)) + while process.poll() is None: + if status_path.is_file(): + state = json.loads(status_path.read_text(encoding="utf-8")) + if state.get("active", active) != active: + active, changed = state["active"], time.monotonic() + if time.monotonic() - changed > timeout: + process.kill() + process.wait() + expired = True + break + time.sleep(0.2) + unfinished = [] + for index, request in enumerate(pending): + path = Path(request["result_path"]) + if path.is_file(): + results.append((request, json.loads(path.read_text(encoding="utf-8")))) + elif index == active: + record = {"request_sha256": request["request_sha256"], + "state": "timeout" if expired else "crash", + "error": f"worker timeout {timeout}s" if expired else f"worker exited {process.returncode}"} + atomic_json(path, record) + results.append((request, record)) + else: + unfinished.append(request) + pending = unfinished + attempt += 1 + return results + + +def main(argv=None): + p = argparse.ArgumentParser(prog="infinitensor-test-expand") + p.add_argument("--sources", nargs="+", default=["timm", "pytorchcv", "segmentation_models"]) + p.add_argument("--source-config", type=Path) + p.add_argument("--manifest", type=Path) + p.add_argument("--data-dir", type=Path, default=Path("data/real-networks")) + p.add_argument("--jobs", type=int, default=2) + p.add_argument("--batch-size", type=int, default=8) + p.add_argument("--timeout", type=float, default=180) + p.add_argument("--max-size-mb", type=int, default=80) + p.add_argument("--minimum-real-models", type=int, default=1001) + p.add_argument("--limit", type=int) + p.add_argument("--seed", type=int, default=42) + p.add_argument("--offline", action="store_true") + p.add_argument("--resume", action="store_true") + p.add_argument("--force", action="store_true") + p.add_argument("--required-task", nargs="+", default=[]) + args = p.parse_args(argv) + try: + if args.jobs < 1 or args.batch_size < 1 or not math.isfinite(args.timeout) or args.timeout <= 0 or args.max_size_mb < 1 or args.minimum_real_models < 0: + raise ValueError("jobs, timeout and size must be positive; minimum must be nonnegative") + if args.limit is not None and args.limit < 1: + raise ValueError("limit must be positive") + options = yaml.safe_load(args.source_config.read_text(encoding="utf-8")) if args.source_config else {} + if not isinstance(options, dict): + raise ValueError("source-config must map source IDs to options") + if any(not isinstance(value, dict) for value in options.values()): + raise ValueError("each source-config entry must be an options mapping") + selected_ids = None + manifest_models = {} + required_tasks = set(args.required_task) + if args.manifest: + manifest = json.loads(args.manifest.read_text(encoding="utf-8")) + tasks = manifest.get("required_tasks", []) + if not isinstance(tasks, list) or any(not isinstance(t, str) or not t for t in tasks): + raise ValueError("manifest required_tasks must be a list of task names") + required_tasks.update(tasks) + selected_ids = {(r["source"], r["name"]) for r in manifest["models"]} + if len(selected_ids) != len(manifest["models"]): + raise ValueError("manifest repeats model IDs") + manifest_models = {(r["source"], r["name"]): r for r in manifest["models"]} + args.sources = sorted({source for source, name in selected_ids}) + settings = load_settings(cli_overrides={"data_dir": str(args.data_dir), + "random_seed": args.seed}) + root = settings.data_dir / "expansion" + if args.manifest: + input_path = args.manifest.resolve() + generated_manifest = (root / "accepted-models.json").resolve() + if (input_path.is_relative_to(settings.models_dir.resolve()) or + (input_path.is_relative_to(root.resolve()) and input_path != generated_manifest)): + raise ValueError("input manifest overlaps generated outputs; use an external manifest or accepted-models.json") + selected = [] + for source in dict.fromkeys(args.sources): + params = dict(options.get(source, {}), seed=args.seed, network_enabled=not args.offline, + cache_dir=str(settings.data_dir / "cache")) + for spec in get_source(source)(params): + if spec.metadata.get("model_kind") != "real_network": + raise ValueError(f"source {source!r} does not declare real network provenance") + if selected_ids is None or (source, spec.name) in selected_ids: + selected.append((source, spec, params)) + if selected_ids is not None and {(s, spec.name) for s, spec, _ in selected} != selected_ids: + raise ValueError("manifest contains unavailable model IDs") + unique_cases = {} + for source, spec, params in selected: + unique_cases.setdefault((spec.source.value, spec.name), (source, spec, params)) + if args.manifest and len(unique_cases) != len(selected): + raise ValueError("manifest repeats networks through source aliases") + selected = list(unique_cases.values()) + selected = selected[:args.limit] if args.limit else selected + if not selected: + print("No real networks selected", file=sys.stderr) + return 1 + root.mkdir(parents=True, exist_ok=True) + code_root = Path(__file__).resolve().parents[1] + code = {str(f.relative_to(code_root)): hashlib.sha256(f.read_bytes()).hexdigest() + for f in code_root.rglob("*.py")} + environment = validation_environment() + requests = [] + for source, spec, params in selected: + source_limit = params.get("max_size_mb", args.max_size_mb) + case_limit_mb = manifest_models.get((source, spec.name), {}).get("max_size_mb", args.max_size_mb) + if (isinstance(case_limit_mb, bool) or not isinstance(case_limit_mb, (int, float)) + or not math.isfinite(case_limit_mb) or case_limit_mb <= 0): + raise ValueError(f"{source}:{spec.name}: manifest max_size_mb must be finite and positive") + if (isinstance(source_limit, bool) or not isinstance(source_limit, (int, float)) + or not math.isfinite(source_limit) or source_limit <= 0): + raise ValueError(f"{source}: max_size_mb must be finite and positive") + case_limit = int(min(args.max_size_mb, source_limit, case_limit_mb) * 1024 * 1024) + if case_limit < 1: + raise ValueError(f"{source}: size budget must allow at least one byte") + request = {"source": source, "name": spec.name, "params": params, + "seed": args.seed, "models_dir": str(settings.models_dir), + "max_size_bytes": case_limit, "force": args.force, + "library_version": spec.metadata["source_library_version"], "code_sha256": digest(code), + "validation_environment": environment} + if spec.metadata.get("requires_fresh_process"): + request["single_model_process"] = True + if spec.metadata.get("export_backend") == "paddle": + request["paddle_version"] = spec.metadata["paddle_version"] + request["paddle2onnx_version"] = spec.metadata["paddle2onnx_version"] + if (source, spec.name) in manifest_models: + request["expected_architecture_sha256"] = manifest_models[(source, spec.name)].get("architecture_sha256") + request["expected_inputs_sha256"] = manifest_models[(source, spec.name)].get("inputs_sha256") + request["request_sha256"] = digest(request) + requests.append(request) + records, specs = [], [] + merged = {(s.source.value, s.name): s for s in ModelCatalog.load(settings.models_dir)} + start = time.monotonic() + batches, pending = [], [] + for request in requests: + if request.get("single_model_process"): + if pending: + batches.append(pending) + pending = [] + batches.append([request]) + else: + pending.append(request) + if len(pending) == args.batch_size: + batches.append(pending) + pending = [] + if pending: + batches.append(pending) + with ThreadPoolExecutor(max_workers=args.jobs) as executor: + futures = [executor.submit(_run_batch, batch, root, args.timeout, args.resume and not args.force) + for batch in batches] + for future in as_completed(futures): + for request, record in future.result(): + record.update(source=request["source"], name=request["name"]) + records.append(record) + if "spec" in record: + spec = _dict_to_spec(record["spec"]) + specs.append(spec) + merged[(spec.source.value, spec.name)] = spec + if records: + counts = {s: sum(r["state"] == s for r in records) for s in {r["state"] for r in records}} + print(f"[{len(records)}/{len(requests)}] {counts} ({time.monotonic()-start:.0f}s)", flush=True) + atomic_json(root / "progress.json", {"complete": False, "completed": len(records), + "total": len(requests), "counts": counts}) + ModelCatalog(settings.models_dir, list(merged.values())).save() + ModelCatalog(settings.models_dir, list(merged.values())).save() + inventory = real_inventory(specs) + inventory["missing_tasks"] = sorted(required_tasks - inventory["by_task"].keys()) + failed = [r for r in records if r["state"] in ("failed", "timeout", "crash")] + required = len(selected_ids) if selected_ids is not None else len(requests) + inventory.update(complete=len(records) == len(requests) == required, attempted=len(requests), required=required, + failed=len(failed), elapsed_s=round(time.monotonic()-start, 2), + minimum_real_models=args.minimum_real_models) + atomic_json(root / "inventory.json", inventory) + atomic_json(root / "progress.json", {"complete": inventory["complete"], "completed": len(records), + "total": len(requests), "validated_unique": inventory["validated_unique"]}) + atomic_json(root / "results.json", records) + accepted = {"schema_version": 1, "required_tasks": sorted(required_tasks), "models": [ + {"source": r["source_id"], "name": r["case_id"].split(":", 1)[1], + "architecture_sha256": r["architecture_sha256"], + "inputs_sha256": r["validation"].get("inputs_sha256")} + for r in inventory["models"] if r["state"] == "validated_unique"]} + # A strict replay must never shrink or rewrite its required input set. + atomic_json(root / ("validated-models.json" if args.manifest else "accepted-models.json"), accepted) + print(json.dumps({k: v for k, v in inventory.items() if k != "models"}, indent=2)) + strict_complete = not args.manifest or inventory["validated_unique"] == required + return 0 if inventory["complete"] and strict_complete and not failed and not inventory["missing_tasks"] and inventory["validated_unique"] >= args.minimum_real_models else 1 + except (ValueError, RuntimeError, KeyError, ImportError, OSError, yaml.YAMLError) as error: + print(f"Expansion configuration/environment error: {error}", file=sys.stderr) + return 2 + + +if __name__ == "__main__": + raise SystemExit(main()) diff --git a/src/infinitensor_test/scripts/setup_paddle.py b/src/infinitensor_test/scripts/setup_paddle.py new file mode 100644 index 0000000..97ca1e3 --- /dev/null +++ b/src/infinitensor_test/scripts/setup_paddle.py @@ -0,0 +1,50 @@ +"""Explicitly fetch immutable source revisions; never reset an existing checkout.""" + +import argparse +from pathlib import Path +import subprocess +import tempfile + +from infinitensor_test.models.sources.paddle_source import REPOSITORIES, repository_path + + +def main(argv=None): + p = argparse.ArgumentParser() + p.add_argument("--directory", type=Path, default=Path("data/paddle-repos")) + p.add_argument("--sources", nargs="+", choices=sorted(REPOSITORIES), default=["paddleocr", "paddleseg"]) + args = p.parse_args(argv) + root = args.directory.expanduser().resolve() + try: + root.mkdir(parents=True, exist_ok=True) + for source in dict.fromkeys(args.sources): + name, revision = REPOSITORIES[source] + target = root / name + if target.exists(): + repository_path(source, {"repository_root": str(root)}) + print(f"Verified {name} {revision}") + continue + with tempfile.TemporaryDirectory(prefix=".checkout-", dir=root) as temp: + checkout = Path(temp) / name + def git(*args): + subprocess.run(["git", "-C", str(checkout), *args], check=True) + checkout.mkdir() + git("init") + git("remote", "add", "origin", f"https://github.com/PaddlePaddle/{name}.git") + git("config", "remote.origin.promisor", "true") + git("config", "remote.origin.partialclonefilter", "blob:none") + git("sparse-checkout", "init", "--cone") + folders = {"paddleocr": ["ppocr", "configs"], "paddleseg": ["paddleseg", "Matting", "configs"], + "paddledetection": ["ppdet", "configs"]}[source] + git("sparse-checkout", "set", *folders) + git("fetch", "--filter=blob:none", "--depth=1", "origin", revision) + git("checkout", "--detach", "FETCH_HEAD") + checkout.rename(target) + print(f"Prepared {name} {revision}") + return 0 + except (OSError, ValueError, RuntimeError, subprocess.CalledProcessError) as error: + print(f"Paddle repository setup failed: {error}") + return 2 + + +if __name__ == "__main__": + raise SystemExit(main()) diff --git a/tests/integration/test_diverse_sources.py b/tests/integration/test_diverse_sources.py new file mode 100644 index 0000000..f95e075 --- /dev/null +++ b/tests/integration/test_diverse_sources.py @@ -0,0 +1,39 @@ +"""Explicitly selected real export checks; missing requested dependencies fail.""" + +import pytest + +from infinitensor_test.models.collector import _materialize_one +from infinitensor_test.models.registry import get_source +from infinitensor_test.models.spec import ModelSpec, ModelSource, ModelCategory +from infinitensor_test.models.torch_validation import validate_torch_export +from infinitensor_test.models.validation import ModelValidationError + + +@pytest.mark.integration +@pytest.mark.parametrize("source,name", [("torchsr", "ninasr_b0_x2"), ("torchaudio", "conv_tasnet"), + ("transformers", "electra_question_answering"), ("transformers", "time_series_transformer_teacher_forced")]) +def test_actual_task_export(source, name, tmp_path): + spec = next(s for s in get_source(source)({"include": [name]}) if s.name == name) + assert _materialize_one(spec, tmp_path / "models", 768*1024*1024), spec.metadata + v = spec.metadata["validation"] + assert v["reference"] == "passed" and v["torch_reference"]["state"] == "passed" + assert len(v["outputs"]) == len(v["torch_reference"]["outputs"]) + + +@pytest.mark.integration +def test_multi_input_integer_outputs_and_second_output_regression(tmp_path): + import torch + class Pair(torch.nn.Module): + def forward(self, ids, mask): + return ids + mask.to(torch.int64), ids - 1 + s = ModelSpec("pair", ModelSource.LOCAL, ModelCategory.OTHER, factory=Pair, + metadata={"model_kind": "real_network", "export_backend": "torch", "torch_output_names": ["first", "second"], + "torch_input_contract": {"ids": {"shape": [1, 2], "dtype": "int64", "values": [[2**53+1, 3]]}, + "mask": {"shape": [1, 2], "dtype": "bool", "fill": True}}}) + assert _materialize_one(s, tmp_path / "models", 100000), s.metadata + class Wrong(Pair): + def forward(self, ids, mask): + first, second = super().forward(ids, mask) + return first, second + 1 + with pytest.raises(ModelValidationError, match="numerical mismatch"): + validate_torch_export(Wrong(), s.path, s, 42) diff --git a/tests/integration/test_paddle_exports.py b/tests/integration/test_paddle_exports.py new file mode 100644 index 0000000..dc85ca8 --- /dev/null +++ b/tests/integration/test_paddle_exports.py @@ -0,0 +1,55 @@ +"""Explicitly selected Paddle integration checks fail if Paddle/repos are absent.""" + +import pytest + +from infinitensor_test.models.collector import _materialize_one +from infinitensor_test.models.registry import get_source +from infinitensor_test.models.spec import ModelSpec, ModelSource, ModelCategory +from infinitensor_test.models.paddle_validation import validate_paddle_export +from infinitensor_test.models.validation import ModelValidationError + + +@pytest.mark.integration +@pytest.mark.parametrize("name", ["db_mobilenet_v3", "crnn_mobilenet_v3", "slanet"]) +def test_actual_paddleocr_export(name, tmp_path): + s = next(s for s in get_source("paddleocr")({"include": [name]}) if s.name == name) + assert _materialize_one(s, tmp_path / "models", 768*1024*1024), s.metadata + assert s.metadata["validation"]["paddle_reference"]["state"] == "passed" + assert s.metadata["validation"]["paddle_reference"]["reference_timing"] == "before_export" + + +@pytest.mark.integration +def test_paddle_exact_inputs_cache_and_second_output(tmp_path): + import paddle + class Pair(paddle.nn.Layer): + def forward(self, ids, mask): + return ids, mask + s = ModelSpec("pair", ModelSource.LOCAL, ModelCategory.OTHER, factory=Pair, + metadata={"model_kind": "fixture", "export_backend": "paddle", "input_contract": { + "ids": {"shape": [1, 2], "dtype": "int64", "values": [[2**53+1, 3]]}, + "mask": {"shape": [1, 2], "dtype": "bool", "fill": True}}}) + assert _materialize_one(s, tmp_path / "models", 100000), s.metadata + assert _materialize_one(s, tmp_path / "models", 100000) and s.metadata["cache_hit"] + class Wrong(Pair): + def forward(self, ids, mask): + first, second = super().forward(ids, mask) + return first, paddle.logical_not(second) + with pytest.raises(ModelValidationError, match="numerical mismatch"): + validate_paddle_export(Wrong(), s.path, s, 42) + + +@pytest.mark.integration +def test_pinned_paddle_large_integer_arithmetic_is_rejected(tmp_path): + import paddle + class Arithmetic(paddle.nn.Layer): + def forward(self, ids, mask): + return ids + paddle.cast(mask, "int64"), ids - 1 + s = ModelSpec("integer_arithmetic_probe", ModelSource.LOCAL, ModelCategory.OTHER, factory=Arithmetic, + metadata={"model_kind": "fixture", "export_backend": "paddle", "input_contract": { + "ids": {"shape": [1, 2], "dtype": "int64", "values": [[2**53+1, 3]]}, + "mask": {"shape": [1, 2], "dtype": "bool", "fill": True}}}) + # A known discrepancy in the pinned Paddle/Paddle2ONNX pair must remain a + # rejected diagnostic, never become a false success via floating conversion. + assert not _materialize_one(s, tmp_path / "models", 100000) + assert s.path is None and s.metadata["collection_error_code"] == "export_mismatch" + assert "numerical mismatch" in s.metadata["collection_error"] diff --git a/tests/unit/test_model_review_regressions.py b/tests/unit/test_model_review_regressions.py new file mode 100644 index 0000000..9b25b15 --- /dev/null +++ b/tests/unit/test_model_review_regressions.py @@ -0,0 +1,159 @@ +"""Reproductions for the model expansion correctness review.""" + +import copy +import json +from pathlib import Path +import sys +import types + +import numpy as np +import onnx +from onnx import helper as h, numpy_helper as nh, TensorProto as T +import onnxruntime as ort +import pytest + +from infinitensor_test.artifacts import digest +from infinitensor_test.models import collection_worker, collector, validation +from infinitensor_test.models.catalog import ModelCatalog, _spec_to_dict +from infinitensor_test.models.inventory import architecture_digest +from infinitensor_test.models.spec import ModelSpec, ModelSource, ModelCategory +from infinitensor_test.scripts import expand + + +def conditional(path, use_outer=True, rename=False): + prefix = "renamed_" if rename else "" + x, cond, outer, local, y = [prefix + n for n in ("x", "cond", "outer", "local", "y")] + one, two = prefix + "one", prefix + "two" + branch = h.make_graph([ + h.make_node("Mul", [x, two], [local]), + h.make_node("Add", [outer if use_outer else local, local], [y]), + ], prefix + "branch", [], [h.make_tensor_value_info(y, T.FLOAT, [1])]) + graph = h.make_graph([ + h.make_node("Add", [x, one], [outer]), + h.make_node("If", [cond], [y], then_branch=branch, else_branch=branch), + ], prefix + "main", [h.make_tensor_value_info(x, T.FLOAT, [1]), + h.make_tensor_value_info(cond, T.BOOL, [])], + [h.make_tensor_value_info(y, T.FLOAT, [1])], + [nh.from_array(np.array([1], np.float32), one), + nh.from_array(np.array([2], np.float32), two)]) + model = h.make_model_gen_version(graph, opset_imports=[h.make_opsetid("", 18)]) + onnx.checker.check_model(model, full_check=True) + onnx.save(model, path) + output = ort.InferenceSession(str(path), providers=["CPUExecutionProvider"]).run( + None, {x: np.array([3], np.float32), cond: np.array(True)})[0] + return output + + +def test_subgraph_captures_cannot_alias_local_nodes(tmp_path): + a, b, renamed = [tmp_path / name for name in ("a.onnx", "b.onnx", "renamed.onnx")] + np.testing.assert_array_equal(conditional(a), [10]) + np.testing.assert_array_equal(conditional(b, use_outer=False), [12]) + conditional(renamed, rename=True) + assert architecture_digest(a) != architecture_digest(b) + assert architecture_digest(a) == architecture_digest(renamed) + + +@pytest.mark.parametrize("module", [ + "bisenet", "cgnet", "contextnet", "dabnet", "danet", "deeplabv3", "edanet", + "enet", "erfnet", "esnet", "espcnet", "fastscnn", "fcn8sd", "fpenet", + "icnet", "lednet", "linknet", "pspnet", "segnet", "sinet", "sqnet", "unet", +]) +def test_pytorchcv_segmentation_tasks_and_category_filter(tmp_path, monkeypatch, module): + from infinitensor_test.models.sources import network_common, pytorchcv_source + def builder(**kwargs): + raise AssertionError("discovery must not construct a model") + builder.__module__ = "pytorchcv.models." + module + provider = types.SimpleNamespace(_models={module + "_cityscapes": builder}, get_model=builder) + package = types.ModuleType("pytorchcv") + package.model_provider = provider + monkeypatch.setitem(sys.modules, "pytorchcv", package) + monkeypatch.setattr(network_common, "version", lambda package: "0.0.74") + specs = pytorchcv_source.pytorchcv_specs({}) + assert specs[0].metadata["task"] == "segmentation" + assert specs[0].category == ModelCategory.SEGMENTATION + assert len(ModelCatalog(tmp_path, specs).filter(categories=[ModelCategory.SEGMENTATION])) == 1 + + +def test_source_change_invalidates_model_and_torch_parity_cache(tmp_path, monkeypatch): + torch = pytest.importorskip("torch") + calls, state = [], {"op": "add"} + class Tiny(torch.nn.Module): + def __init__(self, op): + super().__init__() + self.op = op + def forward(self, x): + return x + 1 if self.op == "add" else x * 2 + def specs(params): + def factory(): + calls.append(state["op"]) + return Tiny(state["op"]) + return [ModelSpec("tiny", ModelSource.TIMM, ModelCategory.CLASSIFICATION, + factory=factory, input_shape=[2], metadata={ + "model_kind": "real_network", "export_backend": "torch", + "generator_version": 3, "source_library_version": "fixture", + "definition_sha256": "upstream-definition"})] + monkeypatch.setattr(collection_worker, "get_source", lambda source: specs) + request = {"source": "timm", "name": "tiny", "params": {}, "seed": 42, + "models_dir": str(tmp_path / "models"), "max_size_bytes": 1024 * 1024, + "force": False, "code_sha256": "first-source", "request_sha256": "first-request", + "validation_environment": getattr(validation, "validation_environment", lambda: {})(), + "result_path": str(tmp_path / "result.json")} + def run(): + collection_worker.run_request(request) + return json.loads(Path(request["result_path"]).read_text(encoding="utf-8")) + first = run() + assert first["state"] == "valid" + state["op"] = "mul" + request.update(code_sha256="changed-source", request_sha256="changed-request", + expected_architecture_sha256=first["spec"]["metadata"]["architecture_sha256"]) + second = run() + assert calls == ["add", "mul"] + assert second["state"] == "failed" + assert not second["spec"]["metadata"]["cache_hit"] + assert "validation" not in second["spec"]["metadata"] + request.pop("expected_architecture_sha256") + third = run() + assert third["state"] == "valid" and third["spec"]["metadata"]["cache_hit"] + assert third["spec"]["metadata"]["validation"]["torch_reference"]["state"] == "passed" + assert calls == ["add", "mul"] + + +@pytest.mark.parametrize("dependency", ["torch", "torchvision", "onnx", "onnxruntime", "numpy"]) +def test_resume_request_binds_validation_dependency_versions(tmp_path, monkeypatch, dependency): + from test_network_expansion import network + spec = network(tmp_path) + environment, requests = {dependency: "old"}, [] + monkeypatch.setattr(expand, "validation_environment", lambda: dict(environment), raising=False) + monkeypatch.setattr(expand, "get_source", lambda source: lambda params: [copy.deepcopy(spec)]) + def batch(items, root, timeout, resume): + requests.extend(items) + return [(item, {"state": "valid", "spec": _spec_to_dict(spec)}) for item in items] + monkeypatch.setattr(expand, "_run_batch", batch) + args = ["--sources", "timm", "--data-dir", str(tmp_path / "run"), "--minimum-real-models", "1", "--resume"] + assert expand.main(args) == 0 + environment[dependency] = "new" + assert expand.main(args) == 0 + assert requests[0]["request_sha256"] != requests[1]["request_sha256"] + + +def test_model_package_uses_the_same_validation_environment(tmp_path, monkeypatch): + from test_network_expansion import network + template = onnx.load(str(network(tmp_path).path)) + calls = [] + def factory(): + calls.append(True) + return template + environment = {"numpy": "old"} + monkeypatch.setattr(collector, "validation_environment", lambda: dict(environment)) + def collect(): + # This factory returns ONNX directly; declaring a torch source would + # require an optional dependency unrelated to the cache assertion. + spec = ModelSpec("package", ModelSource.LOCAL, ModelCategory.CLASSIFICATION, + factory=factory, input_shape=[2]) + assert collector._materialize_one(spec, tmp_path / "cache", 1024 * 1024) + return spec + assert not collect().metadata["cache_hit"] + assert collect().metadata["cache_hit"] + environment["numpy"] = "new" + assert not collect().metadata["cache_hit"] + assert calls == [True, True] diff --git a/tests/unit/test_network_expansion.py b/tests/unit/test_network_expansion.py new file mode 100644 index 0000000..e771c70 --- /dev/null +++ b/tests/unit/test_network_expansion.py @@ -0,0 +1,297 @@ +"""Real model counts require evidence, deduplication and complete manifest execution.""" + +import copy +import json +from pathlib import Path +import subprocess +import sys +import types + +import numpy as np +import onnx +from onnx import helper as h, numpy_helper as nh, TensorProto as T +import pytest + +from infinitensor_test.artifacts import digest +from infinitensor_test.models.catalog import ModelCatalog, _spec_to_dict +from infinitensor_test.models.inventory import architecture_digest, real_inventory +from infinitensor_test.models.spec import ModelSpec, ModelSource, ModelCategory +from infinitensor_test.scripts import expand + + +def network(tmp_path, name="sample", architecture="sample", weight=0.5, op="Add", rename=False): + x, w, y = ("a", "b", "c") if rename else ("x", "w", "y") + model = h.make_model_gen_version(h.make_graph( + [h.make_node(op, [x, w], [y])], name, + [h.make_tensor_value_info(x, T.FLOAT, [2])], + [h.make_tensor_value_info(y, T.FLOAT, [2])], + [nh.from_array(np.full(2, weight, np.float32), w)]), + opset_imports=[h.make_opsetid("", 18)]) + path = tmp_path / f"{name}.onnx" + onnx.save(model, path) + return ModelSpec(name, ModelSource.TIMM, ModelCategory.CLASSIFICATION, path=path, + metadata={"model_kind": "real_network", "architecture": architecture, + "architecture_id": f"classification/{architecture}", + "source_library_version": "fixture", "validation": {"reference": "passed"}}) + + +def test_architecture_identity_ignores_weights_and_names(tmp_path): + a = network(tmp_path, "a", weight=0.5) + b = network(tmp_path, "b", weight=0.7, rename=True) + c = network(tmp_path, "c", op="Mul") + assert architecture_digest(a.path) == architecture_digest(b.path) + assert architecture_digest(a.path) != architecture_digest(c.path) + + +def test_inventory_transitive_name_and_graph_deduplication(tmp_path): + a = network(tmp_path, "a", "one", op="Add") + b = network(tmp_path, "b", "two", op="Mul") + c = network(tmp_path, "c", "one", op="Mul") + result = real_inventory([b, c, a]) + assert result["validated_unique"] == 1 and result["duplicates"] == 2 + assert result["models"][0]["case_id"] == "timm:a" + + +def test_repeated_case_id_cannot_inflate_inventory(tmp_path): + spec = network(tmp_path) + result = real_inventory([spec, copy.deepcopy(spec)]) + assert result["validated_unique"] == 1 and result["duplicates"] == 1 + + +def test_inventory_rejects_synthetic_and_missing_reference_or_parity(tmp_path): + valid = network(tmp_path, "valid") + missing = network(tmp_path, "missing") + missing.metadata["validation"] = {} + torch = network(tmp_path, "torch") + torch.metadata["export_backend"] = "torch" + synthetic = network(tmp_path, "synthetic") + synthetic.source = ModelSource.SYNTHETIC + result = real_inventory([valid, missing, torch, synthetic]) + assert result["real_candidates"] == 3 and result["validated_unique"] == 1 and result["excluded"] == 2 + + +def test_stale_success_metadata_cannot_count_a_missing_model(tmp_path): + spec = network(tmp_path) + spec.metadata["architecture_sha256"] = architecture_digest(spec.path) + spec.path.unlink() + result = real_inventory([spec]) + assert result["validated_unique"] == 0 and result["excluded"] == 1 + + +def patch_source(monkeypatch, specs): + monkeypatch.setattr(expand, "get_source", lambda source: lambda params: copy.deepcopy(specs)) + def batch(requests, root, timeout, resume): + return [(request, {"state": "valid" if spec.path else "excluded", "spec": _spec_to_dict(spec)}) + for request in requests for spec in specs if spec.name == request["name"]] + monkeypatch.setattr(expand, "_run_batch", batch) + + +def test_expansion_minimum_is_verified_unique_count_and_preserves_catalog(tmp_path, monkeypatch): + specs = [network(tmp_path, "a"), network(tmp_path, "b", weight=0.7)] + patch_source(monkeypatch, specs) + root = tmp_path / "data" + ModelCatalog(root / "models", [ModelSpec("existing", ModelSource.SYNTHETIC, ModelCategory.OTHER)]).save() + args = ["--sources", "timm", "--data-dir", str(root), "--minimum-real-models"] + assert expand.main([*args, "2"]) == 1 + assert expand.main([*args, "1"]) == 0 + assert len(ModelCatalog.load(root / "models")) == 3 + report = json.loads((root / "expansion/inventory.json").read_text(encoding="utf-8")) + assert report["complete"] and report["validated_unique"] == 1 and report["duplicates"] == 1 + + +def test_manifest_cannot_pass_with_missing_or_duplicate_required_model(tmp_path, monkeypatch): + specs = [network(tmp_path, "a"), network(tmp_path, "b", weight=0.7)] + patch_source(monkeypatch, specs) + manifest = tmp_path / "manifest.json" + manifest.write_text(json.dumps({"models": [{"source": "timm", "name": s.name} for s in specs]})) + assert expand.main(["--manifest", str(manifest), "--data-dir", str(tmp_path / "run"), + "--minimum-real-models", "1"]) == 1 + manifest.write_text(json.dumps({"models": [{"source": "timm", "name": "unavailable"}]})) + assert expand.main(["--manifest", str(manifest)]) == 2 + + +def test_failed_strict_replay_does_not_shrink_input_manifest(tmp_path, monkeypatch): + specs = [network(tmp_path, "a"), network(tmp_path, "b", weight=0.7)] + patch_source(monkeypatch, specs) + root = tmp_path / "run" + manifest = root / "expansion/accepted-models.json" + manifest.parent.mkdir(parents=True) + manifest.write_text(json.dumps({"models": [{"source": "timm", "name": s.name} for s in specs]})) + original = manifest.read_bytes() + assert expand.main(["--manifest", str(manifest), "--data-dir", str(root), "--minimum-real-models", "1"]) == 1 + assert manifest.read_bytes() == original + + +def test_manifest_limit_is_incomplete_even_when_minimum_is_met(tmp_path, monkeypatch): + specs = [network(tmp_path, "a"), network(tmp_path, "b", op="Mul")] + patch_source(monkeypatch, specs) + manifest = tmp_path / "manifest.json" + manifest.write_text(json.dumps({"models": [{"source": "timm", "name": s.name} for s in specs]})) + root = tmp_path / "run" + assert expand.main(["--manifest", str(manifest), "--data-dir", str(root), + "--limit", "1", "--minimum-real-models", "1"]) == 1 + report = json.loads((root / "expansion/inventory.json").read_text(encoding="utf-8")) + assert not report["complete"] and report["attempted"] == 1 and report["required"] == 2 + + +@pytest.mark.parametrize("relative", ["expansion/validated-models.json", "models/catalog.json"]) +def test_input_manifest_cannot_overlap_generated_outputs(tmp_path, monkeypatch, relative): + patch_source(monkeypatch, [network(tmp_path)]) + root = tmp_path / "run" + manifest = root / relative + manifest.parent.mkdir(parents=True) + manifest.write_text(json.dumps({"models": [{"source": "timm", "name": "sample"}]})) + original = manifest.read_bytes() + assert expand.main(["--manifest", str(manifest), "--data-dir", str(root), "--minimum-real-models", "1"]) == 2 + assert manifest.read_bytes() == original + + +@pytest.mark.parametrize("args", [["--jobs", "0"], ["--batch-size", "0"], ["--timeout", "nan"], + ["--timeout", "0"], ["--minimum-real-models", "-1"]]) +def test_invalid_expansion_configuration_returns_two(args): + assert expand.main(args) == 2 + + +def test_empty_expansion_is_failure(tmp_path, monkeypatch): + patch_source(monkeypatch, []) + assert expand.main(["--sources", "timm", "--data-dir", str(tmp_path), "--minimum-real-models", "0"]) == 1 + + +def test_source_budget_is_honored_and_force_overrides_resume(tmp_path, monkeypatch): + specs = [network(tmp_path)] + patch_source(monkeypatch, specs) + original = expand._run_batch + seen = [] + def batch(requests, root, timeout, resume): + seen.append((requests[0]["max_size_bytes"], requests[0]["force"], resume)) + return original(requests, root, timeout, resume) + monkeypatch.setattr(expand, "_run_batch", batch) + options = tmp_path / "sources.yaml" + options.write_text("timm:\n max_size_mb: 30\n", encoding="utf-8") + assert expand.main(["--sources", "timm", "--source-config", str(options), + "--data-dir", str(tmp_path / "run"), "--max-size-mb", "160", + "--minimum-real-models", "1", "--force", "--resume"]) == 0 + assert seen == [(30 * 1024 * 1024, True, False)] + + +def test_source_aliases_are_collected_once_and_cannot_fill_the_minimum(tmp_path, monkeypatch): + patch_source(monkeypatch, [network(tmp_path)]) + root = tmp_path / "run" + assert expand.main(["--sources", "timm", "timm_small", "--data-dir", str(root), + "--minimum-real-models", "2"]) == 1 + report = json.loads((root / "expansion/inventory.json").read_text(encoding="utf-8")) + assert report["attempted"] == report["validated_unique"] == 1 + + +def test_required_task_cannot_be_replaced_by_more_classifiers(tmp_path, monkeypatch): + specs = [network(tmp_path)] + patch_source(monkeypatch, specs) + root = tmp_path / "run" + args = ["--sources", "timm", "--data-dir", str(root), "--minimum-real-models", "1"] + assert expand.main([*args, "--required-task", "super_resolution"]) == 1 + report = json.loads((root / "expansion/inventory.json").read_text(encoding="utf-8")) + assert report["validated_unique"] == 1 and report["missing_tasks"] == ["super_resolution"] + + +def test_plugin_id_and_case_budget_survive_manifest_replay(tmp_path, monkeypatch): + spec = network(tmp_path) + spec.source_id = "timm_small" + patch_source(monkeypatch, [spec]) + root = tmp_path / "run" + assert expand.main(["--sources", "timm_small", "--data-dir", str(root), "--minimum-real-models", "1"]) == 0 + accepted = json.loads((root / "expansion/accepted-models.json").read_text(encoding="utf-8")) + assert accepted["models"][0]["source"] == "timm_small" + accepted["models"][0]["max_size_mb"] = 3 + manifest = tmp_path / "required.json" + manifest.write_text(json.dumps(accepted)) + original, seen = expand._run_batch, [] + def batch(requests, root, timeout, resume): + seen.append(requests[0]["max_size_bytes"]) + return original(requests, root, timeout, resume) + monkeypatch.setattr(expand, "_run_batch", batch) + assert expand.main(["--manifest", str(manifest), "--data-dir", str(root), + "--max-size-mb", "10", "--minimum-real-models", "1"]) == 0 + assert seen == [3*1024*1024] + + +@pytest.mark.parametrize("broken,state", [("hang", "timeout"), ("crash", "crash")]) +def test_batch_failure_keeps_prior_result_and_continues(tmp_path, monkeypatch, broken, state): + code = ''' +import json,os,sys,time +from pathlib import Path +payload=json.loads(Path(sys.argv[1]).read_text(encoding='utf-8')) +def write(path,value): + path=Path(path); temp=path.with_suffix('.tmp'); temp.write_text(json.dumps(value)); os.replace(temp,path) +for index,request in enumerate(payload['requests']): + write(payload['status_path'],{'active':index}) + if request['name']=='hang': time.sleep(60) + if request['name']=='crash': os._exit(7) + write(request['result_path'],{'state':'excluded','request_sha256':request['request_sha256']}) +write(payload['status_path'],{'done':True}) +''' + original = subprocess.Popen + monkeypatch.setattr(expand.subprocess, "Popen", lambda args, **kwargs: original( + [sys.executable, "-c", code, args[-1]], **kwargs)) + requests = [{"source": "fixture", "name": name, "request_sha256": digest(name)} + for name in ("before", broken, "after")] + result = expand._run_batch(requests, tmp_path, 15, False) + assert {request["name"]: record["state"] for request, record in result} == { + "before": "excluded", broken: state, "after": "excluded"} + + +def test_new_sources_are_lazy_and_pass_no_download_options(monkeypatch): + from infinitensor_test.models.sources import network_common, pytorchcv_source, segmentation_source + monkeypatch.setattr(network_common, "version", lambda name: "fixture") + calls = [] + def builder(**kwargs): + calls.append(kwargs) + return object() + provider = types.SimpleNamespace(_models={"small": builder}, get_model=builder) + ptcv = types.ModuleType("pytorchcv") + ptcv.model_provider = provider + monkeypatch.setitem(sys.modules, "pytorchcv", ptcv) + bounded = lambda fn, kwargs, limit=None: fn(**kwargs) + monkeypatch.setattr(pytorchcv_source, "create_bounded_model", bounded) + specs = pytorchcv_source.pytorchcv_specs({}) + assert len(specs) == 1 and not calls + specs[0].factory() + assert calls[-1]["pretrained"] is False + smp = types.ModuleType("segmentation_models_pytorch") + smp.encoders = types.SimpleNamespace(get_encoder_names=lambda: ["small"]) + smp.Unet = builder + smp.PSPNet = builder + monkeypatch.setitem(sys.modules, "segmentation_models_pytorch", smp) + monkeypatch.setattr(segmentation_source, "create_bounded_model", bounded) + specs = segmentation_source.segmentation_specs({"decoders": ["Unet"]}) + assert len(specs) == 1 and specs[0].metadata["model_kind"] == "real_network" + specs[0].factory() + assert calls[-1]["encoder_weights"] is None and calls[-1]["classes"] == 3 + psp = segmentation_source.segmentation_specs({"decoders": ["PSPNet"]})[0] + assert psp.input_shape == [1, 3, 384, 384] + + +def test_timm_explicit_empty_skip_policy_is_honored(monkeypatch): + from infinitensor_test.models.sources import network_common, timm_source + monkeypatch.setattr(network_common, "version", lambda name: "fixture") + timm = types.ModuleType("timm") + timm.list_models = lambda **kwargs: ["small", "small_large_variant"] + timm.is_model = lambda name: True + timm.get_pretrained_cfg = lambda name: types.SimpleNamespace(input_size=(3, 224, 224)) + monkeypatch.setitem(sys.modules, "timm", timm) + assert len(timm_source._make_timm_specs()) == 1 + assert len(timm_source._make_timm_specs(skip_patterns=[])) == 2 + + +def test_committed_real_network_corpus_has_unique_named_and_structural_ids(): + root = Path(__file__).resolve().parents[2] + manifest = json.loads((root / "catalogs/real-networks.json").read_text(encoding="utf-8")) + models = manifest["models"] + assert len(models) >= 1001 + assert len({(m["source"], m["name"]) for m in models}) == len(models) + assert len({m["architecture_sha256"] for m in models}) == len(models) + assert {m["source"] for m in models} == {"pytorchcv", "timm", "segmentation_models", "torchsr", "torchaudio", "torchvision_tasks", "transformers"} + assert all(len(m["architecture_sha256"]) == 64 and all(d > 0 for d in m["input_shape"]) for m in models) + diverse = json.loads((root / "catalogs/diverse-networks.json").read_text(encoding="utf-8")) + assert len(diverse["required_tasks"]) >= 13 + assert set(diverse["required_tasks"]) <= {m["task"] for m in diverse["models"]} + assert all(m["task"] not in {"classification", "segmentation"} for m in diverse["models"]) diff --git a/tests/unit/test_paddle_sources.py b/tests/unit/test_paddle_sources.py new file mode 100644 index 0000000..0e7499e --- /dev/null +++ b/tests/unit/test_paddle_sources.py @@ -0,0 +1,110 @@ +"""Paddle is optional; counting requires its own parity proof and clean source pins.""" + +import copy +import json +from pathlib import Path +import subprocess + +import numpy as np +import pytest + +from infinitensor_test.models.inventory import real_inventory +from infinitensor_test.models.output_comparison import compare_outputs +from infinitensor_test.models.registry import OptionalDependencyError, get_all_sources +from infinitensor_test.models.sources.paddle_source import REPOSITORIES, repository_path, remove_weights +from infinitensor_test.models.torch_inputs import contract_arrays +from test_network_expansion import network, patch_source +from infinitensor_test.scripts import expand + + +def test_paddle_sources_are_lazy_and_optional(): + assert set(REPOSITORIES) <= get_all_sources().keys() + + +def test_paddle_cannot_be_counted_using_torch_parity(tmp_path): + s = network(tmp_path) + s.metadata["export_backend"] = "paddle" + s.metadata["validation"]["torch_reference"] = {"state": "passed"} + assert real_inventory([s])["validated_unique"] == 0 + s.metadata["validation"]["paddle_reference"] = {"state": "passed"} + assert real_inventory([s])["validated_unique"] == 1 + + +def test_source_checkout_must_be_pinned_and_clean(tmp_path, monkeypatch): + params = {"repository_root": str(tmp_path)} + with pytest.raises(OptionalDependencyError): + repository_path("paddleocr", params) + (tmp_path / "PaddleOCR/.git").mkdir(parents=True) + monkeypatch.setattr(subprocess, "check_output", lambda *a, **k: REPOSITORIES["paddleocr"][1]) + monkeypatch.setattr(subprocess, "run", lambda *a, **k: subprocess.CompletedProcess(a, 0)) + assert repository_path("paddleocr", params).name == "PaddleOCR" + monkeypatch.setattr(subprocess, "run", lambda *a, **k: subprocess.CompletedProcess(a, 1)) + with pytest.raises(ValueError, match="clean revision"): + repository_path("paddleocr", params) + + +def test_remove_only_checkpoint_configuration(): + original = {"type": "MODNet", "backbone": {"pretrained": "https://weights", "depth": 50}, "heads": [{"pretrained": True, "channels": 256}]} + result = remove_weights(original) + assert result["backbone"] == {"pretrained": None, "depth": 50} + assert result["heads"] == [{"pretrained": False, "channels": 256}] + assert original["backbone"]["pretrained"] == "https://weights" + + +def test_neutral_input_contract_does_not_require_torch(tmp_path): + s = network(tmp_path) + s.metadata["input_contract"] = {"x": {"shape": [1, 3], "dtype": "float32", "uniform": [0.1, 0.9]}} + assert contract_arrays(s, 42)["x"].shape == (1, 3) + + +def test_stateful_source_requests_get_fresh_processes(tmp_path, monkeypatch): + specs = [network(tmp_path, "first", architecture="first"), network(tmp_path, "second", architecture="second", op="Mul")] + for s in specs: + s.metadata["requires_fresh_process"] = True + patch_source(monkeypatch, specs) + original, sizes = expand._run_batch, [] + def batch(requests, root, timeout, resume): + sizes.append(len(requests)) + return original(requests, root, timeout, resume) + monkeypatch.setattr(expand, "_run_batch", batch) + assert expand.main(["--sources", "timm", "--data-dir", str(tmp_path / "run"), "--minimum-real-models", "2"]) == 0 + assert sizes == [1, 1] + + +def test_setup_does_not_reset_existing_checkout(tmp_path, monkeypatch): + from infinitensor_test.scripts import setup_paddle + checkout = tmp_path / "PaddleOCR" + checkout.mkdir() + marker = checkout / "user.txt" + marker.write_text("preserve", encoding="utf-8") + def refuse(*args): + raise ValueError("existing checkout has a different revision") + monkeypatch.setattr(setup_paddle, "repository_path", refuse) + assert setup_paddle.main(["--directory", str(tmp_path), "--sources", "paddleocr"]) == 2 + assert marker.read_text(encoding="utf-8") == "preserve" + + +def test_paddle_manifest_has_independent_ids_and_all_required_tasks(): + root = Path(__file__).resolve().parents[2] + paddle = json.loads((root / "catalogs/paddle-networks.json").read_text(encoding="utf-8")) + previous = json.loads((root / "catalogs/real-networks.json").read_text(encoding="utf-8")) + models = paddle["models"] + assert len(models) == 13 and len(paddle["required_tasks"]) == 6 + assert set(paddle["required_tasks"]) == {m["task"] for m in models} + assert len({m["architecture_sha256"] for m in models}) == 13 + assert not ({(m["source"], m["name"]) for m in models} & + {(m["source"], m["name"]) for m in previous["models"]}) + + +@pytest.mark.parametrize("bad", ["integer", "second", "dtype", "shape", "nan", "missing"]) +def test_shared_comparison_rejects_every_output_regression(bad): + reference = [np.array([2**53+1], dtype=np.int64), np.array([0.5], dtype=np.float32)] + actual = copy.deepcopy(reference) + if bad == "integer": actual[0][0] -= 1 + elif bad == "second": actual[1][0] = 0.6 + elif bad == "dtype": actual[0] = actual[0].astype(np.float64) + elif bad == "shape": actual[1] = actual[1].reshape((1, 1)) + elif bad == "nan": actual[1][0] = np.nan + elif bad == "missing": actual.pop() + with pytest.raises(ValueError): + compare_outputs(actual, reference, ["integer", "float"]) diff --git a/tests/unit/test_resume_integrity.py b/tests/unit/test_resume_integrity.py new file mode 100644 index 0000000..d6c8e90 --- /dev/null +++ b/tests/unit/test_resume_integrity.py @@ -0,0 +1,182 @@ +"""Resume must preserve executable inputs and retry interrupted work.""" + +import copy +import json +from pathlib import Path +import subprocess +import sys +import types + +import numpy as np +import onnx +from onnx import helper as h, numpy_helper as nh, TensorProto as T +import pytest + +from infinitensor_test.artifacts import atomic_json, digest, model_manifest +from infinitensor_test.models import validation +from infinitensor_test.models.catalog import ModelCatalog, _spec_to_dict +from infinitensor_test.models.spec import ModelSpec, ModelSource, ModelCategory +from infinitensor_test.scripts import expand + + +def gather_source(tmp_path, monkeypatch, generated=False): + """Use real ONNX/ORT and collection in a child, without optional frameworks.""" + model = h.make_model_gen_version(h.make_graph([ + h.make_node("Gather", ["data", "indices"], ["y"], axis=0), + ], "gather", [h.make_tensor_value_info("indices", T.INT64, [1, 2])], + [h.make_tensor_value_info("y", T.FLOAT, [1, 2])], + [nh.from_array(np.array([10, 20, 30], np.float32), "data")]), + opset_imports=[h.make_opsetid("", 18)]) + path, inputs = tmp_path / "gather.onnx", tmp_path / "inputs.npz" + onnx.save(model, path) + np.savez(inputs, indices=np.array([[1, 2]], np.int64)) + spec = ModelSpec("gather", ModelSource.LOCAL, ModelCategory.OTHER, path=path, + metadata={"model_kind": "real_network", "architecture": "gather", + "source_library_version": "fixture", "input_file": str(inputs)}) + if generated: + spec.metadata["input_contract"] = {"indices": { + "shape": [1, 2], "dtype": "int64", "values": [[1, 2]]}} + fixture = tmp_path / "source.json" + atomic_json(fixture, _spec_to_dict(spec)) + monkeypatch.setattr(expand, "get_source", lambda source: lambda params: [copy.deepcopy(spec)]) + code = ''' +import json,sys +from pathlib import Path +from infinitensor_test.artifacts import atomic_json +from infinitensor_test.models.catalog import _dict_to_spec,_spec_to_dict +from infinitensor_test.models.collector import _materialize_one +payload=json.loads(Path(sys.argv[1]).read_text(encoding='utf-8')) +for index,request in enumerate(payload['requests']): + atomic_json(Path(payload['status_path']),{'active':index}) + spec=_dict_to_spec(json.loads(Path(sys.argv[2]).read_text(encoding='utf-8'))) + ok=_materialize_one(spec,Path(request['models_dir']),request['max_size_bytes'],False,request['seed']) + atomic_json(Path(request['result_path']),{'request_sha256':request['request_sha256'], + 'state':'valid' if ok else 'failed','spec':_spec_to_dict(spec)}) +atomic_json(Path(payload['status_path']),{'done':True}) +''' + original, starts = subprocess.Popen, [] + def launch(args, **kwargs): + starts.append(True) + return original([sys.executable, "-c", code, args[-1], str(fixture)], **kwargs) + monkeypatch.setattr(expand.subprocess, "Popen", launch) + root = tmp_path / "run" + args = ["--sources", "local", "--data-dir", str(root), "--minimum-real-models", "1", + "--resume", "--timeout", "30"] + assert expand.main(args) == 0 + saved = ModelCatalog.load(root / "models").specs[0] + return args, saved, starts, root + + +@pytest.mark.parametrize("damage", ["out_of_bounds", "missing", "corrupt", "wrong_dtype", "missing_evidence"]) +def test_resume_rechecks_inputs_and_cannot_report_stale_success(tmp_path, monkeypatch, damage): + args, saved, starts, root = gather_source(tmp_path, monkeypatch) + inputs = Path(saved.metadata["input_file"]) + if damage == "out_of_bounds": + np.savez(inputs, indices=np.array([[99, 99]], np.int64)) + with pytest.raises(validation.ModelValidationError, match="out of data bounds"): + validation.validate_reference(saved.path, saved, 42) + elif damage == "missing": + inputs.unlink() + elif damage == "corrupt": + inputs.write_bytes(b"invalid npz") + elif damage == "wrong_dtype": + np.savez(inputs, indices=np.array([[1, 2]], np.float32)) + else: + result_path = next((root / "expansion/tasks").glob("*/result.json")) + result = json.loads(result_path.read_text(encoding="utf-8")) + result["spec"]["metadata"]["validation"].pop("inputs_sha256") + atomic_json(result_path, result) + inputs.unlink() + assert expand.main(args) == 1 + assert len(starts) == 2 + report = json.loads((root / "expansion/inventory.json").read_text(encoding="utf-8")) + assert report["validated_unique"] == 0 and report["failed"] == 1 + assert not json.loads((root / "expansion/accepted-models.json").read_text(encoding="utf-8"))["models"] + + +def test_resume_uses_array_identity_and_reuses_unchanged_success(tmp_path, monkeypatch): + args, saved, starts, _ = gather_source(tmp_path, monkeypatch) + inputs = Path(saved.metadata["input_file"]) + before = inputs.read_bytes() + np.savez_compressed(inputs, indices=np.array([[1, 2]], np.int64)) + assert inputs.read_bytes() != before + assert expand.main(args) == 0 + assert len(starts) == 1 + + +@pytest.mark.parametrize("damage", ["missing", "changed"]) +def test_resume_rebuilds_generated_npz_in_normal_worker(tmp_path, monkeypatch, damage): + args, saved, starts, root = gather_source(tmp_path, monkeypatch, generated=True) + inputs = Path(saved.metadata["input_file"]) + if damage == "missing": + inputs.unlink() + else: + np.savez(inputs, indices=np.array([[99, 99]], np.int64)) + assert expand.main(args) == 0 + assert len(starts) == 2 + restored = ModelCatalog.load(root / "models").specs[0] + assert restored.metadata["validation"]["inputs_sha256"] == saved.metadata["validation"]["inputs_sha256"] + with np.load(restored.metadata["input_file"], allow_pickle=False) as data: + np.testing.assert_array_equal(data["indices"], [[1, 2]]) + + +@pytest.mark.parametrize("interruption", ["timeout", "crash"]) +def test_resume_retries_interrupted_worker_and_keeps_completed_work(tmp_path, monkeypatch, interruption): + flag = tmp_path / "finish" + code = ''' +import json,os,sys,time +from pathlib import Path +from infinitensor_test.artifacts import atomic_json +payload=json.loads(Path(sys.argv[1]).read_text(encoding='utf-8')) +if not Path(sys.argv[2]).exists(): + if sys.argv[3]=='timeout': time.sleep(60) + else: os._exit(7) +for index,request in enumerate(payload['requests']): + atomic_json(Path(payload['status_path']),{'active':index}) + atomic_json(Path(request['result_path']),{'request_sha256':request['request_sha256'],'state':'excluded'}) +atomic_json(Path(payload['status_path']),{'done':True}) +''' + original, starts = subprocess.Popen, [] + def launch(args, **kwargs): + starts.append(True) + return original([sys.executable, "-c", code, args[-1], str(flag), interruption], **kwargs) + monkeypatch.setattr(expand.subprocess, "Popen", launch) + slow = {"source": "fixture", "name": "interrupted", "request_sha256": digest("same-request")} + short_timeout = 0.1 if interruption == "timeout" else 30 + first = expand._run_batch([copy.deepcopy(slow)], tmp_path, short_timeout, True) + assert first[0][1]["state"] == interruption + from test_network_expansion import network + completed = network(tmp_path, "completed") + completed.source = ModelSource.LOCAL + completed.metadata["validation"] = validation.validate_reference(completed.path, completed, 42) + completed.metadata["model_sha256"] = model_manifest(completed.path)["sha256"] + done = {"source": "fixture", "name": "completed", "seed": 42, + "request_sha256": digest("completed")} + done_path = tmp_path / "tasks" / digest(("fixture", "completed"))[:24] / "result.json" + atomic_json(done_path, {"state": "valid", "request_sha256": done["request_sha256"], + "spec": _spec_to_dict(completed)}) + flag.touch() + second = expand._run_batch([done, copy.deepcopy(slow)], tmp_path, 30, True) + assert len(starts) == 2 + assert {r["name"]: s["state"] for r, s in second} == {"completed": "valid", "interrupted": "excluded"} + + +@pytest.mark.parametrize("module,task", [ + ("alphapose_coco", "pose_estimation"), ("ibppose_coco", "pose_estimation"), + ("lwopenpose_cmupan", "pose_estimation"), ("simplepose_coco", "pose_estimation"), + ("simpleposemobile_coco", "pose_estimation"), ("jasper", "speech_recognition"), + ("jasperdr", "speech_recognition"), ("quartznet", "speech_recognition"), + ("wav2letter", "speech_recognition"), +]) +def test_pytorchcv_pose_and_speech_category_matches_task(tmp_path, monkeypatch, module, task): + from infinitensor_test.models.sources import network_common, pytorchcv_source + def builder(**kwargs): + raise AssertionError("discovery must not build the model") + builder.__module__ = "pytorchcv.models." + module + package = types.ModuleType("pytorchcv") + package.model_provider = types.SimpleNamespace(_models={"sample": builder}, get_model=builder) + monkeypatch.setitem(sys.modules, "pytorchcv", package) + monkeypatch.setattr(network_common, "version", lambda name: "0.0.74") + specs = pytorchcv_source.pytorchcv_specs({}) + assert specs[0].metadata["task"] == specs[0].category.value == task + assert len(ModelCatalog(tmp_path, specs).filter(categories=[ModelCategory(task)])) == 1 diff --git a/tests/unit/test_torch_inputs.py b/tests/unit/test_torch_inputs.py new file mode 100644 index 0000000..c9f77f6 --- /dev/null +++ b/tests/unit/test_torch_inputs.py @@ -0,0 +1,64 @@ +"""Contracts preserve input names, exact integer values and reproducible fixtures.""" + +import numpy as np +import pytest +from onnx import helper as h, TensorProto as T + +from infinitensor_test.models.spec import ModelSpec, ModelSource, ModelCategory +from infinitensor_test.models.torch_inputs import contract_arrays, materialize_contract, ordered_input_names +from infinitensor_test.models.validation import ModelValidationError, input_file_digest, prepare_reference_inputs + + +def spec(): + return ModelSpec("tokens", ModelSource.TRANSFORMERS, ModelCategory.QUESTION_ANSWERING, + metadata={"torch_input_contract": { + "ids": {"shape": [1, 2], "dtype": "int64", "values": [[2**53+1, 3]]}, + "mask": {"shape": [1, 2], "dtype": "bool", "fill": True}, + "signal": {"shape": [1, 2], "dtype": "float32", "uniform": [-0.5, 0.5]}}}) + + +def test_contract_npz_round_trip_is_exact_and_reproducible(tmp_path): + s = spec() + materialize_contract(s, tmp_path, 42) + first = input_file_digest(s) + model = h.make_model(h.make_graph([], "inputs", [h.make_tensor_value_info(n, t, [1, 2]) + for n, t in (("ids", T.INT64), ("mask", T.BOOL), ("signal", T.FLOAT))], [])) + values, _ = prepare_reference_inputs(model, s, 42) + assert values["ids"][0, 0] == 2**53+1 and values["ids"].dtype == np.int64 + assert values["mask"].all() and values["mask"].dtype == np.bool_ + materialize_contract(s, tmp_path, 42) + assert input_file_digest(s) == first + assert not np.array_equal(contract_arrays(s, 43)["signal"], values["signal"]) + assert ordered_input_names(s, dict(reversed(list(values.items())))) == ["ids", "mask", "signal"] + + +@pytest.mark.parametrize("item", [ + {"shape": [1, -1], "dtype": "float32", "uniform": [0, 1]}, + {"shape": [1, 2], "dtype": "int64"}, + {"shape": [1, 2], "dtype": "float32", "uniform": [1, 0]}, + {"shape": [1, 2], "dtype": "int64", "values": [1, 2]}, +]) +def test_invalid_contracts_fail_explicitly(item): + s = spec() + s.metadata["torch_input_contract"] = {"bad": item} + with pytest.raises(ModelValidationError): + contract_arrays(s, 42) + + +def test_pruned_or_missing_input_is_not_silently_discarded(): + with pytest.raises(ModelValidationError, match="input names"): + ordered_input_names(spec(), {"ids": np.zeros((1, 2), np.int64)}) + + +def test_new_sources_remain_lazy_and_discoverable(): + from infinitensor_test.models.registry import get_all_sources + assert {"torchsr", "torchaudio", "torchvision_tasks", "transformers"} <= get_all_sources().keys() + + +def test_text_and_time_series_contracts_have_real_task_inputs(): + from infinitensor_test.models.sources.transformers_source import invocation + qa, outputs = invocation("bert_question_answering") + assert set(qa) == {"input_ids", "attention_mask", "token_type_ids"} + assert outputs == ["start_logits", "end_logits"] + forecast, _ = invocation("patchtst_forecasting") + assert forecast["past_observed_mask"]["fill"] == 1.0