最后活跃于 3 days ago

Script del Episodio 827 - atareao con Linux

descargar-modelos.sh 原始文件
1#!/bin/bash
2# =============================================================================
3# descargar-modelos.sh — Descarga de modelos según nivel de hardware
4# =============================================================================
5#
6# Uso:
7# chmod +x descargar-modelos.sh
8# ./descargar-modelos.sh # Modo interactivo (pregunta el nivel)
9# ./descargar-modelos.sh --nivel1 # Descarga solo modelos nivel 1
10# ./descargar-modelos.sh --nivel2 # Descarga modelos nivel 2 (recomendado)
11# ./descargar-modelos.sh --nivel3 # Descarga modelos nivel 3
12# ./descargar-modelos.sh --todos # Descarga todos los modelos
13#
14# Descripción:
15# Descarga los modelos recomendados según tu hardware. Cada nivel corresponde
16# a los rangos de RAM mencionados en el episodio.
17#
18# Requisitos:
19# - Ollama instalado (ver 02-instalacion/setup-ollama.sh)
20# - Conexión a internet
21# - Espacio en disco suficiente (ver tabla abajo)
22#
23# Tamaños aproximados (cuantizados):
24# Nivel 1: phi3.5 (~2.5 GB) + qwen2.5-coder:1.5b (~1 GB) = ~3.5 GB
25# Nivel 2: llama3.2:3b (~2 GB) + qwen2.5:7b (~4.5 GB) + deepseek-coder (~9 GB)
26# Nivel 3: llama3.1:8b (~5 GB) + mistral:7b (~4.5 GB)
27# Embeddings: nomic-embed-text (~0.3 GB)
28#
29# =============================================================================
30
31set -euo pipefail
32
33# Colores para output
34VERDE='\033[0;32m'
35AMARILLO='\033[1;33m'
36AZUL='\033[0;34m'
37RESET='\033[0m'
38
39echo -e "${AZUL}==============================================${RESET}"
40echo -e "${AZUL} Descarga de modelos — Laboratorio IA Local${RESET}"
41echo -e "${AZUL}==============================================${RESET}"
42echo ""
43
44# --- Comprobar Ollama ----------------------------------------------------
45if ! command -v ollama &>/dev/null; then
46 echo "ERROR: Ollama no está instalado."
47 echo " Ejecuta primero: curl -fsSL https://ollama.com/install.sh | sh"
48 exit 1
49fi
50
51echo -e " ${VERDE}${RESET} Ollama detectado: $(ollama --version 2>/dev/null || echo 'versión desconocida')"
52echo ""
53
54# --- Selección de nivel --------------------------------------------------
55NIVEL="${1:-}"
56
57if [[ -z "$NIVEL" ]]; then
58 echo "Selecciona tu nivel de hardware:"
59 echo ""
60 echo " Nivel 1 — Hardware humilde (8 GB RAM / Raspberry Pi 5)"
61 echo " Modelos: phi3.5, qwen2.5-coder:1.5b"
62 echo " Espacio: ~3.5 GB"
63 echo ""
64 echo " Nivel 2 — Punto dulce (16 GB RAM) ⭐ RECOMENDADO"
65 echo " Modelos: llama3.2:3b, qwen2.5:7b, deepseek-coder-v2:16b-lite-instruct-q4_K_M"
66 echo " Espacio: ~15 GB"
67 echo ""
68 echo " Nivel 3 — Hardware potente (32 GB+ RAM / GPU)"
69 echo " Modelos: llama3.1:8b, mistral:7b"
70 echo " Espacio: ~10 GB"
71 echo ""
72 echo " Todos — Descarga todos los modelos"
73 echo " Espacio: ~28 GB"
74 echo ""
75 echo " Embeddings — Solo modelo de embeddings (para RAG)"
76 echo " Modelo: nomic-embed-text (~0.3 GB)"
77 echo ""
78 read -r -p " ¿Qué nivel quieres descargar? [1/2/3/todos/emb]: " NIVEL
79 echo ""
80fi
81
82# --- Mapear nivel a modelos ---------------------------------------------
83case "$NIVEL" in
84 --nivel1|1)
85 echo -e "${AZUL}Nivel 1: Hardware humilde${RESET}"
86 MODELOS=(
87 "phi3.5"
88 "qwen2.5-coder:1.5b"
89 )
90 ;;
91 --nivel2|2)
92 echo -e "${AZUL}Nivel 2: Punto dulce (RECOMENDADO)${RESET}"
93 MODELOS=(
94 "llama3.2:3b"
95 "qwen2.5:7b"
96 "deepseek-coder-v2:16b-lite-instruct-q4_K_M"
97 )
98 ;;
99 --nivel3|3)
100 echo -e "${AZUL}Nivel 3: Hardware potente${RESET}"
101 MODELOS=(
102 "llama3.1:8b"
103 "mistral:7b"
104 )
105 ;;
106 --todos|todos)
107 echo -e "${AZUL}Todos los modelos${RESET}"
108 MODELOS=(
109 "phi3.5"
110 "qwen2.5-coder:1.5b"
111 "llama3.2:3b"
112 "qwen2.5:7b"
113 "deepseek-coder-v2:16b-lite-instruct-q4_K_M"
114 "llama3.1:8b"
115 "mistral:7b"
116 )
117 ;;
118 --emb|emb)
119 echo -e "${AZUL}Solo modelo de embeddings${RESET}"
120 MODELOS=(
121 "nomic-embed-text"
122 )
123 ;;
124 *)
125 echo "ERROR: Nivel no reconocido: $NIVEL"
126 echo " Usa: 1, 2, 3, todos, o emb"
127 exit 1
128 ;;
129esac
130
131echo ""
132echo " Modelos a descargar:"
133for modelo in "${MODELOS[@]}"; do
134 echo " - $modelo"
135done
136echo ""
137
138# --- Confirmar -----------------------------------------------------------
139read -r -p " ¿Continuar con la descarga? [s/N]: " respuesta
140if [[ ! "$respuesta" =~ ^[sS]$ ]]; then
141 echo " Descarga cancelada."
142 exit 0
143fi
144
145echo ""
146
147# --- Descargar modelos ---------------------------------------------------
148for modelo in "${MODELOS[@]}"; do
149 echo -e "${AMARILLO}Descargando:${RESET} ollama pull $modelo"
150 echo " (Esto puede tardar varios minutos según tu conexión)"
151 echo ""
152
153 # Ejecutar ollama pull
154 ollama pull "$modelo"
155
156 echo -e "${VERDE}${RESET} $modelo descargado"
157 echo ""
158done
159
160# --- Descargar modelo de embeddings (si no está ya incluido) -------------
161if [[ "$NIVEL" != "emb" && "$NIVEL" != "--emb" ]]; then
162 echo -e "${AMARILLO}¿Descargar también modelo de embeddings?${RESET}"
163 echo " nomic-embed-text (~0.3 GB) — necesario para RAG"
164 read -r -p " [s/N]: " respuesta
165 if [[ "$respuesta" =~ ^[sS]$ ]]; then
166 echo ""
167 echo -e "${AMARILLO}Descargando:${RESET} ollama pull nomic-embed-text"
168 ollama pull nomic-embed-text
169 echo -e "${VERDE}${RESET} nomic-embed-text descargado"
170 fi
171fi
172
173# --- Resumen final -------------------------------------------------------
174echo ""
175echo -e "${VERDE}==============================================${RESET}"
176echo -e "${VERDE} Descarga completada${RESET}"
177echo -e "${VERDE}==============================================${RESET}"
178echo ""
179echo " Modelos disponibles localmente:"
180echo ""
181ollama list
182echo ""
183echo " Para probar un modelo:"
184echo " ollama run qwen2.5:7b \"Explícame qué es Linux\""
185echo ""
186echo " Para eliminar un modelo:"
187echo " ollama rm qwen2.5:7b"
188echo ""