Self-Hosting AI: Στήσιμο Odysseus και Ollama (Nvidia GPU passthrough)

Δημιουργήστε το δικό σας ιδιωτικό AI workspace. Αναλυτικός οδηγός εγκατάστασης για Odysseus και Ollama σε Ubuntu με υποστήριξη NVIDIA GPU για μέγιστη απόδοση

  1. Εισαγωγή: Η Ανάγκη για Ιδιωτικότητα στην Εποχή της Τεχνητής Νοημοσύνης
  2. 1. Επιλέγοντας Native Docker για Μέγιστη Απόδοση
  3. 2. Χρήση της κάρτας γραφικών Nvidia: Εγκατάσταση του NVIDIA Container Toolkit
  4. 3. Εγκατάσταση του Ollama: Η «Μηχανή» Πίσω από το AI
  5. 4. Εγκατάσταση του Odysseus: Το Προσωπικό μας AI Workspace
  6. 5. Ρύθμιση Δικτύου: Ορισμός Στατικής IP (Static IP)
  7. 6. Εκκίνηση υποδομής Odysseus/Ollama και Πρώτη Πρόσβαση
  8. 7. Επόμενα Βήματα: Το Odysseus Cookbook
Διαφημίσεις

Εισαγωγή: Η Ανάγκη για Ιδιωτικότητα στην Εποχή της Τεχνητής Νοημοσύνης

Στην εποχή όπου τα εταιρικά και προσωπικά δεδομένα αποτελούν το πολυτιμότερο «νόμισμα», η συνεχής εξάρτηση από cloud υπηρεσίες τεχνητής νοημοσύνης δημιουργεί σοβαρές προκλήσεις ασφαλείας.

Πώς μπορείτε να αξιοποιήσετε την παραγωγικότητα των σύγχρονων Μεγάλων Γλωσσικών Μοντέλων (LLMs) χωρίς να μοιράζεστε τα δεδομένα σας με τρίτους; Η λύση είναι η τοπική φιλοξενία (self-hosting – Δείτε τα προηγούμενα άρθρα μας).

ερώτηση σχετικά με το π στο τοπικό LLM Krikri στα ελληνικά

Σε αυτόν τον οδηγό εγκατάστασης για το Odysseus και το Ollama (με υποστήριξη GPU), θα δημιουργήσουμε έναν ιδιωτικό-προσωπικό, υψηλής απόδοσης χώρο εργασίας – την AI- Agent υποδομή μας:

  • σε Ubuntu PC
  • που τρέχει AMD Ryzen 9 επεξεργαστή,
  • έχει 32GB RAM
  • και Nvidia RTX3060 με εγκατεστημένους του επίσημους drivers της Nvidia.
  • Θα εγκαταστήσουμε το Ollama, το οποίο θα λειτουργεί ως η μηχανή εκτέλεσης των μοντέλων,
  • και το Odysseus—μια ανοιχτού κώδικα διεπαφή (Web UI) που μας παρέχει ένα ολοκληρωμένο περιβάλλον εργασίας χρησιμοποιόντας το Docker (για το οποίο έχουμε εκτενή μαθήματα).
  • Θα είναι προσβάσιμο μόνο στο τοπικό δίκτυο του σπιτιού μας ή του γραφείου μας απο όλες τις συσκευές μας. (Φυσικά αν θέλετε να έχετε πρόσβαση και εκτός των χώρων αυτό, προτείνουμε χρήση ZeroTier)

