-
-
Save KerfuffleV2/d072237b4a9386e80cdc302f923843db to your computer and use it in GitHub Desktop.
Super quick and dirty ggml perp calculations
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
from decimal import Decimal | |
QO = ('q2_k', 'q3_ks', 'q3_km', 'q3_kl', 'q4_0', 'q4_1', 'q4_ks', 'q4_km', 'q5_0', 'q5_1', 'q5_ks', 'q5_km', 'q6_k', 'q8_0', 'f16',) | |
QS = { | |
'7B':{ | |
'q2_k':( 6.7764, '2.67',), | |
'q3_ks':( 6.4571,'2.75'), | |
'q3_km':( 6.1503, '3.06'), | |
'q3_kl':(6.0869,'3.35'), | |
'q4_0':( 6.1565, '3.5'), | |
'q4_1':( 6.0912, '3.9'), | |
'q4_ks':( 6.0215, '3.56'), | |
'q4_km':(5.9601,'3.80'), | |
'q5_0':( 5.9862, '4.3'), | |
'q5_1':( 5.9481, '4.7'), | |
'q5_ks':( 5.9419, '4.33'), | |
'q5_km':(5.9208,'4.45'), | |
'q6_k':( 5.911, '5.15'), | |
'q8_0':( 5.907, '6.7'), | |
'f16':( 5.9066, '13.0'), | |
}, | |
'13B': { | |
'q2_k':(5.8545, '5.13'), | |
'q3_ks':(5.6033, '5.27'), | |
'q3_km':( 5.4498, '5.88'), | |
'q3_kl':(5.4063,'6.45'), | |
'q4_0':( 5.3860, '6.8'), | |
'q4_1':( 5.3608, '7.6'), | |
'q4_ks':( 5.3404, '6.8'), | |
'q4_km':(5.3002,'7.32'), | |
'q5_0':( 5.2856, '8.3'), | |
'q5_1':( 5.2706, '9.1'), | |
'q5_ks':( 5.2785, '8.36'), | |
'q5_km':(5.2638,'8.60'), | |
'q6_k':( 5.2568, '9.95'), | |
'q8_0':( 5.2548, '13'), | |
'f16':( 5.2543, '25.0'), | |
}, | |
'33B': { | |
'q2_k':( 4.7950, '12.93'), | |
'q3_ks':( 4.5048, '13.29'), | |
'q3_km':( 4.3594, '14.82'), | |
'q3_kl':( 4.3094,'16.25'), | |
'q4_ks':( 4.2486, '17.16'), | |
'q4_km':( 4.2081,'18.44'), | |
'q5_ks':( 4.1778, '21.05'), | |
'q5_km':(4.1675,'21.65'), | |
'q6_k':( 4.1598, '25.05'), | |
'f16':( 4.1557, '63.00'), | |
}, | |
'65B': { | |
'q2_k':(4.1017, '25.65'), | |
'q3_ks':(3.8682, '26.35'), | |
'q3_km':( 3.6991, '29.40'), | |
'q4_km':(3.5836,'36.60'), | |
'q5_km':(3.5511,'43.00'), | |
'q6_k':( 3.5433, '49.75'), | |
'f16':( 3.5393, '125.00'), | |
}, | |
} | |
PERPREF = Decimal(QS['7B']['f16'][0] - QS['13B']['f16'][0]) | |
def percent(val, tot): | |
return Decimal(100.0) * (val / tot) | |
def calc(k): | |
vals = QS[k] | |
print('| name | +ppl | +ppl % | +ppl 13b to 7b % | size | size 16bit % | +ppl per -1G |') | |
print(('|-' * 7) + '|') | |
fqppl,fqsizestr = vals['f16'] | |
fqsize = Decimal(fqsizestr) | |
result = [] | |
for name in QO: | |
row = vals.get(name, None) | |
if row is None: | |
continue | |
ppl,sizestr = row | |
size = Decimal(sizestr) | |
sizereduction = fqsize - size | |
relppl = Decimal(ppl - fqppl) | |
pplperreduc = relppl / sizereduction if name != 'f16' else Decimal(0.0) | |
result.append({ | |
'name': name, | |
'ppl': ppl, | |
'relppl': relppl, | |
'pplperc': percent(relppl, PERPREF), | |
'abspplperc': percent(Decimal(ppl), Decimal(fqppl)) - Decimal('100'), | |
'size': size, | |
'sizeperc': percent(size, fqsize), | |
'sizereduction': sizereduction, | |
'pplperreduc': pplperreduc, | |
}) | |
return result | |
def render(vals): | |
for v in vals: | |
print('| {name:8} | {relppl:.4f} | {abspplperc:.3f}% | {pplperc:.3f}% | {size:<.2f}G | {sizeperc:<.2f}% | {pplperreduc:.6f} |'.format(**v)) | |
for k in ('7B', '13B', '33B', '65B'): | |
print(f'\n\n## {k}\n') | |
render(calc(k)) |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment