From d28d99366a3d07cbd8956baf7f60048d11687e7c Mon Sep 17 00:00:00 2001 From: John LaGrone Date: Tue, 18 Nov 2025 14:23:11 -0600 Subject: [PATCH 1/4] add script to build ollama container --- containers/ollama/build_container.sh | 62 ++++++++++++++++++++++++++++ 1 file changed, 62 insertions(+) create mode 100755 containers/ollama/build_container.sh diff --git a/containers/ollama/build_container.sh b/containers/ollama/build_container.sh new file mode 100755 index 00000000..d0b9d905 --- /dev/null +++ b/containers/ollama/build_container.sh @@ -0,0 +1,62 @@ +#!/bin/bash -e +# build singularity container for Ollama +# just pull docker image from https://hub.docker.com/r/ollama/ollama + +# TODO: MP should pull a CUDA enabled version instead? +# specify version +VERSION="0.12.11" +TAG=${VERSION} +IMAGE_NAME="ollama" +MODULE_FOLDER="testing/ollama" + +echo "Building tag: ${TAG}" + +# build the container +module purge +module load apptainer + +CONTAINER_NAME=${IMAGE_NAME}_${TAG}.sif +apptainer build --fakeroot ${CONTAINER_NAME} docker://ollama/${IMAGE_NAME}:${TAG} + +# move container to /hpc/{sys}/containers/ +CLUSTER=$(scontrol show config | grep ClusterName | grep -oP '= \K.+') +if [ "$CLUSTER" = "nvidia" ]; then + CLUSTER="mp" +fi +mkdir -p /hpc/${CLUSTER}/containers/ollama +mv ${CONTAINER_NAME} /hpc/${CLUSTER}/containers/ollama/${CONTAINER_NAME} + +# create a module file in ../../modules/ (in the git repo) +RUN_COMMAND="apptainer run " +if [ "$CLUSTER" = "mp" ]; then + RUN_COMMAND="apptainer run --nv " +fi + +mkdir -p ../../modules/${CLUSTER}/applications/${MODULE_FOLDER} +MODULE_FILE=../../modules/${CLUSTER}/applications/${MODULE_FOLDER}/${VERSION}.lua +( +sed 's/^ \{2\}//' > "$MODULE_FILE" << EOL + +help([[ +Name: Ollama +Version: ${TAG} +Website: https://ollama.com/ + +Ollama is an open-source tool that allows you to run large language models (LLMs) like Llama 3 and Mistral directly on your local machine + +]]) +whatis("Name: Ollama") +whatis("Version: ${IMAGE_NAME}:${TAG}") +whatis("Category: Ollama") +whatis("URL: https://hub.docker.com/r/ollama/${IMAGE_NAME}") +whatis("Description: Provides access to Ollama through a container built with Apptainer") +family("Ollama") + +always_load('apptainer') +local sif_file = '/hpc/${CLUSTER}/containers/ollama/${CONTAINER_NAME}' + +setenv('CONTAINER_IMAGE', sif_file) +append_path("PATH", "/hpc/m3/apps/ollama/helper_scripts") + +EOL +) From d4ef73f116a60073562946699b13cb9ea60f78d7 Mon Sep 17 00:00:00 2001 From: John LaGrone Date: Tue, 18 Nov 2025 14:26:15 -0600 Subject: [PATCH 2/4] add testing module --- .../applications/testing/ollama/0.12.11.lua | 22 +++++++++++++++++++ 1 file changed, 22 insertions(+) create mode 100644 modules/m3/applications/testing/ollama/0.12.11.lua diff --git a/modules/m3/applications/testing/ollama/0.12.11.lua b/modules/m3/applications/testing/ollama/0.12.11.lua new file mode 100644 index 00000000..39a7ec79 --- /dev/null +++ b/modules/m3/applications/testing/ollama/0.12.11.lua @@ -0,0 +1,22 @@ + +help([[ +Name: Ollama +Version: 0.12.11 +Website: https://ollama.com/ + +Ollama is an open-source tool that allows you to run large language models (LLMs) like Llama 3 and Mistral directly on your local machine + +]]) +whatis("Name: Ollama") +whatis("Version: ollama:0.12.11") +whatis("Category: Ollama") +whatis("URL: https://hub.docker.com/r/ollama/ollama") +whatis("Description: Provides access to Ollama through a container built with Apptainer") +family("Ollama") + +always_load('apptainer') +local sif_file = '/hpc/m3/containers/ollama/ollama_0.12.11.sif' + +setenv('CONTAINER_IMAGE', sif_file) +append_path("PATH", "/hpc/m3/apps/ollama/helper_scripts") + From a4868f82badbb9fc10c53bf2d0ce37f3d3346101 Mon Sep 17 00:00:00 2001 From: John LaGrone Date: Tue, 18 Nov 2025 14:53:28 -0600 Subject: [PATCH 3/4] use source instead of setting path --- containers/ollama/build_container.sh | 2 +- modules/m3/applications/testing/ollama/0.12.11.lua | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/containers/ollama/build_container.sh b/containers/ollama/build_container.sh index d0b9d905..481e38ad 100755 --- a/containers/ollama/build_container.sh +++ b/containers/ollama/build_container.sh @@ -56,7 +56,7 @@ always_load('apptainer') local sif_file = '/hpc/${CLUSTER}/containers/ollama/${CONTAINER_NAME}' setenv('CONTAINER_IMAGE', sif_file) -append_path("PATH", "/hpc/m3/apps/ollama/helper_scripts") +source_sh("bash", "/hpc/m3/apps/ollama/helper_scripts/ollama.sh") EOL ) diff --git a/modules/m3/applications/testing/ollama/0.12.11.lua b/modules/m3/applications/testing/ollama/0.12.11.lua index 39a7ec79..35412c91 100644 --- a/modules/m3/applications/testing/ollama/0.12.11.lua +++ b/modules/m3/applications/testing/ollama/0.12.11.lua @@ -18,5 +18,5 @@ always_load('apptainer') local sif_file = '/hpc/m3/containers/ollama/ollama_0.12.11.sif' setenv('CONTAINER_IMAGE', sif_file) -append_path("PATH", "/hpc/m3/apps/ollama/helper_scripts") +source_sh("bash", "/hpc/m3/apps/ollama/helper_scripts/ollama.sh") From e713094cc27040b5c24ae09bbe62f5909797051e Mon Sep 17 00:00:00 2001 From: John LaGrone Date: Tue, 18 Nov 2025 15:51:45 -0600 Subject: [PATCH 4/4] remove unused code --- containers/ollama/build_container.sh | 6 ------ 1 file changed, 6 deletions(-) diff --git a/containers/ollama/build_container.sh b/containers/ollama/build_container.sh index 481e38ad..3507827c 100755 --- a/containers/ollama/build_container.sh +++ b/containers/ollama/build_container.sh @@ -26,12 +26,6 @@ fi mkdir -p /hpc/${CLUSTER}/containers/ollama mv ${CONTAINER_NAME} /hpc/${CLUSTER}/containers/ollama/${CONTAINER_NAME} -# create a module file in ../../modules/ (in the git repo) -RUN_COMMAND="apptainer run " -if [ "$CLUSTER" = "mp" ]; then - RUN_COMMAND="apptainer run --nv " -fi - mkdir -p ../../modules/${CLUSTER}/applications/${MODULE_FOLDER} MODULE_FILE=../../modules/${CLUSTER}/applications/${MODULE_FOLDER}/${VERSION}.lua (