Skip to content

About

Full GPU-accelerated AI development environment for OmniBioAI — built on NVIDIA PyTorch 25.10 with CUDA, includes R, MySQL, JupyterLab, Hugging Face Transformers, and Ollama. Designed for bioinformatics ML workflows requiring both deep learning (PyTorch/CUDA) and statistical genomics (R/Bioconductor) in a single reproducible container.

Topics

Resources

Stars

1 star

Watchers

0 watching

Forks

Repository files navigation

OmniBioAI Dev Environment

Full AI/Bioinformatics development environment for GPU/DGX machines. Built on NVIDIA PyTorch 25.10 with CUDA support.

Docker License GPU Required


What This Repository Is

This is an optional developer convenience environment — think of it as:

"A researcher's laptop in a container."

It is intended for:

  • OmniBioAI contributors and researchers
  • Exploratory AI/LLM prototyping
  • Single-cell and multi-omics experimentation
  • Notebook-driven development (Python + R)
  • GPU-accelerated model training and inference

What This Repository Is NOT

This is not part of the OmniBioAI production stack. It is not:

  • A Tool Execution Service (TES) runtime
  • A production or cloud deployment image
  • Used by OmniBioAI pipelines at runtime
Component Role
OmniBioAI Workbench Production platform
Tool Execution Service (TES) Stateless execution
Tool Runtime Images Minimal, contract-driven
This Repository Interactive development only

What's Inside

Category Tools
Deep Learning PyTorch 2.9 (GPU), TorchVision, TensorRT, Flash Attention, Transformer Engine
ML/Data Science Scikit-learn, XGBoost, LightGBM, Polars, Pandas, NumPy, SciPy
Bioinformatics GATK 4.5, Samtools, BCFTools, FastQC, SnpEff, Nextflow, BEDTools
Genomics/R R 4.x, Bioconductor, DESeq2, limma, edgeR, ComplexHeatmap, scran, scater
LLM/AI Transformers, SentenceTransformers, HuggingFace Hub, Accelerate, Safetensors, Ollama
Semantic search FAISS CPU indexing with CUDA-backed embedding generation
Visualization Matplotlib, Seaborn, Plotly, Bokeh, TensorBoard
Notebook JupyterLab 4.x (pre-configured, GPU-enabled)

Requirements

  • NVIDIA GPU (A100, H100, or DGX system recommended)
  • NVIDIA Container Toolkit installed on host
  • Docker with GPU support
  • 50GB+ free disk space for the image build; plan substantially more for CUDA layers, R/Bioconductor packages, model caches, and datasets

Quick Start

Option A — Pull from GHCR (recommended)

docker pull ghcr.io/omnibioai/omnibioai-dev-env:latest
bash run_ai_dev.sh

Option B — Build locally

git clone https://github.com/OmniBioAI/omnibioai-dev-docker
cd omnibioai-dev-docker
docker build -t ghcr.io/omnibioai/omnibioai-dev-env:latest .
bash run_ai_dev.sh

Running the Container

bash run_ai_dev.sh [OPTIONS]

Options:
  --jupyter    Start JupyterLab automatically
  --ollama     Start Ollama server automatically
  --build      Force rebuild image from Dockerfile
  --help       Show help

--build builds the image from the current directory and requires access to the NVIDIA base image and all build dependencies. Without it, the launcher uses a local image when available, otherwise pulls from GHCR and falls back to a local build if the pull fails.

This launches an interactive container with:

  • Full GPU access (--gpus all)
  • Shared memory for PyTorch DataLoader (--ipc=host)
  • HuggingFace cache mounted (~/.cache/huggingface)
  • Ollama models mounted (~/.ollama)
  • Current directory mounted as /workspace
  • JupyterLab on port 8888
  • Ollama server on port 11434

The launcher removes any existing container named omnibio_dev_foundry before starting a new one. The current directory is mounted at /workspace, so work saved there remains on the host. After ending a session, resume the same container with:

