Skip to content

Paradocsal/Cond2dReimagined

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

1 Commit
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Тестирование производительности ResNet-18 с прунингом

Описание

Скрипт tt_train.py проводит сравнительный анализ производительности модели ResNet-18 при различных уровнях прунинга каналов. Тест измеряет время прямого и обратного прохода при обучении, количество параметров модели и использование видеопамяти.

Логика теста

  1. Загрузка модели: Используется предобученная ResNet-18 из torchvision
  2. Преобразование сверток: Все Conv2d слои заменяются на Im2ColConv (реализация через im2col + матричное умножение)
  3. Прунинг каналов: Применяется L1-прунинг с заданными коэффициентами (0, 0.5, 0.9)
  4. Квантизация (опционально): Сверточные слои могут быть квантизированы в int8 формат
  5. Профилирование: Измеряется время прямого и обратного прохода для каждого батча
  6. Сбор метрик: Сохраняются средние значения времени, количество параметров и использование VRAM

Используемые параметры

  • Коэффициенты прунинга: [0, 0.5, 0.9] (0% - без прунинга, 50% и 90% каналов удаляется)
  • Размеры батчей: [1, 5, 10, 100]
  • Минимальное количество каналов: 2 (для стабильности)
  • Количество профилей: 5 (для статистической достоверности)
  • Прогонов на профиль: 100
  • Прогревов на профиль: 20
  • Количество классов: 1000
  • Квантизация: False (можно включить, установив use_quantization = True)

Оптимизатор и функция потерь

  • Оптимизатор: SGD с learning rate = 0.01, momentum = 0.9
  • Функция потерь: CrossEntropyLoss

Входные данные

  • Размер изображений: 224x224x3
  • Тип данных: Случайные тензоры (dummy data)
  • Метки: Случайные целые числа от 0 до 999

Выходные данные

Результаты сохраняются в текстовый файл training_results_YYYYMMDD_HHMMSS.txt со следующей информацией:

  • Параметры тестирования (timestamp, коэффициенты прунинга, размеры батчей и т.д.)
  • Сводная таблица результатов (среднее время прямого/обратного прохода, ускорение, параметры, VRAM)
  • Детальные результаты для каждой конфигурации (мин/макс/среднее время, индивидуальные прогоны)

Как воспроизвести результаты

Требования

pip install torch torchvision matplotlib

Запуск

python tt_train.py

Изменение параметров

Откройте файл tt_train.py и измените параметры в функции main():

prune_ratios = [0, 0.5, 0.9]      # Коэффициенты прунинга
batch_sizes = [1, 5, 10, 100]     # Размеры батчей
num_profiles = 5                   # Количество профилей
num_runs = 100                     # Прогонов на профиль
use_quantization = False           # Включить квантизацию int8

Воспроизводимость

Для воспроизводимости результатов используется torch.manual_seed(0). и torch.cuda.synchronize() в местах профилирования

Структура файлов

  • tt_train.py - основной скрипт с функциями прунинга и профилирования
  • profiler.py - классы для профилирования (ConvLayerProfiler, ResNet18Profiler)
  • conv_layers.py - реализации сверточных слоев (Im2ColConv, QuantizedIm2ColConv)

Метрики производительности

  • Время прямого прохода: Время выполнения forward pass
  • Время обратного прохода: Время выполнения backward pass
  • Общее время: Сумма прямого и обратного прохода
  • Ускорение: Отношение времени базовой модели (prune_ratio=0) к прунированной
  • Параметры: Общее количество параметров модели
  • VRAM: Использование видеопамяти (для CUDA устройств)

Примечания

  • Тест выполняется в режиме обучения (model.train())
  • Для точных измерений используется синхронизация CUDA (torch.cuda.synchronize())
  • Результаты включают статистику по всем сверточным слоям отдельно

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages