Create chmod +x /app/compile_flash.sh
Browse files
chmod +x /app/compile_flash.sh
ADDED
|
@@ -0,0 +1,51 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
#!/bin/bash
|
| 2 |
+
set -e
|
| 3 |
+
|
| 4 |
+
echo "🔧 [Aduc-SDR] Compilador Persistente de FlashAttention"
|
| 5 |
+
echo "------------------------------------------------------"
|
| 6 |
+
|
| 7 |
+
# Diretório onde os wheels serão salvos
|
| 8 |
+
WHEEL_DIR="/data/wheel"
|
| 9 |
+
mkdir -p "$WHEEL_DIR"
|
| 10 |
+
|
| 11 |
+
# Busca se já existe wheel compilado
|
| 12 |
+
FLASH_WHL=$(find "$WHEEL_DIR" -name "flash_attn-*.whl" | head -n 1)
|
| 13 |
+
|
| 14 |
+
if [[ -f "$FLASH_WHL" ]]; then
|
| 15 |
+
echo "📦 Wheel já encontrado: $FLASH_WHL"
|
| 16 |
+
echo "✅ Nenhuma compilação necessária."
|
| 17 |
+
exit 0
|
| 18 |
+
fi
|
| 19 |
+
|
| 20 |
+
echo "⚙️ Nenhum wheel encontrado — iniciando compilação controlada..."
|
| 21 |
+
echo " > Limitando threads e desativando CUDA para reduzir uso de memória."
|
| 22 |
+
|
| 23 |
+
# Define limites e flags para compilar de forma segura
|
| 24 |
+
export MAX_JOBS=2
|
| 25 |
+
export OMP_NUM_THREADS=2
|
| 26 |
+
export USE_FLASH_ATTENTION_WITH_CUDA=0
|
| 27 |
+
export FORCE_CUDA=0
|
| 28 |
+
export CUDA_VISIBLE_DEVICES=""
|
| 29 |
+
export TORCH_CUDA_ARCH_LIST="8.9"
|
| 30 |
+
export PYTORCH_CUDA_ALLOC_CONF="max_split_size_mb:128"
|
| 31 |
+
|
| 32 |
+
# Tenta compilar o wheel
|
| 33 |
+
echo "🚧 Compilando wheel flash-attn==2.8.3..."
|
| 34 |
+
pip wheel flash-attn==2.8.3 --no-build-isolation -w "$WHEEL_DIR" || {
|
| 35 |
+
echo "⚠️ Falha no build padrão — tentando modo CPU-only..."
|
| 36 |
+
pip wheel flash-attn==2.8.3 --no-build-isolation -w "$WHEEL_DIR" --config-settings="--build-option=--cpu-only"
|
| 37 |
+
}
|
| 38 |
+
|
| 39 |
+
# Verifica se a compilação gerou o arquivo
|
| 40 |
+
FLASH_WHL=$(find "$WHEEL_DIR" -name "flash_attn-*.whl" | head -n 1)
|
| 41 |
+
|
| 42 |
+
if [[ -f "$FLASH_WHL" ]]; then
|
| 43 |
+
echo "✅ Wheel gerado com sucesso: $FLASH_WHL"
|
| 44 |
+
echo "📁 Salvo em: $WHEEL_DIR"
|
| 45 |
+
echo "📦 Instalando wheel local..."
|
| 46 |
+
pip install --no-cache-dir "$FLASH_WHL"
|
| 47 |
+
echo "✨ FlashAttention pronto e persistente."
|
| 48 |
+
else
|
| 49 |
+
echo "❌ Falha ao gerar wheel FlashAttention. Abortando."
|
| 50 |
+
exit 1
|
| 51 |
+
fi
|