docker start -ai omnibio_dev_foundry

Security note

Jupyter is configured without a token or password for local convenience, and the launcher publishes its port on all host interfaces by default. Do not expose port 8888 directly to an untrusted network. Prefer a firewall or an SSH tunnel, or modify run_ai_dev.sh to bind the host side to 127.0.0.1 and configure Jupyter authentication for shared environments.

Start JupyterLab:

# Via flag (recommended)
bash run_ai_dev.sh --jupyter

# Or manually inside container
jupyter lab --ip=0.0.0.0 --port=8888 --allow-root --no-browser

Then open: http://localhost:8888

Start Ollama:

# Via flag
bash run_ai_dev.sh --ollama

# Or manually inside container
ollama serve &
ollama pull llama3
ollama run llama3 "Summarize the role of TP53 in cancer"

GPU Validation

Inside the container, verify CUDA and all tools:

# PyTorch GPU
python -c "import torch; print('CUDA:', torch.cuda.is_available()); print('GPU:', torch.cuda.get_device_name(0))"

# Bioinformatics tools
nextflow -version
gatk --version
samtools --version | head -1
fastqc --version
snpeff -version

# R + Bioconductor
R -e "library(DESeq2); packageVersion('DESeq2')"

If CUDA returns False, verify:

  • NVIDIA drivers are installed
  • Docker is configured with GPU support
  • nvidia-container-toolkit is available

DGX Spark semantic-search image

The validated local DGX Spark candidate uses the digest-pinned NVIDIA PyTorch 25.10 base (sha256:42263b2424fc237b34c4fc4a91c30d603c57eed36e37d31ff6d9a4f1f801edee) on ARM64/CUDA 13.0. It preserves NVIDIA's PyTorch, TorchVision, Flash Attention, Apex, TorchAO, Torch-TensorRT, and Transformer Engine builds. The requirements.dgx.txt file is a pip constraints file for those preinstalled packages; do not install it with pip install -r.

Build the candidate without replacing the existing dgx-gpu-v1 tag:

docker build \
  --cache-from omnibioai-dev-docker:dgx-gpu-v1 \
  -t omnibioai-dev-docker:dgx-gpu-v2 .

Pinned semantic-search dependencies are:

  • Transformers 4.56.2 (4.57.x is incompatible with NVIDIA's bundled TorchAO)
  • SentenceTransformers 5.1.2
  • FAISS CPU 1.12.0 (native CPython 3.12 AArch64 wheel)
  • NumPy 2.1.0, Accelerate 1.11.0, and Safetensors 0.6.2

Run the complete dependency, FAISS, GPU, CUDA, and NVML smoke test:

docker run --rm --gpus all --ipc=host \
  --ulimit memlock=-1 --ulimit stack=67108864 \
  -v "$HOME/.cache/huggingface:/root/.cache/huggingface:ro" \
  omnibioai-dev-docker:dgx-gpu-v2 \
  omnibioai-dgx-smoke-test --offline-models

For a dependency/FAISS-only check that does not require a GPU or model cache:

docker run --rm omnibioai-dev-docker:dgx-gpu-v2 \
  omnibioai-dgx-smoke-test --skip-gpu --skip-models

The smoke test creates normalized synthetic IndexFlatIP indexes at 1024, 2560, and 4096 dimensions, verifies self-neighbor identity, and verifies index serialization/reload. FAISS is CPU-only; embedding inference remains CUDA enabled through NVIDIA PyTorch.

Embedding-model compatibility

Model metadata is pinned to immutable Hugging Face revisions by the smoke test:

Model Dimension Query instruction and normalization
mixedbread-ai/mxbai-embed-large-v1 1024 Prefix retrieval queries with Represent this sentence for searching relevant passages: ; encode documents without it; use normalize_embeddings=True.
Qwen/Qwen3-Embedding-4B 2560 Use Instruct: {task}\nQuery:{query} for queries, no instruction for documents, left-padding, last-token pooling, and L2 normalization.
Qwen/Qwen3-Embedding-8B 4096 Same Qwen3 instruction, pooling, padding, and normalization behavior.

The automated model check loads pinned configs and tokenizers and validates the SentenceTransformers module layout without loading model weights. Full model inference is intentionally not part of the image build: the 4B/8B weights are large and must not be downloaded implicitly. Use the pinned revisions in scripts/dgx_smoke_test.py when explicitly running real-model inference.

NVML and Ollama

Ollama is installed from a versioned, SHA-256-verified ARM64 release archive. Do not restore the generic Ollama installer in this image: during a Docker build it can detect the host GPU and install a driver inside the container. Such a driver shadows the host libraries injected by NVIDIA Container Toolkit and can produce Driver/library version mismatch while CUDA compute still works.

The NVIDIA base currently includes the deprecated pynvml compatibility distribution because nvidia-resiliency-ext requires it. nvidia-ml-py is also installed and provides the actual bindings. The compatibility package is therefore retained rather than removed merely to suppress its deprecation warning.

Rollback is non-destructive: stop using dgx-gpu-v2 and launch the preserved omnibioai-dev-docker:dgx-gpu-v1 tag. Do not retag or overwrite v1.


HuggingFace Authentication

# Inside the container (recommended)
huggingface-cli login

# Or via environment variable
export HUGGINGFACE_TOKEN=hf_xxxxxxxxxxxxxxxxxxxxx

The launcher does not currently forward a host-side HUGGINGFACE_TOKEN environment variable automatically. Set it inside the container or update the launcher to pass it explicitly with Docker's -e option.


Example — GPU-accelerated single-cell analysis

import torch
import scanpy as sc

print(f"Using GPU: {torch.cuda.get_device_name(0)}")

adata = sc.read_h5ad("/workspace/data/sample.h5ad")
sc.pp.normalize_total(adata)
sc.pp.log1p(adata)
sc.pp.highly_variable_genes(adata)
sc.tl.pca(adata)
sc.pl.pca_variance_ratio(adata)

Typical Use Cases

  • Prototyping new OmniBioAI plugins
  • Exploratory single-cell analysis (Scanpy/Seurat workflows)
  • LLM prompt and RAG experimentation
  • Model benchmarking and training
  • Notebook-based research
  • Rapid testing before productionization

Repository Structure

File Description
Dockerfile Main image definition
requirements.txt Portable Python dependencies
requirements.dgx.txt DGX-specific packages (pre-installed in base, docs only)
run_ai_dev.sh Container launch script
tests/ Validation tests
pyproject.toml Project metadata
.gitignore Prevents secrets/caches from being committed
.dockerignore Prevents data/models from being baked into image

Part of the OmniBioAI Ecosystem

This dev environment is designed to work alongside the OmniBioAI platform (checked out locally as omnibioai/) — a unified AI-powered bioinformatics workbench supporting:

  • 231 enabled bioinformatics plugins (platform snapshot; this count changes as plugins are added or retired)
  • RNA-seq, single-cell, spatial omics, variant calling
  • TES workflow execution (Slurm, K8s, AWS Batch, Azure)
  • RAG-powered literature search (PubMed + FAISS)
  • ML model registry
  • Multi-cloud support (AWS, Azure, GCP)

License

Apache License 2.0. This repository currently does not include a LICENSE file; add the license file before distributing the repository as a licensed release.


Citation

If you use this environment in your research, please cite:

OmniBioAI Dev Environment (2025)
Manish Kumar
https://github.com/OmniBioAI/omnibioai-dev-docker

About

Full GPU-accelerated AI development environment for OmniBioAI — built on NVIDIA PyTorch 25.10 with CUDA, includes R, MySQL, JupyterLab, Hugging Face Transformers, and Ollama. Designed for bioinformatics ML workflows requiring both deep learning (PyTorch/CUDA) and statistical genomics (R/Bioconductor) in a single reproducible container.

Topics

Resources

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages