Как выбрать подходящий инстанс Amazon EC2 GPU для обучения глубокому обучению и логических выводов - от наилучшей производительности до наиболее рентабельной и всего остального

Последнее обновление: 13 апреля 2021 года.
- Обновлена ​​статья, чтобы включить p4d.24xlarge на основе архитектуры Ampere
- Обновлен список рекомендаций по графическому процессору
- Добавлен «« Краткий обзор функций графического процессора "" раздел

Десять лет назад, если вы хотели получить доступ к графическому процессору для ускорения обработки данных или кода научного моделирования, вам нужно было либо заполучить компьютерного игрока, либо обратиться в суперкомпьютерный центр дружественного района. Сегодня вы можете войти в свою консоль AWS и выбрать один из множества инстансов Amazon EC2 на базе графического процессора.

Вы можете запускать экземпляры графических процессоров с разными объемами памяти графического процессора (8 ГБ, 16 ГБ, 32 ГБ), архитектурами графических процессоров NVIDIA (Ampere, Turing, Volta, Maxwell, Kepler) и различными возможностями (FP64, FP32, FP16, INT8, TensorCores, NVLink) и количество графических процессоров на экземпляр (1, 2, 4, 8, 16). Вы также можете выбрать экземпляры с различным количеством виртуальных ЦП, системной памятью и пропускной способностью сети и добавить ряд вариантов хранения (объектное хранилище, сетевые файловые системы, блочное хранилище и т. Д.).

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

TL; DR - пролистать до конца

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

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

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

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

В AWS у вас есть доступ к двум семействам инстансов GPU - семейству P и семейству G инстансов EC2. Различные поколения экземпляров семейства P (P3, P2) и семейства G (G4, G3) основаны на разных поколениях архитектуры графических процессоров, как показано ниже.

Каждое семейство экземпляров (P и G) включает типы экземпляров (P2, P3, G3, G4), и каждый тип экземпляра включает экземпляры с разными размерами. Каждый размер инстанса имеет определенное количество виртуальных ЦП, память графического процессора, системную память, графические процессоры для каждого экземпляра и пропускную способность сети. Полный список всех доступных опций показан на диаграмме ниже.

Теперь давайте рассмотрим каждый из этих экземпляров по семействам, поколениям и размерам.

Amazon EC2 P4: самый производительный экземпляр для обучения глубокому обучению на AWS.

Инстансы P4 предоставляют доступ к графическим процессорам NVIDIA A100 на базе архитектуры NVIDIA Ampere. Вы можете запустить несколько графических процессоров на экземпляр с 8 графическими процессорами A100 с 40 ГБ памяти графического процессора на каждый графический процессор, 96 виртуальных ЦП и пропускной способностью сети 400 Гбит / с для рекордной производительности обучения.

Краткий обзор функций экземпляра P4:

  • Поколение GPU: NVIDIA Ampere
  • Поддерживаемые типы точности: FP64, FP32, FP16, INT8, BF16, TF32, тензорные ядра 3-го поколения (смешанная точность)
  • Память графического процессора: 40 ГБ на графический процессор.
  • Межсоединение графического процессора: межсоединение с высокой пропускной способностью NVLink, 3-го поколения.

Примечание о точности оборудования:

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

NVIDIA A100 включает в себя специальные ядра для глубокого обучения, называемые тензорными ядрами, для выполнения обучения со смешанной точностью, которые впервые были представлены в архитектуре Volta. Вместо обучения модели с одинарной точностью (FP32) ваша инфраструктура глубокого обучения может использовать тензорные ядра для выполнения умножения матриц с половинной точностью (FP16) и накопления с одинарной точностью (FP32). Это часто требует обновления ваших тренировочных сценариев, но может привести к гораздо более высокой эффективности обучения. Каждый фреймворк обрабатывает это по-своему, поэтому обратитесь к официальным руководствам вашего фреймворка (TensorFlow, PyTorch и MXNet) для использования смешанной точности.

Графический процессор NVIDIA A100 также поддерживает два новых точных формата - BF16 и TensorFloat-32 (TF32). Преимущество TF32 состоит в том, что тензорные ядра TF32 на NVIDIA A100 могут считывать данные FP32 из инфраструктуры глубокого обучения и использовать и выдают стандартный вывод FP32, но внутренне он использует пониженную внутреннюю точность. Это означает, что в отличие от обучения со смешанной точностью, которое часто требовало изменения кода в ваших обучающих сценариях, такие фреймворки, как TensorFlow и PyTorch, могут поддерживать TF32 из коробки. BF16 является альтернативой стандарту IEEE FP16, который имеет более высокий динамический диапазон, лучше подходит для обработки градиентов без потери точности. TensorFlow какое-то время поддерживал BF16, и теперь вы можете воспользоваться преимуществами точности BF16 на графическом процессоре NVIDIA A100 при использовании p4d.24xlarge экземпляров.

Экземпляр P4 бывает только 1 размера: p4d.24xlarge. Давайте посмотрим на этот размер экземпляра.

p4d.24xlarge: самый быстрый экземпляр графического процессора в облаке

Если вам нужен самый быстрый обучающий экземпляр графического процессора в облаке, не ищите ничего, кроме p4d.24xlarge.. Этот титул ранее принадлежал p3dn.24xlarge, который имел графический процессор NVIDIA V100 на базе архитектуры 8 Volta.

Вы получаете доступ к 8 графическим процессорам NVIDIA A100 с памятью графического процессора 40 ГБ, соединенным с NVLink 3-го поколения, что теоретически удваивает пропускную способность между графическими процессорами по сравнению с NVLink 2-го поколения на NVIDIA V100, доступным для типа инстанса P3, который мы обсудим в следующий раздел. Это делает p4d.24xlarge тип экземпляра идеальным для параллельного обучения с распределенными данными, а также для параллельного обучения больших моделей, которые не подходят для одного графического процессора. Экземпляр также предоставляет вам доступ к 96 виртуальным ЦП, 1152 ГБ системной памяти (самый высокий показатель для экземпляра EC2 GPU) и пропускной способности сети 400 Гбит / с (самый высокий показатель для экземпляра EC2 GPU), что становится важным для достижения почти линейного масштабирования для крупномасштабных проектов. распределенные учебные рабочие места.

Запуститеnvidia-smi на этом экземпляре, и вы увидите, что память графического процессора составляет 40 ГБ. Это самый большой объем памяти графического процессора на каждый графический процессор, который вы можете найти сегодня на AWS. Если у вас большие модели или вы работаете с 3D-изображениями или другими большими пакетами данных, то это как раз то, что нужно рассмотреть. Запустите nvidia-smi topo — matrix, и вы увидите, что NVLink используется для связи между графическими процессорами. NVlink обеспечивает гораздо более высокую пропускную способность между графическими процессорами по сравнению с PCIe, а это означает, что задания с несколькими графическими процессорами и распределенное обучение будут выполняться намного быстрее.

Amazon EC2 P3: H Высокопроизводительное и экономичное обучение глубокому обучению

Инстансы P3 предоставляют доступ к графическим процессорам NVIDIA V100 на основе архитектуры NVIDIA Volta, и вы можете запускать один графический процессор на экземпляр или несколько графических процессоров на экземпляр (4 графических процессора, 8 графических процессоров). Один экземпляр GPU p3.2xlarge может быть вашим ежедневным драйвером для обучения глубокому обучению. А самый мощный экземпляр p3dn.24xlarge дает вам доступ к 8 x V100 с 32 ГБ памяти графического процессора, 96 виртуальными ЦП и пропускной способностью сети 100 Гбит / с, идеально подходящей для распределенного обучения.

Обзор функций экземпляра P3:

  • Поколение GPU: NVIDIA Volta
  • Поддерживаемые типы точности: FP64, FP32, FP16, тензорные ядра (смешанная точность).
  • Память графического процессора: 16 ГБ на p3.2xlarge, p3.8xlarge, p3.16xlarge, 32 ГБ на p3dn.24xlarge
  • Межсоединение графического процессора: межсоединение NVLink с высокой пропускной способностью, 2-го поколения.

NVIDIA V100 также включает тензорные ядра для обучения со смешанной точностью, но не предлагает типы точности TF32 и BF16, представленные в NVIDIA A100, предлагаемой в экземпляре P4. Однако инстансы P3 бывают четырех разных размеров: от одного экземпляра графического процессора до 8 экземпляров графического процессора, что делает его идеальным выбором для гибких обучающих рабочих нагрузок. Давайте посмотрим на каждый из следующих размеров экземпляровp3.2xlarge, p3.8xlarge, p3.16xlarge и p3dn.24xlarge.

p3.2xlarge: лучший экземпляр GPU для обучения на одном GPU

Это должен быть ваш пример для большей части вашей работы по обучению глубокому обучению. Вы получаете доступ к одному графическому процессору NVIDIA V100 с 16 ГБ памяти графического процессора, 8 виртуальным ЦП, 61 ГБ системной памяти и пропускной способностью сети до 10 Гбит / с. V100 является самым быстрым графическим процессором, доступным в облаке на момент написания этой статьи, и поддерживает тензорные ядра, которые могут еще больше повысить производительность, если ваши сценарии могут использовать преимущества обучения со смешанной точностью.

Вы можете подготовить этот инстанс с помощью инстансов Amazon EC2, Amazon SageMaker Notebook или отправить задание на обучение в управляемый инстанс Amazon SageMaker с помощью SDK SageMaker Python. Если вы развернете p3.2xlarge экземпляр Amazon EC2 и выполните команду nvidia-smi, вы увидите, что графический процессор на инстансах - это версия V100-SXM2, которая поддерживает NVLink (мы обсудим это в следующем разделе). В разделе «Использование памяти» вы увидите, что у него 16 ГБ памяти графического процессора. Если вам нужно более 16 ГБ памяти графического процессора для больших моделей или больших объемов данных, вам следует подумать о p3dn.24xlarge (подробнее см. Ниже).

p3.8xlarge и p3.16xlarge: идеальный экземпляр графического процессора для мелкомасштабного обучения с использованием нескольких графических процессоров и проведения параллельных экспериментов

Если вам нужно больше графических процессоров для экспериментов, больше виртуальных ЦП для предварительной обработки данных и увеличения данных или более высокая пропускная способность сети, рассмотрите вариант p3.8xlarge (с 4 графическими процессорами) и p3.16xlarge (с 8 ГПУ). Каждый графический процессор представляет собой NVIDIA V100 с памятью 16 ГБ. Они также включают межсоединение NVLink для обмена данными между графическими процессорами с высокой пропускной способностью, что пригодится для обучения работе с несколькими графическими процессорами. С p3.8xlarge вы получаете доступ к 32 виртуальным ЦП и 244 ГБ системной памяти, а с p3.16xlarge вы получаете доступ к 64 виртуальным ЦП и 488 ГБ системной памяти. Этот экземпляр идеально подходит для нескольких случаев использования:

Обучение работе с несколькими графическими процессорами. Если вы только начинаете обучение работе с несколькими графическими процессорами, 4 графических процессора на p3.8xlarge или 8 графических процессоров на p3.16xlarge могут дать вам хорошее ускорение. Вы также можете использовать этот экземпляр для подготовки ваших обучающих сценариев для гораздо более масштабных многоузловых обучающих заданий, которые часто требуют от вас изменения обучающих сценариев с использованием библиотек, таких как Horovod, tf.distribute.Strategy или torch.distributed. ». Обратитесь к моему пошаговому руководству по использованию Horovod для распределенного обучения:

Сообщение в блоге: Краткое руководство по распределенному обучению с TensorFlow и Horovod на Amazon SageMaker

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

p3dn.24xlarge: высокоэффективное и экономичное обучение.

Этот экземпляр ранее был самым быстрым графическим процессором в названии облака, который теперь принадлежит p4d.24xlarge с 8 новейшими графическими процессорами NVIDIA A100. Это не делает p3dn.24xlarge сутулость. Это по-прежнему один из самых быстрых типов инстансов, которые сегодня можно найти в облаке, и он намного более рентабелен по сравнению с инстансом P4. Вы получаете доступ к 8 графическим процессорам NVIDIA V100, но в отличие от p3.16xlarge, которые имеют 16 ГБ памяти графического процессора, графические процессоры на p3dn.24xlarge имеют 32 ГБ памяти графического процессора. Это означает, что вы можете устанавливать гораздо более крупные модели и тренироваться на гораздо более крупных партиях. Экземпляр дает вам доступ к 96 виртуальным ЦП, системной памяти 768 ГБ и пропускной способности сети 100 Гбит / с, что становится важным для достижения почти линейного масштабирования для крупномасштабных распределенных учебных заданий.

Run nvidia-smi на этом экземпляре, и вы увидите, что память графического процессора составляет 32 ГБ. Единственный экземпляр с большим объемом памяти графического процессора, чем этот, - это p4d.24xlarge, который, как и графический процессор A100 с 40 ГБ памяти графического процессора. Если у вас большие модели или вы работаете с 3D-изображениями или другими большими пакетами данных, то это как раз то, что нужно рассмотреть. Запустите nvidia-smi topo — matrix, и вы увидите, что NVLink используется для связи между графическими процессорами. NVlink обеспечивает гораздо более высокую пропускную способность между графическими процессорами по сравнению с PCIe, а это означает, что задания с несколькими графическими процессорами и распределенное обучение будут выполняться намного быстрее.

Amazon EC2 G4: лучший экземпляр для экономичного обучения глубокому обучению и высокопроизводительных развертываний логического вывода

Инстансы G4 предоставляют доступ к графическим процессорам NVIDIA T4 на базе архитектуры NVIDIA Turing. Вы можете запустить один графический процессор на экземпляр или несколько графических процессоров на экземпляр (4 графических процессора, 8 графических процессоров).

Архитектура NVIDIA Turing появилась после архитектуры NVIDIA Volta и представила несколько новых функций для машинного обучения, таких как тензорные ядра следующего поколения и поддержка целочисленной точности. Однако основной вариант использования графического процессора NVIDIA T4 - это развертывание логических выводов и графика, и он имеет гораздо меньшую мощность, чем графический процессор NVIDIA V100, доступный в экземпляре P3. Инстансы P3 по-прежнему должны быть вашим примером для высокопроизводительного обучения.

Обзор функций экземпляра G4:

  • Поколение GPU: NVIDIA Turing
  • Поддерживаемые типы точности: FP64, FP32, FP16, Tensor Cores (смешанная точность), INT8, INT4, INT1.
  • Память графического процессора: 16 ГБ
  • Межсоединение графического процессора: PCIe

Уникальность NVIDIA T4 в том, что она поддерживает тип данных с целочисленной точностью (INT8), который может значительно увеличить пропускную способность логического вывода. Во время обучения веса модели и градиенты обычно сохраняются с одинарной точностью (FP32). Оказывается, чтобы выполнять прогнозы на обученной модели, на самом деле полная точность не требуется, и можно обойтись вычислениями с пониженной точностью либо с половинной точностью (FP16), либо с 8-битной целочисленной точностью (INT8). Это увеличивает пропускную способность без слишком большого ущерба для точности. Будет некоторое снижение точности, и это будет зависеть от различных факторов, специфичных для вашей модели и обучения. В целом, вы получаете лучшую производительность / стоимость вывода с инстансами G4 по сравнению с другими инстансами графического процессора. Матрица поддержки NVIDIA показывает, какие уровни нейронной сети и типы графических процессоров поддерживают INT8 и другую точность для вывода.

Хорошо, экземпляры G4 отлично подходят для вывода, могу ли я использовать их для обучения?
Да! g4dn.xlarge должен быть вашим типом экземпляра для разработки, тестирования, прототипирования и обучения небольших моделей. Однако следует отметить, что хотя графический процессор NVIDIA T4 в экземплярах G4 основан на новейшей архитектуре Turning, T4 является графическим процессором с меньшей мощностью по сравнению с V100 P3. Запустите nvidia-smi на этом экземпляре, и вы увидите, что g4dn.xlarge имеет графический процессор NVIDIA T4 с 16 ГБ памяти графического процессора. Вы также заметите, что максимальная мощность составляет 70 Вт. Это говорит о том, что это графический процессор с гораздо меньшим энергопотреблением, чем графический процессор V100 в экземплярах P3, максимальная мощность которого составляет 300 Вт.

Если вы посмотрите на лист данных NVIDIA для NVIDIA T4 и NVIDIA V100, вы можете убедиться, что T4 рассчитан на TDP 70 Вт, имеет 2560 ядер NVIDIA CUDA и 320 тензорных ядер NVIDIA Turing. NVIDIA V100 имеет расчетную мощность 300 Вт, имеет 5120 ядер NVIDIA CUDA и 640 тензорных ядер NVIDIA Volta.

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

Инстансы следующих размеров предоставляют вам доступ к одному графическому процессору NVIDIA T4 с увеличивающимся количеством виртуальных ЦП, системной памяти, хранилища и пропускной способности сети: g4dn.xlarge (4 виртуальных ЦП, 16 ГБ системной памяти), g4dn.2xlarge (8 виртуальных ЦП, 32 ГБ системной памяти), g4dn.4xlarge (16 виртуальных ЦП, 64 ГБ системной памяти), g4dn.8xlarge (32 виртуальных ЦП, 128 ГБ системной памяти), g4dn.16xlarge (64 виртуальных ЦП, 256 ГБ системной памяти). Вы можете найти полный список различий на странице экземпляра продукта G4 в разделе Сведения о продукте.

Размеры инстансов G4 также включают две конфигурации с несколькими графическими процессорами: g4dn.12xlarge с 4 графическими процессорами и g4dn.metal с 8 графическими процессорами. Однако, если ваш вариант использования - обучение с несколькими графическими процессорами или многоузловое / распределенное обучение, вам следует рассмотреть возможность использования экземпляров P3. Запустите nvidia-smi topo --matrix на экземпляре g4dn.12xlarge с несколькими графическими процессорами, и вы увидите, что графические процессоры не соединены высокоскоростным соединением с графическим процессором NVLink. Экземпляры P3 с несколькими графическими процессорами включают межсоединения NVLink с высокой пропускной способностью, которые могут ускорить обучение с использованием нескольких графических процессоров.

Amazon EC2 P2: экономично для обучения и создания прототипов, но в первую очередь рассмотрите инстансы G4

Инстансы P2 дают вам доступ к графическим процессорам NVIDIA K80 на базе архитектуры NVIDIA Kepler. Архитектура Kepler устарела на несколько поколений (Kepler - ›Maxwell -› Pascal - ›Volta -› Turing), поэтому они не самые быстрые графические процессоры. У них есть некоторые особенности, такие как поддержка полной точности (FP64), что делает их привлекательными и экономичными для рабочих нагрузок высокопроизводительных вычислений (HPC), которые зависят от дополнительной точности. Инстансы P2 бывают трех разных размеров: p2.xlarge (1 графический процессор), p2.8xlarge (8 графических процессоров), p2.16xlarge (16 графических процессоров).

NVIDIA K80 - интересный графический процессор. Один NVIDIA K80 на самом деле представляет собой два графических процессора на физической плате, которую NVIDIA называет дизайном с двумя графическими процессорами. Это означает, что, когда вы запускаете экземпляр p2.xlarge, вы получаете только один из этих двух графических процессоров на физической плате K80. Точно так же, когда вы запускаете p2.8xlarge, вы получаете доступ к восьми графическим процессорам на четырех графических процессорах K80, а с p2.16xlarge вы получаете доступ к шестнадцати графическим процессорам на восьми графических процессорах K80. Запустите nvidia-smi на p2.xlarge, и вы увидите один из двух графических процессоров на плате NVIDIA K80 с 12 ГБ памяти графического процессора.

Краткий обзор функций экземпляра P2:

  • Поколение GPU: NVIDIA Kelper
  • Поддерживаемые типы точности: FP64, FP32.
  • Память графического процессора: 12 ГБ
  • Межсоединение графического процессора: PCIe

Итак, когда вам следует подумать об использовании экземпляров P2 для глубокого обучения?

До запуска инстансов Amazon EC2 G4 инстансы P2 были рекомендуемым рентабельным типом инстансов для глубокого обучения. С момента запуска инстансов G4 я рекомендую G4 как рентабельный инстанс для обучения и создания прототипов графического процессора для глубокого обучения. P2 по-прежнему остается рентабельным, но вы упустите несколько новых функций, таких как поддержка обучения со смешанной точностью (тензорные ядра) и вывод с пониженной точностью, которые стали стандартом для новых поколений, включая недавно анонсированную Архитектура NVIDIA Ampere .

Если вы запустите nvidia-smi на p2.16xlarge экземпляре графического процессора, поскольку NVIDIA K80 имеет дизайн с двумя графическими процессорами, вы увидите 16 графических процессоров, которые являются частью 8 графических процессоров NVIDIA K80. Это максимальное количество графических процессоров, которое вы можете получить на одном экземпляре AWS. Если вы запуститеnvidia-smi topo --matrix, вы увидите, что вся связь между GPU осуществляется через PCIe, в отличие от экземпляров P3 с несколькими GPU, которые используют гораздо более быстрый NVLink.

Amazon EC2 G3: в первую очередь для графических рабочих нагрузок, экономически эффективен для глубокого обучения, но сначала рассмотрите инстансы P2 и G4

Экземпляры G3 предоставляют вам доступ к графическим процессорам NVIDIA M60 на базе архитектуры NVIDIA Maxwell. NVIDIA называет графические процессоры M60 виртуальными рабочими станциями и позиционирует их для профессиональной графики, но вы также можете использовать их для глубокого обучения. Однако с гораздо более мощными и экономичными вариантами глубокого обучения с инстансами P3 и G4 инстансы G3 должны быть вашим последним вариантом для глубокого обучения.

Краткий обзор функций экземпляра G3:

  • Поколение GPU: NVIDIA Maxwell
  • Поддерживаемые типы точности: FP32.
  • Память графического процессора: 8 ГБ
  • Межсоединение графического процессора: PCIe

Стоит ли рассматривать экземпляры G3 для глубокого обучения?

До запуска инстансов Amazon EC2 G4 инстансы G3 с одним графическим процессором были экономически эффективными для разработки, тестирования и создания прототипов. И хотя архитектура Maxwell более поздняя, ​​чем архитектуры NVIDIA K80 Kepler, обнаруженные на инстансах P2, вам все равно следует рассматривать инстансы P2 до G3 для глубокого обучения. Ваш выбор должен быть следующим: P3 ›G4› P2 ›G3.

Инстансы G3 бывают четырех размеров: g3s.xlarge и g3.4xlarge (2 графических процессора, разная конфигурация системы), g3.8xlarge (2 графических процессора) и g3.16xlarge (4 графических процессора). Запустите nvidia-smi на g3s.xlarge, и вы увидите, что эти экземпляры предоставляют вам доступ к графическому процессору NVIDIA M60 с 8 ГБ памяти графического процессора.

Какие еще варианты ускорителей доступны на AWS?

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

Сообщение в блоге:
Полное руководство по ускорителям искусственного интеллекта для глубокого обучения - графические процессоры, AWS Inferentia и Amazon Elastic Inference

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

Сегодня на AWS есть четыре различных варианта оборудования для развертывания логических выводов. Вы уже знакомы с двумя распространенными вариантами: оптимизированные для вычислений экземпляры ЦП, такие как семейство экземпляров C5, и варианты высокопроизводительных графических процессоров, такие как экземпляры семейства P3 и G4.

Ниже я расскажу о двух других вариантах акселератора - Amazon Elastic Inference и AWS Inferential - и о том, когда их следует рассматривать.

Amazon Elastic Inference

С помощью Amazon Elastic Inference (EI) вместо выбора экземпляра графического процессора для размещения ваших моделей вы можете подключить недорогой ускоритель на основе графического процессора к экземпляру только с центральным процессором через сеть.

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

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

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

Допустим, ваше приложение может обеспечить хорошее обслуживание клиентов, если общая задержка (приложение + сеть + прогнозы модели) составляет менее 200 мс. И, скажем, с типом инстанса G4 вы можете снизить общую задержку до 40 мс, что вполне соответствует вашей целевой задержке. Кроме того, предположим, что с типом инстанса C5 вы можете получить только общую задержку до 400 мс, что не соответствует вашим требованиям SLA и приводит к ухудшению качества обслуживания клиентов.

С помощью Elastic Inference вы можете подключить по сети «фрагмент» или «часть» графического процессора к экземплярам ЦП, таким как экземпляр C5, и снизить общую задержку, скажем, до 180 мс, что ниже желаемой отметки в 200 мс. Поскольку EI значительно дешевле, чем предоставление выделенного экземпляра графического процессора, вы экономите на общих расходах на развертывание. Экземпляр графического процессора, такой как G4, по-прежнему обеспечивает лучшую производительность логического вывода, но если дополнительная производительность не улучшает качество обслуживания клиентов, вы можете использовать EI, чтобы не выходить за рамки целевой задержки SLA, обеспечить хорошее обслуживание клиентов и сэкономить на общих расходах на развертывание.

Инстансы AWS Inferentia и Amazon EC2 Inf1

Amazon EC2 Inf1 - новичок в этом секторе. Инстансы Inf1 предоставляют доступ к высокопроизводительному чипу вывода под названием AWS Inferentia, специально разработанному AWS. Микросхемы AWS Inferentia поддерживают FP16, BF16 и INT8 для снижения точности вывода. Чтобы настроить таргетинг на AWS Inferentia, вы можете использовать комплект разработки программного обеспечения (SDK) AWS Neuron для компиляции вашей модели TensorFlow, PyTorch или MXNet. SDK также поставляется с библиотекой времени выполнения для запуска скомпилированных моделей в производство.

Инстансы Amazon EC2 Inf1 обеспечивают лучшую производительность / стоимость по сравнению с инстансами EC2 с графическим процессором. Вам просто нужно убедиться, что AWS Neuron SDK поддерживает все слои в вашей модели. См. Здесь список поддерживаемых операций для каждой платформы.

Сообщение в блоге Deep Dive:
Полное руководство по ускорителям искусственного интеллекта для глубокого обучения - графические процессоры, AWS Inferentia и Amazon Elastic Inference

Оптимизация затрат

У вас есть несколько различных вариантов оптимизации затрат на обучение и рабочие нагрузки по логическому выводу.

Спотовые инстансы. Цены на спотовые инстансы делают высокопроизводительные графические процессоры гораздо более доступными и позволяют получить доступ к резервным вычислительным мощностям Amazon EC2 с большой скидкой по сравнению со ставками по требованию. Актуальный список цен по инстансу и региону можно найти в Советчике по спотовым инстансам. В некоторых случаях вы можете сэкономить более 90% на затратах на обучение, но ваши инстансы могут быть прерваны и прекращены с уведомлением всего за 2 минуты. В ваших сценариях обучения должны быть реализованы частые контрольные точки и возможность возобновления обучения после восстановления емкости спотовой зоны.

Управляемое обучение Amazon SageMaker: на этапе разработки большую часть времени вы тратите на создание прототипов, настройку кода и опробование различных параметров в вашем любимом редакторе или IDE (что очевидно VIM) - все это не так. не нужен графический процессор. Вы можете сэкономить, просто разделив ресурсы для разработки и обучения, и Amazon SageMaker позволит вам это легко сделать. Используя SDK Amazon SageMaker Python, вы можете тестировать свои скрипты локально на своем ноутбуке, настольном компьютере, экземпляре EC2 или экземпляре ноутбука SageMaker.

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

Я написал руководство по его использованию здесь: Краткое руководство по использованию спотовых инстансов с Amazon SageMaker

Amazon Elastic Inference и инстанс Amazon Inf1. Сэкономьте на рабочих нагрузках логического вывода, используя EI, чтобы добавить нужное ускорение графического процессора к инстансам ЦП, или используя экономичные инстансы Amazon Inf1.

Оптимизация затрат за счет улучшения использования:

  1. Оптимизируйте свой обучающий код, чтобы в полной мере использовать тензорные ядра экземпляров P3 и G4, включив обучение со смешанной точностью. Каждый фреймворк глубокого обучения делает это по-своему, и вам нужно будет обратиться к документации по этому фреймворку.
  2. Используйте вывод с уменьшением точности (INT8) для типов экземпляров G4, чтобы повысить производительность. Библиотека NVIDIA TensorRT предоставляет API-интерфейсы для преобразования моделей одинарной точности в INT8 и предоставляет примеры в своей документации.

Какое программное обеспечение следует использовать на инстансах Amazon EC2 GPU?

Без оптимизированного программного обеспечения существует риск того, что вы недостаточно используете выделенные аппаратные ресурсы. У вас может возникнуть соблазн установить pip install tensorflow / pytorch, но я настоятельно рекомендую вместо этого использовать AWS Deep Learning AMI или AWS Deep Learning Containers (DLC).

AWS квалифицирует и тестирует их на всех инстансах Amazon EC2 GPU, и они включают оптимизацию AWS для работы в сети, доступ к хранилищу, а также новейшие драйверы и библиотеки NVIDIA и Intel. Фреймворки глубокого обучения имеют восходящие и нисходящие зависимости от планировщиков и оркестраторов более высокого уровня и инфраструктурных сервисов более низкого уровня. Используя AWS AMI и AWS DLC, вы знаете, что они прошли сквозное тестирование и гарантированно обеспечат вам максимальную производительность.

TL;DR

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

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

И (барабанная дробь) вот список:

  • Самый производительный экземпляр графического процессора в AWS. Период: p4d.24xlarge (8 графических процессоров A100)
  • Высокая производительность и экономичность: p3dn.24xlarge (8 графических процессоров V100)
  • Лучшая производительность обучения с одним GPU: p3.2xlarge (V100, 16 ГБ GPU)
  • Лучший экземпляр с одним GPU для разработки, тестирования и прототипирования: g4dn.xlarge (T4, 16 ГБ GPU). Рассмотрите вариант g4dn.(2/4/8/16)xlarge для большего количества виртуальных ЦП и более высокой системной памяти.
  • Лучший экземпляр с несколькими графическими процессорами для экономичного обучения одного узла и проведения параллельных экспериментов: p3.8xlarge (4 графических процессора V100, 16 ГБ на графический процессор), p3.16xlarge (8 графических процессоров, 16 ГБ на графический процессор)
  • Лучшая производительность распределенного обучения с несколькими графическими процессорами и множеством узлов: p4d.24xlarge (8 графических процессоров A100, 40 ГБ на каждый графический процессор, совокупная пропускная способность сети 400 Гбит / с)
  • Лучший экземпляр с одним графическим процессором для развертывания логических выводов: тип экземпляра G4. Выберите размер экземпляра g4dn.(2/4/8/16)xlarge на основе этапов предварительной и последующей обработки в развернутом приложении.
  • Мне нужно как можно больше памяти графического процессора для больших моделей: p4d.24xlarge (8 A100, 40 ГБ на графический процессор)
  • Мне нужен доступ к тензорным ядрам для обучения со смешанной точностью: экземпляры типов P4, P3 и G4. Выберите размер экземпляра в зависимости от размера вашей модели и области применения.
  • Мне нужен доступ к двойной точности (FP64) для высокопроизводительных вычислений и глубокого обучения: типы экземпляров P4, P3, P2. Выберите размер экземпляра в зависимости от вашего приложения.
  • Мне нужна 8-битная целочисленная точность (INT8) для вывода: тип экземпляра G4. Выберите размер экземпляра на основе шагов до и после обработки в развернутом приложении.
  • Мне нужен доступ к половинной точности (FP16) для вывода: тип экземпляра P4, P3, G4. Выберите размер экземпляра в зависимости от вашего приложения.
  • Мне нужно ускорение графического процессора для вывода, но мне не нужен полный графический процессор: используйте Amazon Elastic Inference и подключите необходимое ускорение графического процессора.
  • Мне нужна максимальная производительность на любом экземпляре графического процессора: используйте AWS Deep Learning AMI и AWS Deep Learning Containers
  • Я хочу сэкономить: используйте спотовые инстансы и управляемое спотовое обучение в Amazon SageMaker. Выбирайте Amazon Elastic Inference для моделей, в которых не используется полноценный графический процессор.

Краткий обзор возможностей графического процессора

Я часто хочу знать, сколько памяти находится на конкретном графическом процессоре или поддерживается ли конкретный тип точности на графическом процессоре и т. Д., Прежде чем я запускаю экземпляр графического процессора. Чтобы не просматривать различные веб-страницы и официальные документы NVIDIA, я собрал всю информацию в одном изображении. Наслаждаться!

Спасибо за чтение. Если вы нашли эту статью интересной, просмотрите другие мои сообщения в блоге на medium или подпишитесь на меня в twitter (@shshnkp), LinkedIn или оставьте комментарий ниже. Хотите, чтобы я написал конкретную тему машинного обучения? Я буду рад получить известие от вас!