Nanny7 commited on
Commit
1a891cc
·
1 Parent(s): 5b28645

feat: Install script completamente em background

Browse files

- bash install.sh --background para executar em background
- Script retorna imediatamente com PID
- Arquivo .install_status para tracking
- check_install.sh para verificar progresso
- Logs detalhados em install.log
- Não trava Claude Code com timeout

Files changed (2) hide show
  1. check_install.sh +74 -0
  2. install.sh +112 -174
check_install.sh ADDED
@@ -0,0 +1,74 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ #!/bin/bash
2
+ # Script para verificar status da instalação
3
+
4
+ echo "🔍 VERIFICANDO STATUS DA INSTALAÇÃO"
5
+ echo "==================================="
6
+
7
+ # Verificar se arquivo de status existe
8
+ if [ ! -f ".install_status" ]; then
9
+ echo "❌ Instalação não iniciada"
10
+ echo "📌 Execute: bash install.sh --background"
11
+ exit 0
12
+ fi
13
+
14
+ STATUS=$(cat .install_status)
15
+ echo "📊 Status atual: $STATUS"
16
+
17
+ case "$STATUS" in
18
+ "INICIANDO")
19
+ echo "⏳ Iniciando instalação..."
20
+ ;;
21
+ "CRIANDO_VENV")
22
+ echo "📦 Criando ambiente virtual..."
23
+ ;;
24
+ "INSTALANDO_DEPS")
25
+ echo "📚 Instalando dependências..."
26
+ ;;
27
+ "CRIANDO_DIRS")
28
+ echo "📁 Criando estrutura de diretórios..."
29
+ ;;
30
+ "BAIXANDO_MODELOS")
31
+ echo "📥 Baixando modelos (pode demorar)..."
32
+ ;;
33
+ "VERIFICANDO")
34
+ echo "🔍 Verificando instalação..."
35
+ ;;
36
+ "CONCLUIDA")
37
+ echo "✅ Instalação CONCLUÍDA!"
38
+ echo ""
39
+ echo "📌 Para testar:"
40
+ echo " source venv/bin/activate"
41
+ echo " python3 tests/test_simple.py"
42
+ exit 0
43
+ ;;
44
+ "ERRO"*)
45
+ echo "❌ Erro na instalação: $STATUS"
46
+ echo "📋 Verifique install.log para detalhes"
47
+ exit 1
48
+ ;;
49
+ esac
50
+
51
+ # Verificar se processo ainda está rodando
52
+ if pgrep -f "install.sh --install" > /dev/null; then
53
+ echo "🟢 Processo ativo"
54
+ else
55
+ echo "🔴 Processo não encontrado"
56
+ if [ "$STATUS" != "CONCLUIDA" ]; then
57
+ echo "⚠️ Instalação pode ter falhado - verifique install.log"
58
+ fi
59
+ fi
60
+
61
+ # Mostrar últimas linhas do log
62
+ echo ""
63
+ echo "📋 Últimas linhas do log:"
64
+ echo "========================"
65
+ if [ -f "install.log" ]; then
66
+ tail -5 install.log
67
+ else
68
+ echo "Log não encontrado"
69
+ fi
70
+
71
+ echo ""
72
+ echo "💡 Comandos úteis:"
73
+ echo " tail -f install.log # Acompanhar progresso"
74
+ echo " bash check_install.sh # Verificar status novamente"
install.sh CHANGED
@@ -1,188 +1,126 @@
1
  #!/bin/bash
2
  # Install script para LLaMA-Omni2 Pipeline Oficial
3
- # Versão com downloads em background para evitar timeout
4
-
5
- set -e # Para se houver erro
6
-
7
- echo "========================================="
8
- echo "🚀 INSTALAÇÃO LLAMA-OMNI2 PIPELINE OFICIAL"
9
- echo "========================================="
10
- echo ""
11
-
12
- # 1. Verificar Python
13
- echo "🔍 Verificando Python..."
14
- if ! command -v python3 &> /dev/null; then
15
- echo "❌ Python3 não encontrado!"
16
- exit 1
17
- fi
18
- PYTHON_VERSION=$(python3 --version | cut -d' ' -f2 | cut -d'.' -f1,2)
19
- echo " ✅ Python $PYTHON_VERSION encontrado"
20
-
21
- # 2. Criar ambiente virtual
22
- if [ ! -d "venv" ]; then
23
- echo "📦 Criando ambiente virtual..."
24
- python3 -m venv venv
25
- else
26
- echo "📦 Ambiente virtual já existe"
27
  fi
28
 
29
- # 3. Ativar ambiente
30
- echo "🔧 Ativando ambiente virtual..."
31
- source venv/bin/activate
32
-
33
- # 4. Atualizar pip
34
- echo "📚 Atualizando pip..."
35
- pip install -q --upgrade pip
36
-
37
- # 5. Instalar PyTorch com CUDA
38
- echo "🔥 Instalando PyTorch com suporte GPU..."
39
- pip install -q torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu118
40
-
41
- # 6. Instalar dependências essenciais
42
- echo "📚 Instalando dependências do pipeline..."
43
- pip install -q transformers==4.37.2 # Versão específica compatível
44
- pip install -q accelerate safetensors huggingface_hub
45
- pip install -q openai-whisper # Para Whisper encoder
46
- pip install -q gtts # Para síntese de voz
47
- pip install -q soundfile librosa scipy numpy
48
-
49
- # 7. Criar estrutura de diretórios
50
- echo "📁 Criando estrutura de diretórios..."
51
- mkdir -p models
52
- mkdir -p pipelines
53
- mkdir -p tests
54
-
55
- # 8. Baixar modelos em background
56
- echo ""
57
- echo "📥 Iniciando download dos modelos em background..."
58
- echo " (Downloads grandes serão feitos em paralelo)"
59
-
60
- # Criar script de download
61
- cat > download_models.py << 'EOF'
62
- #!/usr/bin/env python3
63
- import os
64
- import sys
65
- import time
 
 
 
 
 
 
 
 
 
 
 
 
66
  import whisper
 
 
 
 
 
 
 
 
 
 
 
 
 
67
  from huggingface_hub import snapshot_download
68
-
69
- def download_whisper():
70
- """Baixa Whisper Large-v3"""
71
- try:
72
- print("📥 [1/2] Baixando Whisper Large-v3 (2.88GB)...")
73
- model_path = 'models/large-v3.pt'
74
- if not os.path.exists(model_path):
75
- model = whisper.load_model('large-v3', download_root='models/')
76
- print("[1/2] Whisper Large-v3 baixado!")
77
- else:
78
- print("✅ [1/2] Whisper Large-v3 já existe")
79
- except Exception as e:
80
- print(f"⚠️ [1/2] Erro baixando Whisper: {e}")
81
- return False
82
- return True
83
-
84
- def download_llama():
85
- """Baixa LLaMA-Omni2"""
86
- try:
87
- print("📥 [2/2] Baixando LLaMA-Omni2-0.5B...")
88
- model_dir = 'models/models--ICTNLP--LLaMA-Omni2-0.5B'
89
- if not os.path.exists(model_dir):
90
- snapshot_download(
91
- repo_id='ICTNLP/LLaMA-Omni2-0.5B',
92
- local_dir=model_dir,
93
- local_dir_use_symlinks=False
94
- )
95
- print("✅ [2/2] LLaMA-Omni2-0.5B baixado!")
96
- else:
97
- print("✅ [2/2] LLaMA-Omni2-0.5B já existe")
98
- except Exception as e:
99
- print(f"⚠️ [2/2] Erro baixando LLaMA: {e}")
100
- return False
101
- return True
102
-
103
- # Executar downloads
104
- print("\n🚀 Iniciando downloads...")
105
- whisper_ok = download_whisper()
106
- llama_ok = download_llama()
107
-
108
- if whisper_ok and llama_ok:
109
- print("\n✅ Todos os modelos baixados com sucesso!")
110
  else:
111
- print("\n⚠️ Alguns modelos não foram baixados. Serão baixados na primeira execução.")
112
-
113
- print("\nCriando arquivo de status...")
114
- with open('.download_complete', 'w') as f:
115
- f.write('done')
116
- EOF
117
-
118
- # Executar download em background
119
- echo "🚀 Executando download dos modelos em background..."
120
- nohup python3 download_models.py > download.log 2>&1 &
121
- DOWNLOAD_PID=$!
122
- echo " PID do processo: $DOWNLOAD_PID"
123
-
124
- # Aguardar um pouco e verificar se está rodando
125
- sleep 2
126
- if ps -p $DOWNLOAD_PID > /dev/null; then
127
- echo " ✅ Download iniciado em background"
128
- echo " 📋 Acompanhe o progresso com: tail -f download.log"
129
- else
130
- echo " ⚠️ Download pode ter terminado rapidamente ou falhado"
131
- fi
132
-
133
- # Aguardar até 30 segundos pelo download ou continuar
134
- echo ""
135
- echo "⏳ Aguardando downloads (máx 30s)..."
136
- for i in {1..30}; do
137
- if [ -f ".download_complete" ]; then
138
- echo "✅ Downloads concluídos!"
139
- break
140
- fi
141
- sleep 1
142
- echo -n "."
143
- done
144
- echo ""
145
-
146
- # 9. Verificar instalação
147
- echo ""
148
- echo "🔍 Verificando instalação..."
149
- python3 -c "
150
- import torch
151
- import transformers
152
- import whisper
153
- import gtts
154
- import soundfile
155
-
156
- print(' ✅ PyTorch:', torch.__version__)
157
- print(' ✅ CUDA disponível:', torch.cuda.is_available())
158
  if torch.cuda.is_available():
159
- print(' ✅ GPU:', torch.cuda.get_device_name(0))
160
- print(' ✅ Transformers:', transformers.__version__)
161
- print(' ✅ Todas as dependências instaladas!')
162
  "
163
-
164
- # Verificar se downloads ainda estão rodando
165
- if ps -p $DOWNLOAD_PID > /dev/null 2>&1; then
 
166
  echo ""
167
- echo "📥 Downloads de modelos ainda em andamento em background"
168
- echo " Use 'tail -f download.log' para acompanhar"
169
- echo " Os modelos serão baixados automaticamente se necessário"
 
 
170
  fi
171
 
 
 
172
  echo ""
173
- echo "========================================="
174
- echo " INSTALAÇÃO CONCLUÍDA COM SUCESSO!"
175
- echo "========================================="
176
- echo ""
177
- echo "📌 Para testar o pipeline:"
178
- echo " source venv/bin/activate"
179
- echo " python3 tests/test_simple.py"
180
  echo ""
181
- echo "📌 Estrutura do projeto:"
182
- echo " pipelines/llama_omni2_oficial.py - Pipeline oficial"
183
- echo " tests/test_simple.py - Teste simples"
184
- echo " models/ - Modelos baixados"
185
- echo ""
186
-
187
- # Limpar arquivo temporário
188
- rm -f download_models.py .download_complete 2>/dev/null || true
 
1
  #!/bin/bash
2
  # Install script para LLaMA-Omni2 Pipeline Oficial
3
+ # Versão COMPLETAMENTE EM BACKGROUND
4
+
5
+ # Se chamado com --background, roda em background
6
+ if [ "$1" = "--background" ] || [ "$1" = "-bg" ]; then
7
+ # Executar em background e criar arquivo de log
8
+ echo "🚀 Iniciando instalação em background..."
9
+ echo "📋 Acompanhe com: tail -f install.log"
10
+ nohup bash "$0" --install > install.log 2>&1 &
11
+ echo "✅ Instalação iniciada em background (PID: $!)"
12
+ echo "⏳ Use 'bash check_install.sh' para verificar status"
13
+ exit 0
 
 
 
 
 
 
 
 
 
 
 
 
 
14
  fi
15
 
16
+ # Instalação real
17
+ if [ "$1" = "--install" ]; then
18
+ set -e
19
+
20
+ echo "========================================="
21
+ echo "🚀 INSTALAÇÃO LLAMA-OMNI2 PIPELINE OFICIAL"
22
+ echo "========================================="
23
+ echo "$(date): Iniciando instalação..."
24
+
25
+ # Status file
26
+ echo "INICIANDO" > .install_status
27
+
28
+ # 1. Verificar Python
29
+ echo "$(date): 🔍 Verificando Python..."
30
+ if ! command -v python3 &> /dev/null; then
31
+ echo "ERRO: Python3 não encontrado!" > .install_status
32
+ exit 1
33
+ fi
34
+ PYTHON_VERSION=$(python3 --version | cut -d' ' -f2 | cut -d'.' -f1,2)
35
+ echo " ✅ Python $PYTHON_VERSION encontrado"
36
+
37
+ # 2. Criar ambiente virtual
38
+ echo "$(date): 📦 Configurando ambiente virtual..."
39
+ echo "CRIANDO_VENV" > .install_status
40
+ if [ ! -d "venv" ]; then
41
+ python3 -m venv venv
42
+ fi
43
+ source venv/bin/activate
44
+
45
+ # 3. Instalar dependências
46
+ echo "$(date): 📚 Instalando dependências..."
47
+ echo "INSTALANDO_DEPS" > .install_status
48
+ pip install -q --upgrade pip
49
+ pip install -q torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu118
50
+ pip install -q transformers==4.37.2 accelerate safetensors huggingface_hub
51
+ pip install -q openai-whisper gtts soundfile librosa scipy numpy
52
+
53
+ # 4. Criar estrutura
54
+ echo "$(date): 📁 Criando estrutura..."
55
+ echo "CRIANDO_DIRS" > .install_status
56
+ if [ -L "models" ]; then rm models; fi
57
+ mkdir -p models pipelines tests
58
+
59
+ # 5. Baixar modelos
60
+ echo "$(date): 📥 Baixando modelos..."
61
+ echo "BAIXANDO_MODELOS" > .install_status
62
+
63
+ # Whisper
64
+ python3 -c "
65
  import whisper
66
+ import os
67
+ print('Baixando Whisper Large-v3...')
68
+ model_path = 'models/large-v3.pt'
69
+ if not os.path.exists(model_path):
70
+ model = whisper.load_model('large-v3', download_root='models/')
71
+ print('✅ Whisper Large-v3 baixado')
72
+ else:
73
+ print('✅ Whisper já existe')
74
+ "
75
+
76
+ # LLaMA-Omni2
77
+ python3 -c "
78
+ import os
79
  from huggingface_hub import snapshot_download
80
+ print('Baixando LLaMA-Omni2-0.5B...')
81
+ model_dir = 'models/models--ICTNLP--LLaMA-Omni2-0.5B'
82
+ if not os.path.exists(model_dir):
83
+ snapshot_download(
84
+ repo_id='ICTNLP/LLaMA-Omni2-0.5B',
85
+ local_dir=model_dir,
86
+ local_dir_use_symlinks=False
87
+ )
88
+ print('LLaMA-Omni2-0.5B baixado')
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
89
  else:
90
+ print('✅ LLaMA existe')
91
+ "
92
+
93
+ # 6. Verificar instalação
94
+ echo "$(date): 🔍 Verificando instalação..."
95
+ echo "VERIFICANDO" > .install_status
96
+ python3 -c "
97
+ import torch, transformers, whisper, gtts, soundfile
98
+ print('✅ PyTorch:', torch.__version__)
99
+ print('✅ CUDA:', torch.cuda.is_available())
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
100
  if torch.cuda.is_available():
101
+ print('✅ GPU:', torch.cuda.get_device_name(0))
102
+ print('✅ Transformers:', transformers.__version__)
 
103
  "
104
+
105
+ echo "$(date): Instalação concluída!"
106
+ echo "CONCLUIDA" > .install_status
107
+
108
  echo ""
109
+ echo "========================================="
110
+ echo " INSTALAÇÃO CONCLUÍDA COM SUCESSO!"
111
+ echo "========================================="
112
+ echo "📌 Para testar: python3 tests/test_simple.py"
113
+ exit 0
114
  fi
115
 
116
+ # Uso padrão - mostrar help
117
+ echo "🚀 LLaMA-Omni2 Pipeline - Installer"
118
  echo ""
119
+ echo "Uso:"
120
+ echo " bash install.sh --background # Instalar em background"
121
+ echo " bash install.sh -bg # Instalar em background (abreviado)"
 
 
 
 
122
  echo ""
123
+ echo "Monitoramento:"
124
+ echo " tail -f install.log # Ver progresso"
125
+ echo " bash check_install.sh # Verificar status"
126
+ echo ""