Мониторинг всей памяти, используемой веб-страницей: performance.measurememory()

Описание графиков

  • Использование памяти. Общая высота графика (16 ГБ в данном примере) представляет объем оперативной памяти, который может использоваться операционной системой. При этом, белое пространство над используемой памятью соответствует значению “Доступно” ниже графика.
  • Структура памяти

    используемая – память используется процессами, драйверами или оперативной системой;

    измененная – такую память можно освободить, но вначале содержимое из неё нужно записать на диск;

    зарезервированная – эту память диспетчер памяти зарезервировал для процессов, но пока они её не используют. А ещё сюда входит кэш;

    свободная – эта память будет отдаваться новым процессам в первую очередь.

    . График показывает соотношение между различными состояниями страниц памяти. Состояния страниц мы разбирали на прошлом уроке. На графике слева на право показана:

Получение информацию о компьютере

Для начала надо искать информа­цию о:

  • про­цес­сах;
  • ис­тории бра­узе­ра;
  • ис­тории запущен­ных команд в кон­соли.

Этих 3 пун­ктов хва­тит для опре­деле­ния направления даль­нейшей раз­ведки.

Процессы

Что­бы най­ти про­цес­сы, нам дос­таточ­но исполь­зовать коман­ду pstree. Есть еще pslist, но пер­вая коман­да удоб­нее, потому что показы­вает про­цес­сы в виде дерева — так нам­ного про­ще понять, на какие из них сто­ит обра­тить вни­мание.

1 $vol.py-fchallenge.vmem—profile Win10x64_18362 pstree

Ни­чего бро­сающе­гося в гла­за, вро­де pswd_manager.exe или not_a_virus.exe, не вид­но, поэто­му про­дол­жим нашу раз­ведку.

История браузера

Хоть в хин­те (см. первый скрин) и говори­лось, что «уда­лен­ный» не обя­затель­но зна­чит «бра­узер», мы про­верим этот век­тор. В Volatility есть готовый пла­гин для прос­мотра исто­рии Internet Explorer — iehistory. И не говорите, что им уже ник­то не поль­зует­ся!

1 $vol.py-fchallenge.vmem—profile Win10x64_18362 iehistory

Ко­ман­да работа­ла слиш­ком дол­го на моей машине (поряд­ка 20 минут) и завер­шать­ся не пла­ниро­вала. Это не счи­тает­ся нор­маль­ным поведе­нием для Volatility, сле­дова­тель­но, тут искать нечего.

Ес­ли вы подума­ете сос­тавлять задач­ки для CTF — имейте в виду, что задачи, в которых надо по пол­часа бру­тить извра­щен­ные пароли или искать неуло­вимый API endpoint, ник­то не любит, и сле­дующую задачу вам доверят делать еще не ско­ро.

Список команд в консоли

Есть еще одна удоб­ная фун­кция для про­вер­ки всех вве­ден­ных в кон­соль команд. Воз­можно, поль­зователь запус­кал что‑нибудь из кон­соли или хра­нил там важ­ные дан­ные (нап­ример, флаг). Про­верить все из кон­соли мож­но с помощью коман­ды cmdscan.

1 $vol.py-fchallenge.vmem—profile Win10x6_18362 cmdscan

Тут чис­то — сле­дова­тель­но, тер­минал тоже не при делах.

Полезный прием при анализе оперативной памяти

Пос­коль­ку до сих пор не наш­лось ничего инте­рес­ного — мы что‑то упус­тили. Мож­но при­менить еще один полез­ный при­ем при ана­лизе опе­ратив­ной памяти — пос­мотреть на скрин­шот рабоче­го сто­ла. Помога­ет он не силь­но час­то, но поз­воля­ет уви­деть более пол­ную кар­тину.

Сде­лать скрин­шот всех окон про­цес­сов в сис­теме мож­но с помощью коман­ды screenshot. Обя­затель­но нуж­но ука­зать сущес­тву­ющую конеч­ную дирек­торию, где будут находить­ся все сним­ки.

Важ­но понимать, что боль­шинс­тво кар­тинок будут пус­тыми: это свя­зано с тем, что не все окна вооб­ще могут отоб­ражать­ся (для луч­шего понима­ния рекомен­дую озна­комить­ся с до­кумен­таци­ей).

1 $vol.py-fchallenge.vmem—profile Win10x64_18362 screenshot-Dshot/

К сожале­нию, коман­да закан­чива­ется с ошиб­кой, так что этот трюк тоже не про­шел и нам сто­ит вер­нуть­ся к самому началу.

Описание значений

  • Используется (сжатая) — физическая память, используемая в настоящее время. Объем сжатой физической памяти указан в скобках. Про сжатие памяти тоже расскажу, но в следующих статьях.
  • Доступно — объем памяти, доступной для непосредственного использования операционной системой, процессами и драйверами. Равен суммарному размеру изменённой, зарезервированной и свободной памяти.
  • Выделено — это два числа, первое показывает сумму используемой физической памяти (оперативной + подкачки). Второе – сколько всего возможно выделить физической памяти в системе. Эти два числа равны значениям счетчиков производительности Committed Bytes и Commit Limit соответственно.
  • Кэшировано — сюда попадает некоторая информация, которая может потребоваться в будущем. Чем больше у вас свободной оперативной памяти, тем больше в кэш попадет такой информации. В текущий момент эти данные могут быть не нужны, но если понадобятся то из кэша их легче считать, чем с жёсткого диска. На графике “Структура памяти” кэш входит в зарезервированную память. И в качестве дополнительной информации: кэш можно посчитать сложив следующие счетчики производительности в категории Память: Cache Bytes, Modified Page List Bytes, Standby Cache Core Bytes, Standby Cache Normal Priority Bytes и Standby Cache Reserve Bytes.
  • Выгружаемый пул — размер выгружаемого пула.
  • Не выгружаемый пул — размер не выгружаемого пула.

Выгружаемый и не выгружаемый пулы представляют собой ресурсы памяти, которые операционная система и драйвера устройств используют для хранения своих данных. Эта память режима ядра, то есть обычные процессы, в эту память ничего не записывают. Выгружаемый пул можно поместить в файл подкачки, то есть выгрузить. А не выгружаемый нельзя.

Сводка

Имя статьи
Диспетчер задач и память

Описание
Диспетчер задач и память. В этом уроке я покажу вам как наблюдать за расходованием памяти используя встроенный «Диспетчер задач»

1.1 Индекс хранения

В дополнение к K, M, G, T и т. Д. Мы обычно используем KB, MB, GB, TB. Есть тонкие различия.

K, M, G, T основаны на 1024, тогда как KB, MB, GB, TB основаны на 1000. Однако, в целом, при оценке размера видеопамяти нам не нужно строго различать их.

В глубоком обучении используются разнообразные числовые типы.Представлением именования числовых типов обычно является TypeNum, например Int64, Float32, Double64.

Тип: Int, Float, Double и т. Д. Число: обычно 8, 16, 32, 64, 128, указывающее количество бит, занятых этим типом Обычно используемые числовые типы показаны ниже: Общие числовые типы

Среди них Float32 — наиболее часто используемый числовой тип в глубоком обучении, называемый числами с плавающей запятой одинарной точности. Каждое число с плавающей запятой одинарной точности занимает 4 байта видеопамяти.

Например: матрица 1000×1000, float32, тогда занятая видеопамять почти

1000x1000x4 Byte = 4MB

Четырехмерный массив 32x3x256x256 (BxCxHxW) занимает видеопамять: 24M

Бумажная работа

Работа эксперта-криминалиста лишь в малой части состоит из поиска и анализа улик. Заметная часть времени тратится на документирование процесса: это необходимо для того, чтобы найденные улики смогли быть представлены в суде в качестве вещественных доказательств.

Для того чтобы собранные улики превратились в твердую доказательную базу, эксперту приходится не только подробно документировать каждый свой шаг, но и быть готовым выступить в суде, доказывая обоснованность использования тех или иных методов и инструментов.

Использование программ для снятия образа оперативной памяти неизбежно оставляет следы в памяти компьютера. Сама программа занимает место в памяти, а раз так — какое-то количество оригинальных данных будет вытеснено (перезаписано). Поэтому нужно использовать программу с минимальным объемом занимаемой оперативной памяти, а сам факт частичной перезаписи содержимого требуется тщательно задокументировать. Еще совсем недавно суды отказывались принимать в качестве вещественных доказательств данные, которые были изменены в процессе их получения. Сейчас ситуация меняется: суды начинают понимать, что в некоторых случаях невозможно сделать омлет, не разбив яйцо.

Анализ работающего компьютера или исследование содержимого жесткого диска?

Как было сказано выше, анализ запущенной машины неизбежно влияет на содержимое оперативной памяти. Во многих случаях могут измениться и данные, записанные на жестком диске. И тем не менее в некоторых случаях специалисты не спешат выключать компьютер.

Когда же необходимо проводить анализ запущенного компьютера? Как правило, к такому анализу прибегают в случаях, когда на жестком диске компьютера не ожидают найти существенных улик, а вот исследование данных, доступных через открытые на компьютере сетевые соединения, способно принести заметные дивиденды.

При выключении компьютера теряется доступ к внешним сетевым ресурсам и VPN-сессиям. Если компьютер использовался как терминал, а реальные данные хранятся где-то на удаленном сервере, эксперту приходится анализировать технику вживую. С таким способом анализа связано большое количество рисков, а для его проведения требуется эксперт высочайшей квалификации (и разрешение суда). Соответственно, прибегают к исследованию запущенного компьютера нечасто.

Конфискуем компьютер

Поставим себя на место эксперта-криминалиста. Имеется работающий компьютер, нам нужно исследовать его содержимое. Наши действия?

До недавнего времени компьютер выключали (зачастую — просто обесточивали, чтобы не дать сработать программам, очищающим лог-файлы при завершении рабочей сессии), после чего из него извлекали все жесткие диски, которые подключали к устройству, блокирующему операции записи. С дисков снимали виртуальные образы, и уже с ними в спокойной обстановке работал эксперт.

С развитием технологии этот способ устарел. Вот, к примеру, какие рекомендации дает официальная инструкция ACPO (Association of Chief Police Officers) британским полицейским:

  • Провести оценку рисков. Есть ли необходимость и возможность снять копию эфемерных данных?
  • Если возможность существует, установить устройство для снятия слепка оперативной памяти (флешка, внешний диск и тому подобное).
  • Запустить программу для снятия образа памяти.
  • По завершении работы программы корректно остановить работу устройства.
  • Извлечь устройство, использованное для снятия образа памяти.
  • Проверить корректность сохраненного образа (для этого в обязательном порядке используется компьютер следователя, а не компьютер, который анализирует эксперт).
  • После проверки снятого образа немедленно перейти к процедуре выключения компьютера.

Анализ дампа оперативной памяти

Анализ памяти актуален в ситуации, когда есть или был физичес­кий дос­туп к компьютеру и была возможность снять дамп опе­ратив­ной памяти. По слепку оперативной памяти мож­но опре­делить, какие при­ложе­ния запус­кались во вре­мя работы компьютера, дан­ные про­цес­сов и получить другую полезную информацию. Все это можно сделать пока пользователь не вык­лючил или не перезаг­рузил компь­ютер.

Как правило, для ана­лиза оперативной памяти используют нес­коль­ко при­ложе­ний: Volatility, Memoryze и Autopsy (в связ­ке с Volatility). Существуют и другие менее популярные инструменты, но в рамках этой статьи рассматривать их не будем.

Вы спросите а как же Autopsy? Конечно, это удобный инструмент, который может одним нажатием кнопки сделать комплексный анализ всего дампа. Но, если речь идет о соревнованиях, тогда важна скорость получения результатов, поэтому лучше использовать, что-то другое. Мы для анализа оперативной памяти будем исполь­зовать Volatility.

Перейдем к заданию. У нас есть дамп опе­ратив­ной памяти и хеш MD5 для его про­вер­ки.

Capture The Flag Remote Password Manager

Скачиваем образ памяти на компьютер. В моем случае Kali Linux.

1 $wget https//ams3.digitaloceanspaces.com/justctf/69f7647d-2f7a-4604-b9f6-553c6bb447ee/challenge.tar.gz

Теперь распакуем слепок памяти:

1 $tar-xzvf challenge.tar.gz

И сра­зу же про­верим, что с ним все в поряд­ке:

1 $md5sum pub/challenge.vmem

Ес­ли хеш не сошел­ся с исходным хешем — при­дет­ся еще раз ска­чать архив.

Важно использовать последнюю версию Volatility. Чтобы не было проблем с профилями.  Если вы уже используете Volatility, я очень рекомен­дую обно­виться.

Что можно узнать о телефоне, положив его в морозилку

Забавное исследование провели немецкие ученые. При анализе оперативной памяти телефона под управлением операционной системы Android они использовали бытовую морозильную камеру (bit.ly/Xa9XXN).

Идея заморозитьтелефон связана с появлением в системе Android 4.0 возможности шифрования разделов. Эта функция не позволяет исследователю получить доступ к информации, записанной в заблокированном телефоне, без введения корректного пароля. Поскольку подбор пароля — дело длительное и неблагодарное, исследователи решили поискать способ обойти защиту.

Точно так же, как и в ставших уже привычными криптоконтейнерах, ключи для расшифровки записанных в телефоне данных хранятся в оперативной памяти устройства. Если бы существовала возможность извлечь эти ключи, исследователи смогли бы использовать их для расшифровки содержимого устройства.

Возможность снять образ оперативной памяти устройства под управлением Android существует: для этого телефон переводится в специальный отладочный режим fastboot; в память инсталлируется специальная программа, и образ оперативной памяти можно скачать через USB. Проблема здесь в том, что при перезагрузке телефона в отладочный режим содержимое оперативной памяти успевает обнулиться.

Чтобы замедлить процесс обнуления памяти, ученые положили телефон в морозилку, заморозив его до температуры –15 градусов. При такой низкой температуре ячейки памяти меняют состояние очень медленно. Соответственно, при выключении охлажденного телефона и моментальной его перезагрузке в отладочный режим содержимое оперативной памяти не успевает обнулиться. Эксперимент оказался удачным: исследователям удалось извлечь из телефона двоичные ключи, с помощью которых были зашифрованы разделы с пользовательскими данными.

Подробнее об этом эксперименте можно прочитать на сайте университета. Там же доступен пакет программ FROST, с помощью которого скачивается образ оперативной памяти и извлекаются крипто-ключи: bit.ly/Xa9XXN

Поиск и анализ фотографий

При ведении расследований, связанных с преступлениями на сексуальной почве, следователю важно узнать, какие изображения (фотографии) просматривал подозреваемый. Изучение жесткого диска помогает не всегда: интересующий следователя раздел может быть зашифрован, а в браузере может быть включен режим «приватности» (или «инкогнито» по версии Chrome)

Суть подобных режимов одинакова во всех браузерах: никакая информация о действиях пользователя в интернете на жесткий диск не попадает. Соответственно, при выключении компьютера (или закрытии браузера) все данные пропадают.

Тем не менее где-то эти данные все же хранятся, и в этой ситуации анализ слепка оперативной памяти тоже может помочь. Изображения ищутся методом сигнатурного поиска. Этот механизм очень похож на то, как работают антивирусы: для поиска изображений используется набор сигнатур, которые встречаются в том или ином графическом формате. Скажем, в начале всех файлов в формате JPEG встречается сигнатура JFIF. Обнаружив сигнатуру, алгоритм анализирует соседние байты данных. Если данные указывают на то, что обнаруженный фрагмент принадлежит файлу в известном программе формате, алгоритм рассматривает набор данных в качестве заголовка файла, вычисляя его размер и параметры. Остальное — дело техники.

Выглядит просто? Действительно, реализовать подобный алгоритм несложно, и именно им пользуется подавляющее большинство разработчиков криминалистических программ. Но здесь имеется не просто подводный камень, а целый огромный подводный риф. Дело в том, что Windows далеко не всегда хранит большие объемы данных в виде непрерывной последовательности. Вместо этого операционная система записывает данные в любые свободные страницы памяти — и далеко не факт, что страницы эти будут расположены последовательно. Стандартный алгоритм сигнатурного поиска может обнаружить заголовок файла, но его содержимое стандартными способами будет восстановить невозможно. Именно поэтому стандартный алгоритм называется «наивным».

На помощь криминалисту приходит набор эвристических алгоритмов, собирающих фотографии из множества небольших фрагментов по принципу мозаики. Такие алгоритмы реализованы в отечественном криминалистическом пакете Belkasoft Evidence Center, причем сложность их реализации такова, что альтернатив в настоящий момент просто не существует. Результат здесь гарантируется не всегда, а работают такие алгоритмы в десятки раз медленнее обычного сигнатурного поиска. Впрочем, результат того стоит — ведь тратится дешевое машинное время, а не ручная работа эксперта.

3.1 Рекомендация

Время дороже. Сделайте модель как можно быстрее (уменьшив количество флопов). Использование памяти не прямо пропорционально размеру пакета. Параметры модели и ее расширенные данные также занимают память. Чем больше размер пакета, тем быстрее скорость может не быть. Когда вы в полной мере используете вычислительные ресурсы, увеличение размера пакета очень ограничено по скорости. Особенно в пакетном режиме, при условии, что блок обработки графического процессора был полностью использован: Увеличение размера пакета может увеличить скорость, но она очень ограничена (главным образом, оптимизация параллельных вычислений). Увеличение размера пакета может замедлить градиентные колебания, требуя меньше времени оптимизации итерации и большей сходимости Быстро, но каждая итерация занимает больше времени. Увеличение размера пакета уменьшает количество оптимизаций, которые эпоха может выполнить, и конвергенция может быть медленнее, что требует большего времени для конвергенции (например, batch_size становится общим числом выборок).

1.2 Занятость памяти нейронной сети

Память, занимаемая моделью нейронной сети, включает в себя:

Собственные параметры модели Вывод модели Например, для полностью подключенной сети, как показано на следующем рисунке (без учета смещенного члена b) Ввод и вывод модели и параметры

Использование памяти модели включает в себя:

Параметры: 2D массив W Выход модели: 2D массив Y Вход X может рассматриваться как выход верхнего уровня, поэтому его использование памяти относится к верхнему уровню.

Кажется, что использование памяти составляет два массива W и Y?

неправда! ! !

Ниже приведен подробный анализ.

1.2.1 Использование памяти параметрами

Только слой с параметрами будет занят видео памятью. Эта часть заполнения видеопамяти не имеет ничего общего со входом, она будет занята после загрузки модели.

Слои с параметрами в основном включают в себя:

Свертывание Полностью подключенный слой BatchNorm Embedded … Слой без параметров:

Большая часть пула слоя активации (Sigmoid / ReLU) Dropout … Более конкретно, число параметров модели (термин смещения b здесь не рассматривается) равен:

Линейный (M-> N): Количество параметров: M × N Conv2d (Cin, Cout, K): Количество параметров: Cin × Cout × K × K BatchNorm (N): Количество параметров: 2N Вложение (N, W): Параметры Номер: N × W

Занятость параметров = количество параметров × n n = 4 :float32 n = 2 : float16 n = 8 : double64

В PyTorch, когда вы выполняете model = MyGreatModel (). Cuda (), он будет занимать соответствующую видеопамять. Занятая видеопамять в основном такая же, как и в упомянутой выше памяти анализа (она будет немного больше из-за других затрат).

1.2.2 Занятие в памяти градиента и импульса

Например, если оптимизатором является SGD: Wt+1=Wt?α?F(Wt) Видно, что в дополнение к W также сохраняется соответствующий градиент? F (W), поэтому заполнение видеопамяти равно параметру занятой видеопамяти x2,

Если это с Momentum-SGD vt+1=ρvt+?F(Wt) Wt+1=Wt?αvt+1 В настоящее время необходимо сохранить импульс, поэтому объем памяти равен x3 Если это оптимизатор Адама, импульс занимает больше видеопамяти, х4

Подводя итог, можно сказать, что занятость видеопамяти, не относящаяся к входу в модель, включает параметрыW Градиент dW (обычно совпадает с параметром) Импульс оптимизатора (обычный SGD не имеет импульса, импульс импульс-SGD такой же, как градиент, а величина импульса оптимизатора Adam в два раза больше градиента)

1.2.3 Занятость памяти ввода и вывода

Эта часть видеопамяти в основном зависит от формы выходной карты объектов. feature map

Например, вход и выход свертки удовлетворяют следующему соотношению: Основываясь на этом, можно вычислить форму выходного сигнала Тензора из каждого слоя, а затем рассчитать соответствующее использование памяти.

Потребление памяти на выходе модели суммируется следующим образом:

Вам необходимо вычислить форму карты объектов каждого слоя (форму многомерного массива). Объем памяти, выделенный для выходных данных модели, пропорционален размеру пакета. Градиент, соответствующий выходным данным, должен быть сохранен для обратного распространения (правило цепочки). В выходных данных модели не требуется сохранять соответствующий импульс Информация (поскольку оптимизация не требуется) Использование памяти нейронной сети при глубоком обучении позволяет получить следующую формулу:

Видно, что видеопамять не прямо пропорциональна размеру пакета, особенно когда сама модель более сложная: например, полное соединение большое, а уровень Embedded большой

Также обратите внимание:

Входы (данные, изображения) обычно не должны рассчитывать градиент.Каждый слой ввода и вывода нейронной сети необходимо сохранить для обратного распространения, но в некоторых особых случаях мы не можем сохранить входные данные. Например, ReLU в PyTorch использует nn.ReLU (inplace = True) для непосредственного сохранения вывода функции активации ReLU на входе модели, сохраняя много видеопамяти. Заинтересованные читатели могут подумать о том, как сделать обратное распространение в это время (подсказка: y = relu (x) -> dx = dy.copy (); dx = 0)

Отслеживание выделений с инструментами

Инструментальное приложение всегда является хорошей начальной точкой для того, чтобы сделать любой вид анализа эффективности. Инструменты являются интегрированной средой сбора данных, использующей специальные модули (названный инструментами) для сбора всех видов информации о процессе. Инструменты могут воздействовать на двоичный файл поставки Вашего приложения — Вы не должны компилировать специальные модули в свое приложение для использования его. Библиотека Инструментального приложения содержит четыре модуля, которые специально разработаны для сбора связанных с памятью данных. Эти модули следующие:

  • Инструмент ObjectAlloc записывает и выводит на экран историю всех выделений памяти начиная с запуска Вашего приложения.

  • Инструмент Утечек ищет выделенную память, на которую больше не ссылается код Вашей программы; посмотрите.

  • Инструмент Общей памяти контролирует открытие и расцепление областей общей памяти.

  • Инструмент Монитора памяти измеряет и записывает полное использование памяти системы.

Можно добавить любые из этих инструментов к единственному документу трассировки и собрать данные для каждого из них одновременно. Способность собрать данные одновременно позволяет Вам коррелировать информацию от одного инструмента с другими. Например, инструмент Утечек часто объединяется с инструментом ObjectAlloc так, чтобы можно было и отследить выделения и узнать, которые были пропущены.

После собирающихся данных для Вашего приложения необходимо проанализировать его. Следующие разделы обеспечивают подсказки относительно того, как проанализировать данные с помощью нескольких из связанных с памятью инструментов. Для получения информации о том, как использовать инструмент Утечек, посмотрите.

Отслеживание Выделений памяти С malloc_history

В OS X, инструмент выводит на экран данные следа, показывающие точно, где Ваша программа выполнила вызовы к и функции. Если Вы указываете адрес при вызове , инструмент отслеживает выделения памяти, происходящие в том адресе только. Если Вы указываете или опции, инструмент выводит на экран все выделения, собирая в группу частые выделения.

Перед использованием инструмент на Вашей программе, необходимо сначала активировать malloc опции журналирования библиотеки путем установки к . Можно также хотеть установить переменная окружения для сохранения информации об освобожденных блоках. Для получения дополнительной информации об этих переменных посмотрите .

инструмент лучше всего используется в ситуациях, где необходимо найти предыдущего владельца блока памяти. Если Вы решаете, что определенные данные так или иначе становятся поврежденными, можно поместить, зарегистрировался коде для печати адреса блока, когда происходит повреждение. Можно тогда использовать узнать, кто владеет блоком и идентифицирует любые устаревшие указатели.

инструмент также подходит для ситуаций, где не могут использоваться Сэмплер или MallocDebug. Например, Вы могли бы использовать этот инструмент от удаленного компьютера или в ситуациях, где Вы хотите минимальное влияние на поведение Вашей программы.

2.3 Уменьшить количество вычислений сверточного слоя

MobileNet, предложенная Google в этом году, использует технологию DepthWise Convolution для увеличения скорости нейронных сетей, основная идея которой — разделить операцию свертки на комбинацию из двух относительно простых операций. Как показано на рисунке, слева — исходная операция свертки, а справа — комбинация двух специальных и простых операций свертки (приведенная выше аналогична операции объединения, но вес такой же, а следующая аналогична полностью подключенной операции). Depthwise Convolution

Эта операция делает:

Увеличение использования памяти(Вывод каждого шага должен быть сохранен)Гораздо меньше расчет, Становится оригинальной 1Cout + 1k2 (обычно 10-15% от оригинала)

1.3 Способы сохранения видеопамяти

При глубоком обучении вывод свертки и других слоев обычно занят больше всего, память, занимаемая параметрами модели, относительно мала и не очень оптимизирована.

Как правило, существуют следующие способы сохранения видеопамяти:

Уменьшить размер партии понижающая выборка (NCHW -> (1/4) * NCHW) Уменьшить полностью связанный уровень (как правило, только последний полностью связанный уровень для классификации)

2 Расчетный анализ

Определение объема вычислений упоминалось ранее: чем больше объем вычислений, тем больше времени занимает операция и тем больше времени требуется для запуска нейронной сети.

Рейтинг
( Пока оценок нет )
Editor
Editor/ автор статьи

Давно интересуюсь темой. Мне нравится писать о том, в чём разбираюсь.

Понравилась статья? Поделиться с друзьями:
Работатека
Добавить комментарий

;-) :| :x :twisted: :smile: :shock: :sad: :roll: :razz: :oops: :o :mrgreen: :lol: :idea: :grin: :evil: :cry: :cool: :arrow: :???: :?: :!: