Create your account at the CINECA UserDB portal: https://userdb.hpc.cineca.it/
Once you have set up your UserDB profile and obtained your CINECA account name, follow the steps below.
brew install stepIf Homebrew is not yet installed, run the following first:
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
step ca bootstrap \
--ca-url=https://sshproxy.hpc.cineca.it \
--fingerprint 2ae1543202304d3f434bdc1a2c92eff2cd2b02110206ef06317e70c1c1735ecdReplace your.name@email.com with the email you used when registering on UserDB:
step ssh certificate your.name@email.com --provisioner cineca-hpc key_filenameAdd the following to ~/.ssh/config (create it if it doesn't exist via nano ~/.ssh/config):
Host leonardo
HostName login07-ext.leonardo.cineca.it
User your_cineca_username
IdentityFile /Users/your_mac_username/.ssh/key_filename
Set correct permissions:
chmod 600 ~/.ssh/configYou can now connect simply with:
ssh leonardomodule purge
module load python/3.11.7Since the cluster does not have uv available by default and PyPI access is restricted outside a venv, first create a temporary environment to install uv:
python -m venv elliot-env
source elliot-env/bin/activate
pip install uvCopy the uv binary to ~/.local/bin so it persists across all environments:
mkdir -p ~/.local/bin
cp $HOME/elliot-env/bin/uv ~/.local/bin/uv
echo 'export PATH="$HOME/.local/bin:$PATH"' >> ~/.bashrc
source ~/.bashrcVerify:
uv --versionThe project requires Python 3.12, which is not available as a cluster module. uv can fetch it directly:
uv python install 3.12uv venv -p 3.12 elliot-venv
source elliot-venv/bin/activategit clone https://github.com/elliot-project/elliot-cli.gituv pip install -e ./elliot-cliCompute nodes have no internet access, so all models and datasets must be pre-downloaded. Set HF_HOME to point to a storage area large enough to hold your models and datasets.
Warning:
$HOMEon Leonardo has a quota of only 50 GB — far too small for most LLMs and multimodal datasets. Do not use$HOMEas your HF cache directory.
Leonardo provides several larger storage areas (full details):
| Area | Quota | Purge policy | Notes |
|---|---|---|---|
$WORK |
1 TB | 6 months post-project | Persistent, parallel I/O, recommended |
$FAST |
1 TB | 6 months post-project | Faster I/O than $WORK, no extension option |
$SCRATCH |
20 TB | Files purged after 40 days of inactivity | Temporary only |
Recommended: use $WORK for persistent caches (models you reuse across runs):
mkdir -p $WORK/hf_cache
export HF_HOME="$WORK/hf_cache"
echo 'export HF_HOME="$WORK/hf_cache"' >> ~/.bashrc
source ~/.bashrcIf you need more space for a single campaign and don't need the cache long-term, $SCRATCH (up to 20 TB) is an option — but files are automatically deleted after 40 days of inactivity and must not be kept alive artificially with touch:
mkdir -p $SCRATCH/hf_cache
export HF_HOME="$SCRATCH/hf_cache"# Run evaluations using a task group (recommended)
oellm schedule-eval \
--models "microsoft/DialoGPT-medium,EleutherAI/pythia-160m" \
--task-groups "open-sci-0.01"
# Or specify individual tasks
oellm schedule-eval \
--models "EleutherAI/pythia-160m" \
--tasks "hellaswag,mmlu" \
--n-shot 5Full instructions are also available here: https://iffmd.fz-juelich.de/e-hu5RBHRXG6DTgD9NVjig#Leonardo-Access-and-Usage-LAION-Open-Psi-open-sci-Ontocord-AI-openEuroLLM