{"id":18438934,"url":"https://github.com/mila-iqia/researchtemplate","last_synced_at":"2025-04-07T21:32:03.371Z","repository":{"id":179287248,"uuid":"663216804","full_name":"mila-iqia/ResearchTemplate","owner":"mila-iqia","description":"Research Project Template Repository","archived":false,"fork":false,"pushed_at":"2025-04-02T16:01:36.000Z","size":2295,"stargazers_count":24,"open_issues_count":20,"forks_count":4,"subscribers_count":3,"default_branch":"master","last_synced_at":"2025-04-02T16:43:45.266Z","etag":null,"topics":["hydra","jax","machine-learning","pytorch","template-project"],"latest_commit_sha":null,"homepage":"https://mila-iqia.github.io/ResearchTemplate/","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/mila-iqia.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"docs/contributing.md","funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2023-07-06T20:16:42.000Z","updated_at":"2025-03-31T19:24:16.000Z","dependencies_parsed_at":null,"dependency_job_id":"5608a4db-8402-41f7-9f50-2dc9759d98ee","html_url":"https://github.com/mila-iqia/ResearchTemplate","commit_stats":null,"previous_names":["mila-iqia/researchtemplate"],"tags_count":2,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mila-iqia%2FResearchTemplate","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mila-iqia%2FResearchTemplate/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mila-iqia%2FResearchTemplate/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mila-iqia%2FResearchTemplate/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/mila-iqia","download_url":"https://codeload.github.com/mila-iqia/ResearchTemplate/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":247732594,"owners_count":20986892,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","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":["hydra","jax","machine-learning","pytorch","template-project"],"created_at":"2024-11-06T06:22:37.875Z","updated_at":"2025-04-07T21:32:03.357Z","avatar_url":"https://github.com/mila-iqia.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003cdiv align=\"center\"\u003e\n\n# Research Project Template\n\n[![Build](https://github.com/mila-iqia/ResearchTemplate/actions/workflows/build.yml/badge.svg?branch=master)](https://github.com/mila-iqia/ResearchTemplate/actions/workflows/build.yml)\n[![codecov](https://codecov.io/gh/mila-iqia/ResearchTemplate/graph/badge.svg?token=I2DYLK8NTD)](https://codecov.io/gh/mila-iqia/ResearchTemplate)\n[![hydra](https://img.shields.io/badge/Config-Hydra_1.3-89b8cd)](https://hydra.cc/)\n[![license](https://img.shields.io/badge/License-MIT-green.svg?labelColor=gray)](https://github.com/mila-iqia/ResearchTemplate#license)\n[![Copier](https://img.shields.io/endpoint?url=https://raw.githubusercontent.com/copier-org/copier/master/img/badge/badge-grayscale-inverted-border-orange.json)](https://github.com/copier-org/copier)\n\n🚀 Get started on a new research project with a clean, robust and well-tested base that you can count on! 🚀\n\n\u003c/div\u003e\n\nThis is a project template for ML researchers developed at [Mila](https://www.mila.quebec). Our goal with this is to help you get started with a new research project.\n\nSee [this introduction to the project](https://mila-iqia.github.io/ResearchTemplate/intro) for a detailed description of the context and motivations behind this project.\n\n🚧 Please note: This is a work-in-progress and will get better over time! We want your feedback!🙏\n\n## Installation\n\nProjects created with this template use [uv](https://docs.astral.sh/uv/getting-started/installation/#installing-uv) to manage dependencies.\nFirst, follow the instructions [here](https://docs.astral.sh/uv/getting-started/installation/#installing-uv) to install `uv` on your machine.\n\nOnce you have `uv` installed locally, use this command to create a new project from this template:\n\n```bash\nuvx copier copy --trust gh:mila-iqia/ResearchTemplate new_project\n```\n\n[![asciicast](https://asciinema.org/a/708495.svg)](https://asciinema.org/a/708495)\n\nThis will ask you a few questions to help set things up.\nNavigate to the new directory, open up your favorite IDE, and voila! You're all setup! 🎊\n\nUse this command to see all available options:\n\n```bash\ncd new_project  # replace with your folder.\n. .venv/bin/activate\npython project/main.py --help\n```\n\nFor more detailed instructions, take a look at [this page](https://mila-iqia.github.io/ResearchTemplate/#setting-up-your-environment).\n\n## Overview\n\nThis project makes use of the following libraries:\n\n- [Hydra](https://hydra.cc/) is used to configure the project. It allows you to define configuration files and override them from the command line.\n- [PyTorch Lightning](https://lightning.ai/docs/pytorch/stable/) is used to as the training framework. It provides a high-level interface to organize ML research code.\n    - 🔥 Please note: You can also use [Jax](https://jax.readthedocs.io/en/latest/) with this repo, as is shown in the [Jax example](https://mila-iqia.github.io/ResearchTemplate/examples/jax_image_classification/) 🔥\n- [Weights \u0026 Biases](https://wandb.ai) is used to log metrics and visualize results.\n- [pytest](https://docs.pytest.org/en/stable/) is used for testing.\n\n## Who is this for? Why should you use this template?\n\nThis template comes with [some unique features that can *only* be found here (for now)!](https://mila-iqia.github.io/ResearchTemplate/features/)\n\n- [Torch and Jax support](https://mila-iqia.github.io/ResearchTemplate/features/jax/)\n- [Rich IDE support for Hydra config files](https://mila-iqia.github.io/ResearchTemplate/features/auto_schema/)\n- [Built-in automated tests (including reproducibility tests), including testing on SLURM clusters!](https://mila-iqia.github.io/ResearchTemplate/features/testing/)\n- And more! (see [this page](https://mila-iqia.github.io/ResearchTemplate/features/))\n\nTo make the best use of this template, you should ideally already have a good understanding of Python, some experience with PyTorch, and some basic experience with SLURM.\n\nSee [this page](https://mila-iqia.github.io/ResearchTemplate/resources/#other-project-templates) for a list of other templates to choose from if this isn't for you.\n\nPlease consider making an issue on this repo if you feel like this could be improved, or something is confusing to you. We very much need and appreciate your feedback! 😊\n\n## Usage\n\nTo see all available options:\n\n```bash\npython project/main.py --help\n```\n\nFor a detailed list of examples, see the [examples page](https://mila-iqia.github.io/ResearchTemplate/examples).\n\n\u003c!-- * `mkdocs new [dir-name]` - Create a new project.\n* `mkdocs serve` - Start the live-reloading docs server.\n* `mkdocs build` - Build the documentation site.\n* `mkdocs -h` - Print help message and exit. --\u003e\n\n## Project layout\n\n```\npyproject.toml   # Project metadata and dependencies\nproject/\n    main.py      # main entry-point\n    algorithms/  # learning algorithms\n    datamodules/ # datasets, processing and loading\n    networks/    # Neural networks used by algorithms\n    configs/     # configuration files\ndocs/            # documentation\nconftest.py      # Test fixtures and utilities\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmila-iqia%2Fresearchtemplate","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fmila-iqia%2Fresearchtemplate","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmila-iqia%2Fresearchtemplate/lists"}