1
1
#! /bin/bash
2
2
3
- # Default Models and Capacities (Comma-separated in "model:capacity" format)
4
- DEFAULT_MODEL_CAPACITY=" gpt-4o:30,gpt-4:30"
3
+ MODELS=" "
4
+ REGIONS=" "
5
+ VERBOSE=false
6
+
7
+ while [[ $# -gt 0 ]]; do
8
+ case " $1 " in
9
+ --models)
10
+ MODELS=" $2 "
11
+ shift 2
12
+ ;;
13
+ --regions)
14
+ REGIONS=" $2 "
15
+ shift 2
16
+ ;;
17
+ --verbose)
18
+ VERBOSE=true
19
+ shift
20
+ ;;
21
+ * )
22
+ echo " Unknown option: $1 "
23
+ exit 1
24
+ ;;
25
+ esac
26
+ done
27
+
28
+ # Fallback to defaults if not provided
29
+ [[ -z " $MODELS " ]]
30
+ [[ -z " $REGIONS " ]]
5
31
32
+ echo " Models: $MODELS "
33
+ echo " Regions: $REGIONS "
34
+ echo " Verbose: $VERBOSE "
35
+
36
+ for arg in " $@ " ; do
37
+ if [ " $arg " = " --verbose" ]; then
38
+ VERBOSE=true
39
+ fi
40
+ done
41
+
42
+ log_verbose () {
43
+ if [ " $VERBOSE " = true ]; then
44
+ echo " $1 "
45
+ fi
46
+ }
47
+
48
+ # Default Models and Capacities (Comma-separated in "model:capacity" format)
49
+ DEFAULT_MODEL_CAPACITY=" gpt-4o:5"
6
50
# Convert the comma-separated string into an array
7
51
IFS=' ,' read -r -a MODEL_CAPACITY_PAIRS <<< " $DEFAULT_MODEL_CAPACITY"
8
52
41
85
done
42
86
fi
43
87
88
+
44
89
# Set the selected subscription
45
90
az account set --subscription " $AZURE_SUBSCRIPTION_ID "
46
91
echo " 🎯 Active Subscription: $( az account show --query ' [name, id]' --output tsv) "
@@ -50,8 +95,8 @@ DEFAULT_REGIONS="eastus,uksouth,eastus2,northcentralus,swedencentral,westus,west
50
95
IFS=' ,' read -r -a DEFAULT_REGION_ARRAY <<< " $DEFAULT_REGIONS"
51
96
52
97
# Read parameters (if any)
53
- IFS=' ,' read -r -a USER_PROVIDED_PAIRS <<< " $1 "
54
- USER_REGION=" $2 "
98
+ IFS=' ,' read -r -a USER_PROVIDED_PAIRS <<< " $MODELS "
99
+ USER_REGION=" $REGIONS "
55
100
56
101
IS_USER_PROVIDED_PAIRS=false
57
102
@@ -99,12 +144,12 @@ INDEX=1
99
144
100
145
VALID_REGIONS=()
101
146
for REGION in " ${REGIONS[@]} " ; do
102
- echo " ----------------------------------------"
103
- echo " 🔍 Checking region: $REGION "
147
+ log_verbose " ----------------------------------------"
148
+ log_verbose " 🔍 Checking region: $REGION "
104
149
105
150
QUOTA_INFO=$( az cognitiveservices usage list --location " $REGION " --output json | tr ' [:upper:]' ' [:lower:]' )
106
151
if [ -z " $QUOTA_INFO " ]; then
107
- echo " ⚠️ WARNING: Failed to retrieve quota for region $REGION . Skipping."
152
+ log_verbose " ⚠️ WARNING: Failed to retrieve quota for region $REGION . Skipping."
108
153
continue
109
154
fi
110
155
@@ -127,7 +172,7 @@ for REGION in "${REGIONS[@]}"; do
127
172
for MODEL_TYPE in " ${MODEL_TYPES[@]} " ; do
128
173
FOUND=false
129
174
INSUFFICIENT_QUOTA=false
130
- echo " 🔍 Checking model: $MODEL_NAME with required capacity: $REQUIRED_CAPACITY ($MODEL_TYPE )"
175
+ log_verbose " 🔍 Checking model: $MODEL_NAME with required capacity: $REQUIRED_CAPACITY ($MODEL_TYPE )"
131
176
132
177
MODEL_INFO=$( echo " $QUOTA_INFO " | awk -v model=" \" value\" : \" $MODEL_TYPE \" " '
133
178
BEGIN { RS="},"; FS="," }
@@ -136,7 +181,7 @@ for REGION in "${REGIONS[@]}"; do
136
181
137
182
if [ -z " $MODEL_INFO " ]; then
138
183
FOUND=false
139
- echo " ⚠️ WARNING: No quota information found for model: $MODEL_NAME in region: $REGION for model type: $MODEL_TYPE ."
184
+ log_verbose " ⚠️ WARNING: No quota information found for model: $MODEL_NAME in region: $REGION for model type: $MODEL_TYPE ."
140
185
continue
141
186
fi
142
187
@@ -152,29 +197,30 @@ for REGION in "${REGIONS[@]}"; do
152
197
LIMIT=$( echo " $LIMIT " | cut -d' .' -f1)
153
198
154
199
AVAILABLE=$(( LIMIT - CURRENT_VALUE))
155
- echo " ✅ Model: $MODEL_TYPE | Used: $CURRENT_VALUE | Limit: $LIMIT | Available: $AVAILABLE "
200
+ log_verbose " ✅ Model: $MODEL_TYPE | Used: $CURRENT_VALUE | Limit: $LIMIT | Available: $AVAILABLE "
156
201
157
202
if [ " $AVAILABLE " -ge " $REQUIRED_CAPACITY " ]; then
158
203
FOUND=true
159
204
if [ " $MODEL_NAME " = " text-embedding-ada-002" ]; then
160
205
TEXT_EMBEDDING_AVAILABLE=true
161
206
fi
162
207
AT_LEAST_ONE_MODEL_AVAILABLE=true
163
- TEMP_TABLE_ROWS+=(" $( printf " | %-4s | %-20s | %-45s | %-10s | %-10s | %-10s |" " $INDEX " " $REGION " " $MODEL_TYPE " " $LIMIT " " $CURRENT_VALUE " " $AVAILABLE " ) " )
208
+ TEMP_TABLE_ROWS+=(" $( printf " | %-4s | %-20s | %-43s | %-10s | %-10s | %-10s |" " $INDEX " " $REGION " " $MODEL_TYPE " " $LIMIT " " $CURRENT_VALUE " " $AVAILABLE " ) " )
164
209
else
165
210
INSUFFICIENT_QUOTA=true
166
211
fi
167
212
fi
168
213
169
214
if [ " $FOUND " = false ]; then
170
- echo " ❌ No models found for model: $MODEL_NAME in region: $REGION (${MODEL_TYPES[*]} )"
215
+ log_verbose " ❌ No models found for model: $MODEL_NAME in region: $REGION (${MODEL_TYPES[*]} )"
216
+
171
217
elif [ " $INSUFFICIENT_QUOTA " = true ]; then
172
- echo " ⚠️ Model $MODEL_NAME in region: $REGION has insufficient quota (${MODEL_TYPES[*]} )."
218
+ log_verbose " ⚠️ Model $MODEL_NAME in region: $REGION has insufficient quota (${MODEL_TYPES[*]} )."
173
219
fi
174
220
done
175
221
done
176
222
177
- if { [ " $IS_USER_PROVIDED_PAIRS " = true ] && [ " $INSUFFICIENT_QUOTA " = false ] && [ " $FOUND " = true ]; } || { [ " $TEXT_EMBEDDING_AVAILABLE " = true ] && { [ " $ APPLY_OR_CONDITION" != true ] || [ " $AT_LEAST_ONE_MODEL_AVAILABLE " = true ]; } ; }; then
223
+ if { [ " $IS_USER_PROVIDED_PAIRS " = true ] && [ " $INSUFFICIENT_QUOTA " = false ] && [ " $FOUND " = true ]; } || { [ " $APPLY_OR_CONDITION " != true ] || [ " $AT_LEAST_ONE_MODEL_AVAILABLE " = true ]; }; then
178
224
VALID_REGIONS+=(" $REGION " )
179
225
TABLE_ROWS+=(" ${TEMP_TABLE_ROWS[@]} " )
180
226
INDEX=$(( INDEX + 1 ))
@@ -185,18 +231,18 @@ if { [ "$IS_USER_PROVIDED_PAIRS" = true ] && [ "$INSUFFICIENT_QUOTA" = false ] &
185
231
done
186
232
187
233
if [ ${# TABLE_ROWS[@]} -eq 0 ]; then
188
- echo " ------------------------------------------------------------------------------------------------------------------"
234
+ echo " -------------------------------------------------------------------------------------------------------------------- "
189
235
190
236
echo " ❌ No regions have sufficient quota for all required models. Please request a quota increase: https://aka.ms/oai/stuquotarequest"
191
237
else
192
- echo " ---------------------------------------------------------------------------------------------------------------------- "
193
- printf " | %-4s | %-20s | %-45s | %-10s | %-10s | %-10s |\n" " No." " Region" " Model Name" " Limit" " Used" " Available"
194
- echo " ---------------------------------------------------------------------------------------------------------------------- "
238
+ echo " ---------------------------------------------------------------------------------------------------------------------"
239
+ printf " | %-4s | %-20s | %-43s | %-10s | %-10s | %-10s |\n" " No." " Region" " Model Name" " Limit" " Used" " Available"
240
+ echo " ---------------------------------------------------------------------------------------------------------------------"
195
241
for ROW in " ${TABLE_ROWS[@]} " ; do
196
242
echo " $ROW "
197
243
done
198
- echo " ---------------------------------------------------------------------------------------------------------------------- "
244
+ echo " ---------------------------------------------------------------------------------------------------------------------"
199
245
echo " ➡️ To request a quota increase, visit: https://aka.ms/oai/stuquotarequest"
200
246
fi
201
247
202
- echo " ✅ Script completed."
248
+ echo " ✅ Script completed."
0 commit comments