Historial del chat

ChatGPT

Sora

Photo Realistic Image GPT

Explorar GPT

Proyectos

Nuevo proyecto

Hoy

Problemas MagicQuill GTX960

7 días anteriores

Recibir correos en Gmail

Convert Local Time UTC

Transferir archivos USB S10e

30 días anteriores

Mejoras para HeyGen

Remuestreo vs cambio inteligente

Descargar jq Windows

Espectrometría y cromatografía forense

Serpiente y rana venenosa

Renovación y posibles problemas

febrero

Error en archivo ZIP

Problema con PayPal Checkout

enero

Preguntar sobre webs

Ver planesAcceso ilimitado, características de Team y más

Abrir barra lateral

ChatGPT o3-mini-high

ChatGPT o3-mini-high

Compartir

Dijiste:

Hola chat, hasta que me llegue la grafica gtx 1070ti MagicQuill no me deja a traves de pinokio instalarlo, y me dice:

////////////////
Some modules are dispatched on the CPU or the disk. Make sure you have enough GPU RAM to fit
the quantized model. If you want to dispatch the model on the CPU or the disk while keeping
these modules in 32-bit, you need to set load_in_8bit_fp32_cpu_offload=True and pass a custom
device_map to from_pretrained. Check
https://huggingface.co/docs/transformers/main/en/main_classes/quantization#offload-between-cpu-and-gpu
for more details.
////////////////

Es muy complicado hacer los cambios que dice en:

?

Razonado durante 26 segundos

No es excesivamente complicado, pero requiere entender cómo se distribuyen los componentes del modelo entre GPU y CPU. En esencia, lo que debes hacer es:

Activar el offload: Al llamar a from_pretrained, añade el parámetro load_in_8bit_fp32_cpu_offload=True. Esto le indica a la función que, para ciertos módulos, se mantenga la precisión de 32 bits en la CPU mientras se usa cuantización en 8 bits para liberar memoria en la GPU.

Configurar el device_map: Puedes pasar un parámetro device_map que especifique cómo asignar cada parte del modelo. Una opción sencilla es usar device_map="auto", lo que permite que la librería decida la distribución de manera automática. Si necesitas un control más fino, puedes definir un diccionario manual con las asignaciones, por ejemplo:

python

Copiar

device_map = {
"transformer.h.0": "cpu",
"transformer.h.1": "gpu",
# Ajusta según las necesidades del modelo...
}

Luego, lo integras al cargar el modelo:

python

Copiar

from transformers import AutoModelForCausalLM

model = AutoModelForCausalLM.from_pretrained(
"nombre-del-modelo",
load_in_8bit=True,
load_in_8bit_fp32_cpu_offload=True,
device_map="auto" # o tu propio diccionario
)

La documentación de HuggingFace explica estos pasos en detalle, y aunque al principio pueda parecer intimidante, en la práctica solo necesitas agregar unos parámetros extra a la llamada de carga. Si no tienes experiencia previa con la asignación de dispositivos, empezar con device_map="auto" es una buena opción y te permitirá ver cómo se distribuyen los módulos.

En resumen, el proceso es relativamente sencillo si sigues los ejemplos de la documentación. Solo ten en cuenta que la correcta distribución entre CPU y GPU es clave para que el modelo funcione sin quedarse sin memoria en la GPU.

¿Te gustaría profundizar en algún aspecto o ver algún ejemplo concreto?

Dijiste:

Si, pero no se que debo cambiar y en donde lo debo de cambiar...

Razonado durante 15 segundos

Te explico paso a paso:

Ubica la carga del modelo:

Busca en tu código (o en la configuración de Pinokio) la línea en la que se usa la función from_pretrained para cargar el modelo. Esta es la parte que debes modificar.

Añade el parámetro de offload:

Si ya cargas el modelo con algo como:

python

Copiar

from transformers import AutoModelForCausalLM

model = AutoModelForCausalLM.from_pretrained("nombre-del-modelo", load_in_8bit=True)

entonces tienes que agregar el parámetro load_in_8bit_fp32_cpu_offload=True para que ciertos módulos se mantengan en 32 bits en la CPU y así liberar memoria en la GPU.

Configura la asignación de dispositivos:

Además, deberás pasar un device_map para indicar cómo distribuir los módulos entre CPU y GPU. La opción más sencilla es usar device_map="auto", lo que permite que la librería decida automáticamente. El código modificado quedaría:

python

Copiar

from transformers import AutoModelForCausalLM

model = AutoModelForCausalLM.from_pretrained(
"nombre-del-modelo",
load_in_8bit=True,
load_in_8bit_fp32_cpu_offload=True, # Este parámetro activa el offload de módulos a 32 bits en CPU
device_map="auto" # Permite que la librería asigne automáticamente CPU y GPU
)

Dónde hacer el cambio:

Si tu código es propio, edita la parte donde se realiza la carga del modelo (generalmente en el archivo principal o en un módulo específico de inicialización).

Si Pinokio gestiona internamente la carga, revisa si existe un archivo de configuración o un parámetro que puedas modificar para que incluya estos argumentos. Muchas veces estas aplicaciones tienen un archivo de configuración donde se pueden establecer parámetros para la carga del modelo.

Opcional: Control manual de la asignación:

Si necesitas más control sobre qué módulos van a CPU y cuáles a GPU, puedes definir un diccionario. Por ejemplo:

python

Copiar

device_map = {
"transformer.h.0": "cpu",
"transformer.h.1": "gpu",
# Añade o modifica las asignaciones según la estructura del modelo
}

Y usarlo de la siguiente forma:

python

Copiar

model = AutoModelForCausalLM.from_pretrained(
"nombre-del-modelo",
load_in_8bit=True,
load_in_8bit_fp32_cpu_offload=True,
device_map=device_map
)

Esto es útil si sabes exactamente qué partes del modelo necesitan más memoria o funcionan mejor en la CPU.

En resumen, lo único que debes cambiar es la llamada a from_pretrained para incluir los nuevos parámetros. La idea es que con estas modificaciones, los módulos que puedan ocupar mucha memoria en la GPU se transfieran a la CPU manteniendo su precisión en 32 bits, permitiendo que el modelo se cargue correctamente aunque la memoria de la GPU sea limitada.

¿Te queda alguna duda o necesitas más detalles en alguna parte del proceso?

Dijiste:

Creo que esperare al martes que me llegue la gtx 1070ti con 8gb de ram...

Razonado durante unos segundos

¡Perfecto! Esperar a tener tu nueva GTX 1070ti con 8GB de RAM puede facilitar mucho la carga y el procesamiento del modelo. Mientras tanto, si tienes alguna duda o problema con la configuración una vez que la recibas, no dudes en preguntar. ¡Suerte y que la tarjeta llegue pronto!

o3-mini-high

Buscar

Investigar a fondo

ChatGPT puede cometer errores. Comprueba la información importante.

?