Два способа легко оценить углеродный след моделей машинного обучения и 17 идей, как его уменьшить

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

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

Статья построена следующим образом:

  1. Во-первых, мы рассмотрим некоторые конкретные примеры выбросов углерода в результате машинного обучения.
  2. Затем я представлю два инструмента, которые можно использовать для оценки углеродного следа модели машинного обучения.
  3. В разделе 3 я представлю 17 идей о том, как вы можете уменьшить углеродный след своей работы, связанной с машинным обучением.
  4. Наконец, я представлю некоторые соображения по устойчивости машинного обучения, которые здесь не рассматриваются напрямую, но, тем не менее, важны.

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

1. Воздействие науки о данных и машинного обучения на окружающую среду

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

Я буду использовать термин «углеродный след» для обозначения количества выбросов CO₂e, где «e» означает «эквиваленты». Поскольку другие газы, такие как метан, закись азота или даже водяной пар, также обладают согревающим эффектом, стандартизированная мера для описания того, насколько нагревается данное количество газа, часто для упрощения приводится в CO₂-эквивалентах (CO₂e).

Насколько мне известно, на момент написания этой статьи не существовало отчетов, в которых пытались бы оценить общий углеродный след машинного обучения как области. Недавно этот вывод был поддержан автором [1].

Тем не менее, было предпринято несколько попыток оценить общее потребление электроэнергии мировой индустрией центров обработки данных. Оценки глобального потребления энергии центрами обработки данных, представленные в 2015 и 2016 годах, варьировались от 3 до 5 % мирового потребления электроэнергии [2][3]. Совсем недавно некоторые центры обработки данных утверждали, что на них приходится 1% мирового потребления электроэнергии [4][5]. Изучив некоторую литературу по этой теме, у меня сложилось впечатление, что оценка в 1 % более точна, чем оценка в 5 %.

Если мы посмотрим на потребление энергии от машинного обучения на организационном уровне, Google говорит, что 15% от общего энергопотребления компании пошло на вычисления, связанные с машинным обучением, в исследованиях, разработках и производстве [6]. По оценкам NVIDIA, 80–90% рабочей нагрузки машинного обучения приходится на обработку логических выводов [7]. Точно так же Amazon Web Services заявили, что 90% потребностей в машинном обучении в облаке приходится на логические выводы [8]. Это намного выше оценок, выдвинутых неназванным крупным поставщиком облачных вычислений в недавнем отчете ОЭСР [1]. По оценкам этого провайдера, от 7 до 10 % общих расходов корпоративных клиентов на вычислительную инфраструктуру приходится на приложения ИИ, при этом 3–4,5 % используются для обучения моделей машинного обучения и 4–4,5 % тратятся на логические выводы.

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

В таблице 1 представлен обзор предполагаемого энергопотребления и углеродного следа некоторых больших языковых моделей. Углеродный след варьируется от 3,2 тонны до 552 тонн CO₂e. Теперь вы можете заметить, что энергопотребление PaLM значительно больше, чем у GPT-3, хотя предполагаемый углеродный след GPT-3 более чем в два раза больше, чем у PaLM. Вероятно, это связано с различиями в углеродоемкости электричества, используемого для обучения моделей. Чтобы представить углеродный след этих больших языковых моделей в перспективе, средний американец производит 16,4 тонны выбросов CO₂e в год [9], а средний датчанин производит 11 тонн выбросов CO₂e [10]. Таким образом, углеродный след GPT-3 примерно равен ежегодному углеродному следу 50 датчан.

Глядя на несколько примеров углеродного следа выполнения вывода с языковыми моделями, Facebook подсчитал, что углеродный след их универсальной языковой модели на основе Transformer для перевода текста преобладает на этапе вывода с использованием гораздо более высоких ресурсов вывода (65%). по сравнению с тренировкой (35%) [40]. Средний углеродный след для задач обучения машинному обучению в Facebook в 1,8 раза больше, чем у Meena, используемого в современных диалоговых агентах, и в 0,3 раза больше, чем у GPT-3.

