-
Notifications
You must be signed in to change notification settings - Fork 7
118 lines (98 loc) · 3.56 KB
/
ci.yml
File metadata and controls
118 lines (98 loc) · 3.56 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
name: CI
on:
push:
branches: [main, dev, experimental, ci-multi]
pull_request:
branches: [main, dev, experimental, ci-multi]
jobs:
test:
runs-on: ubuntu-24.04
timeout-minutes: 180
env:
PYTHON_VERSION: "3.9"
OLLAMA_VERSION: "0.18.0"
OLLAMA_HOST: "127.0.0.1:11434"
OLLAMA_CONTEXT_LENGTH: "4000"
OLLAMA_MODELS: "/usr/share/ollama/.ollama/models"
steps:
- name: Checkout code
uses: actions/checkout@v4
- name: Restore Ollama model cache
uses: actions/cache@v4
with:
path: /usr/share/ollama/.ollama/models
key: ollama-${{ runner.os }}-${{ env.OLLAMA_VERSION }}-phi4-mini-3.8b-v2
restore-keys: |
ollama-${{ runner.os }}-${{ env.OLLAMA_VERSION }}-
ollama-${{ runner.os }}-
- name: Install Ollama
run: |
curl -fsSL https://ollama.com/install.sh | OLLAMA_VERSION=${OLLAMA_VERSION} sh
- name: Prepare Ollama directories
run: |
sudo mkdir -p /usr/share/ollama/.ollama/models
sudo chown -R ollama:ollama /usr/share/ollama
- name: Configure Ollama service
run: |
sudo mkdir -p /etc/systemd/system/ollama.service.d
sudo tee /etc/systemd/system/ollama.service.d/override.conf > /dev/null <<EOF
[Service]
Environment="OLLAMA_HOST=${OLLAMA_HOST}"
Environment="OLLAMA_CONTEXT_LENGTH=${OLLAMA_CONTEXT_LENGTH}"
Environment="OLLAMA_MODELS=${OLLAMA_MODELS}"
EOF
sudo systemctl daemon-reload
sudo systemctl enable ollama
sudo systemctl restart ollama
- name: Verify Ollama service started
shell: bash
run: |
set -euxo pipefail
sudo systemctl status ollama --no-pager || true
sudo journalctl -u ollama -n 100 --no-pager || true
- name: Wait for Ollama to become ready
shell: bash
run: |
set -euo pipefail
for i in $(seq 1 60); do
if curl -fsS "http://${OLLAMA_HOST}/api/tags" > /dev/null; then
echo "Ollama is ready"
break
fi
if [ "$i" -eq 60 ]; then
echo "Ollama failed to become ready"
sudo systemctl status ollama --no-pager || true
sudo journalctl -u ollama -n 200 --no-pager || true
exit 1
fi
echo "Waiting for Ollama... attempt $i/60"
sleep 2
done
- name: Pull phi4-mini:3.8b model
run: |
ollama pull phi4-mini:3.8b
- name: Set up Python
uses: actions/setup-python@v5
with:
python-version: ${{ env.PYTHON_VERSION }}
- name: Install Python deps
run: |
python -m pip install --upgrade pip
pip install -e .
pip install pytest datasets numpy
- name: Configure LLM env
run: |
echo "OPENAI_API_KEY=ollama" >> "$GITHUB_ENV"
echo "OPENAI_API_BASE=http://${OLLAMA_HOST}/v1" >> "$GITHUB_ENV"
echo "TRACE_LITELLM_MODEL=openai/phi4-mini:3.8b" >> "$GITHUB_ENV"
- name: Run unit tests
run: pytest tests/unit_tests/
- name: Run optimizers test suite
run: pytest tests/llm_optimizers_tests/test_optimizer.py || true
continue-on-error: true
- name: Dump Ollama logs on failure
if: failure()
run: |
sudo systemctl status ollama --no-pager || true
sudo journalctl -u ollama -n 300 --no-pager || true
sudo ls -R /usr/share/ollama/.ollama || true