Το Odysseus μετατρέπει τα μοντέλα του Ollama αλλά και αυτά που μπορεί κάποιοι να πληρώνετε (Claude, ChatGPT, Gemini κλπ μεσω των API τους), σε έναν ολοκληρωμένο τοπικό χώρο εργασίας, προσφέροντας :

  • Συνομιλία (Chat) — συνομιλήστε με οποιοδήποτε τοπικό μοντέλο ή API. Η προσθήκη τους είναι εξαιρετικά απλή.
  • Πράκτορας (Agent) — δώστε του εργαλεία και αφήστε τον να εκτελέσει ολόκληρη την εργασία μόνος του.
  • Cookbook — Σαρώνει το hardware σας, προτείνει μοντέλα, κάνετε κλικ για λήψη και εκτέλεση… πανεύκολο!
  • Εις βάθος Έρευνα (Deep Research) — εκτελέσεις πολλαπλών βημάτων που συλλέγουν, διαβάζουν και συνθέτουν πηγές σε μια ωραία οπτική αναφορά.
  • Σύγκριση (Compare) — ένα διασκεδαστικό εργαλείο για να συγκρίνετε μοντέλα δίπλα-δίπλα. Δοκιμάστε εντελώς «τυφλά», χωρίς προκαταλήψεις! πολλαπλά μοντέλα (multi-model)
  • Έγγραφα (Documents) — ΕΣΕΙΣ γράφετε το κείμενο, η τεχνητή νοημοσύνη είναι εκεί για να σας βοηθήσει, όχι το αντίστροφο.
  • Μνήμη / Δεξιότητες (Memory / Skills) — Μόνιμη μνήμη και δεξιότητες, ο πράκτοράς σας εξελίσσεται με την πάροδο του χρόνου καθώς κατανοεί καλύτερα εσάς και τις εργασίες σας!
  • Email — Εισερχόμενα IMAP/SMTP με ενσωματωμένη διαλογή (triage) μέσω AI: υπενθυμίσεις επείγοντος, αυτόματη ετικέτα (auto-tag), αυτόματη περίληψη, πρόχειρα αυτόματων απαντήσεων, αυτόματο spam.
  • Σημειώσεις & Εργασίες (Notes & Tasks) — Γρήγορες σημειώσεις με υπενθυμίσεις, λίστα υποχρεώσεων (todo list) και προγραμματισμένες εργασίες στις οποίες μπορεί να δράσει ο πράκτορας.
  • Ημερολόγιο (Calendar) — Τοπικό ημερολόγιο με συγχρονισμό CalDAV σε Radicale / Nextcloud / Apple / Fastmail.
  • Λειτουργεί σε κινητά — φαίνεται και τρέχει εξαιρετικά στο τηλέφωνό σας, όχι μόνο σε υπολογιστή desktop.

Όλα αυτά φυσικά ΠΑΡΑΜΕΝΟΥΝ στον υπολογιστή που τρέχει αυτή την υποδομή !

1. Επιλέγοντας Native Docker για Μέγιστη Απόδοση

Πώς να χρησιμοποιήσετε το Docker

Αρκετοί αρχάριοι χρήστες, έχουν αρχίσει και χρησιμοποιούν το Docker Desktop που είναι ένα γραφικό περιβάλλον και κάνει πολύ εύχρηστη την διαχείρηση τον docker container.

Για την επιτάχυνση GPU σε περιβάλλον Linux, η χρήση του Docker Desktop συχνά εισάγει περιττό virtualization overhead και πολυπλοκότητα. Το native Docker τρέχει απευθείας στον πυρήνα του συστήματος, εξαλείφοντας τα σημεία συμφόρησης (bottlenecks) και επιτρέποντας την άμεση διοχέτευση (passthrough) των πόρων της NVIDIA GPU στα containers.

Εγκατάσταση του Docker Engine:

Ακολουθούμε τον επίσημο οδηγό εγκατάστασης του Docker engine απο την τεκμηρίωση η οποία μας δίνει τις παρακάτω εντολές:

# Προσθήκη του επίσημου GPG key και του αποθετηρίου του Docker
sudo apt update
sudo apt install -y ca-certificates curl
sudo install -m 0755 -d /etc/apt/keyrings
sudo curl -fsSL https://download.docker.com/linux/ubuntu/gpg -o /etc/apt/keyrings/docker.asc
sudo chmod a+r /etc/apt/keyrings/docker.asc

