Optymalizacja Gemma 4 31B pod kątem limitów Kaggle: kwantyzacja i zarządzanie pamięcią
Model Gemma 4 31B w formacie float16 zajmuje 62 GB, co przekracza limit dysku Kaggle wynoszący 57,6 GB. Zadanie wymaga załadowania pełnej objętości, skwantyzowania do 4-bitowej reprezentacji (18 GB) i zapisania wyniku bez przekroczenia dostępnej przestrzeni. Rozwiązanie zrealizowano poprzez sekwencyjne umieszczenie w pamięci VRAM dwóch GPU T4 po 15 GB każda, wykorzystując device_map="auto" z biblioteki bitsandbytes z typem NF4.
Kwantyzacja uruchamiana jest równolegle z ładowaniem: wagi są kompresowane natychmiast po trafieniu do pamięci wideo, minimalizując szczytowe zużycie dysku.
Technika zwalniania przestrzeni: usuwanie pamięci podręcznej podczas pracy
Po pełnym załadowaniu modelu do pamięci VRAM stosuje się shutil.rmtree() do usunięcia folderu pamięci podręcznej Hugging Face. W systemie Linux jest to możliwe dla otwartych plików — przestrzeń staje się dostępna dla nowych operacji, chociaż du wskaże ją jako zajętą.
Proces:
- Model jest ładowany i kwantowany w pamięci.
- Oryginalne 62 GB są usuwane.
- Zwolnione miejsce jest wykorzystywane do wyprowadzenia 18 GB skwantowanych wag.
# Przykład strumieniowego wyprowadzania
model.push_to_hub("repo_id", safe_serialization=True)
To podejście pozwala obejść matematyczną barierę 62 + 18 = 80 GB.
Szczegóły implementacji na GPU T4
Biblioteka bitsandbytes rozdziela warstwy modelu między dwie karty T4. Kwantyzacja NF4 zmniejsza rozmiar 4-krotnie bez znaczącej utraty jakości dla zadań rozumienia kodu i generacji. Pełna sekwencja:
- Inicjalizacja z
device_map="auto". - Równoległa kwantyzacja fragmentów.
- Usunięcie pamięci podręcznej po przeniesieniu do VRAM.
- Bezpośrednia publikacja w repozytorium przez
push_to_hub.
Rezultat — model o objętości 18,3 GB, kompatybilny z konsumenckimi GPU.
Zalety metody dla MLOps
Technika ma zastosowanie do dużych modeli w ograniczonych środowiskach:
- Minimalne wymagania: Wystarczy darmowe Kaggle lub odpowiednik.
- Automatyzacja: Skrypt wykonuje się bez ręcznej interwencji.
- Zachowanie jakości: NF4 utrzymuje wydajność na poziomie float16 dla inferencji.
- Skalowalność: Łatwo dostosować do innych limitów (np. Colab).
Metoda nie wymaga klastrów A100 i działa na standardowym sprzęcie.
Co jest ważne
- Kwantyzacja NF4 przez
bitsandbytespozwala skompresować 62 GB do 18 GB w locie. - Usunięcie pamięci podręcznej Hugging Face z otwartymi plikami zwalnia dysk podczas pracy.
device_map="auto"rozkłada obciążenie na kilka GPU T4.- Bezpośrednie wyprowadzenie
push_to_hubeliminuje pośrednie zapisywanie. - Podejście nadaje się dla Gemma 4 31B i podobnych modeli powyżej 30B parametrów.
— Editorial Team
Brak komentarzy.