BLOOM, языковая модель с открытым исходным кодом от BigScience, потребляла 914 кВтч электроэнергии и выбрасывала 360 кг в течение 18 дней, обрабатывая 230 768 запросов, что соответствует примерно 1,56 г CO₂e на запрос [41].

Эти большие языковые модели являются крайними случаями с точки зрения их углеродного следа, и очень немногие специалисты по данным когда-либо будут заниматься обучением таких больших моделей с нуля. Итак, давайте теперь рассмотрим случай, который, вероятно, ближе к повседневной жизни большинства специалистов по данным и инженеров машинного обучения. Недавно я обучал Модель трансформатора для прогнозирования временных рядов в течение 3 часов на графическом процессоре во Франкфурте. Это потребляло 0,57 кВтч электроэнергии и имело углеродный след в 340 граммов CO₂e, что соответствует примерно 0,003% годового углеродного следа одного датчанина.

Исторически объем вычислений, необходимых для получения современных результатов, удваивался каждые 3,4 месяца [12], поэтому проблема может усугубляться — беспокойство, которое отражено в [13] — хотя некоторые ожидают, что потребление энергии уменьшится из-за алгоритмических и аппаратные усовершенствования [6].

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



2. Как оценить углеродный след модели машинного обучения

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

Углеродный след = E * C

где E — количество единиц электроэнергии, израсходованных во время некоторой вычислительной процедуры. Это может быть выражено в киловатт-часах (кВтч). C – это количество CO₂e, выбрасываемого при производстве одной из указанных единиц электроэнергии. Это может быть выражено в килограммах CO₂e, выбрасываемого на киловатт-час электроэнергии, и иногда называется углеродоемкостью электричества. Углеродоемкость варьируется в зависимости от географического региона, поскольку источники энергии различаются между регионами. В одних регионах много возобновляемой энергии, в других меньше. Учитывая это уравнение, теперь мы можем видеть, что любой инструмент, который оценивает углеродный след некоторой вычислительной процедуры, должен измерять или оценивать E и C.

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

  1. Инструменты для оценки углеродного следа на основе оценокE (потребления энергии)
  2. Инструменты для оценки углеродного следа на основе измерений E (потребления энергии)

В этом посте мы подробнее рассмотрим два таких инструмента:

  1. ML CO2 Impact, который основан на оценкахE и, таким образом, попадает в категорию 1 выше.
  2. CodeCarbon, который основан на измерении E и поэтому попадает в категорию 2 выше.

Обратите внимание, что другие программные пакеты, например. carbontracker [14] и experiment-impact-tracker [15] предоставляют функции, аналогичные CodeCarbon, но я решил сосредоточиться на CodeCarbon, поскольку этот пакет постоянно обновляется. и расширен, в то время как самые последние коммиты в carbontracker и experiment-impact-tracker были сделаны давно.

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

2.1. Оценка углеродного следа модели машинного обучения с помощью ML CO2 Impact

Бесплатный веб-инструмент ML CO2 Impact [16] оценивает углеродный след модели машинного обучения, оценивая потребление электроэнергии процедурой обучения. Чтобы получить оценку углеродного следа с помощью этого инструмента, все, что вам нужно сделать, это ввести следующие параметры:

  1. Тип оборудования (например, A100 PCIe 40/80 ГБ)
  2. Количество часов использования оборудования
  3. Какой облачный провайдер использовался
  4. В каком облачном регионе выполнялись вычисления (например, «europe-north1»)

Затем инструмент выводит, сколько килограммов CO₂e выбрасывает ваша модель машинного обучения. Он рассчитывается как:

Потребляемая мощность * Время * Произведенный углерод на основе местной энергосистемы, например:

250 Вт x 100 ч = 25 кВтч x 0,56 кг экв. CO2/кВтч = 14 кг CO₂e

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

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

Недостатком такого инструмента, как ML CO2 Impact, является то, что он опирается на оценки потребления энергии, что, естественно, означает, что его оценки углеродного следа могут быть неточными. На самом деле, такие инструменты могут отличаться на коэффициент 2,42, как показано на Рисунке 1 ниже.

2.2. Оценка углеродного следа модели машинного обучения с помощью CodeCarbon

CodeCarbon [18] — это программный пакет, доступный для Python среди других языков, и его можно установить, запустив pip install codecarbon из командной строки. CodeCarbon вычисляет углеродный след вашего кода следующим образом:

С фиксированными интервалами, т.е. 15 секунд, CodeCarbon напрямую измеряет потребление электроэнергии GPU, CPU и RAM, на которых выполняется ваш код. Обратите внимание, что CodeCarbon работает как на вашем локальном компьютере, так и на облачных компьютерах. Пакет также отслеживает продолжительность выполнения вашего кода и использует эту информацию для расчета общего потребления электроэнергии вашим кодом. Затем CodeCarbon извлекает информацию об углеродоемкости электричества в географическом местоположении вашего оборудования. Если вы тренируетесь в облаке, CodeCarbon автоматически получает информацию о местонахождении вашего облачного экземпляра. Затем углеродоемкость электроэнергии умножается на количество электроэнергии, потребляемой кодом, чтобы получить оценку общих выбросов углерода от электроэнергии, потребляемой кодом.

Инструмент можно использовать в вашем коде несколькими способами. Один из способов — инициализировать объект трекера. Когда объект трекера остановлен, поведение CodeCarbon по умолчанию заключается в сохранении результатов в файл .csv, который будет содержать информацию о том, сколько электроэнергии в кВтч потребил ваш код и сколько CO₂e в кг было выделено при этом электричестве. Вместо записи в файловую систему информацию можно отправить в регистратор [30]. Предположим, у вас есть функция train_model(), которая выполняет обучение модели, тогда вы можете использовать CodeCarbon следующим образом:

Другой способ — использовать CodeCarbon в качестве менеджера контекста следующим образом:

Наконец, CodeCarbon можно использовать как декоратор функции:

Обратите внимание, что если аргумент конструктора log_level установлен по умолчанию, CodeCarbon будет печатать несколько строк текста каждый раз, когда он пингует ваше оборудование на предмет энергопотребления. Это быстро заглушит другую информацию, которая может быть вам интересна для просмотра в вашем терминале во время обучения модели. Если вы вместо этого установите log_level="error", CodeCarbon будет печатать на терминал только в случае возникновения ошибки.

Также можно визуализировать потребление энергии и выбросы, и инструмент также может рекомендовать области облаков с более низкой интенсивностью углерода [19].

2.2.1. Дополнительная информация о методологии CodeCarbon

Интенсивность выбросов углерода (C) представляет собой средневзвешенное значение выбросов, произведенных источниками энергии (например, углем, ветром), используемыми в энергосистеме, в которой выполняется расчет. Это означает, что углеродный след, о котором сообщает CodeCarbon, является не фактически углеродным следом, а оценочным. Углеродоемкость электричества меняется в течение дня, поэтому более точным подходом к вычислению углеродного следа будет использование углеродоемкости электричества в реальном времени. Источники энергии, которые используются в местной энергосистеме, называются энергетическая смесь. Пакет предполагает одинаковую углеродоемкость источника энергии независимо от того, где в мире производится энергия, то есть углеродоемкость угля считается одинаковой, например, как в Японии, так и в Германии. Всем возобновляемым источникам энергии приписывается углеродоемкость 0.

Потребляемая мощность (E) измеряется в кВтч и получается путем отслеживания подачи питания на оборудование через частые интервалы времени. По умолчанию — каждые 15 секунд, но его можно настроить с помощью аргумента конструктора measure_power_secs.



3. Как уменьшить углеродный след ваших моделей машинного обучения

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

В дальнейшем я иногда буду различать углеродный след от обучения модели машинного обучения и углеродный след от использования модели машинного обучения. Первое будет называться «обучение модели» или «разработка модели». Последнее будет называться этапом «операций» жизненного цикла модели машинного обучения или использованием модели для вывода.

Я также хочу отметить, что я намеренно не касаюсь углеродных зачетов. Это не потому, что я против зачетов, а потому, что я хочу сосредоточиться на сокращении выбросов углерода за счет устранения. Ознакомьтесь с замечательным докладом Асима Хуссейна о терминологии углеродного следа, чтобы узнать больше о различиях между компенсацией и устранением [20].

