-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathsetup_lambda.sh
More file actions
executable file
·126 lines (111 loc) · 5.44 KB
/
setup_lambda.sh
File metadata and controls
executable file
·126 lines (111 loc) · 5.44 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
#!/bin/bash
# Setup script for Lambda GPU instance
# Installs Unsloth (Gemma 4) + transformers (Qwen2.5 backup)
#
# Usage:
# bash hackathon/upload_to_lambda.sh <LAMBDA_IP>
# ssh ubuntu@<LAMBDA_IP>
# bash ~/hackathon/setup_lambda.sh
set -euo pipefail
echo "=== AccountantGPT Lambda Setup ==="
echo "GPU: $(nvidia-smi --query-gpu=name --format=csv,noheader)"
echo "VRAM: $(nvidia-smi --query-gpu=memory.total --format=csv,noheader)"
echo "CUDA: $(nvidia-smi --query-gpu=driver_version --format=csv,noheader)"
echo ""
# Create venv
echo "Creating virtual environment..."
python3 -m venv ~/venv
source ~/venv/bin/activate
# Install Unsloth (includes transformers, peft, trl, bitsandbytes)
echo "Installing Unsloth + dependencies..."
pip install --upgrade pip
pip install "unsloth[cu124-torch260] @ git+https://github.com/unslothai/unsloth.git"
pip install wandb huggingface_hub scipy
# Also install standard transformers stack for Qwen2.5 backup
pip install -r ~/hackathon/requirements.txt 2>/dev/null || true
# HuggingFace login (needed for model downloads + pushing)
echo ""
echo "============================================"
echo "HuggingFace token needed for:"
echo " - Gemma 4 (Apache 2.0, no gate)"
echo " - Llama 3.1 (gated - pending approval)"
echo " - Qwen2.5 (Apache 2.0, no gate)"
echo ""
echo "Create token: https://huggingface.co/settings/tokens"
echo "============================================"
echo ""
read -p "Enter your HuggingFace token (or press Enter to skip): " HF_TOKEN
if [ -n "$HF_TOKEN" ]; then
huggingface-cli login --token "$HF_TOKEN"
echo "Logged in to HuggingFace"
else
echo "Skipping HF login - make sure you're already logged in"
fi
# Prepare CPA data
echo ""
echo "Preparing CPA FAR training data..."
cd ~/hackathon
python prepare_cpa_sft.py
# Pre-download models (both download in parallel)
echo ""
echo "Pre-downloading models (this takes a few minutes)..."
python3 -c "
from huggingface_hub import snapshot_download
import concurrent.futures
def download(model_id):
print(f'Downloading {model_id}...')
snapshot_download(model_id)
print(f' Done: {model_id}')
models = [
'google/gemma-4-12b-it', # Primary: Gemma 4 12B
'Qwen/Qwen2.5-7B-Instruct', # Backup: Qwen2.5
]
# Try Gemma 4 12B first; if not found, fall back to other sizes
try:
download('google/gemma-4-12b-it')
except Exception as e:
print(f' Gemma 4 12B not available ({e}), trying 31B...')
try:
download('google/gemma-4-31b-it')
except Exception as e2:
print(f' Gemma 4 31B failed ({e2}), trying E4B...')
download('google/gemma-4-E4b-it')
download('Qwen/Qwen2.5-7B-Instruct')
print('All downloads complete!')
"
echo ""
echo "=== Setup complete! ==="
echo ""
echo "TRAINING COMMANDS:"
echo " source ~/venv/bin/activate"
echo ""
echo " ┌─────────────────────────────────────────────────────────┐"
echo " │ PRIMARY: Gemma 4 (via Unsloth) │"
echo " │ │"
echo " │ # Journal entries (~45 min for 31B, ~15 min for E4B) │"
echo " │ python ~/hackathon/train_gemma4.py --model 31b \\ │"
echo " │ --run combined --no-wandb │"
echo " │ │"
echo " │ # If OOM, use 4-bit: │"
echo " │ python ~/hackathon/train_gemma4.py --model 31b \\ │"
echo " │ --run combined --use-4bit --no-wandb │"
echo " │ │"
echo " │ # If still OOM, use smaller model: │"
echo " │ python ~/hackathon/train_gemma4.py --model e4b \\ │"
echo " │ --run combined --no-wandb │"
echo " └─────────────────────────────────────────────────────────┘"
echo ""
echo " ┌─────────────────────────────────────────────────────────┐"
echo " │ BACKUP: Qwen2.5-7B (via transformers) │"
echo " │ │"
echo " │ python ~/hackathon/train_qlora.py --run combined \\ │"
echo " │ --base-model Qwen/Qwen2.5-7B-Instruct --no-wandb │"
echo " └─────────────────────────────────────────────────────────┘"
echo ""
echo " ┌─────────────────────────────────────────────────────────┐"
echo " │ EVAL (after training) │"
echo " │ │"
echo " │ python ~/hackathon/eval_model.py \\ │"
echo " │ --model ./models/accountant-gpt-*/final \\ │"
echo " │ --eval both │"
echo " └─────────────────────────────────────────────────────────┘"