You can run an LLM on Habrok with Ollama in a Jupyter environment by using the Ollama (Jupyter) Interactive App on the Web Portal.
To be able to use the app, you first need to set up a Python virtual environment. The version of Ollama installed on Habrok is ollama/0.6.0-GCCcore-12.3.0
, which means that the Python virtual environment needs to use a version of Python using the same GCCcore-12.3.0
toolchain, which is Python/3.11.3-GCCcore-12.3.0
. Other versions of Python might work as well, but toolchain compatibilities can sometimes be an issue.
module load Python/3.11.3-GCCcore-12.3.0 python3 -m venv $HOME/venvs/ollama
Once the virtual environment has been built, you need to install jupyter
and ollama
within the virtual environment; optionally, you can also install additional packages, such as openai
:
source $HOME/venvs/ollama/bin/activate pip install --upgrade pip pip install jupyter ollama openai
Finally, to make sure that the Jupyter Notebook is aware of your virtual environment, you need to create a Jupyter kernel:
python3 -m ipykernel install --user --name=ollama --display-name="Ollama"
Another important choice when running the app is where the Ollama models should be saved; there are two options, with advantages and drawbacks:
/scratch/$USER
since the models are quite large) where the models can be downloaded and saved for use in the future. This way, you only need to download a model once, but it will take quite a bit of time to save the model files to the shared filesystem. It might also be slower to use a model saved here.To use Ollama in the Jupyter app, you need first to open a new notebook in the Jupyter app, and choose the Ollama Jupyter kernel built when setting up the virtual environment. Here is a small example which first imports the necessary packages:
import os import ollama from openai import OpenAI
then downloads a model from Ollama:
ollama.pull("gemma3:12b")
and also lists all currently downloaded models:
for model in ollama.list().models: print(model.model)
It then creates a OpenAI API client:
client = OpenAI( base_url=f"http://{os.environ['OLLAMA_HOST']}/v1", api_key="ollama" )
and interacts with the LLM:
response = client.chat.completions.create( model="gemma3:12b", messages = [ { "role": "system", "content": "You are a friendly dog" }, { "role": "user", "content": "Would you like a bone?" } ] ) print(response.choices[0].message.content)
The model can, if desired, be deleted:
ollama.delete("gemma3:12b")
You can find more info on how to use the Ollama Python library on their GitHub page.