3.1. Начните оценивать след своей работы

Первая рекомендация проста и касается не того, как вы можете уменьшить воздействие одной модели, а того, как вы можете уменьшить воздействие своей работы в целом: начните оценивать углеродный след ваших моделей. Если вы это сделаете, вы сможете учитывать эту информацию при выборе модели. Недавно я оказался в ситуации, когда моя лучшая модель получила MAE на 13 % ниже, чем вторая лучшая модель, но в то же время лучшая модель имела углеродный след, который был примерно на 9000 % больше. Должны ли вы обменять уменьшение ошибки модели на значительное увеличение углеродного следа? Что ж, это, очевидно, очень зависит от контекста, и, в конечном итоге, это, вероятно, должен решить бизнес на основе данных, предоставленных вами, специалистом по данным или инженером по машинному обучению.

3.2. Укажите примерный бюджет углеродного следа

Бюджет веса страницы — это термин из веб-разработки. Бюджет веса страницы указывает, сколько веб-сайту разрешено «весить» в килобайтах файлов. В частности, это размер файлов, передаваемых через Интернет при загрузке веб-страницы [21]. Важно, чтобы бюджет веса страницы был указан до начала разработки, и бюджет должен служить путеводной звездой во всем процессе от дизайна до реализации.

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

3.3. Не стройте спортивную машину, если скейтборд может доставить вас туда, куда вы хотите.

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

Когда вы начинаете новый проект, начните с расчета разумной, но дешевой базовой линии. Для прогнозирования временных рядов такой базой может быть использование значения t-n (n может быть равно 24, если ваши данные имеют почасовое разрешение и проявляют ежедневную сезонность) в качестве прогнозируемого значения для t. При обработке естественного языка разумной базой может быть некоторая эвристика, реализованная в виде регулярного выражения. А в регрессии хорошей базовой линией может быть использование среднего значения вашей целевой переменной, потенциально сгруппированной по какой-либо другой переменной.

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

3.3. Проверьте, что произойдет, если вы станете меньше

Если вы решите, что архитектура нейронной сети подходит для вашей задачи, не выбирайте вслепую размерность слоя прямой связи 2048, потому что это то, что делают исследовательские работы. Недавно мне удалось превзойти большую модель по точности с помощью модели с очень маленькими слоями (менее 256 нейронов в каждом слое, иногда намного меньше). У двух моделей было одинаковое количество и типы слоев — только у одной были очень маленькие слои. Помимо того, что он был более точным, он также был быстрее во время вывода.

3.4. Тренируйте модели гдеэнергия чище

Если вы используете облачного провайдера, такого как Google Cloud, AWS или Azure, вы можете выбрать, в каком регионе выполнять свою вычислительную процедуру. Исследования показали, что выбросы можно сократить до 30 раз, просто проведя эксперименты в регионах, где используется больше возобновляемых источников энергии [22]. В таблице 2 ниже показано, сколько кг эквивалента CO2 выбрасывается при использовании 100 часов вычислений на графическом процессоре A100 на платформе Google Cloud Platform в различных регионах. Понятно, что углеродоемкость электричества сильно различается между регионами.

3.5. Тренируйте модели, когдаэнергия чище

Углеродоемкость электроэнергии может меняться день ото дня и даже от часа к часу, как показано на рисунках 2 и 2 ниже, которые показывают средний углеродный след в г/кВтч для каждого часа дня и каждого дня недели соответственно в восточная Дания в период с 1 января 2022 г. по 7 октября 2022 г. Вопреки распространенному мнению, эти данные показывают, что электричество чище около полудня, чем ночью.

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

3.6. Оптимизация гиперпараметров для энергопотребления и точности модели

Когда вы запускаете процедуру оптимизации гиперпараметров, вы можете определить задачу оптимизации с двумя целями, в которой вы оптимизируете точность модели и потребление энергии. Это уменьшит энергопотребление модели и, следовательно, ее углеродный след на этапе эксплуатации. Это было сделано Дерчински и др. [23], которые определили комбинированную меру недоумения (метрика точности в НЛП) и энергопотребления в задаче моделирования маскированного языка с использованием архитектуры Transformer и байесовской оптимизации гиперпараметров. Чтобы определить модели, которые нельзя было оптимизировать дальше, не жертвуя сложностью или потреблением энергии, они определили оптимальные по Парето модели. Они обнаружили, что наиболее важными параметрами оказались количество скрытых слоев, функция активации и тип встраивания позиции.

3.7. Помните о своей функции активации

Выбор функции активации может сильно повлиять на время, необходимое вашей модели для обучения. Как видно на рис. 4 ниже, Дерчински [24] продемонстрировал, что время, необходимое для обучения модели классификации изображений на наборе данных MNIST с точностью 90 %, варьировалось от нескольких секунд до более чем 500 секунд. Помимо демонстрации того, что выбор функции активации влияет на время обучения, Дерчински также обнаружил, что

  1. выбор функции активации, по-видимому, имеет больший эффект в ситуациях, когда вывод выполняется для меньших наборов за раз
  2. приложения должны быть проанализированы и настроены на целевом оборудовании, если вы хотите избежать особенно дорогостоящих функций активации

3.8. Перегонка больших моделей

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

Одним из примеров очищенной предварительно обученной языковой модели является DistilBERT. По сравнению со своей недистиллированной версией BERT, DistilBert на 40 % меньше по количеству параметров и на 60 % быстрее в выводе, сохраняя при этом 97 % понимания языка по измерению GLUE [25]. Дистилляция модели также успешно применялась для распознавания изображений [26], и я рискну предположить, что ее можно использовать и в других областях, например, при прогнозировании временных рядов с помощью нейронных сетей.

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

3.9. Не бросайте вслепую больше вычислений для решения вашей проблемы

Я полагаю, что большинство из нас интуитивно подумает, что сокращение времени выполнения какой-либо процедуры уменьшает ее углеродный след. Насколько я понимаю, это тот случай, когда вы ускоряете свой код, просто написав лучший код, который выполняется быстрее. Однако ускорение ваших программ за счет увеличения вычислительной мощности лишь в определенной степени сделает их более экологичными — по крайней мере, согласно результатам исследования, из которого взят рис. 5 [27].

Авторы измерили время обработки и углеродный след при запуске моделирования физики элементарных частиц на процессоре с различным количеством ядер. Их результаты показаны на рис. 5. Зеленая линия показывает время выполнения, т. е. сколько времени потребовалось для запуска моделирования. Оранжевой линией показан углеродный след от запуска моделирования. Стоит отметить, что когда они удвоили количество ядер ЦП, используемых в моделировании, с 30 до 60, время выполнения почти не уменьшилось, а углеродный след увеличился с примерно 300 г CO₂-экв. до более чем 450 г CO₂-экв.

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

3.10. Преждевременно прекратите обучение модели, если ваша модель работает неэффективно или стабилизируется

Еще одна вещь, которую вы можете сделать, чтобы уменьшить свой углеродный след, — убедиться, что вы не тратите ресурсы на обучение модели, которая либо не сходится, либо уже сходится и, вероятно, не будет улучшаться дальше. Инструментом для достижения этой цели является модуль ранней остановки от pytorchtools [28] Бьярте Сунде. Он очень прост в использовании. Вы создаете объект EarlyStopping и после каждой эпохи передаете средние потери модели объекту вместе с моделью. Если потеря улучшилась, объект EarlyStopping создает контрольную точку модели, что означает, что он сохраняет параметры модели в данную эпоху. Если потеря не улучшилась в течение нескольких эпох, определенных с помощью аргумента конструктора терпение, цикл обучения завершается.

3.11. Не используйте поиск по сетке для настройки гиперпараметров

Гиперпараметры являются «раздражающими» [29, с. 7], но очень важные ручки, управляющие поведением обучающего алгоритма. Они оказывают значительное влияние на производительность вашей модели машинного обучения и поэтому должны быть тщательно настроены. Один из способов сделать это — указать набор гиперпараметров, чтобы опробовать и обучить модель возможной комбинации в наборе. Это называется поиском по сетке и требует больших вычислительных ресурсов для больших сеток, поскольку модель обучается для каждой возможной комбинации. К счастью, существуют более эффективные подходы, такие как случайный поиск и байесовская оптимизация. Помимо того, что они более эффективны с точки зрения вычислений, они также продемонстрировали более высокую производительность модели [30]. Hyperopt [31], Bayesian Optimization [32] и Ray Tune [33] — это некоторые пакеты Python, которые позволяют выполнять эффективную настройку гиперпараметров.

3.12. Тренируйтесь в специализированном дата-центре

Облачные центры обработки данных могут быть в 1,4–2 раза более энергоэффективными, чем обычные центры обработки данных, а специальное оборудование для машинного обучения может быть в 2–5 раз более эффективным, чем готовые системы. Например, специальный процессор Google TPU v2 потреблял в 1,3 раза и в 1,2 раза меньше энергии для обучения некоторых больших языковых моделей по сравнению с процессором Nvidia Tesla P100. [17]. Использование высокоэффективных центров обработки данных уменьшит углеродный след как на этапе разработки, так и на этапе эксплуатации.

3.13. Отладка на небольших примерах

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

3.14. По возможности используйте предварительно обученные языковые модели.

Это не проблема. Не обучайте большие языковые модели с нуля, если в этом нет крайней необходимости. Вместо этого настройте те, которые уже доступны, например, через Huggingface [34]. Как скандинав и фанат открытого исходного кода, я хочу выразить признательность моему коллеге по совету Дэну Саатрупу ScandEval, который оценивает большое количество моделей скандинавского языка с открытым исходным кодом [35].

3.15. Сделайте вашу услугу доступной только в определенное время

В недавней статье предполагается, что энергопотребление облачного экземпляра, на котором развернута крупноязыковая модель, относительно велико, даже если модель не обрабатывает активно запросы [41]. Поэтому подумайте, должен ли ваш сервис быть доступен 24/7/365 или его можно иногда отключать. Если, например, вы разработали службу на основе машинного обучения для внутреннего использования в организации, вы можете в некоторых случаях обоснованно ожидать, что никто не будет пользоваться этой службой ночью. Таким образом, вычислительный ресурс, на котором работает служба, может быть отключен в течение нескольких часов ночи и снова запущен утром.

3.16. Используйте редко активируемые нейронные сети

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

Большие, но редко активируемые DNN могут потреблять ‹1/10 энергии больших, плотных DNN без ущерба для точности, несмотря на использование такого же или даже большего количества параметров [17, p.1]

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





3.17. Переместите данные в решение для хранения данных с низким энергопотреблением

Конечно, это не рекомендация, относящаяся к моделям машинного обучения, а идея о том, как вы можете уменьшить углеродный след всего вашего приложения. Некоторые решения для хранения данных более энергоэффективны, чем другие. AWS Glacier — пример эффективного решения для архивирования данных [37, ~02:50]. Извлечение данных из такого решения, как AWS Glacier, занимает некоторое время, но оно более энергоэффективно, чем более быстрые решения для хранения.

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

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

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

Кроме того, углеродный след — не единственный фактор, связанный с экологической устойчивостью машинного обучения — или, если уж на то пошло, ИТ-индустрии в целом — который заслуживает внимания.

Другие соображения включают оценку биоразнообразия и влияние машинного обучения на другие планетарные границы (например, изменение земельной системы и использование пресной воды), прямое воздействие на природные ресурсы в результате производства, транспорта и последствий окончания срока службы, а также косвенное воздействие приложений машинного обучения [1]. ].

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

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

Заключение

В этой статье показано, что, хотя трудно определить воздействие машинного обучения на окружающую среду как области, специалистам-практикам легко оценить углеродный след своих моделей машинного обучения с помощью CodeCarbon или ML CO2 Impact. В статье также представлены 17 конкретных идей о том, как можно уменьшить углеродный след моделей машинного обучения. Некоторые из этих идей представляют собой очень легко реализуемые плоды, в то время как другие требуют большего опыта.

Вот и все! Надеюсь, вам понравился этот пост 🤞

Пожалуйста, оставьте комментарий, дайте мне знать, что вы думаете 🙌

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

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

И не стесняйтесь связаться со мной в LinkedIn.

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

[1] https://www.oecd-ilibrary.org/science-and-technology/measuring-the-environmental-impacts-of-artificial-intelligence-compute-and-applications_7babf571-en

[2] https://www.independent.co.uk/climate-change/news/global-warming-data-centres-to-consume-three-times-as-much-energy-in-next-decade- эксперты-предупреждают-a6830086.html

[3] https://www.climatechangenews.com/2017/12/11/tsunami-data-consume-one-fifth-global-electricity-2025/

[3] https://pisrt.org/psr-press/journals/easl-vol-3-issue-2-2020/new-perspectives-on-internet-electricity-use-in-2030/

[4] https://www.borderstep.de/wp-content/uploads/2020/04/Borderstep-Datacenter-2018_en.pdf

[5] https://www.sciencedirect.com/science/article/pii/S0306261920304694

[6] https://arxiv.org/ftp/arxiv/papers/2204/2204.05149.pdf

[7] https://www.hpcwire.com/2019/03/19/aws-upgrades-its-gpu-backed-ai-inference-platform/

[8] https://aws.amazon.com/blogs/aws/amazon-ec2-update-inf1-instances-with-aws-inferentia-chips-for-high-performance-cost-efficient-inferencing/

[9] https://www.forbes.com/sites/robtoews/2020/06/17/deep-learnings-climate-change-problem/?sh=1ed2fd916b43

[10] https://kefm.dk/aktuelt/nyheder/2021/apr/foerste-officielle-vurdering-af-danmarks-globale-klimaaftryk

[11] https://arxiv.org/pdf/2204.02311.pdf

[12] https://openai.com/blog/ai-and-compute/

[13] https://towardsdatascience.com/deep-learning-and-carbon-emissions-79723d5bc86e

[14] https://github.com/Breakend/experiment-impact-tracker

[15] https://github.com/lfwa/carbontracker

[16] https://mlco2.github.io/impact/

[17] https://arxiv.org/ftp/arxiv/papers/2104/2104.10350.pdf

[18] https://github.com/mlco2/codecarbon

[19] https://medium.com/bcggamma/ai-computing-emits-co%E2%82%82-we-started-measuring-how-much-807dec8c35e3

[20] https://www.youtube.com/watch?v=HXEnbi64TdQ&ab_channel=DevoxxUK

[21] https://www.wholegraindigital.com/blog/how-to-page-weight-budget/#:~:text=What%20is%20a%20page%20weight,when%20a%20webpage%20is% 20загружено

[22] https://arxiv.org/pdf/2002.05651.pdf

[23] https://aclanthology.org/2021.sustainlp-1.12.pdf

[24] https://arxiv.org/pdf/2006.07237.pdf

[25] https://arxiv.org/abs/1910.01108

[26] https://arxiv.org/abs/1503.02531

[27] https://arxiv.org/ftp/arxiv/papers/2007/2007.07610.pdf

[28] https://github.com/Bjarten/early-stopping-pytorch/blob/master/pytorchtools.py

[29] https://arxiv.org/abs/1206.5533

[30] https://www.jmlr.org/papers/v13/bergstra12a.html, https://wandb.ai/site/articles/bayesian-hyperparameter-optimization-a-primer

[31] [http://hyperopt.github.io/hyperopt/

[32] https://github.com/fmfn/BayesianOptimization

[33] https://docs.ray.io/en/latest/tune/index.html

[34] https://huggingface.co/models

[35] https://scandeval.github.io/

[36] https://numenta.com/blog/2020/10/30/case-for-sparsity-in-neural-networks-part-2-dynamic-sparsity#:~:text=We%20define%20a %20sparse%20нейронная, некоторые%20из%20отсутствуют%20соединений%20

[37] https://open.spotify.com/episode/52KcC2NUvFkgzij1cbbQnS?si=ezFjjfwRTt6-I2yTZ5IQEw

[38] https://anatomyof.ai/

[39] https://www.mdpi.com/2071-1050/13/5/2668

[40] https://arxiv.org/pdf/2111.00364.pdf

[41] https://arxiv.org/pdf/2211.02001.pdf