Квантування моделей на ноутбучному GPU з 6 ГБ пам'яті
Я намагався розмістити великі мовні моделі на ноутбучному GPU RTX 3050. Ця карта має лише 6 ГБ відеопам'яті (VRAM). Я хотів перевірити, які моделі працюють із 4-бітним квантуванням, а які — ні.
Я використав один скрипт для квантування трьох моделей:
- Phi-3.5-mini (3.8B)
- Llama-3.2-3B
- Qwen2.5-3B (VibeThinker)
Результати: Phi та Llama працювали добре. Розмір Phi зменшився з 7,6 ГБ до 2,2 ГБ за 34 хвилини. Llama та VibeThinker продемонстрували схожі результати. Ці моделі легко помістилися.
Потім я спробував Qwen2.5-7B. Процес завершився невдачею. Програма вилетіла на другому шарі з помилкою Out of Memory.
Чому це не спрацювало: Квантування GPTQ будує матрицю Гессе для кожного шару. Для моделі 7B ці обчислення потребують більше пам'яті, ніж надає карта на 6 ГБ. Я спробував кілька варіантів вирішення:
- Менші калібрувальні набори даних: без змін.
- Перенесення матриць Гессе на CPU: процес тривав довше, але все одно завершився помилкою.
- Використання AWQ замість GPTQ: помилка виникла в тому самому місці.
- Використання лише CPU: це працює, але занадто повільно. Це займає близько 16 хвилин на один шар.
Основні висновки для малих GPU:
- Очікуйте на 3-кратне зменшення розміру моделі.
- Орієнтуйтеся на ліміт у 3–4 мільярди параметрів для квантування на GPU.
- Стежте за обсягом KV-кешу. Навіть якщо розміри файлів схожі, обсяг пам'яті, що використовується під час інференсу, відрізняється.
- Квантування споживає більше пам'яті, ніж виконання (serving). Моніторте оперативну пам'ять (RAM) системи під час процесу.
Порівняння моделей (W4A16): • Phi-3.5-mini: 2,27 GB | 68,7 tok/s • Llama-3.2-3B: 2,26 GB | 66,0 tok/s • VibeThinker-3B: 2,07 GB | 43,9 tok/s
Після квантування всі три моделі правильно виконали базові математичні операції та логічні завдання з простими числами.
Додаткова спільнота для навчання: https://t.me/GyaanSetuAi