All Projects → kaust-vislab → pytorch-gpu-data-science-project

kaust-vislab / pytorch-gpu-data-science-project

Licence: BSD-3-Clause license
Template repository for a Python 3-based (data) science project with GPU acceleration using the PyTorch ecosystem.

Programming Languages

python
139335 projects - #7 most used programming language
shell
77523 projects
Dockerfile
14818 projects

Projects that are alternatives of or similar to pytorch-gpu-data-science-project

python-data-science-project
Template repository for a Python 3-based (data) science project
Stars: ✭ 54 (+237.5%)
Mutual labels:  scientific-computing, template-project, scientific-workflows, scientific-research
Hedgehog Lab
Run, compile and execute JavaScript for Scientific Computing and Data Visualization TOTALLY TOTALLY TOTALLY in your BROWSER! An open source scientific computing environment for JavaScript TOTALLY in your browser, matrix operations with GPU acceleration, TeX support, data visualization and symbolic computation.
Stars: ✭ 1,797 (+11131.25%)
Mutual labels:  scientific-computing, gpu-acceleration
spinmob
Rapid and flexible acquisition, analysis, fitting, and plotting in Python. Designed for scientific laboratories.
Stars: ✭ 34 (+112.5%)
Mutual labels:  scientific-computing, scientific-workflows
PyRates
Open-source, graph-based Python code generator and analysis toolbox for dynamical systems (pre-implemented and custom models). Most pre-implemented models belong to the family of neural population models.
Stars: ✭ 33 (+106.25%)
Mutual labels:  scientific-computing, scientific-research
steep
⤴️ Steep Workflow Management System – Run scientific workflows in the Cloud
Stars: ✭ 30 (+87.5%)
Mutual labels:  scientific-computing, scientific-workflows
aiogram-bot-template
Template for creating scalable bots with aiogram
Stars: ✭ 175 (+993.75%)
Mutual labels:  template-project
nelson
Nelson numerical interpreter
Stars: ✭ 42 (+162.5%)
Mutual labels:  scientific-computing
gotemplate
Minimal repository template for well constructed Go libraries.
Stars: ✭ 33 (+106.25%)
Mutual labels:  template-project
gossa
The Go/Go+ Interpreter
Stars: ✭ 53 (+231.25%)
Mutual labels:  scientific-computing
jtk
The Mines Java Toolkit
Stars: ✭ 53 (+231.25%)
Mutual labels:  scientific-computing
ocaml-interval
An interval library for OCaml
Stars: ✭ 14 (-12.5%)
Mutual labels:  scientific-computing
environments
Determined AI public environments
Stars: ✭ 22 (+37.5%)
Mutual labels:  gpu-acceleration
pechkin
📮 «Печкин» помогает быстро начать вёрстку писем
Stars: ✭ 18 (+12.5%)
Mutual labels:  template-project
payton
Payton! Kickstart any 3D OpenGL + GTK Ideas in a few seconds!
Stars: ✭ 45 (+181.25%)
Mutual labels:  scientific-computing
numericalgo
numericalgo is a set of numerical methods implemented in Golang.
Stars: ✭ 29 (+81.25%)
Mutual labels:  scientific-computing
dpnp
NumPy drop-in replacement for Intel(R) XPUs
Stars: ✭ 42 (+162.5%)
Mutual labels:  gpu-acceleration
php-base-project
A Composer ready package to start a new PHP 7 project
Stars: ✭ 17 (+6.25%)
Mutual labels:  template-project
Scripts
🔬🍸 Home of the ImageJ BAR: A collection of Broadly Applicable Routines for ImageJ
Stars: ✭ 18 (+12.5%)
Mutual labels:  scientific-workflows
DjangoStarter
基于Django定制的快速Web开发模板,功能包括:Docker-Compose部署,缓存,业务代码生成器,接口限流,DjangoAdmin验证码,登录次数尝试,屏蔽了RestFramework默认的API主页等
Stars: ✭ 28 (+75%)
Mutual labels:  template-project
MvvmCross-Dreams
Xamarin MvvmCross DREAMS is an opinionated take on how to make an MvvmCross app.
Stars: ✭ 30 (+87.5%)
Mutual labels:  template-project

