¿Cabe el modelo en memoria?
La misma cuenta que usan nuestras páginas de producto: pesos, caché KV y margen de ejecución contra la memoria utilizable.
Escribe memoryNeededGb(params, quant, kvMbPerToken, contextTokens), que devuelve los GB necesarios:
- pesos: params (miles de millones) × BITS_PER_WEIGHT[quant] / 8;
- caché KV: kvMbPerToken × contextTokens / 1000;
- más RUNTIME_OVERHEAD_GB (1,5 GB).
Escribe también fitStatus(neededGb, usableGb): devuelve 'fits' si lo necesario es <= el 85 % de la memoria utilizable, 'tight' si cabe pero pasa del 85 %, y 'no' si no cabe. No redondees nada: los resultados tienen que coincidir con los de la web.
Retos 0/4
- Llama 3.1 8B en Q4 con 8192 tokens necesita 7,42 GB
- Llama 3.1 70B en Q8 con 32 768 tokens: 87,26 GB
- Veredicto fits, tight y no según el 85 %
- En un DGX Spark (122 GB utilizables) el 70B en fp16 no cabe y en Q8 sí
function memoryNeededGb(params, quant, kvMbPerToken, contextTokens) {
const weights = (params * BITS_PER_WEIGHT[quant]) / 8;
// suma la caché KV y el margen de ejecución
return weights;
}
function fitStatus(neededGb, usableGb) {
// 'fits' hasta el 85 % de usableGb, 'tight' hasta el 100 % y, si no, 'no'
return neededGb <= usableGb ? 'fits' : 'no';
}
// Llama 3.1 8B en Q4 con 8192 tokens de contexto (0,131 MB de KV por token)
console.log(memoryNeededGb(8.0, 'q4', 0.131, 8192));Para profundizar: la herramienta relacionada →
¿Esto en producción, con tus datos? Hablemos 15 minutos →