{"id":37073452,"url":"https://github.com/jexio/fulmo","last_synced_at":"2026-01-14T08:37:18.430Z","repository":{"id":37885882,"uuid":"397128387","full_name":"jexio/fulmo","owner":"jexio","description":"A very general, feature-rich template for rapid and scalable ML experimentation with best practices.","archived":true,"fork":false,"pushed_at":"2023-01-13T03:07:06.000Z","size":502,"stargazers_count":4,"open_issues_count":8,"forks_count":0,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-08-31T20:35:50.012Z","etag":null,"topics":["baseline","config","deep-learning","experiments","hydra","project-structure","python","pytorch","pytorch-lightning","reproducibility","template"],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/jexio.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":null,"license":"LICENSE.md","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2021-08-17T06:13:25.000Z","updated_at":"2023-04-04T20:37:14.000Z","dependencies_parsed_at":"2023-02-09T14:15:50.595Z","dependency_job_id":null,"html_url":"https://github.com/jexio/fulmo","commit_stats":null,"previous_names":[],"tags_count":3,"template":false,"template_full_name":null,"purl":"pkg:github/jexio/fulmo","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jexio%2Ffulmo","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jexio%2Ffulmo/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jexio%2Ffulmo/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jexio%2Ffulmo/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/jexio","download_url":"https://codeload.github.com/jexio/fulmo/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jexio%2Ffulmo/sbom","scorecard":{"id":517148,"data":{"date":"2025-08-11","repo":{"name":"github.com/jexio/fulmo","commit":"daa4bd4f1cf3b8bd785a9024a413db9a0238f10c"},"scorecard":{"version":"v5.2.1-40-gf6ed084d","commit":"f6ed084d17c9236477efd66e5b258b9d4cc7b389"},"score":2.9,"checks":[{"name":"Packaging","score":-1,"reason":"packaging workflow not detected","details":["Warn: no GitHub/GitLab publishing workflow detected."],"documentation":{"short":"Determines if the project is published as a package that others can easily download, install, easily update, and uninstall.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#packaging"}},{"name":"Code-Review","score":0,"reason":"Found 0/6 approved changesets -- score normalized to 0","details":null,"documentation":{"short":"Determines if the project requires human code review before pull requests (aka merge requests) are merged.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#code-review"}},{"name":"Binary-Artifacts","score":10,"reason":"no binaries found in the repo","details":null,"documentation":{"short":"Determines if the project has generated executable (binary) artifacts in the source repository.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#binary-artifacts"}},{"name":"Dangerous-Workflow","score":10,"reason":"no dangerous workflow patterns detected","details":null,"documentation":{"short":"Determines if the project's GitHub Action workflows avoid dangerous patterns.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#dangerous-workflow"}},{"name":"Maintained","score":0,"reason":"project is archived","details":["Warn: Repository is archived."],"documentation":{"short":"Determines if the project is \"actively maintained\".","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#maintained"}},{"name":"Token-Permissions","score":0,"reason":"detected GitHub workflow tokens with excessive permissions","details":["Info: jobLevel 'contents' permission set to 'read': .github/workflows/codeql-analysis.yml:20","Info: jobLevel 'actions' permission set to 'read': .github/workflows/codeql-analysis.yml:19","Warn: no topLevel permission defined: .github/workflows/codeql-analysis.yml:1","Warn: no topLevel permission defined: .github/workflows/pre-commit-autoupdate.yml:1","Warn: no topLevel permission defined: .github/workflows/release.yml:1","Warn: no topLevel permission defined: .github/workflows/tests.yml:1","Info: no jobLevel write permissions found"],"documentation":{"short":"Determines if the project's workflows follow the principle of least privilege.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#token-permissions"}},{"name":"Pinned-Dependencies","score":0,"reason":"dependency not pinned by hash detected -- score normalized to 0","details":["Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/codeql-analysis.yml:30: update your workflow using https://app.stepsecurity.io/secureworkflow/jexio/fulmo/codeql-analysis.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/codeql-analysis.yml:34: update your workflow using https://app.stepsecurity.io/secureworkflow/jexio/fulmo/codeql-analysis.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/codeql-analysis.yml:41: update your workflow using https://app.stepsecurity.io/secureworkflow/jexio/fulmo/codeql-analysis.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/codeql-analysis.yml:44: update your workflow using https://app.stepsecurity.io/secureworkflow/jexio/fulmo/codeql-analysis.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/pre-commit-autoupdate.yml:13: update your workflow using https://app.stepsecurity.io/secureworkflow/jexio/fulmo/pre-commit-autoupdate.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/pre-commit-autoupdate.yml:18: update your workflow using https://app.stepsecurity.io/secureworkflow/jexio/fulmo/pre-commit-autoupdate.yml/master?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/pre-commit-autoupdate.yml:31: update your workflow using https://app.stepsecurity.io/secureworkflow/jexio/fulmo/pre-commit-autoupdate.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/release.yml:13: update your workflow using https://app.stepsecurity.io/secureworkflow/jexio/fulmo/release.yml/master?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/release.yml:22: update your workflow using https://app.stepsecurity.io/secureworkflow/jexio/fulmo/release.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/release.yml:29: update your workflow using https://app.stepsecurity.io/secureworkflow/jexio/fulmo/release.yml/master?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/release.yml:40: update your workflow using https://app.stepsecurity.io/secureworkflow/jexio/fulmo/release.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/tests.yml:17: update your workflow using https://app.stepsecurity.io/secureworkflow/jexio/fulmo/tests.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/tests.yml:20: update your workflow using https://app.stepsecurity.io/secureworkflow/jexio/fulmo/tests.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/tests.yml:37: update your workflow using https://app.stepsecurity.io/secureworkflow/jexio/fulmo/tests.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/tests.yml:40: update your workflow using https://app.stepsecurity.io/secureworkflow/jexio/fulmo/tests.yml/master?enable=pin","Warn: pipCommand not pinned by hash: .github/workflows/pre-commit-autoupdate.yml:24","Warn: pipCommand not pinned by hash: .github/workflows/tests.yml:26","Warn: pipCommand not pinned by hash: .github/workflows/tests.yml:47","Warn: pipCommand not pinned by hash: .github/workflows/tests.yml:48","Warn: pipCommand not pinned by hash: .github/workflows/tests.yml:49","Info:   0 out of  12 GitHub-owned GitHubAction dependencies pinned","Info:   0 out of   3 third-party GitHubAction dependencies pinned","Info:   0 out of   5 pipCommand dependencies pinned"],"documentation":{"short":"Determines if the project has declared and pinned the dependencies of its build process.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#pinned-dependencies"}},{"name":"CII-Best-Practices","score":0,"reason":"no effort to earn an OpenSSF best practices badge detected","details":null,"documentation":{"short":"Determines if the project has an OpenSSF (formerly CII) Best Practices Badge.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#cii-best-practices"}},{"name":"Security-Policy","score":0,"reason":"security policy file not detected","details":["Warn: no security policy file detected","Warn: no security file to analyze","Warn: no security file to analyze","Warn: no security file to analyze"],"documentation":{"short":"Determines if the project has published a security policy.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#security-policy"}},{"name":"Fuzzing","score":0,"reason":"project is not fuzzed","details":["Warn: no fuzzer integrations found"],"documentation":{"short":"Determines if the project uses fuzzing.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#fuzzing"}},{"name":"License","score":10,"reason":"license file detected","details":["Info: project has a license file: LICENSE.md:0","Info: FSF or OSI recognized license: MIT License: LICENSE.md:0"],"documentation":{"short":"Determines if the project has defined a license.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#license"}},{"name":"Signed-Releases","score":-1,"reason":"no releases found","details":null,"documentation":{"short":"Determines if the project cryptographically signs release artifacts.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#signed-releases"}},{"name":"Branch-Protection","score":0,"reason":"branch protection not enabled on development/release branches","details":["Warn: branch protection not enabled for branch 'master'"],"documentation":{"short":"Determines if the default and release branches are protected with GitHub's branch protection settings.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#branch-protection"}},{"name":"SAST","score":7,"reason":"SAST tool detected but not run on all commits","details":["Info: SAST configuration detected: CodeQL","Warn: 0 commits out of 26 are checked with a SAST tool"],"documentation":{"short":"Determines if the project uses static code analysis.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#sast"}},{"name":"Vulnerabilities","score":0,"reason":"84 existing vulnerabilities detected","details":["Warn: Project is vulnerable to: PYSEC-2023-120 / GHSA-45c4-8wx5-qw6w","Warn: Project is vulnerable to: PYSEC-2024-24 / GHSA-5h86-8mv2-jq9f","Warn: Project is vulnerable to: GHSA-5m98-qgg9-wh84","Warn: Project is vulnerable to: GHSA-7gpw-8wmc-pm8g","Warn: Project is vulnerable to: GHSA-8495-4g3g-x7pr","Warn: Project is vulnerable to: PYSEC-2024-26 / GHSA-8qpw-xqxj-h4r2","Warn: Project is vulnerable to: GHSA-9548-qrrj-x5pj","Warn: Project is vulnerable to: PYSEC-2023-246 / GHSA-gfw2-4jvh-wgfg","Warn: Project is vulnerable to: GHSA-pjjw-qhg8-p2p9","Warn: Project is vulnerable to: PYSEC-2023-250 / GHSA-q3qx-c6g2-7pw2","Warn: Project is vulnerable to: PYSEC-2023-251 / GHSA-qvrw-v9rv-5rjx","Warn: Project is vulnerable to: PYSEC-2024-48 / GHSA-fj7x-q9j7-g6q6","Warn: Project is vulnerable to: PYSEC-2024-230 / GHSA-248v-346w-9cwc","Warn: Project is vulnerable to: PYSEC-2022-42986 / GHSA-43fp-rhv2-5gv8","Warn: Project is vulnerable to: PYSEC-2023-135 / GHSA-xqr8-7jwr-rhp7","Warn: Project is vulnerable to: PYSEC-2022-301 / GHSA-8fg9-p83m-x5pq","Warn: Project is vulnerable to: GHSA-6673-4983-2vx5","Warn: Project is vulnerable to: PYSEC-2022-42991 / GHSA-v3c5-jqr6-7qm8","Warn: Project is vulnerable to: PYSEC-2024-4 / GHSA-2mqj-m65w-jghx","Warn: Project is vulnerable to: PYSEC-2023-165 / GHSA-cwvm-v4w8-q58c","Warn: Project is vulnerable to: PYSEC-2022-42992 / GHSA-hcpj-qp55-gfph","Warn: Project is vulnerable to: PYSEC-2023-137 / GHSA-pr76-5cm5-w9cj","Warn: Project is vulnerable to: PYSEC-2023-161 / GHSA-wfm5-v35h-vwf4","Warn: Project is vulnerable to: GHSA-496j-2rq6-j6cc","Warn: Project is vulnerable to: PYSEC-2024-60 / GHSA-jjg7-2v4v-x38h","Warn: Project is vulnerable to: GHSA-cpwx-vrp4-4pq7","Warn: Project is vulnerable to: GHSA-gmj6-6f8f-6699","Warn: Project is vulnerable to: GHSA-h5c8-rqwp-cp95","Warn: Project is vulnerable to: GHSA-h75v-3vvj-5mfj","Warn: Project is vulnerable to: GHSA-q2x7-8rv6-6q7h","Warn: Project is vulnerable to: PYSEC-2022-288 / GHSA-6hrg-qmvc-2xh8","Warn: Project is vulnerable to: PYSEC-2022-260 / GHSA-v973-fxgf-6xhp","Warn: Project is vulnerable to: GHSA-6p56-wp2h-9hxr","Warn: Project is vulnerable to: GHSA-fpfv-jqm9-f5jm","Warn: Project is vulnerable to: PYSEC-2022-269 / GHSA-3pgj-pg6c-r5p7","Warn: Project is vulnerable to: GHSA-jh2j-j4j9-crg3","Warn: Project is vulnerable to: PYSEC-2023-184","Warn: Project is vulnerable to: GHSA-3f63-hfp8-52jq","Warn: Project is vulnerable to: GHSA-44wm-f244-xhp3","Warn: Project is vulnerable to: GHSA-4fx9-vc88-q2xc","Warn: Project is vulnerable to: PYSEC-2023-227 / GHSA-8ghj-p4vj-mr35","Warn: Project is vulnerable to: PYSEC-2022-10 / GHSA-8vj2-vxx3-667w","Warn: Project is vulnerable to: PYSEC-2022-168 / GHSA-9j59-75qj-795w","Warn: Project is vulnerable to: GHSA-j7hp-h8jx-5ppr","Warn: Project is vulnerable to: PYSEC-2022-42979 / GHSA-m2vv-5vj5-2hm7","Warn: Project is vulnerable to: PYSEC-2022-8 / GHSA-pw3c-h7wp-cvhx","Warn: Project is vulnerable to: PYSEC-2022-9 / GHSA-xrcv-f9gm-v42c","Warn: Project is vulnerable to: PYSEC-2023-175","Warn: Project is vulnerable to: GHSA-8gq9-2x98-w8hf","Warn: Project is vulnerable to: GHSA-8qvm-5x2c-j2w7","Warn: Project is vulnerable to: PYSEC-2022-42969","Warn: Project is vulnerable to: PYSEC-2023-117 / GHSA-mrwq-x4v8-fh7p","Warn: Project is vulnerable to: PYSEC-2021-874 / GHSA-2vj5-px25-gjrp","Warn: Project is vulnerable to: GHSA-4cv3-v7pv-rfhf","Warn: Project is vulnerable to: GHSA-98fp-7v67-4v3q","Warn: Project is vulnerable to: PYSEC-2022-181 / GHSA-r5qj-cvf9-p85h","Warn: Project is vulnerable to: GHSA-9hjg-9r4m-mvj7","Warn: Project is vulnerable to: GHSA-9wx4-h78v-vm56","Warn: Project is vulnerable to: PYSEC-2023-74 / GHSA-j8r2-6x86-q33q","Warn: Project is vulnerable to: PYSEC-2024-110 / GHSA-jw8x-6495-233v","Warn: Project is vulnerable to: PYSEC-2023-102","Warn: Project is vulnerable to: PYSEC-2023-114","Warn: Project is vulnerable to: GHSA-3749-ghw9-m3mg","Warn: Project is vulnerable to: PYSEC-2022-43015 / GHSA-47fc-vmwq-366v","Warn: Project is vulnerable to: PYSEC-2025-41 / GHSA-53q9-r3pm-6pq6","Warn: Project is vulnerable to: PYSEC-2024-252 / GHSA-5pcm-hx3q-hm94","Warn: Project is vulnerable to: GHSA-887c-mr87-cxwp","Warn: Project is vulnerable to: PYSEC-2024-251 / GHSA-pg7h-5qx3-wjr3","Warn: Project is vulnerable to: PYSEC-2024-250","Warn: Project is vulnerable to: PYSEC-2024-259","Warn: Project is vulnerable to: GHSA-g7vv-2v7x-gj9p","Warn: Project is vulnerable to: GHSA-34jh-p97f-mpxf","Warn: Project is vulnerable to: PYSEC-2023-212 / GHSA-g4mx-q9vg-27p4","Warn: Project is vulnerable to: GHSA-pq67-6m6q-mj2v","Warn: Project is vulnerable to: PYSEC-2023-192 / GHSA-v845-jxx5-vc9f","Warn: Project is vulnerable to: PYSEC-2024-187 / GHSA-rqc4-2hc7-8c8v","Warn: Project is vulnerable to: GHSA-2g68-c3qc-8985","Warn: Project is vulnerable to: GHSA-f9vj-2wh5-fj8j","Warn: Project is vulnerable to: PYSEC-2023-221 / GHSA-hrfv-mqp8-q5rw","Warn: Project is vulnerable to: PYSEC-2023-57 / GHSA-px8h-6qxv-m22q","Warn: Project is vulnerable to: GHSA-q34m-jh98-gwm2","Warn: Project is vulnerable to: PYSEC-2023-58 / GHSA-xg9f-g7g7-2323","Warn: Project is vulnerable to: PYSEC-2022-203","Warn: Project is vulnerable to: GHSA-jfmj-5v4g-7637"],"documentation":{"short":"Determines if the project has open, known unfixed vulnerabilities.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#vulnerabilities"}}]},"last_synced_at":"2025-08-20T02:08:06.329Z","repository_id":37885882,"created_at":"2025-08-20T02:08:06.329Z","updated_at":"2025-08-20T02:08:06.329Z"},"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28414667,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-01-14T08:31:27.429Z","status":"ssl_error","status_checked_at":"2026-01-14T08:31:19.098Z","response_time":107,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["baseline","config","deep-learning","experiments","hydra","project-structure","python","pytorch","pytorch-lightning","reproducibility","template"],"created_at":"2026-01-14T08:37:17.848Z","updated_at":"2026-01-14T08:37:18.420Z","avatar_url":"https://github.com/jexio.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003cdiv align=\"center\"\u003e\n\n[![GitHub release (latest SemVer)](https://img.shields.io/github/v/release/jexio/fulmo?logo=github)](https://github.com/jexio/fulmo/releases)\n[![Python Version](https://img.shields.io/badge/python-3.8%20%7C%203.9-blue?logo=python)](https://www.python.org/)\n[![Tests](https://github.com/jexio/fulmo/workflows/tests/badge.svg)](https://github.com/jexio/fulmo/actions?workflow=tests)\n[![Conventional Commits](https://img.shields.io/badge/Conventional%20Commits-1.0.0-yellow.svg?style=flat-square)](https://conventionalcommits.org)\n\n[![Black](https://img.shields.io/badge/code%20style-black-000000.svg)](https://github.com/psf/black)\n[![pre-commit](https://img.shields.io/badge/pre--commit-enabled-brightgreen?logo=pre-commit\u0026logoColor=white)](https://github.com/pre-commit/pre-commit)\n\n\u003c/div\u003e\n\n# fulmo\n\nTemplate to start your deep learning project based on `PyTorchLightning` for rapid prototyping.\n\n**Contents**\n- [fulmo](#fulmo)\n  - [Why Lightning + Hydra + Albumentations?](#why-lightning--hydra--albumentations)\n  - [Features](#features)\n  - [Project Structure](#project-structure)\n  - [Workflow](#workflow)\n  - [Experiment Tracking](#experiment-tracking)\n  - [Quick start](#quickstart)\n  - [Todo](#todo)\n  - [Credits](#credits)\n\u003cbr\u003e\n    \n## Why Lightning + Hydra + Albumentations?\n- [PyTorch Lightning][PyTorchLightning/pytorch-lightning] provides great abstractions for well structured ML code and advanced features like checkpointing, gradient accumulation, distributed training, etc.\n- [Hydra][facebookresearch/hydra] provides convenient way to manage experiment configurations and advanced features like overriding any config parameter from command line, scheduling execution of many runs, etc.\n- [Albumentations][albumentations-team/albumentations] (**Optional**) provides many image augmentation. Albumentations supports all common computer vision tasks such as classification, semantic segmentation, instance segmentation, object detection, and pose estimation. \n\u003cbr\u003e\n\n## Features\n\nPipelines based on hydra-core configs and PytorchLightning modules\n- Predefined folder structure. Modularity: all abstractions are split into different submodule\n- Rapid Experimentation. Thanks to automating pipeline with config files and hydra command line superpowers\n- Little Boilerplate. So pipeline can be easily modified\n- Main Configuration. Main config file specifies default training configuration\n- Experiment Configurations. Stored in a separate folder, they can be composed out of smaller configs, override chosen parameters or define everything from scratch\n- Experiment Tracking. Many logging frameworks can be easily integrated\n- Logs. All logs (checkpoints, data from loggers, chosen hparams, etc.) are stored in a convenient folder structure imposed by Hydra \n- Automates PyTorch Lightning training pipeline with little boilerplate, so it can be easily modified\n- Augmentations with [albumentations][albumentations-team/albumentations] described in a yaml config.\n- Support of [timm models][rwightman/pytorch-image-models], [pytorch-optimizer][jettify/pytorch-optimizer] and [TorchMetrics][PyTorchLightning/pytorch-metrics]\n- Exponential Moving Average for a more stable training, and Stochastic Moving Average for a better generalization and just overall performance.\n\n\u003cbr\u003e\n\n## Project structure\nThe directory structure of new project looks like this: \n```\n├── src\n│   ├── fulmo\n│   │   ├── callbacks               \u003c- PyTorch Lightning callbacks\n│   │   ├── core                    \u003c- PyTorch Lightning models\n│   │   ├── datasets                \u003c- PyTorch datasets\n│   │   ├── losses                  \u003c- PyTorch losses\n│   │   ├── metrics                 \u003c- PyTorch metrics  \n│   │   ├── models                  \u003c- PyTorch model architectures\n│   │   ├── optimizers              \u003c- PyTorch optimizers\n│   │   ├── readers                 \u003c- Data readers\n│   │   ├── samples                 \u003c- PyTorch samplers\n│   │   ├── schedulers              \u003c- PyTorch schedulers\n│   │   └── utils\n├── tests\n│   ├── test_fulmo                  \u003c- Tests\n│\n├── .bumpversion.cfg\n├── .darglint\n├── .gitignore\n├── .pre-commit-config.yaml \u003c- Configuration of hooks for automatic code formatting\n├── CHANGELOG.md\n├── mypy.ini\n├── noxfile.py\n├── poetry.lock             \u003c- File for installing python dependencies\n├── pyproject.toml          \u003c- File for installing python dependencies\n├── README.md\n└── tasks.py\n```\n\n\u003cbr\u003e\n\n## Workflow\n1. Write your PyTorch model\n2. Write your PyTorch Lightning datamodule\n3. Write your experiment config, containing paths to your model and datamodule\n4. Run training with chosen experiment config:\u003cbr\u003e\n```bash\npython train.py +experiment=experiment_name\n```\n\u003cbr\u003e\n\n## Experiment Tracking\nPyTorch Lightning provides built in loggers for Weights\u0026Biases, Neptune, Comet, MLFlow, Tensorboard and CSV. To use one of them, simply add its config to [configs/logger](configs/logger) and run:\n ```yaml\npython train.py logger=logger_name\n```\n\u003cbr\u003e\n\n## Quickstart\n\n\u003cdetails\u003e\n\u003csummary\u003eFirst, install dependencies\u003c/summary\u003e\n\n```yaml\npip install fulmo | poetry add fulmo\n```\n\n\u003c/details\u003e\n\n\u003cdetails\u003e\n\u003csummary\u003eSecond, create your project\u003c/summary\u003e\n\nSee [examples](https://github.com/jexio/mnist/tree/master/configs) folder.\n\n\u003c/details\u003e\n\n\u003cdetails\u003e\n\u003csummary\u003eNext, you can train model with default configuration without logging\u003c/summary\u003e\n\n```yaml\npython train.py\n```\n\n\u003c/details\u003e\n\n\u003cdetails\u003e\n\u003csummary\u003eOr you can train model with chosen experiment config\u003c/summary\u003e\n\n```yaml\npython train.py +experiment=experiment_name\n```\n\n\u003c/details\u003e\n\n\u003cdetails\u003e\n\u003csummary\u003eResume from a checkpoint\u003c/summary\u003e\n\n```yaml\n# checkpoint can be either path or URL\n# path should be either absolute or prefixed with `${work_dir}/`\n# use quotes '' around argument or otherwise $ symbol breaks it\npython train.py '+trainer.resume_from_checkpoint=${work_dir}/logs/runs/2021-06-23/16-50-49/checkpoints/last.ckpt'\n```\n\n\u003c/details\u003e\n\n\u003cbr\u003e\n\n## TODO\n- [Data version control][dvc]\n- Metric learning pipeline\n- Integrate [Cross-Batch Memory for Embedding Learning (XBM)][msight-tech/research-xbm]\n- Image augmentation policies\n\n\u003cbr\u003e\n\n## Credits\n* This package was created with [Cookiecutter][cookiecutter] and the [fedejaure/cookiecutter-modern-pypackage][cookiecutter-modern-pypackage] project template.\n* [hobogalaxy/lightning-hydra-template][hobogalaxy/lightning-hydra-template]\n* [Erlemar/pytorch_tempest][Erlemar/pytorch_tempest]\n* [bonlime/pytorch-tools][bonlime/pytorch-tools]\n\n\n[cookiecutter]: https://github.com/cookiecutter/cookiecutter\n[cookiecutter-modern-pypackage]: https://github.com/fedejaure/cookiecutter-modern-pypackage\n[PyTorchLightning/pytorch-lightning]: https://github.com/PyTorchLightning/pytorch-lightning\n[PyTorchLightning/pytorch-metrics]: https://github.com/PytorchLightning/metrics\n[hobogalaxy/lightning-hydra-template]: https://github.com/hobogalaxy/lightning-hydra-template\n[albumentations-team/albumentations]: https://github.com/albumentations-team/albumentations\n[facebookresearch/hydra]: https://github.com/facebookresearch/hydra\n[rwightman/pytorch-image-models]: https://github.com/rwightman/pytorch-image-models\n[jettify/pytorch-optimizer]: https://github.com/jettify/pytorch-optimizer\n[bonlime/pytorch-tools]: https://github.com/bonlime/pytorch-tools\n[Erlemar/pytorch_tempest]: https://github.com/Erlemar/pytorch_tempest\n[msight-tech/research-xbm]: https://github.com/msight-tech/research-xbm\n[mlflow]: https://mlflow.org/\n[dvc]: https://dvc.org/\n[ClearML]: https://clear.ml/\n[commitizen-tools/commitizen]: https://github.com/commitizen-tools/commitizen\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjexio%2Ffulmo","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fjexio%2Ffulmo","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjexio%2Ffulmo/lists"}