глоссарий

ZeRO

ZeRO

ZeRO (Zero Redundancy Optimizer) — это технология распределённого обучения больших нейросетей, которая устраняет дублирование данных в памяти видеокарт. Когда модель слишком велика, чтобы поместиться на одном GPU, её части раскладывают по нескольким картам. Обычно при этом каждая карта хранит полную копию параметров и служебных данных — избыточно. ZeRO убирает эту избыточность: каждый фрагмент хранится только на одной карте, а в нужный момент все карты обмениваются недостающими частями.

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

Как это работает интуитивно? Представьте огромную книгу, которую нужно прочитать группе людей. В глупом варианте каждый получает полную копию — это быстро тратит бумагу. Умный вариант: книгу разрезают на главы, каждый читает свою, но на середине они перекидываются страницами, чтобы собрать общий смысл. Так и ZeRO: распределяет не только вычисления, но и саму память. На каждом этапе обучения карты обмениваются только теми данными, которые нужны сейчас, а не хранят всё постоянно.

Прикладной пример: при обучении языковой модели GPT-3 потребовалось бы около 3 терабайт памяти. С ZeRO это удалось сделать на кластере из сотен GPU среднего класса, где каждая карта несла лишь свою долю нагрузки, а не дублировала всю сеть. Именно ZeRO лежит в основе многих современных открытых моделей, таких как BLOOM или LLaMA.

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