Lab 01-01: Installazione da binari/pacchetti¶
Obiettivo¶
Installare llama.cpp senza compilare sulla tua piattaforma con due metodi (installer o gestore di pacchetti
+ tarball della release), verificare versione, backend e device rilevati, e far rispondere il primo modello.
Alla fine hai llama nel PATH e una cartella llama-bNNNNN/ con tutti gli strumenti extra.
Prerequisiti¶
- Un terminale e
curl(Linux/macOS) o PowerShell (Windows). - ~1 GB di disco libero (binari + modello di prova) e connessione a Internet.
- Nessun privilegio di amministratore (tranne winget/brew se non li hai già).
Materiale¶
| Cosa | Dove | Dimensione |
|---|---|---|
| Installer | https://llama.app/install.sh |
binario ~18 MB |
| Tarball release | https://github.com/ggml-org/llama.cpp/releases/download/b11046/llama-b11046-bin-ubuntu-x64.tar.gz (o l'asset della tua piattaforma) |
16 MB |
| Modello di prova | ggml-org/Qwen3.5-0.8B-GGUF (Qwen3.5-0.8B-Q8_0.gguf, Apache-2.0) |
785 MiB |
flowchart TB
A[1 · installer o pacchetto] --> B[2 · llama version<br/>--list-devices]
B --> C[3 · primo modello<br/>llama cli -hf …]
C --> D[4 · tarball release<br/>strumenti extra]
D --> E[5 · confronto delle due copie]Procedura¶
1. Installa con il metodo rapido¶
curl -LsSf https://llama.app/install.sh | sh
export PATH="$HOME/.local/bin:$PATH"
export SSL_CERT_FILE=/etc/ssl/certs/ca-certificates.crt # (1)!
echo 'export PATH="$HOME/.local/bin:$PATH"' >> ~/.bashrc
echo 'export SSL_CERT_FILE=/etc/ssl/certs/ca-certificates.crt' >> ~/.bashrc
- Necessario su Debian/Ubuntu con il binario statico dell'installer; su Fedora/RHEL il percorso è
/etc/pki/tls/certs/ca-bundle.crt. Senza, il download del modello fallisce conSSL connection failed.
Output atteso dell'installer su Linux senza GPU: Probing CUDA..., Probing ROCm..., Probing Vulkan...,
poi il download del binario CPU e un messaggio che ricorda di aggiungere ~/.local/bin al PATH.
2. Verifica versione e device¶
version: 0.4.1-dev (build 11046, commit 60081bb2b)
built with Clang 22.1.8 for Linux x86_64
Available devices:
(none)
Su un Mac vedrai un device Metal, su un PC con NVIDIA CUDA0: NVIDIA GeForce … con la VRAM libera e totale.
"(none)" su sola CPU è normale. Nota il compilatore: Clang 22.1.8 è la firma del binario dell'installer.
3. Il primo modello¶
llama cli -hf ggml-org/Qwen3.5-0.8B-GGUF -st -p "Rispondi con una sola parola: quale pianeta è il terzo dal Sole?" -n 30 -rea off
Alla prima esecuzione scarica 785 MiB nella cache Hugging Face; poi stampa il banner e la risposta:
build : b11046-60081bb2b
model : ggml-org/Qwen3.5-0.8B-GGUF
ftype : Q8_0
modalities : text
…
> Rispondi con una sola parola: quale pianeta è il terzo dal Sole?
Marte
[ Prompt: 3.3 t/s | Generation: 0.3 t/s ]
La risposta "Marte" è sbagliata: un modello da 0,8 B in modalità senza ragionamento sbaglia spesso. Prova
senza -rea off e guarda la differenza (e il tempo). La riga [ Prompt … | Generation … ] è il tuo primo
benchmark: annotala.
4. Il tarball della release (strumenti extra)¶
mkdir -p ~/llama-lab && cd ~/llama-lab
V=b11046
curl -LO https://github.com/ggml-org/llama.cpp/releases/download/$V/llama-$V-bin-ubuntu-x64.tar.gz
tar -xzf llama-$V-bin-ubuntu-x64.tar.gz
ls llama-$V | wc -l # 61 file
ls llama-$V | grep -vE "\.so" # gli eseguibili
./llama-$V/llama-cli --version
ubuntu-x64 con ubuntu-arm64; con una GPU non NVIDIA prova
ubuntu-vulkan-x64.
$V = "b11046"
New-Item -ItemType Directory -Force $HOME\llama-lab | Out-Null; cd $HOME\llama-lab
Invoke-WebRequest "https://github.com/ggml-org/llama.cpp/releases/download/$V/llama-$V-bin-win-cpu-x64.zip" -OutFile "llama-$V.zip"
Expand-Archive "llama-$V.zip" -DestinationPath "llama-$V"
Get-ChildItem "llama-$V" -Recurse -Filter *.exe | Select-Object Name
-win-cuda-12.4-x64.zip e cudart-llama-bin-win-cuda-12.4-x64.zip, ed
estraili nella stessa cartella. Con AMD/Intel: -win-vulkan-x64.zip.
$ ./llama-b11046/llama-cli --version
version: 0.4.1-dev (build 11046, commit 60081bb2b)
built with GNU 11.4.0 for Linux x86_64
Stessa build, compilatore diverso (GCC 11 contro Clang 22): sono due copie indipendenti. Nel tarball trovi
llama-imatrix, llama-gguf-split, llama-tokenize, llama-tts, llama-mtmd-cli, ggml-rpc-server,
che l'installer non ha.
5. Confronta le due copie¶
which llama; file ~/.local/bin/llama | cut -c1-80 # statically linked
ldd ~/llama-lab/llama-b11046/llama-cli | grep -E "ssl|ggml|llama"
ls ~/llama-lab/llama-b11046/ | grep libggml-cpu # sandybridge … zen4
~/llama-lab/llama-b11046/llama-tokenize --help | head -3
Le libggml-cpu-<arch>.so sono le varianti del backend CPU: all'avvio viene caricata la migliore per la tua
CPU (con -v cerchi load_backend nel log). Il binario dell'installer è statico: una sola copia, nessuna
.so, ma il problema dei certificati.
Verifica del risultato¶
-
llama versionstampa build e piattaforma;llama cli --list-deviceselenca i device (o(none)). -
llama cli -hf ggml-org/Qwen3.5-0.8B-GGUF …ha scaricato il modello e risposto;llama cli -cllo elenca. - La cartella
llama-b11046/contienellama-imatrixellama-gguf-splitellama-cli --versionriporta la stessa build. - Hai annotato la riga
[ Prompt: … | Generation: … ].
Domande e varianti¶
- Perché
--list-devicesnon elenca la CPU? Che cosa elencherebbe su un portatile con iGPU Intel e binario Vulkan? - Rilancia l'installer con
SKIP_VULKAN=1 SKIP_CUDA=1 SKIP_ROCM=1: cambia qualcosa sulla tua macchina? Quando è utile? - Variante:
LLAMA_VERSION=b11046 curl -LsSf https://llama.app/install.sh | shfissa la build; se il bucket non ha quella build lo script si ferma conNo version found/errore di download. Prova con una build recente. - Variante (con GPU): ripeti il passo 3 con
-ngl 99 -v 2>&1 | grep "model buffer size"e verifica che il buffer del modello sia sul device GPU. - Variante: crea un alias
alias llama-rel=~/llama-lab/llama-b11046/llamae verifica chellama-rel versionellama versioncoincidano.
Consegna¶
Un file installazione.md con: piattaforma e metodo usato, output di llama version e --list-devices,
la risposta del modello con la riga di velocità, l'elenco degli eseguibili del tarball che mancano
all'installer, e i problemi incontrati (certificati, PATH, Gatekeeper…) con la soluzione.