Περιγραφή¶
Ollama
is a lightweight, extensible framework for building and running language models on the local machine. It provides a simple API for creating, running, and managing models, as well as a library of pre-built models that can be easily used in a variety of applications.
Ollama serve with GPU support (Ampere
partition)¶
Το script υποβολής μίας εργασίας που χρησιμοποιεί το Ollama
θα έχει την ακόλουθη μορφή:
SLURM submission script
#!/bin/bash
#SBATCH --job-name=Ollama-case
#SBATCH --partition=ampere
#SBATCH --time=20:00
#SBATCH --nodes=1
#SBATCH --gres=gpu:1
#SBATCH --output=output.log
module load ollama
# Create a temp directory
export TMPDIR=$SCRATCH/ollama_tmp
mkdir -p $TMPDIR
# Start Ollama service
ollama serve &> serve_ollama_${SLURM_JOBID}.log &
# Wait until Ollama service has been started
sleep 20
# Run Ollama using llama2 model
time ollama run llama2 "How do you schedule a job with slurm?"
# Terminate Ollama service
killall ollama
Στο $HOME
μας στο login node, δημιουργούμε ένα νέο φάκελο όπου τοποθετούμε τα αρχεία εισόδου και το script υποβολής της εργασίας, έστω Ollama-case.sh
.
# mkdir Ollama-case
# cd Ollama-case
Η υποβολή της εργασίας γίνεται με την εντολή sbatch <filename.sh>
ως εξής:
# sbatch Ollama-case.sh
Παρακολουθούμε με την εντολή squeue
την εξέλιξη της εργασίας.
Eφόσον η εργασία έχει εκκινήσει μπορούμε να παρακολουθήσουμε την απάντηση του μοντέλου μέσω των αρχείων εξόδου. Π.χ.:
# tail -f output.log
Ask a language model from Aristotle login node¶
Μπορούμε να ξεκινήσουμε το Ollama
service σε ένα node της υπολογιστικής υποδομής και στην συνέχεια να υποβάλουμε τις ερωτήσεις μας από το login node.
Για την εκκίνηση του Ollama
μπορούμε να χρησιμοποιήσουμε το παρακάτω script:
Το script υποβολής μίας εργασίας που χρησιμοποιεί το Ollama
θα έχει την ακόλουθη μορφή:
SLURM submission script
#!/bin/bash
#SBATCH --job-name=Ollama-serve
#SBATCH --partition=ampere
#SBATCH --time=20:00
#SBATCH --nodes=1
#SBATCH --gres=gpu:1
#SBATCH --output=output.log
module load ollama
# Create a temp directory
export TMPDIR=$SCRATCH/ollama_tmp
mkdir -p $TMPDIR
# Set OLLAMA HOST
while :
do
OLLAMA_PORT="`shuf -i 11430-11450 -n 1`"
ss -lpna | grep -q ":$OLLAMA_PORT " || break
done
export OLLAMA_HOST=$(curl ip.me):$OLLAMA_PORT
echo "OLLAMA HOST: $OLLAMA_HOST"
# Start Ollama service
ollama serve | tee serve_ollama_${SLURM_JOBID}.log
Eφόσον η εργασία έχει εκκινήσει μπορούμε να υποβάλουμε ερωτήσεις στο μοντέλο που θα επιλέξουμε, ορίζοντας την μεταβλητή OLLAMA_HOST
ώστε να αντιστοιχεί στην ip και στο port του server στον οποίο έχει εκκινήσει το Ollama
. Για παράδειγμα:
[user@aristotle ]$ cat output.log
OLLAMA HOST: 155.207.96.50:11438
[user@aristotle ]$ export OLLAMA_HOST=155.207.96.50:11438
[user@aristotle ]$ ollama run llama2
>>> How do you schedule a job with slurm?
>>> Why is the sky blue?
[user@aristotle ]$ ollama run mistral
>>> Run a python script
Ollama serve on CPU only node¶
Για να ξεκινήσουμε το ollama
σε CPU node μπορούμε να χρησιμοποιήσουμε το παρακάτω script.
SLURM submission script
#!/bin/bash
#SBATCH --job-name=Ollama-cpu-serve
#SBATCH --partition=rome
#SBATCH --time=20:00
#SBATCH --nodes=1
#SBATCH --ntasks=1
#SBATCH --cpus-per-task=64
#SBATCH --extra-node-info=1:64
#SBATCH --output=output.log
module load ollama
# Create a temp directory
export TMPDIR=$SCRATCH/ollama_tmp
mkdir -p $TMPDIR
# Set OLLAMA HOST
while :
do
OLLAMA_PORT="`shuf -i 11430-11450 -n 1`"
ss -lpna | grep -q ":$OLLAMA_PORT " || break
done
export OLLAMA_HOST=$(curl ip.me):$OLLAMA_PORT
echo "OLLAMA HOST: $OLLAMA_HOST"
# Start Ollama service
ollama serve | tee serve_ollama_${SLURM_JOBID}.log
Για την καλύτερη απόδοση του ollama
, σε περίπτωση που δεν δεσμεύουμε ένα ολόκληρο node, προσθέτουμε την επιλογή --extra-node-info=1:${NTASKS}
Το συγκεκριμένο directive διασφαλίζει ότι η εργασία μας θα τρέχει σε ένα socket του επεξεργαστή, με σκοπό την πιο αποδοτική επικοινωνία των threads.
Install Ollama latest version locally¶
Για την εγκατάσταση της τελευταίας έκδοσης του Ollama
στο $ΗΟΜΕ
directory του λογαριασμού μας, μπορούμε να τρέξουμε τις παρακάτω εντολές:
# mkdir -p $HOME/ollama/bin
# curl -L https://ollama.com/download/ollama-linux-amd64 -o $HOME/ollama/bin/ollama
# chmod +x $HOME/ollama/bin/ollama
Για να χρησιμοποιήσουμε την τοπική εγκατάσταση του Ollama
, μπορούμε να αντικαταστήσουμε στα παραπάνω scripts υποβολής την εντολή module load ollama
με την εξής εντολή: export PATH=$PATH:$HOME/ollama/bin