echo "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.asc] https://download.docker.com/linux/ubuntu $(. /etc/os-release && echo "$VERSION_CODENAME") stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null

# Εγκατάσταση του Docker Engine
sudo apt update
sudo apt install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin

# Εκκίνηση και ενεργοποίηση της υπηρεσίας
sudo systemctl enable --now docker
sudo usermod -aG docker $USER

2. Χρήση της κάρτας γραφικών Nvidia: Εγκατάσταση του NVIDIA Container Toolkit

NVIDIA Container Toolkit

Για να μπορέσει το Docker να δεσμεύσει την VRAM της Nvidia κάρτας γραφικών σας, απαιτείται το NVIDIA Container Toolkit. Αυτό το λογισμικό λειτουργεί ως η «γέφυρα» επικοινωνίας μεταξύ του container runtime και των drivers της NVIDIA.

Εγκατάσταση & Παραμετροποίηση:

# Εγκατάσταση του toolkit
curl -fsSL https://nvidia.github.io/libnvidia-container/gpgkey | sudo gpg --batch --yes --dearmor -o /usr/share/keyrings/nvidia-container-toolkit-keyring.gpg

curl -s -L https://nvidia.github.io/libnvidia-container/stable/deb/nvidia-container-toolkit.list | sed 's#deb https://#deb [signed-by=/usr/share/keyrings/nvidia-container-toolkit-keyring.gpg] https://#g' | sudo tee /etc/apt/sources.list.d/nvidia-container-toolkit.list

sudo apt-get update

sudo apt-get install -y nvidia-container-toolkit nvtop

# Παραμετροποίηση του Docker runtime
sudo nvidia-ctk runtime configure --runtime=docker
sudo systemctl restart docker

# Επαλήθευση του GPU passthrough (επιβεβαιώστε ότι βλέπετε τα στατιστικά της κάρτας σας)
sudo docker run --rm --gpus all nvidia/cuda:12.4.1-base-ubuntu22.04 nvidia-smi

3. Εγκατάσταση του Ollama: Η «Μηχανή» Πίσω από το AI

εγκατάσταση Ollama για χρήση της NVIDIA GPU

Για να ελαχιστοποιήσουμε τις καθυστερήσεις στην επεξεργασία των tokens, εγκαθιστούμε το Ollama απευθείας στο host σύστημα (natively) και όχι μέσα σε container. Με αυτόν τον τρόπο, το Ollama έχει άμεση, native πρόσβαση στην GPU.

Αν και το ίδιο το «computing» overhead από το NVIDIA container είναι πρακτικά αμελητέο (συνήθως κάτω από 1-2%), το network overhead είναι μετρήσιμο. Το Docker δημιουργεί ένα δικό του εικονικό δίκτυο. Όταν το Odysseus στέλνει εκατοντάδες αιτήματα (API calls) ανά δευτερόλεπτο για να παράγει tokens, η δρομολόγηση αυτών των αιτημάτων μέσω του Docker Network Bridge (ειδικά σε local setups) μπορεί να εισάγει μικρο-καθυστερήσεις σε σχέση με την άμεση κλήση στο localhost (ή στο 0.0.0.0 του host).

Από προεπιλογή, το Ollama εγκαθίσταται «άδειο», χωρίς κανένα μοντέλο. Για να είναι το σύστημά μας έτοιμο για χρήση (plug-and-play) μόλις ανοίξουμε το Odysseus, θα κατεβάσουμε προκαταβολικά το Llama 3.1 (8B) της Meta. Είναι ένα ελαφρύ, ταχύτατο και εξαιρετικά ικανό μοντέλο που αποτελεί την ιδανική αφετηρία δοκιμών.

Επιπλέον, πρέπει να ρυθμίσουμε την υπηρεσία να δέχεται συνδέσεις από το τοπικό δίκτυο (LAN), ώστε το Odysseus (που θα τρέχει σε Docker) να μπορεί να επικοινωνήσει μαζί του και μέσω αυτού οι άλλες συσκευές μας.

Εγκατάσταση Ollama & Ρύθμιση Δικτύου:

# Εγκατάσταση του Ollama
curl -fsSL https://ollama.com/install.sh | sh

# Λήψη ενός βασικού μοντέλου για άμεση χρήση (περίπου 5GB) οπότε θα χρειαστεί μερικά λεπτά και ανάλογα την ταχύτητα του internet
ollama pull llama3.2

# Ενεργοποίηση πρόσβασης από το LAN
sudo mkdir -p /etc/systemd/system/ollama.service.d

echo '[Service] Environment="OLLAMA_HOST=0.0.0.0"' | sudo tee /etc/systemd/system/ollama.service.d/override.conf

sudo systemctl daemon-reload
sudo systemctl restart ollama

4. Εγκατάσταση του Odysseus: Το Προσωπικό μας AI Workspace

Odysseus local LLM workspace

Έχοντας ρυθμίσει την υποδομή, προχωράμε στην παραμετροποίηση του Odysseus.

Το μυστικό εδώ είναι η σωστή διαμόρφωση του αρχείου .env ώστε να συνδεθεί με το Ollama και να ενεργοποιηθεί το GPU Compose Overlay.

Προετοιμασία Περιβάλλοντος:

# Αρχικοποίηση του .env αρχείου
cp .env.example .env

# Ενεργοποίηση πρόσβασης στο web UI μέσω LAN
sed -i 's/# APP_BIND=127.0.0.1/APP_BIND=0.0.0.0/' .env

# Σύνδεση του UI με το Ollama backend
sed -i 's|# OLLAMA_BASE_URL=http://host.docker.internal:11434/v1|OLLAMA_BASE_URL=http://host.docker.internal:11434/v1|' .env

# Ενεργοποίηση του NVIDIA GPU Compose Overlay
echo "COMPOSE_FILE=docker-compose.yml:docker/gpu.nvidia.yml" >> .env

5. Ρύθμιση Δικτύου: Ορισμός Στατικής IP (Static IP)

Εφόσον ρυθμίσαμε το Odysseus και το Ollama να «ακούνε» σε όλο το τοπικό δίκτυο (0.0.0.0), υπάρχει ένας πρακτικός σκόπελος που πρέπει να προλάβουμε: το πρωτόκολλο DHCP του router σας.

Από προεπιλογή, ο router εκχωρεί δυναμικές IP στις συσκευές μας. Αυτό σημαίνει πως μετά από μια επανεκκίνηση του host μηχανήματος (του Ubuntu) ή τη λήξη του DHCP lease, η συσκευή σας ενδέχεται να λάβει νέα διεύθυνση IP. Κάτι τέτοιο θα καταστήσει άκυρα τα bookmarks που έχετε αποθηκεύσει στο κινητό ή το laptop σας με τα οποία μπέναιτε στο Odysseus.

Για να έχετε μια σταθερή, μόνιμη διεύθυνση πρόσβασης (π.χ. 192.168.1.50), υπάρχουν δύο προσεγγίσεις:

Η περιγραφή των μεθόδων ορισμού στατικής IP είναι εκτός σκοπού του οδηγού. Μπορείτε να διαβάσετε τον οδηγό που έχουμε γράψει σχετικά με την «Στατική IP σε Ubuntu»

6. Εκκίνηση υποδομής Odysseus/Ollama και Πρώτη Πρόσβαση

Με όλες τις ρυθμίσεις στη θέση τους, κάνουμε build και «σηκώνουμε» τις υπηρεσίες. Κατά την πρώτη εκκίνηση, το Odysseus παράγει έναν κρυπτογραφημένο κωδικό διαχειριστή που πρέπει να ανακτήσουμε από τα αρχεία καταγραφής.

# Εκκίνηση του Odysseus με ενεργοποιημένη την επιτάχυνση GPU
sudo docker compose up -d --build

# Μόλις ξεκινήσει τα container κάνουμε προβολή του προσωρινού κωδικού διαχειριστή (admin password) που δημιουργήθηκε
sudo docker compose logs odysseus | grep -i "password"

