Evo 2 (7B) — User Guide
Where is it?
The Apptainer container image is stored on the shared filesystem:
Container: /mnt/dv/wid/projects1/WID-Software/rocky8/apptainer_images/evo2.sif
Setup
Add the following to your ~/.bashrc (then run source ~/.bashrc):
export EVO2_SIF=/mnt/dv/wid/projects1/WID-Software/rocky8/apptainer_images/evo2.sif
export EVO2_MODELS=$HOME/.cache/huggingface
mkdir -p $EVO2_MODELS
Note: The first time you run Evo 2, it will download model weights (~14GB) into $EVO2_MODELS. If your home directory has a tight quota, point EVO2_MODELS to a scratch or project directory instead.
Quick Start
1. Test that it works
This runs a short generation test to confirm everything is set up:
apptainer exec --nv \
--bind $EVO2_MODELS:/root/.cache/huggingface \
$EVO2_SIF \
python3 -m evo2.test.test_evo2_generation --model_name evo2_7b
You should see generated DNA sequence output. If you get errors, see the Troubleshooting section below.
2. Interactive shell
This drops you into a shell inside the container where you can run Python interactively:
apptainer shell --nv \
--bind $EVO2_MODELS:/root/.cache/huggingface \
--bind $PWD:/work \
$EVO2_SIF
Once inside (you'll see an Apptainer> prompt), start Python:
Apptainer> cd /work
Apptainer> python3
from evo2 import Evo2
model = Evo2('evo2_7b')
output = model.generate(prompt_seqs=["ACGT"], n_tokens=100, temperature=1.0, top_k=4)
print(output.sequences[0])
Type exit to leave Python, and exit again to leave the container.
3. Run your own script
If you have a Python script called my_analysis.py in your current directory:
apptainer exec --nv \
--bind $EVO2_MODELS:/root/.cache/huggingface \
--bind $PWD:/work \
--pwd /work \
$EVO2_SIF \
python3 my_analysis.py
4. Select a specific GPU
To restrict the container to a single GPU (e.g. GPU 1), set CUDA_VISIBLE_DEVICES before launching:
CUDA_VISIBLE_DEVICES=1 apptainer exec --nv \
--bind $EVO2_MODELS:/root/.cache/huggingface \
--bind $PWD:/work \
--pwd /work \
$EVO2_SIF \
python3 my_analysis.py
Understanding the Command
Here's what each piece means:
apptainer exec # run a command inside the container
--nv # enable GPU access
--bind $EVO2_MODELS:/root/.cache/huggingface # make model weights visible inside the container
--bind $PWD:/work # make your current directory visible as /work
--pwd /work # start in /work inside the container
$EVO2_SIF # the container file
python3 my_script.py # the command to run
Key concept — bind mounts: The container can't see your files by default. --bind /outside/path:/inside/path makes a directory on the host visible inside the container. You can add multiple --bind flags for different directories
Troubleshooting
| Problem | Solution |
|---|---|
AssertionError: libcuda.so cannot found! |
Make sure you're using --nv and running on a node with a GPU. |
No space left on device |
Apptainer uses /tmp during runs. Set export APPTAINER_TMPDIR=/scratch/$USER/tmp to use a larger directory. |
| Permission denied on model weights | Check that your $EVO2_MODELS directory exists and is writable: ls -la $EVO2_MODELS |
| Script can't find your input files | Add another --bind for the directory containing your data. |
CUDA out of memory |
The 7B model needs ~16GB GPU memory. Request a GPU with enough VRAM. |