Преимущества NVIDIA H100 в ML

Преимущества NVIDIA H100 в ML

Меня зовут Руслан, я инженер-программист, автор YouTube канала Ruslan Dev, специализируюсь на облачных вычислениях и машинном обучении. В этом кейсе я расскажу о своем опыте разработки больших языковых моделей в партнерстве с облачной платформой immers.cloud, и о преимуществах использования одного из передовых графических процессоров на этой платформе - H100.

В последнее время я часто обучал нейросети на видеокартах NVIDIA, и для своих задач я предпочитаю использовать одну из последних моделей - H100. Созданная специально для AI-приложений, эта видеокарта обеспечивает наибольшую скорость обучения, что критически важно при разработке LLM на базе трансформера. Ниже несколько нюансов.

Вычислительную способность графического процессора оценивают по числу операций с плавающей точкой в секунду, Flops. Именно в этом отношении H100 является лидером и вдвое (1.5K TFlops) превосходит модель-предшественника A100. Зачем нужно так много операций с плавающей точкой, читайте ниже, где я привел немного справочной информации.

Деплой базовой модели и инструментов для обучения в immers.cloud осуществляется достаточно просто - можно выбрать предустановленный образ Ubuntu с CUDA. Для конфигурации окружения остается установить Pytorch/Tensorflow/Jax и другие нужные библиотеки.

Как именно я настраиваю свое ML окружение, я описал в этом гайде.

Если вы знакомы с терминалом Linux, развертывание виртуальной машины с H100 на immers.cloud, установка пакетов и конфигурация процесса обучения - например, в виде Unix-демона, как это сделал я - не составит для вас труда.

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

Наглядный пример преимущества скорости, которое H100 дает при обучении большой модели Llama 3 70B по сравнению с A100, был показан в моем видео:

По результатам этого примера, обучение Llama 3-70B на GPU H100 потребовало 7 часов, чтобы выполнить 2400 итераций:

По сравнению с другими моделями H100 показала явное превосходство в скорости.

Но Flops - это не единственный параметр, который мне приходится учитывать при обучении нейросетей. Объем видеопамяти и пропускная способность видеокарты - два очень важных показателя. Первый определяет, сможете ли вы вместить веса своей модели в память GPU. А второй - с какой скоростью батч, или "кусок" данных, за одну итерацию обучения передается из видеопамяти в кэши и регистры ядер GPU, где происходит перемножение матриц, о котором речь ниже.

У H100 размер видеопамяти - 80 гигабайт - и пропускная способность - 2 терабайта в секунду - не отличаются от соответствующих параметров модели A100. Этих значений достаточно, чтобы обучать такие большие модели, как Llama 3 70B. Но с увеличением размера батча данных увеличивается размерность матрицы, которую перемножает GPU, а для этого нужно больше Flops, и здесь H100 проявляет себя, устраняя барьер скорости.

А дальше немного общей справочной информации.

При обучении трансформер выполняет операцию перемножения матриц - matmul, в очень тяжеловесных масштабах. Даже "небольшие" AI-модели имеют по 7-8 миллиардов параметров, которые перемножаются с вектором переданного на вход батча при каждой итерации обучения, а число итераций зависит от числа этих батчей, т. е. от объема данных. Этот объем при обучении современных базовых, или foundational моделей может достигать размеров Интернета - скажем, текстовый корпус Llama 3 содержит 15 триллионов текстовых токенов.

Конечно, не все задачи, связанные с AI, имеют такие эпические масштабы. LoRA предлагает эффективный способ уменьшения числа обучаемых параметров путем конвертации весов в матрицы низшего порядка. А при наличии уже обученной foundational модели чаще всего моя задача сводится к файнтюнингу на совсем небольшом наборе данных, условно от 10 до 100K примеров.

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

Благодарю за внимание, надеюсь, мой опыт поможет вам при выборе видеокарт для ML-приложения.

11
Начать дискуссию