pytorch-gpu-data-science-project

Repository containing scaffolding for a Python 3-based data science project with GPU acceleration using the PyTorch ecosystem.

Creating a new project from this template

Simply follow the instructions to create a new project repository from this template.

Project organization

Project organization is based on ideas from Good Enough Practices for Scientific Computing.

  1. Put each project in its own directory, which is named after the project.
  2. Put external scripts or compiled programs in the bin directory.
  3. Put raw data and metadata in a data directory.
  4. Put text documents associated with the project in the doc directory.
  5. Put all Docker related files in the docker directory.
  6. Install the Conda environment into an env directory.
  7. Put all notebooks in the notebooks directory.
  8. Put files generated during cleanup and analysis in a results directory.
  9. Put project source code in the src directory.
  10. Name all files to reflect their content or function.

Building the Conda environment

After adding any necessary dependencies that should be downloaded via conda to the environment.yml file and any dependencies that should be downloaded via pip to the requirements.txt file you create the Conda environment in a sub-directory ./envof your project directory by running the following commands.

export ENV_PREFIX=$PWD/env
mamba env create --prefix $ENV_PREFIX --file environment.yml --force

Once the new environment has been created you can activate the environment with the following command.

conda activate $ENV_PREFIX

Note that the ENV_PREFIX directory is not under version control as it can always be re-created as necessary.

For your convenience these commands have been combined in a shell script ./bin/create-conda-env.sh. Running the shell script will create the Conda environment, activate the Conda environment, and build JupyterLab with any additional extensions. The script should be run from the project root directory as follows.

./bin/create-conda-env.sh

Ibex

The most efficient way to build Conda environments on Ibex is to launch the environment creation script as a job on the debug partition via Slurm. For your convenience a Slurm job script ./bin/create-conda-env.sbatch is included. The script should be run from the project root directory as follows.

sbatch ./bin/create-conda-env.sbatch

Listing the full contents of the Conda environment

The list of explicit dependencies for the project are listed in the environment.yml file. To see the full lost of packages installed into the environment run the following command.

conda list --prefix $ENV_PREFIX

Updating the Conda environment

If you add (remove) dependencies to (from) the environment.yml file or the requirements.txt file after the environment has already been created, then you can re-create the environment with the following command.

$ mamba env create --prefix $ENV_PREFIX --file environment.yml --force

Installing the NVIDIA CUDA Compiler (NVCC) (Optional)

Installing the NVIDIA CUDA Toolkit manually is only required if your project needs to use the nvcc compiler. Note that even if you have not written any custom CUDA code that needs to be compiled with nvcc, if your project uses packages that include custom CUDA extensions for PyTorch then you will need nvcc installed in order to build these packages.

If you don't need nvcc, then you can skip this section as conda will install a cudatoolkit package which includes all the necessary runtime CUDA dependencies (but not the nvcc compiler).

Workstation

You will need to have the appropriate version of the NVIDIA CUDA Toolkit installed on your workstation. If using the most recent versionf of PyTorch, then you should install NVIDIA CUDA Toolkit 11.1 (documentation).

After installing the appropriate version of the NVIDIA CUDA Toolkit you will need to set the following environment variables.

$ export CUDA_HOME=/usr/local/cuda-11.1
$ export PATH=$CUDA_HOME/bin:$PATH
$ export LD_LIBRARY_PATH=$CUDA_HOME/lib64:$LD_LIBRARY_PATH

Ibex

Ibex users do not neet to install NVIDIA CUDA Toolkit as the relevant versions have already been made available on Ibex by the Ibex Systems team. Users simply need to load the appropriate version using the module tool.

$ module load cuda/11.1.1

Using Docker

In order to build Docker images for your project and run containers with GPU acceleration you will need to install Docker, Docker Compose and the NVIDIA Docker runtime.

Detailed instructions for using Docker to build and image and launch containers can be found in the docker/README.md.

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].