Έχουμε τελειώσει. Το Odysseus απο προεπιλογή περιμένει συνδέσεις στην θήρα 7000 ενώ το Ollama 11434. Αρα το μόνο που χρειαζόμαστε είναι η ip που βάλαμε στο 5ο βήμα στο PC που τρέχει την υποδομή μας:

  • Διεπαφή Odysseus: Πλοηγηθείτε στο http://<YOUR_PC_IP>:7000 και συνδεθείτε με τον κωδικό που μόλις ανακτήσατε. Εμείς αυτό θα χρησιμοποιούμε.
  • API του Ollama: Διαθέσιμο στο http://<YOUR_PC_IP>:11434. Αυτό το χρησιμοποιούμε μονο αν θέλουμε πχ. να το συνδέσουμε με άλλα εργαλεία όπως το VSCode

Αφού μπείτε στην σελίδα του Odysseus με admin και τον προσωρινό κωδικό, το πρώτο πράγμα που θα κάνετε είναι να αλλάξετε αυτό τον κωδικό με αυτή της προτίμησης σας. Πατάτε το γρανάζι αριστερά κάτω, πατάτε Accounts στο παράθυρο που θα ανοίξει και το αλλάζετε.

Τέλος θα πρέπει να ενημερώσετε το Odysseus για το Ollama πηγαίνοντας στην ενότητα Add Models -> click Ollama για να συμπληρωθεί η default διαδρομή -> πατήστε Test για να δείτε αν το βλέπει και στην συνέχεια πατήσετ Add.

add local ollama service to odysseus

7. Επόμενα Βήματα: Το Odysseus Cookbook

Με την εγκατάσταση να έχει ολοκληρωθεί, το σύστημά σας είναι πλέον έτοιμο να φορτώσει τοπικά μοντέλα. Εδώ μπαίνει στο παιχνίδι το ενσωματωμένο Cookbook του Odysseus.

Odysseus Cookbook for downloading compatible models

Αντί να μαντεύετε ποιο μοντέλο να κατεβάσετε, το Cookbook διαβάζει τα πραγματικά δεδομένα του συστήματός σας (όπως τη διαθέσιμη VRAM της GPU σας). Βάσει αυτών των μετρήσεων, σας προτείνει επιστημονικά τα ιδανικά μεγέθη μοντέλων (π.χ. πότε να προτιμήσετε ένα μοντέλο των 7B παραμέτρων έναντι ενός των 13B), διασφαλίζοντας την ταχύτερη δυνατή παραγωγή κειμένου χωρίς κινδύνους εξάντλησης της μνήμης.

Εναλλακτικά μπορείτε να προσθέτετε μοντέλα και απο το τερματικό με το ollama, κατεβάζοντας το μοντέλο που σας ενδιαφέρει με τις αντίστοιχες εντολές :

ollam pull onoma/ekdosi_model

Π.χ. αν θέλω να κάνω εγκατάσταση το DeepSeek που είχαμε δει σε παλιότερο οδηγό βρίσκω το μοντέλο απο την σελίδα του Ollama και αντιγράφω την παράμετρο:

ollama pull deepseek-r1:latest

ή το ελληνικό Krikri:

krikri Greek model
ollama pull ilsp/llama-krikri-8b-instruct

Το Odysseus θα αναγνωρίσει αυτόματα το μοντέλο και μόλις κάνουμε refresh στην σελίδα, θα το κάνει διαθέσιμο στο chat

odysseus cat models krikri

Καθώς το χρησιμοποιείτε μπορείτε να ανοίξετε και το nvtop για να δείτε αν ζορίζεται η Nvidia και πρέπει να αλλάξετε μοντέλο ή να παρακολουθήσετε τις γενικές επιδόσεις

nvtop displaying what happens to Nvidia when running a local model

Σου άρεσε το άρθρο; Πες την άποψή σου... έστω και Ανώνυμα: