An In-Depth Guide
Deep learning is a subset of machine learning that does not rely on structured data to develop accurate predictive models. This method uses networks of algorithms modeled after neural networks in the brain to distill and correlate large amounts of data. The more data you feed your network, the more accurate the model becomes.
You can functionally train deep learning models using sequential processing methods. However, the amount of data needed and the length of data processing make it impractical if not impossible to train models without parallel processing. Parallel processing enables multiple data objects to be processed at the same time, drastically reducing training time. This parallel processing is typically accomplished through the use of graphical processing units (GPUs).
GPUs are specialized processors created to work in parallel. These units can provide significant advantages over traditional CPUs, including up to 10x more speed. Typically, multiple GPUs are built into a system in addition to CPUs. While the CPUs can handle more complex or general tasks, the GPUs can handle specific, highly repetitive processing tasks.
This is part of an extensive series of guides about machine learning.
In this article, you will learn:
Also refer to our other detailed guides about:
Multi GPU Deep Learning Strategies
Once multiple GPUs are added to your systems, you need to build parallelism into your deep learning processes. There are two main methods to add parallelism—models and data.
Model parallelism
Model parallelism is a method you can use when your parameters are too large for your memory constraints. Using this method, you split your model training processes across multiple GPUs and perform each process in parallel (as illustrated in the image below) or in series. Model parallelism uses the same dataset for each portion of your model and requires synchronizing data between the splits.

Data parallelism
Data parallelism is a method that uses duplicates of your model across GPUs. This method is useful when the batch size used by your model is too large to fit on a single machine, or when you want to speed up the training process. With data parallelism, each copy of your model is trained on a subset of your dataset simultaneously. Once done, the results of the models are combined and training continues as normal.

How Does Multi GPU Work in Common Deep Learning Frameworks?
TensorFlow Multiple GPU
TensorFlow is an open source framework, created by Google, that you can use to perform machine learning operations. The library includes a variety of machine learning and deep learning algorithms and models that you can use as a base for your training. It also includes built-in methods for distributed training using GPUs.
Through the API, you can use the tf.distribute.Strategy method to distribute your operations across GPUs, TPUs or machines. This method enables you to create and support multiple user segments and to switch between distributed strategies easily.
Two additional strategies that extend the distribute method are MirroredStrategy and TPUStrategy. Both of these enable you to distribute your workloads, the former across multiple GPUs and the latter across multiple Tensor Processing Units (TPUs). TPUs are units available through Google Cloud Platform that are specifically optimized for training with TensorFlow.
Both of these methods use roughly the same data-parallel process, summarized as follows:
- Your dataset is segmented so data is distributed as evenly as possible.
- Replicas of your model are created and assigned to a GPU. Then, a subset of the dataset is assigned to that replica.
- The subset for each GPU is processed and gradients are produced.
- The gradients from all model replicas are averaged and the result is used to update the original model.
- The process repeats until your model is fully trained.
Learn more in our guide to TensorFlow multiple GPU and Keras multiple GPU
PyTorch Multi GPU
PyTorch is an open source scientific computing framework based on Python. You can use it to train machine learning models using tensor computations and GPUs. This framework supports distributed training through the torch.distributed backend.
With PyTorch, there are three parallelism (or distribution) classes that you can perform with GPUs. These include:
- DataParallel—enables you to distribute model replicas across multiple GPUs in a single machine. You can then use these models to process different subsets of your data set.
- DistributedDataParallel—extends the DataParallel class to enable you to distribute model replicas across machines in addition to GPUs. You can also use this class in combination with model_parallel to perform both model and data parallelism.
- model_parallel—enables you to split large models across multiple GPUs with partial training happening on each. This requires syncing training data between the GPUs since operations are performed sequentially.
Multi GPU Deployment Models
There are three main deployment models you can use when implementing machine learning operations that use multiple GPUs. The model you use depends on where your resources are hosted and the size of your operations.
GPU Server
GPU servers are servers that incorporate GPUs in combination with one or more CPUs. When workloads are assigned to these servers, the CPUs act as a central management hub for the GPUs, distributing tasks and collecting outputs as available.
GPU Cluster
GPU clusters are computing clusters with nodes that contain one or more GPUs. These clusters can be formed from duplicates of the same GPU (homogeneous) or from different GPUs (heterogeneous). Each node in a cluster is connected via an interconnect to enable the transmission of data.
Kubernetes with GPUs
Kubernetes is an open source platform you can use to orchestrate and automate container deployments. This platform offers support for the use of GPUs in clusters to enable workload acceleration, including for deep learning.
When using GPUs with Kubernetes, you can deploy heterogeneous clusters and specify your resources, such as memory requirements. You can also monitor these clusters to ensure reliable performance and optimize GPU utilization. Learn about Kubernetes architecture and how it can be used to support Deep Learning.
Multi GPU With Run:AI
Run:AI automates resource management and workload orchestration for machine learning infrastructure. With Run:AI, you can automatically run as many deep learning experiments as needed on multi-GPU infrastructure.
Here are some of the capabilities you gain when using Run:AI:
- Advanced visibility—create an efficient pipeline of resource sharing by pooling GPU compute resources.
- No more bottlenecks—you can set up guaranteed quotas of GPU resources, to avoid bottlenecks and optimize billing.
- A higher level of control—Run:AI enables you to dynamically change resource allocation, ensuring each job gets the resources it needs at any given time.
Run:AI simplifies machine learning infrastructure pipelines, helping data scientists accelerate their productivity and the quality of their models.
Learn More about Multi GPU Infrastructure
Check out the following articles to learn more about working with multi GPU infrastructure:
Tensorflow with Multiple GPUs: Strategies and Tutorials
TensorFlow is one of the most popular frameworks for machine learning and deep learning training. It includes a range of built-in functionalities and tools to help you train efficiently, including providing methods for distributed training with GPUs.
In this article you’ll learn what TensorFlow is and how you can perform distributed training with TensorFlow methods. You’ll also see two brief tutorials that show how to use TensorFlow distributed with estimators and Horovod.
Keras Multi GPU: A Practical Guide
Keras is a deep learning API you can use to perform fast distributed training with multi GPU. Distributed training with GPUs enable you to perform training tasks in parallel, thus distributing your model training tasks over multiple resources. You can do that via model parallelism or via data parallelism. This article explains how Keras multi GPU works and examines tips for managing the limitations of multi GPU training with Keras.
Learn the basics of distributed training, how to use Keras Multi GPU, and tips for managing the limitations of Keras with multiple GPUs.
PyTorch Multi GPU: 4 Techniques Explained
PyTorch provides a Python-based library package and a deep learning platform for scientific computing tasks. Learn four techniques you can use to accelerate tensor computations with PyTorch multi GPU techniques—data parallelism, distributed data parallelism, model parallelism, and elastic training.
Learn how to accelerate deep learning tensor computations with 3 multi GPU techniques—data parallelism, distributed data parallelism and model parallelism.
How to Build Your GPU Cluster: Process and Hardware Options
A GPU cluster is a group of computers that have a graphics processing unit (GPU) on every node. Multiple GPUs provide accelerated computing power for specific computational tasks, such as image and video processing and training neural networks and other machine learning algorithms.
Learn how to build a GPU cluster for AI/ML research, and discover hardware options including data center grade GPUs and massive scale GPU servers.
Kubernetes GPU: Scheduling GPUs On-Premises or on EKS, GKE, and AKS
Kubernetes is a highly popular container orchestrator, which can be deployed on-premises, in the cloud, and in hybrid environments.
Learn how to schedule GPU resources with Kubernetes, which now supports NVIDIA and AMD GPUs. Self-host Kubernetes GPUs or tap into GPU resources on cloud-based managed Kubernetes services.
GPU Scheduling: What are the Options?
A graphics processing unit (GPU) is an electronic chip that renders graphics by quickly performing mathematical calculations. GPUs use parallel processing to enable several processors to handle different parts of one task.
Learn the challenges of GPU scheduling and how to schedule workloads on GPUs with Kubernetes, Hashicorp Nomad, and Microsoft Windows 10 DirectX.
CPU vs GPU: Architecture, Pros and Cons, and Special Use Cases
A graphics processing unit (GPU) is a computer processor that performs rapid calculations to render images and graphics. A CPU is a processor consisting of logic gates that handle the low-level instructions in a computer system.
Learn about CPU vs GPU architecture, pros and cons, and using CPUs/GPUs for special use cases like machine learning and high performance computing (HPC).
Automate Hyperparameter Tuning Across Multiple GPU
In this post, we will review how hyperparameters and hyperparameter tuning plays an important role in the design and training of machine learning networks. Choosing the optimal hyperparameter values directly influences the architecture and quality of the model. This crucial process also happens to be one of the most difficult, tedious, and complicated tasks in machine learning training.
See Additional Guides on Key Machine Learning Topics
Together with our content partners, we have authored in-depth guides on several other topics that can also be useful as you explore the world of machine learning.
Advanced Threat Protection
Authored by Cnet
Auto Image Crop
Authored by Cloudinary
Feature Importance
Authored by Aporia
See Our Additional Guides on Key AI Technology Topics
Together with our content partners, we have authored in-depth guides on several other topics that can also be useful as you explore the world of AI Technology.
История и перспективы multi-GPU на рынке игровой графики: от 3dfx Voodoo до наших дней и немного дальше
Началась эта история с нескольких интересных совпадений. В конце 2021 года AMD анонсировала двухчиповые ускорители семейства Instinct MI200. Предназначены они для центров обработки данных, но фактически (что привычно для сегодняшнего состояния дел на этом рынке) базируются на той же архитектуре, что и графические процессоры компании. Особенность — сам «GPU» Aldebaran, построенный на двух кристаллах с суммарным числом потоковых процессоров до 14080 (в старшем Instinct MI250X). Весной прошлого года появилась и половинка Aldebaran: в ускорителе Instinct MI210 лишь один кристалл и 6656 потоковых процессоров. Казалось бы, что́ до этих решений простому пользователю? Но тут как раз подоспел анонс Radeon RX 7000 — и информация об использовании мультичиповых сборок в GPU этой линейки. И все сразу же вспомнили о multi-GPU — о чем за последние годы почти забыли.

Однако прошло немного времени, и в ноябре новые решения AMD были представлены официально. Как и предполагалось, они построены на базе чиплетной архитектуры, так что ничего общего с дедовскими технологиями не имеют. «Симметричные» же Instinct на рынке есть — но не на массовом рынке. А ведь когда-то подобные решения пытались пробиться и на него, хотя и с переменным успехом. Изначально технология зародилась еще в 90-е, но тогда же первый раз и умерла. Возродилась она в нулевые, и в той или иной степени просуществовала порядка 10 лет. Позднее производители GPU вроде бы пришли к выводу, что недостатков у нее больше, чем достоинств, так что начали полагаться не на параллельную работу нескольких GPU, а на один «мегачип», но с большим количеством потоковых процессоров. Сейчас, как видим, в какой-то степени наблюдается возврат к старым концепциям, но совсем на других архитектурных принципах. Впрочем, и первое «возрождение» multi-GPU тоже было не в том виде, в каком технология первый раз умерла. Истории свойственно развиваться по спирали, и нас ожидает новый ее виток. И поскольку предыдущие витки были интересными, имеет смысл немного освежить память.
3dfx: первые решения multi-GPU из прошлого века
Замечание для заклепочников: мы знаем, что заголовок не совсем корректный — на самом деле термин «GPU» появился заметно позднее многих описываемых событий. Но происходили эти события и давно (по компьютерным меркам), и недавно (по житейским) одновременно, так что во избежание путаницы будем пользоваться современной терминологией.
Самое забавное заключается в том, что идее совместной работы нескольких графических процессоров, причем несимметричных, столько же лет, сколько и вообще 3D-графике. Могло бы получиться по-другому, если бы тогдашним грандам рынка удалось малой кровью превратить 2D- в 3D-акселераторы. Но это требовало многолетней эволюции, вместо которой мы получили революцию. Ее виновником стал мелкий стартап (тоже, в общем-то, термин более позднего времени) 3dfx Interactive. Компания изначально ориентировалась на разработку чипов для игровых автоматов — реликтов 80-х прошлого века. Но эти реликты пользовались спросом: на тот момент обеспечить качественной графикой массовые компьютеры или игровые приставки было невозможно. Точнее, это стоило бы это слишком дорого для одиночного пользователя. А высокая цена игрового автомата никого не пугала, он достаточно быстро окупался при постоянной загрузке пользователями, оплачивающими игровое время. Это был огромный рынок, на который ориентировались и все крупные издатели, и разработчики аппаратных средств.
Однако цена последних постоянно снижалась, так что к 1996 году 3dfx смогла выйти и на ПК-рынок. Как таковых видеокарт компания делать не умела, поэтому и пытаться не стала. Ее первая разработка — Voodoo Graphics — представляла собой дополнительную карту расширения, использующуюся только в 3D-режимах. Для «классики» требовалась обычная видеокарта, а для решения проблем совместимости использовалось сквозное подключение, т. е. Voodoo включался между основным видеоадаптером и монитором. «Благодаря» использованию аналогового видеосигнала это зачастую портило картинку в рабочих режимах, откуда и взялась рекомендация переключать кабели только для игры, бо́льшую часть времени оставляя монитор подключенным к основной «видяшке». Цена решения с несколькими картами оказывалась высокой — при том, что и сам Voodoo стоил далеко не сотню долларов (подешевевший еще не значит дешевый). И всё, что он приносил пользователю — аппаратное 3D-ускорение в низких разрешениях (не более 800×600). Но готовые платить и мириться с неудобствами были, причем в массовых количествах, поскольку визуально спутать Quake и GLQuake было просто невозможно. В итоге 1997 год дал нам само понятие 3D-графики, бурный рост этого рынка, массовый выход 3D-игр на ПК, резкий скачок качества картинки (позднее случалось немало скачков, но таких — уже не было ни одного) и т. п.

Применительно же к основной теме Voodoo интересен тем, что не только породил весь 3D-рынок, но и оказался первым «несимметричным» многочиповым решением. Сам чипсет мог включать до пяти чипов — один FBI и до четырех TMU. FBI (Frame buffer interface) брал на себя взаимодействие с шиной PCI, дисплеем, кадровым буфером и т. п., выполняя основные 3D-алгоритмы, а блоки TMU (Texture mapping unit) специализировались на работе с 3D-текстурами. Но полная конфигурация была бы слишком дорогой, так что обычным делом была связка из FBI, одного TMU и 4 МБ (это не опечатка!) EDO DRAM. Учитывая же необходимость иметь еще и обычный 2D-ускоритель, получаем три графических чипа в системе. Но и это еще не предел: уже первый Voodoo поддерживал такую технологию, как SLI (Scan Line Interleaving) — метод организации работы двух ускорителей, когда один обрабатывает только четные строки изображения, а второй — нечетные.

К сожалению, объединить две серийных карты первого поколения было невозможно, но существовал такой продукт, как Obsidian 100SB компании Quantum3D, где два чипсета с памятью стояли на одной плате. И работали в SLI-режиме, практически удваивая производительность! Причем производительность, повторимся, и без того была по меркам тогдашнего времени очень высокой — ничего сопоставимого даже с одиночным Voodoo прочие компании тогда предложить не могли. Обсидиановские же монстры стоили традиционно более полутора тысяч долларов, но тоже находили своего покупателя.

Позднее появился Voodoo2, где в базовой конфигурации было уже два обновленных TMU, т. е. три микросхемы суммарно. Вышел в свет и Obsidian2 X-24 той же Quantum3D — в виде бутерброда из двух плат с двумя чипсетами. Но это было уже не слишком нужно, поскольку для Voodoo2 поддержка SLI стала базовой. Не обязательно было покупать две платы сразу — можно было купить одну, потом вторую (желательно того же производителя и обязательно с тем же объемом памяти — существовали модификации с 8 и 12 МБ), установить их в компьютер и… Увеличить производительность, а заодно и получить поддержку разрешения 1024×768 вместо 800×600. Решение было не для бедных: один Voodoo2 первое время стоил 350 долларов, пара — соответственно, 700. Плюс 2D-видеокарта, плюс всё остальное… В общем, хороший игровой компьютер уже тогда стал недешевой игрушкой. Но спрос был — и были продажи.

Что случилось потом? Понятно что. Рынком занялись все: и старые игроки, и новые. Схема с отдельным 3D-ускорителем имела очевидные недостатки, так что и сама 3dfx от нее отказалась. А вот победить в конкуренции «комбинированных» решений уже не смогла. Время было такое — в целом из всех имен, гремевших на рынке в 90-е, не осталось никого. Разве что Nvidia — когда-то такой же мелкий стартап, как и 3dfx, но еще и с провальным (в отличие от Voodoo) первым продуктом. Но Nvidia сумела выжить и больше серьезных ошибок не делала. А остальные — не сумели. У 3dfx были очень удачные Voodoo Banshee и Voodoo3 — но не настолько удачные, чтобы удержать завоеванные после выхода Voodoo три четверти рынка. В качестве оружия победы компания выбрала архитектуру VSA, т. е. Voodoo Scalable Architecture. Слово «масштабируемая» в названии использовалось неспроста: подразумевалась совместная работа в одной системе до 32 чипов одновременно. Как? Так ведь у компании уже была SLI! Правда технологию пришлось доработать: кроме расширения чересстрочного режима на случай более 2 GPU, была добавлена и работа над полосами из соседних строк. Причем ширина полос могла меняться динамически в зависимости от сложности картинки — для более полной загрузки процессоров, расположенных на одной плате. От объединения пары отдельных плат пришлось отказаться: пропускная способность шины PCI стала уже недостаточной для видеокарт, а выделенный порт AGP в системе мог быть только один. С одной стороны, это упростило разработку. С другой — в немалой степени оказалось причиной смерти новых решений, поскольку за такую плату нужно было платить сразу много денег. Но другого выбора у 3dfx не было: на разработку одночипового убер-решения уже не хватало ни времени, ни денег. А вот на выпуск простой GPU VSA-100 они были.
Но! Один чип использовался в Voodoo4 4500, который по сути и по производительности являлся аналогом Voodoo3, только с поддержкой современных (на тот момент) технологий. В начале 1999 года это было бы отличным и конкурентоспособным решением, которого тогда так не хватало 3dfx. В 2000 году Voodoo4 4500 уже проигрывал «стодолларовым» конкурентам, хотя сам стоил дороже. А двухчиповые Voodoo5 проиграли своим конкурентам, тоже опоздав на год.

Монстр коллекции Voodoo5 6000 с четырьмя чипами VSA-100 так и не был выпущен. Изучение опытных образцов позднее показало, что он и правда мог бы стать самой быстрой видеокартой 2000 года. Но при цене 600 долларов это уже не имело особого значения. Времена изменились: пару Voodoo2 за 700 долларов покупали ввиду отсутствия вменяемых альтернатив, а тут слишком уж невелико было бы превосходство над куда более дешевыми GeForce 2 Ultra и Radeon 7500.
Возможно, что 3dfx сумела бы выплыть с новыми разработками. Однако, посмотрев на «успехи» Voodoo4 и Voodoo5, некоторые кредиторы решили не рисковать — и началась процедура банкротства. Все имеющие ценность активы купила Nvidia, большинство разработчиков ушло туда же, некоторых собрали конкуренты. На чем история, казалось бы, и закончилась.
Nvidia: SLI умер — да здравствует SLI
Но это только казалось. В нулевые был анонсирован переход от AGP/PCI к универсальной шине PCIe — и сразу же Nvidia заявила, что новые GPU среднего и высокого класса смогут работать совместно. А называлось это SLI — как встарь. Расшифровывалось, правда, уже как Scalable Link Interface, но принципиально не отличалось от последних разработок 3dfx. Да и немудрено: их Nvidia целиком и полностью получила после банкротства конкурента.

Сначала идея показалась покупателям очень привлекательной. Действительно, зачем менять видеокарту, когда можно докупить такую же и увеличить производительность? На деле же всё оказалось не так просто. Во-первых, требовалась специальная системная плата — за поддержку SLI приходилось платить. Во-вторых, видеокарты в то время слишком быстро устаревали. Купишь какой-нибудь GeForce 6600GT — а через три года новых на рынке уже нет, так что только на барахолках искать. А примерно за прежнюю стоимость GeForce 6600GT продается уже GeForce GTX 460, который мало того, что быстрее пары старичков в старых играх, так еще и с новыми играми гораздо лучше совместим. И у него всё более предсказуемо и с производительностью, и со всем остальным. Если же новые игры не нужны и б/у не пугает (а если пугает, то «старую» карту в пару все равно не купишь), так можно просто приобрести какой-нибудь изрядно подешевевший GeForce 7800GT — и всё. И не надо заранее готовиться к SLI, покупая специальную системную плату, которая дороже «неспециальной».

Хорошо, идея поэтапной модернизации отпадает. Ставит ли это крест на SLI? Нет. Остается сфера применения, которая была у этой технологии изначально, еще во времена Voodoo2: очевидно, что пара топовых видеокарт мощнее одиночной. А может оказаться и так, что пара не топовых, но достаточно производительных видеокарт будет быстрее и уже не слишком дороже топовой. И тут есть за что побороться! Для покупателя проще всего, если пара GPU установлена на одной плате, хотя это и дорого, так что на рынке стараниями партнеров Nvidia появились «сдвоенные» модели. Позднее и сама компания не раз прибегала к их выпуску — именно в качестве топовых имиджевых решений, в том числе для демонстрации некоторых недоступных иными способами возможностей. Например, SLI поддерживал до трех видеокарт, но до четырех GPU. Причем первое всегда было доступно лишь в HEDT-системах (за очень редкими исключениями), а вот второе на паре «двухголовых» видеокарт уже могло бы оказаться куда более массовым решением. По крайней мере, в теории. На практике и одна такая карта стоит слишком дорого.

Точнее, стоила, потому что последним «фирменным» решением для игрового рынка оказался GeForce GTX 690, появившийся 10 лет назад. А вообще последний двухчиповый адаптер на «стандартных» GPU был выпущен для профессионального рынка — им стал Titan Z образца 2014 года. С тех пор утекло много воды и кремния, но к концепции multi-GPU Nvidia уже не возвращалась. Хотя формально поддержка SLI в новых семействах всё еще сохраняется, но, например, среди всех GeForce RTX 30 работать в таком режиме может только GeForce RTX 3090 — и лишь две карты, а не три, как ранее. С учетом нынешних цен считать это ограничением сложно, но сам факт забавен. Ведь, в конце концов, цены не всегда были такими: последний майнинговый бум начался как раз после выхода в свет 30-го семейства, а к multi-GPU Nvidia начала охладевать раньше. Нельзя сказать, что процесс был монотонным: например, GeForce RTX 2070 тоже не поддерживала SLI, а вот в GeForce RTX 2070 Super совместимость с данной технологией вернули. И вообще, из драйверов никто поддержку не убирал, хотя можно было бы разгрузить программистов.

С чем это связано? Возможно, станет понятнее, если мы посмотрим на второго игрока рынка. По иронии судьбы, в вопросе multi-GPU он не раз оказывался именно вторым, хотя в свое время сделал для популяризации темы больше всех.
AMD: мы пойдем другим путем

Главным моментом в деятельности ATi (а затем и AMD) следует считать то, что компания всегда рассматривала multi-GPU не как способ ставить рекорды, а как возможность обойтись без слишком больших и сложных процессоров. Идея очень похожа на 3dfx «на излете», да и начало ей было положено тогда же. Первой разработкой стал ATi Rage Fury Maxx — по сути, две Rage Fury Pro на одной плате. Придумывать нечто подобное пришлось, поскольку GPU компании Rage 128 как в обычной, так и в Pro-модификации, несмотря на все амбиции, лидером на рынке не стал. Более того, вывод его на рынок занял столько времени, что целевые конкуренты сменились. То есть разрабатывали чип, чтобы обогнать Riva TNT2 Ultra, однако даже его не обогнали, а с выпуском поспели прямо к выходу GeForce 256 — со всеми вытекающими. Решить проблему должна была как раз технология Maxx, но в первой своей инкарнации она вообще нормально не заработала — худо-бедно чего-то добиться можно было лишь под управлением Windows 9x, а работоспособный драйвер для NT-линейки так и не вышел.
Однако была у Maxx и серьезная отличительная особенность: если прочие технологии первое время оперировали строками или полосами одного кадра, то тут сразу же всё началось с AFR-рендеринга, когда каждый процессор занимается своим кадром целиком. Позднее на этот же вариант рендеринга пришлось перейти и Nvidia: современные технологии оказались практически несовместимы с попиксельной работой образца девяностых и нулевых. Особенно явно это начало́ проявляться после массового внедрения полноэкранного сглаживания — в этом случае пытаться делить экран на отдельные части чревато артефактами на стыках. Поэтому именно к Alternate Frame Rendering со временем пришли все производители. Но первой AFR внедрила именно ATi.
Первая проба, как уже было сказано, вышла неудачной, так что о Maxx все быстро забыли. Снова к multi-GPU в ATi вернулись в 2005 году — уже под маркой CrossFire. Первыми GPU с ее поддержкой стали присутствовавшие на тот момент на рынке Radeon X800 и Radeon X850, однако такое внедрение «по живому» не позволяло просто взять и объединить любую пару продающихся карт — в качестве «главной» требовалась специальная Radeon Х8х0 CrossFire Edition. Впрочем, это стало всего лишь издержками переходного этапа, а в дальнейшем всё необходимое для работы «встраивалось» непосредственно в новые GPU. Так что технически подход оказался очень похож на Nvidia SLI — ответом на которую технология CrossFire и считалась.

По ряду причин ответ оказался более мощным. Например, ATi очень лояльно подошла к лицензированию технологии, предлагая ее поддержку производителям чипсетов бесплатно. Кроме того, в отличие от Nvidia, компания вообще не слишком много требовала от производителей системных плат. Для SLI обязательным было симметричное подключение, что реализовывалось в основном в топовых чипсетах. CrossFire же прекрасно работал и по несимметричной схеме. Например, одну видеокарту можно было подключить к северному мосту при помощи PCIe Gen2 x16, а вторую — к южному через PCIe Gen1 x4. И расположение слотов ничему не мешало: в отличие от SLI, CrossFire изначально могла обходиться без соединения видеокарт отдельными мостиками, передавая данные для синхронизации через шину. Да, компания не рекомендовала этим злоупотреблять, постоянно повторяя, что наилучших результатов можно добиться при симметричной организации работы и наличии мостика. И вообще, лучше покупать плату на одном из чипсетов именно ATi. Но это было лишь рекомендацией, а не «обязаловкой». В итоге, хоть SLI и появилась на рынке немного раньше, однако вскоре систем с поддержкой CrossFire стало намного больше.
Впрочем, принципиально это ничего не изменило. Как уже было сказано выше, в условиях быстрой смены стандартов и вообще бурного прогресса поэтапный апгрейд видеосистемы не имел смысла. Единственное применение технологии виделось в том, чтобы собрать сразу нечто рекордно мощное. Но для этого нужно было взять пару-тройку самых мощных видеокарт. А вот с этим в те годы лучше обстояли дела у Nvidia, так что на деле SLI-сборки встречались чаще. За поддержку SLI нужно было платить, но готовые платить находились. Чтобы переломить ситуацию, нужно было выпускать топовые в полном смысле слова GPU, но с этим у ATi были сложности. И покупка ATi компанией AMD в 2006 году положение дел не слишком изменила. Даже наоборот: на время был задекларирован отказ от монолитных GPU высокой мощности. Логичное обоснование заключалось в том, что процесс разработки сложный, производство — тоже непростое, да и брака при выпуске чипов большой площади оказывается много. Поэтому топовые GPU стоят дорого, а нужны в очень ограниченных количествах. Значит, имеет смысл сконцентрироваться на GPU для массового сегмента, а топовые ускорители в обязательном порядке должны быть двухчиповыми — для чего у компании есть все необходимые технологии.
Первой реализацией данной концепции стало семейство Radeon HD 4000, где двухчиповых карт было даже две: Radeon HD 4850 Х2 и Radeon HD 4870 Х2. Посмотрев на результат, в AMD решили больше так не делать: все-таки у CrossFire были свои недостатки, да и не везде технология работала (что в полной мере относилось и к SLI), так что выпуск карты с парой нетоповых чипов лишь отвлекал на себя ресурсы без особой пользы. В дальнейшем двухчиповыми остались только настоящие флагманы: Radeon HD 5970 сменил Radeon HD 4870 X2, а позднее уступил место Radeon HD 6990. Затем на смену пришел Radeon HD 7990, потом Radeon HD 8990, а в 2014 году всё закончилось Radeon R9 295X2. Nvidia, напомним, остановилась на GeForce GTX 690 в 2012 году, то есть чуть раньше, чем вышел Radeon HD 8990. Впрочем, если учитывать Titan Z, то попадаем в тот же 2014-й — и с преимуществом AMD, поскольку производительность этих видеокарт в играх оказалась практически равной, а вот цена отличалась раза этак в два (понятно, в чью пользу). Но продолжать выпуск двухчиповых карт после Radeon R9 295X2 AMD тоже не стала. Несмотря на то, что почти весь 2015 год в этих ваших интернетах бродили слухи о скором выходе Radeon R9 Fury X2, ничего подобного не произошло.
Почему? На деле предпосылок было несколько. Если говорить о банальных технических причинах, то для выпуска Radeon R9 295X2 уже пришлось штатно использовать жидкостное охлаждение, а энергопотребление карты достигало фантастических (не только по тем временам) 500 Вт. Это показывало, что не так уж просто создавать топовые видеокарты на «нетоповых» GPU. К тому же, и популярность AFR к тому времени начала падать. Во многом это было связано с необходимостью очень тщательно «вылизывать» драйвера и прочее программное обеспечение, причем результат всё равно нередко оказывался далек от идеального и по качеству изображения, и по количеству fps. При этом стоили «двухстволки» очень дорого, но первое время давали пользователю слишком мало, если сравнивать с их «половинками», а к моменту, когда игры становились сложнее и, казалось бы, можно было начать всех побеждать… К этому моменту уже выходило новое поколение видеокарт — более мощное и технологичное.
Еще одной серьезной проблемой оказался общий рост цен на видеокарты и сами GPU. Обратная сторона технического прогресса и конкуренции: когда на рынке остаются два разработчика, каждый год пытающиеся прыгнуть выше головы, их топовые продукты становятся всё более дорогими по объективным причинам. 350 долларов несколько пугали первых покупателей Voodoo2, а позднее — и других выбирающих топовое решение, но ввиду отсутствия вменяемых альтернатив те расходы не казались неподъемными. После 2010-го цена одной топовой видеокарты уже оказывалась сопоставима с Voodoo2 SLI. Сколько могла стоить двухчиповая модель? Как минимум, вдвое дороже. На самом деле — в два-три раза дороже, поскольку объединить всё на одной плате сложнее, чем выпустить две отдельные. А тут уже сыграли и старания AMD по расширению ассортимента систем «CrossFire-ready». Зачем покупать Radeon R9 295X2 за 1500 долларов, когда практически в любой пригодный для нее компьютер можно установить пару Radeon R9 290X, получив тот же эффект примерно за 1100 долларов. Теоретически, четыре Radeon R9 290Х влезали в куда меньшее количество систем, нежели пара Radeon R9 295X2, но… узок их круг, страшно далеки они от народа. В общем, экономия на разработке топовых GPU в пользу топовых видеокарт с двумя GPU оказалась фикцией.

Близкой же к народу в AMD попробовали сделать технологию Hybrid CrossFire, предназначенную для объединения усилий бюджетных видеокарт и интегрированного видео. Типичный win-win: по отдельности ни то, ни другое игровым решением считать не выходит, а вот вместе может получиться что-то путное. Особый интерес представляло второе поколение этой технологии, сменившее название на Dual Graphics и появившееся после переезда интегрированного GPU непосредственно в процессоры. Сопровождалось это резким увеличением производительности интегрированного GPU — до сопоставимого с младшими дискретками уровня. А объединение двух устройств равной мощности производительность фактически удваивает.
На бумаге всё выглядело гладко. Практическое же изучение вопроса показало, что сама по себе интегрированная графика первых APU AMD хороша (по меркам этого класса решений), объединение ее с младшими дискретными видеокартами производительность увеличивает, но… в ноутбуке это еще может дать какой-то эффект, а в настольной системе бесполезно. Из-за выбранной AMD ценовой политики процессоры с графикой стоили намного дороже, чем без таковой — настолько, что проще было купить «без» и видеокарту помощнее, уложившись в тот же суммарный бюджет. Производительность оказывалась более высокой и, главное, предсказуемой — в отличие от Dual Graphics, унаследовавшей все проблемы CrossFire и SLI (ведь технологически это одно и то же). А дальше дискретные GPU начали развиваться намного быстрее, чем интегрированные (у AMD традиционно ресурсов на все сегменты рынка не хватало), так что вскоре подходящие для сдвоенных конфигураций видеокарты просто исчезли с рынка.

Положение дел могло бы измениться четыре года назад, когда после долгого перерыва появились APU Ryzen. Встроенные в них GPU опять «подтянулись» до уровня младших дискретных видеокарт, так что можно было бы вернуться и к идее Dual Graphics. Теоретически. На практике старшие интегрированные Radeon Vega сопоставимы по производительности лишь с Radeon RX 550, который использует более раннюю графическую архитектуру, так что организация их совместной работы классическими методами была бы затруднительной. «Медленных» же дискретных Vega AMD разрабатывать не стала. Да и вообще бюджетные видеокарты вскоре оказались заброшены обоими игроками рынка, поскольку в условиях майнингового бума и дефицита производственных мощностей компании не справлялись с поставками даже более маржинальных решений. Так что не надо просить нас провести тесты APU Ryzen при совместной работе с дискретной видеокартой — они Dual Graphics попросту не поддерживают. Возможно, потому, что в 2018 году типовые технологии multi-GPU уже заведомо зашли в тупик. И выход из этого тупика нужно искать совсем в другом месте.
Будущее multi-GPU: DirectX 12 и Vulkan
В чем основной недостаток классических методов? Они слишком простые и прямолинейные. Первое время (когда вся 3D-графика была простой и прямолинейной) этот подход был правильным: игровые приложения вовсе не обязаны как-то специально поддерживать SLI-режим, поскольку пара Voodoo и без их ведома будет отлично рендерить картинку по строкам. Но чем сложнее и «глобальнее» становились 3D-функции, тем больше недостатков появлялось у методов с чередованием строк или областей рендеринга. В конечном итоге AMD и Nvidia пришлось целиком и полностью перейти на AFR-рейтинг: только метод чередования полных кадров позволял сохранить тот же метод грубой силы — ускоряем приложения без их ведома. Причем работало это уровнем ниже не только самих приложений, но и API высокого уровня.
Однако несколько лет назад и AFR начал пасовать, поскольку оказался несовместим с новейшими технологиями, которые применяются уже даже не к каждому кадру, а к целой их последовательности — так, например, работают современные методы масштабирования разрешения, вроде DLSS. Кроме того, у AFR есть немалое количество собственных недостатков. «Построчное сканирование» удваивало производительность без побочных эффектов, а вот последовательная обработка кадров так не может: разные кадры могут просчитываться разное время. В итоге средняя частота кадров растет, но картинка получается дерганной. К тому же, AFR добавляет задержку (в ответ на действия пользователя) как минимум на один кадр, который генерируется на фоне «в буфер». Если же мы объединим не два ускорителя, а три-четыре, то и лаги увеличатся пропорционально. И вот этот эффект неустраним в принципе, а сочетание упомянутых факторов может привести к тому, что игровой комфорт в AFR-режиме снизится по сравнению даже с одиночной видеокартой.
И это еще не всё. Вспомним: одной из ключевых возможностей Voodoo2 SLI являлось увеличение разрешения. Это было важно уже на тот момент времени, поскольку 800×600 многим не хватало: мониторы умели больше. И сейчас повторяется та же ситуация, но AFR не позволяет в общем случае взять и увеличить разрешение. Да, производительность двух объединенных GPU выше. Однако для работы в более высоком разрешении каждый GPU должен иметь достаточное количество памяти, поскольку ему приходится обрабатывать полные кадры и хранить все текстуры. Можно бы, конечно, снизить разрешение и включить одну из технологий его масштабирования, но они ориентированы на последовательности кадров, так что со SLI/CrossFire несовместимы по своей природе. И это снова тот случай, когда одиночный GPU, если задействован DLSS, способен потенциально обойти пару аналогичных и по скорости, и по качеству картинки.
Словом, работать совсем без ведома игровых приложений сейчас не выходит. А сами они в последнее время чаще всего использование SLI и CrossFire запрещают. Да и пользователю еще надо умудриться обзавестись подходящей для multi-GPU системой: что творится со SLI, мы описали выше, а AMD просто убрала поддержку CrossFire начиная с GPU семейства Navi. Так что даже если раздобыть пару карт линейки Radeon RX 5000 или Radeon RX 6000, то заставить их работать совместно не удастся. А более старые карты ничем не помогут, поскольку новые игры откажутся работать в режиме SLI или CrossFire. Таковы, например, все игры с поддержкой трассировки лучей или тех же технологий масштабирования разрешения.
По крайней мере, ничего не получится, если продолжать оперировать классическими методами. Почему это не мешает тем же Instinct? По той же причине, по которой SLI или CrossFire не нужны майнерам, а вот большое количество видеокарт им было нужно 🙂 Дело в том, что при использовании GPU для расчетов не требуются технологии их объединения. Организация работы — дело самих приложений, которые способны настраиваться на любое количество чипов и потоковых процессоров. И не обязательно одинаковых. Тот же код OpenCL может одновременно крутиться на ядрах центрального процессора и нагружать работой несколько GPU (можно разных).

А нет ли возможности заставить так же работать игровые приложения? Когда-то — не было. Поэтому производители и разрабатывали технологии создания «виртуального» видеоадаптера, чтобы задействовать несколько физических видеокарт силами существовавших API. Как только выяснилось, что этот путь завел в тупик, за дело взялись программисты, которые приступили именно к доработке API. В итоге DirectX 12 и Vulkan практически одновременно получили поддержку многопроцессорной работы. В смысле — «много-графически-процессорной», поскольку они теперь умеют работать не с одним рендер-устройством (что было верно для ранних версий DirectX и OpenGL), а с любым их количеством (и качеством). По сути, новые возможности API полностью заменяют не только SLI/CrossFire в стандартном виде, но и Dual Graphics, причем может одновременно использоваться продукция разных производителей: так, бюджетной видеокарте AMD или Nvidia сможет помогать интегрированный GPU в процессоре AMD или Intel. Понятно, что сильно «перекошенные» конфигурации большого смысла не имеют, однако «интеграшка» сможет разгрузить даже небюджетный GPU от какой-то побочной деятельности, а это в нынешних условиях уже немало. Особенно это важно в ноутбуках, коих давно продается намного больше, чем настольных систем, в том числе и потому, что многие геймеры переехали на портативные системы (что еще лет 15 назад казалось невозможным — не говоря уже о 25).
Словом, всё замечательно. Но есть нюансы. Ведь для поддержки новых возможностей придется полностью перейти на новые API. И, соответственно, на новые движки — что обычно происходит с задержкой. Например, разные гоночные симуляторы до сих пор используют движок EGO 4.0, появившийся еще в 2015 году. С тех пор к нему «прикрутили» поддержку DirectX 11, а затем и DirectX 12, однако это сказалось лишь на качестве картинки, да и то не слишком. Сама же механика рендеринга остается неизменной на протяжении нескольких лет.
В общем, для полной реализации новых возможностей потребуется обновить все игровые движки и, возможно, дорабатывать сами игровые приложения. Так что цена относительно высока. Но здесь хотя бы есть за что бороться, поскольку это multi-GPU на новом уровне. В частности, речь не идет уже о паре GPU одного производителя — совместно смогут работать разные, причем в любых количествах. И, кстати, можно вернуться от AFR, со всеми его недостатками, к SFR (Split Frame Rendering), когда видеокарты выполняют рендеринг разных частей одного кадра. Почему это важно? Потому что SFR позволяет «сложить» не только производительность, но и память отдельных видеокарт, что необходимо для перехода к высоким разрешениям. И теоретически мы получим ту самую возможность поэтапной модернизации, которая так манила в нулевые, но несколько раз оказывалась обманкой. Ведь раньше она требовала идентичности видеокарт — в отличие от multi-GPU силами API. В итоге, правда, может пострадать вторичный рынок, но производителям его точно не жалко.
А теперь еще об одном совпадении (из разряда Совпадение? Не думаю!). Информация о потенциальном светлом будущем стала просачиваться в массы с 2015 года. Напомним: и AMD, и Nvidia начали сворачивать классические технологии multi-GPU с 2014-го. Во всяком случае, именно тогда вышли последние двухпроцессорные «бытовые» видеокарты обоих производителей. В дальнейшем они несколько лет не мешали пользователям собирать такие конфигурации самостоятельно, но теперь уже и способствовать этому перестали. Зато дружно начали заниматься развитием технологий, со SLI и CrossFire просто несовместимых. Логика простая: зачем пытаться развивать явно тупиковое решение «на уровне драйвера», когда предложено более гибкое и универсальное? И, главное, основную часть работы по реализации которого можно переложить со своих программистов на ту же игровую индустрию. Поскольку если игра умеет использовать multi-GPU средствами API — это ей дополнительный плюс, а если что-то идет не так — в худшем случае минус, но минус игре же. И ее разработчикам. А все шишки за огрехи SLI и CrossFire, естественно, доставались AMD и Nvidia — даже если возникали не по их вине.

Правда, никаких официальных заявлений о прекращении работы над multi-GPU «на уровне драйвера» не прозвучало (видимо, это не повод для гордости). Поддержка соответствующих технологий, как уже было сказано, до сих пор появляется и в новых семействах GPU, просто ее никто не афиширует. А вот «раскручивали» SLI и CrossFire лет 15-20 назад не в пример громче, да и 10 лет назад (уже на са́мом закате) активные работы на этом направлении сопровождались не менее активным пиаром. В итоге то, что сейчас эти технологии фактически умерли, для многих остается неизвестно.
В то же время, multi-GPU «на уровне API» всё никак не может взлететь по нескольким причинам. Во-первых, продвигать его почти некому. Во-вторых, в нынешних условиях — и некуда. 10-15 лет назад, даже при активной поддержке производителей GPU, доля подобных решений в игровых компьютерах все равно ограничивалась единицами процентов. За последние пять лет мы пережили пару майнинговых бумов (точнее, второй еще до конца не пережили), на рынок видеокарт повлиявших понятно как. Сейчас мало кто хотя бы задумывается о том, чтобы установить в компьютер пару-тройку относительно современных видеокарт высокой производительности: одну бы купить — и то хорошо. А в таких условиях разработчики игр не слишком активно внедряют новые возможности, сколь бы привлекательными они ни были в теории. Нельзя сказать, что всё совсем плохо, но подходящие игровые проекты можно пересчитать буквально по пальцам. До сих пор. Как только дефицит GPU исчезнет, продвижением этих технологий займутся в том числе и производители, поскольку это возможность увеличить продажи количественно. Да и проблема с устаревшими игровыми движками автоматически «рассосется». Но старые игры так и останутся такими, какими были изначально.
Итого
Несложно заметить, что исторически в области графики многочиповые конфигурации всегда использовались как альтернатива разработке единого «слишком большого» чипа. Изначально это было связано с недостатками доступных процессов производства микросхем, так что первые 3D-ускорители были именно наборами из нескольких чипов, да еще в дополнение к «традиционной» 2D-части. Потом всё удалось упаковать в одну микросхему, но соблазн выпуска многочиповых решений у производителей остался. Особенно у, скажем так, производителей, немного отстающих в разработке топовых решений — хотя AMD одно время и объявляла это сознательной политикой. В целом двухпроцессорные видеокарты ATi/AMD чаще всего оказывались лидерами при сравнении с одночиповыми решениями Nvidia, но принципиально это ничего не меняло, поскольку в эту игру можно играть и вдвоем: Nvidia просто тоже выпускала карты на двух более мощных GPU (которые у нее были) и возвращала себе пальму первенства (вместе с кадкой :)). В конечном итоге технологии обеих компаний при изначально немного разных подходах к multi-GPU оказались практически идентичными, имели одинаковые достоинства и одинаковые недостатки. Которые их в конце концов и похоронили.
Но саму по себе идею multi-GPU — нет. Просто эволюция технологий показала необходимость отказа от метода грубой силы — и переноса всей поддержки на уровень API и приложений. Как оно уже давно работает в «неграфических» вычислениях на тех же GPU, которые применяются в игровых картах. У такого подхода тоже есть свои недостатки, но главную проблему он решает. Кому, как не приложению, нужно максимальное использование всех наличных ресурсов? Вот пусть создатели приложения и отдуваются.

Что же касается использования мультичиповых сборок в новых GPU AMD, то оно не имеет ничего общего с двухпроцессорными видеокартами недавнего прошлого (которые всего лишь представляли собой механическое объединение SLI или CrossFire на одной плате), но и с концепцией multi-GPU «на уровне API» у него тоже нет ничего общего. Первое уже окончательно устарело и снято с повестки, второе еще не стало простым и привычным делом, так что и полагаться на него рано. Скорее, это возврат к самой ранней концепции 3dfx — только на новом технологическом уровне. Подобный подход AMD уже опробовала в процессорах Ryzen и Epyc, где он себя показал в целом с лучшей стороны. А как это будет работать на 3D-рынке — покажет время. Ждать осталось совсем недолго.
Краткое исследование мульти-GPU
С развитием наборов данных и моделей глубокого обучения проводится все больше и больше исследований, направленных на повышение точности и скорости вычислений. В результате многие фреймворки глубокого обучения широко используются на GPU как в академических исследованиях, так и в промышленности.
Multi-GPU также является новой областью для изучения. Как заявляет Nvidia[1], использование нескольких GPU может обеспечить существенную экономию времени благодаря сверхбыстрой обработке вычислений, рендерингу и другим вычислительным и визуально интенсивным проектам. Этот момент может быть подтвержден исследованием Томаса и др. [2]. Они используют несколько графических процессоров в своих исследованиях визуализации больших данных, и мульти-графические процессоры действительно ускоряют рендеринг, который является основой для рендеринга больших наборов данных. Кроме того, несколько графических процессоров выполняют несколько итераций, что означает, что проект можно пересматривать несколько раз, что приводит к повышению производительности в условиях ограниченного времени.
Предыдущие исследования
Некоторые исследования проводятся для тестирования нескольких графических процессоров, развернутых на разных платформах. С одной стороны, можно заметить различную производительность одного GPU и нескольких GPU. С другой стороны, также могут быть показаны сравнения различных фреймворков. В то же время будет обнаружена сложная часть использования нескольких графических процессоров.
Одно исследование было проведено Ши и др. [3] для оценки производительности четырех современных распределенных сред глубокого обучения (например, Caffe-MPI, CNTK, MXNet и TensorFlow ) в средах с одним GPU, несколькими GPU и несколькими узлами.
Эксперимент разработан с 4-узловым кластером графических процессоров, в котором каждый узел имеет четыре карты Nvidia Tesla P40. На следующем рисунке (Рис.1) показана внутриузловая топология.

Ши и др. выбрали три CNN, а именно AlexNet, GoogleNet и ResNet-50, и запустили их в наборе данных ILSVRC-2012 ImageNet. Кроме того, они задают разные конфигурации в соответствии с особенностями тестовых фреймворков.
Будут обсуждаться результаты одного GPU и нескольких GPU.
Для оценки одного графического процессора результат показан в таблице 1. После сравнения эти платформы показывают разные возможности. По словам Ши и др., CNTK имеет более быстрое копирование данных, операции прямого и обратного распространения. Caffe-MPI скрывает накладные расходы на ввод-вывод.

Для теста с несколькими графическими процессорами производительность связанных фреймворков указана на следующем рисунке (рис. 2). Ши и др. показывает, что Caffe-MPI, MXNet и TensorFlow достигли почти линейного масштабирования от одного до двух графических процессоров, в то время как CNTK имеет лишь небольшое ускорение при использовании нескольких графических процессоров.

Чтобы выяснить причину, накладные расходы на передачу данных заключаются в следующем. Ши пришел к выводу, что для снижения влияния агрегации градиентов в S-SGD необходимы два фактора: высокая скорость передачи данных между графическими процессорами и параллелизм между связью и вычислениями.

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

Кроме того, автор также указывает, что различия возникают из-за методологий, используемых для связи между машинами, таких как Caffe-MPI и CNTK с использованием NCCL2.0, MXNet выбирает связь через сокет TCP, а TensorFlow использует grpc. После анализа NCCL2.0 показал высокую эффективность и низкую задержку.
Новое исследование
Как упоминалось выше, узким местом кластера с несколькими GPU являются накладные расходы на передачу данных. Кроме того, нестабильность большого мини-пакетного обучения также является проблемой. Однако эти проблемы были преодолены прорывным исследованием, проведенным корпорацией Sony.
В 2018 году Sony Corporation[5] установила новый рекорд: они обучили ResNet-50 всего за 224 секунды с точностью проверки 75,03%, используя 2176 графических процессоров Tesla V100. Из таблицы 4 видно, что эта работа завершает тренировку на 172 секунды быстрее и с небольшой потерей точности 0,77%.

Есть два основных подхода, которые помогают преодолеть проблемы, которые мы пришли к выводу, и создать такую отличную запись: контроль размера партии и 2 D-Torus All-reduce.
Для управления размером пакета они увеличивают общий размер мини-пакета во время обучения, чтобы уменьшить нестабильность обучения большого мини-пакета. В этом исследовании контроль размера пакета используется для уменьшения ухудшения точности при размере мини-пакета более 32 КБ.
Подход 2D-Torus All-reduce основан на предыдущих коммуникационных топологиях, таких как Ring all-reduce и иерархическое Ring all-reduce, чтобы преодолеть ограничения этих топологий. На рис.3 заметно, что это пример 2D-Torus all-reduce. Reduce-scatter выполняется по горизонтали, а all-reduce — по вертикали. Наконец, все сборы выполняются горизонтально. Следует отметить одну вещь: накладные расходы на коммуникацию в 2D-Torus all-reduce меньше, чем в Ring all-reduce.

Новая технология
Для повышения производительности мульти-GPU придуманы новые волшебные технологии. Наиболее популярными двумя сопоставимыми продуктами являются Tesla V100 от Nvidia и Tensor Processing Unit (TPU) от Google.
Согласно Руководству по производительности Tesla V100[6], Tesla V100 — это двигатель современного центра обработки данных, обеспечивающий великолепную производительность при меньшем количестве серверов, низких затратах и уменьшении накладных расходов на сеть. Tesla V100 может помочь в исследованиях в различных областях. , такие как глубокое обучение, молекулярная динамика, квантовая химия, наука о Земле, проектирование и вычислительные финансы. Кроме того, производительность Tesla V100 лучше, чем у предыдущих продуктов. Возьмите глубокое обучение в качестве примера: Caffe, TensorFlow и CNTK работают до 3 раз быстрее с Tesla V100 по сравнению с P100; 100 % лучших фреймворков для глубокого обучения работают с ускорением на GPU; До 125 TFLOPS операций TensorFlow на GPU; До 32 ГБ памяти на GPU; Пропускная способность памяти до 900 ГБ/с на GPU. TPU — специально разработанный чип для глубокого обучения. На официальном сайте Google [7] он был разработан для машинного обучения, поддерживающего их основные продукты, такие как Translate, Photos и Gmail. После выпуска TPUv2 он создается для ИИ в Google Cloud. В то же время это может ускорить итерацию решений машинного обучения.
В этом году проводится сравнение TPUv2 от Google и V100 от Nvidia на ResNet-50[8]. Сравниваются четыре чипа TPUv2 и четыре графических процессора Nvidia V100, и оба они имеют одинаковую общую память 64 ГБ, что может гарантировать, что можно использовать одинаковые размеры пакетов и обучать одну и ту же модель. В этом исследовании используется модель ResNet-50 на наборе данных ImageNet.
Выполняются два сравнения: тест на сходимость и точность.
Что касается результата пропускной способности, то пропускная способность измеряется количеством изображений в секунду на синтетических данных и сравнивается при различных размерах пакетов.

Из рис. 4 видно, что существует незначительная разница в пропускной способности между TPUv2 и V100 при размере пакета 1024. Однако V100 работает лучше, чем TPUv2, в относительно меньшем пакете, таком как 512, 256 и 128. (На самом деле эти настройки размера пакета не рекомендуются для TPUv2)
В тесте на точность и сходимость обучение проводится с размером пакета 1024 для 90 эпох и сравниваются результаты на проверочных данных. Результат показывает разницу в 0,7% между этими двумя реализациями. Хотя TPUv2 работает немного лучше, чем GPU V100, это также указывает на его преимущество, которое может привести к значительным различиям в других аспектах.

В этой статье также приводится анализ стоимости использования нескольких графических процессоров. Согласно таблице 5 очевидно, что Cloud TPU может сэкономить средства.

Кроме того, на рис.6 приведен ценовой анализ определенных критериев времени и точности, которые должны быть соблюдены. Например, стоимость решения, реализованного TPU, с точностью 75,7% составляет 55 долларов, что намного дешевле, чем у V100.
Библиотека глубоких нейронных сетей NVIDIA CUDA® (cuDNN) — это библиотека примитивов с ускорением на графическом процессоре для глубоких нейронных сетей. cuDNN предоставляет хорошо настроенные реализации для стандартных процедур, таких как прямая и обратная свертка, объединение, нормализация и уровни активации[9].
Последняя версия 7.4 имеет следующие особенности: Обучение ResNet-50 и GNMT в 3 раза быстрее на Tesla V100 по сравнению с Tesla P100.
- Улучшена поддержка NHWC для пулинга и пошаговой свертки.
- Получите повышенную производительность для обычных рабочих нагрузок, таких как ResNet50 и SSD, поскольку пакетная норма теперь поддерживает макет данных NHWC с добавленной возможностью объединения пакетной нормы с операциями добавления и ReLu.

Кроме того, Caffe™ — это среда глубокого обучения, созданная с учетом гибкости, скорости и модульности. Первоначально он был разработан Berkeley Vision and Learning Center (BVLC) и участниками сообщества[10].
NVCaffe™ — поддерживаемая NVIDIA ответвление BVLC Caffe, настроенное для графических процессоров NVIDIA, особенно в конфигурациях с несколькими графическими процессорами.

В заключение, использование нескольких GPU может ускорить вычисления и сделать глубокое обучение более эффективным. Тем не менее, есть некоторые проблемы реализации на платформах, которые необходимо преодолеть, например, накладные расходы на передачу данных. Появляются новые технологии, помогающие повысить производительность и сделать эксплуатацию более простой и эффективной.
[2] Фогал, Т., Чайлдс, Х., Шанкар, С., Крюгер, Дж., Бержерон, Р. Д., и Хэтчер, П. (2010, июнь). Визуализация больших объемов данных на кластерах с распределенной памятью и несколькими GPU. В Материалы конференции по высокопроизводительной графике (стр. 57–66). Еврографическая ассоциация.
[3] Шаохуай Ши и Сяовэнь Чу. 2017. Моделирование производительности и оценка распределенных платформ глубокого обучения на графических процессорах. Препринт arXiv arXiv: 1711.05979 (2017).
[5] Миками Х., Суганума Х., Танака Ю. и Кагеяма Ю. (2018). Обучение ImageNet/ResNet-50 за 224 секунды. препринт arXiv arXiv:1811.05233
Начало Эры Multi-GPU видеокарт или когда две головы лучше одной
Сейчас за окном 2021-й год. Sli практически мертв. Раньше было лучше? Возможно. Итак, сейчас Sli доступен лишь избранным, ведь сейчас только одна игровая модель видеокарты поддерживает этот фантастический режим – её величество королева Мать всех видеокарт — Nvidia RTX 3090. Кто из здешних обитателей обладает ею? А парой? В конце, в комментариях, почитаем признания счастливчиков, если таковые здесь имеются. Но это конец истории. Nvidia всячески хочет избавиться от SLI.

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

А пока сходим в техническую библиотеку отдела Nvidia. Где-то лет 20 назад, почитаемая компания номер 1 в 3D графике приказала долго жить. И Nvidia купила ее, а заодно все её наработки и патенты. Олдфаги, догадались, что речь идет о 3DFx. 3DFx была первой компанией, которая дала миру SLi!
реклама
Скажем все дружно за этой ей — Спасибо! И это не шутка, в те древние времена, когда пиксели на экране были с кулак, а максимальное изображение монитора было 800х600, именно 3DFx дала возможность расширить границы 3D и играть в игры в разрешении 1024х768. Только пара видеокарт 3Dfx Vodoo2 могла аппаратно поддерживать такое разрешение для 3D игр.

Одна вторая «Вуду» тянула лишь 800 на 600. Вот, тогда польза от второй видеокарты была как раз осязаема, реальна нужна. А что сейчас делать с парой RTX 3090? Хороший такой вопрос, но оставим его без ответа, на совесть владельцам RTX 3090, я думаю они появятся в обсуждении и всё нам расскажут. Я пока сижу на встройке и о RTX 3090 могу лишь мечтать, как и 99% всех, кто сюда забрел.
Итак, Nvidia купила 3DFx и получила доступ к технологии SLi. Я рассказываю по-простому, на самом деле технология построения изображения у обоих компаний в корне отличались, но для обывателя они называются одинаково и в обоих случаях обе видеокарты соединяются физически с помощью гибкого мостика, шлейфа или перепаянного куска кабеля от «флоппика». И после этого в недрах самой «зеленой» компании родился «План Б» по захвату всего рынка 3D ускорителей. Пока ATI сидела и курила нервно в сторонке, гибкие мостики окутывали умы инженеров Nvidia и маркетологов. И вот тот день настал!
реклама

С приходом на рынок 6000-й серии «Жифорсов» Мир изменился. Теперь каждый геймер хотел не одну, а сразу две видеокарты! «Не больше двух в одни руки» — такие были лозунги в магазинах в где-то в первых числах января 2005 года. При этом производители блоков питания, очень сильно потирали свои влажные руки, ведь спрос на мощные блоки питания вырос на 65%!
А если к этому добавить смену molex коннекторов на специальные 6-pin коннекторы для видеокарт, то и на все 100%. В то время изможденные геймеры, со старыми блоками питания, бродили по компьютерным рынкам в поисках переходников molex-6pin. Тогда еще не было AliExpress и засилья китайским мастеров. Я сам ждал свой коннектор для новой видеокарты 3 дня!

реклама
Местные предприниматели его вытащили из коробки и видимо потом перепродали. В общем, проблем стало у всех как минимум на одну больше. А все из-за 3Dfx, которая протянула неожиданно ноги. Хитрые игроделы, получив допинг от известной компании сразу же заявили, что их игры будут работать быстрее в 2 раза, главное — это купить эту лицензионную игру и вторую видеокарту.
Любители помериться попугаями в тестовых бенчмарках тоже побежали покупать вторую видеокарту, ведь нужно больше золота, очков в итоговом окошке теста. В общем, как ни крути, но вторую видеокарту каждый порядочный энтузиаст был обязан купить. В то время, я был в Швеции и собственноручно видел, как сметали с прилавков магазинов новенькие 6600GT и 6800GT. Сейчас можно вспомнить аналогию очередей за Iphon’ами, хотя это скучно, ведь зачем покупать второй «Айфон»? Звонить самому себе? Я лучше побеседую с Siri.

Да, проблемы и еще раз проблемы. Но, вдруг появилось оригинальное решение! А что, если на одной плате разместить 2 GPU? Крутая идея, да? А еще круче позволить объединить две таки двухголовых видеокарты в Sli. Вау! «Это уже фантастика» — кричали все начинающие блогеры. Ютьюба тогда еще не было. Первой компанией, которая просекла фишку была — Gigabyte! Это как изобрести Iphone! Отдел маркетинга визжал и пищал о будущих сверхприбылях, ведь пока больше никто из производителей не додумался до такой идеи. И вот первым продуктом стала Gigabyte 3D1 6600GT Dual.

В день анонса было разбито несколько тысяч бутылок шампанского и детских мечт. Обзорщики плакали и рыдали, ведь им посчастливилось прикоснуться к святому Граалю, квинтэссенции бытия 3D и просто хорошей видеокарте с двумя GPU на борту. Но был, как всегда, один нюанс. О котором не сочли нужным все рассказать и те пользователи, которые купили эту видеокарту, потом остались без ногтей.
Они из загрызли их до дыр. А все потому, что это волшебная видеокарта могла работать только на паре моделей материнских плат Gigabyte. Опять горе и слезы. Но главное ведь продать, а пользователи сами потом разберутся. Естественно, в мануале все было написано, но наши люди сначала делают, а потом читают. Я и сам так иногда делаю, чего скрывать.

В общем все обзорщики похвалили инициативу Gigabyte, пожали руки и разошлись, захватив с собою шампанское. А Pr-отдел гигабайта не сидел сложа руки, в недрах секретной лаборатории кипела работа над двойной 6800 GT! Черт побери, это даже круче чем сейчас одна RTX3090. И они это сделали! Так появилась Gigabyte 3D1 6800GT Dual. Это по истине царская карта взгляните сами.

За эту карту не грех и почку было в то время отдать. Внешний респектабельный вид, радиатор в позолоте, уникальный дизайн и голубой текстолит, все говорило, что к хозяину такой карты без стука лучше не подходить. Если вы проникните в его жилище чтобы хотя бы одним глазком посмотреть на этот шедевр инженерной мысли, если он вас сам не убьёт, то вас точно загрызет его собака. Поэтому нужно сначала стучаться.
Для более простых энтузиастов или младших братьев обладателей Gigabyte 3D1 6800GT Dual, компания Gigabyte выпустила младшую модель на базе двух GPU 6600 без суффикса GT. Ну а что, всё правильно, каждому брату по видеокарте. Называлась такая видеокарта Gigabyte 3D1 XL 6600 Dual.

Алло Асус? Срочно зайдите в ординаторскую, пациенту плохо! У него неизлечимая SLi-зависимость и срочно нужно видеокарто-вмешательство. Да вы не ослышались, чтобы было делать реальным пацанам с мамками не от Gigabyte? Не менять же свой топ и не изменять своему любимому бренду! А таких было много, головные боли не могли излечить даже в Pr-отделах многих компаний. Но, как всегда, нашлись спасители, кошельков и душ страждущих.
Компания Asus просто влетела на рынок вслед за Gigabyte и наделала шума еще больше, интернет тогда чуть не захлебнулся слюной от нового DUAL GPU адаптера — ASUS 6800 GT Dual. Если вы боитесь монстров или приведений не смотрите вниз, это ужасно. Ужасно красиво =)

Размеры этого монстра приводили всех в шок, таких видеокарт тогда еще не видел никто! Все были в шоке, даже отец одного школьника, которого развели на эту «дуру». Мало того, что она не вмещалась в системный блок, так и старенький блок питания уходил в защиту и ни при каких обстоятельствах не выходил из неё. Пришлось покупать новый корпус и блок питания, ну а что делать, обратного пути уже не было. В комплекте к видеокарте шел специальный SLI переключатель, который позволял этой видеокарте работать, где пожелает её повелитель.

Остальные производители кусали себе локти, ведь они не могли ничем ответить. Но Leadtek тут подсуетилась и под шумок представила свою видеокарту — Leadtek PX6600GT Duo TDH Extreme. Видеокарта была построена на базе пары видеочипов NV43, которые функционировали на частоте 525 МГц, что было на 25 МГц выше, чем у Gigabyte 3D1. Получи ответочку! Видеокарта получилась очень хорошей, впрочем смотрите сами.

Темный кожух, приставка Extreme, на коробке сам Посейдон или Зевс, ну что еще нужно? Правильно – вторую такую! Но пока еще производители не решили эту проблему, поэтому такая видеокарта стояла в системнике в гордом одиночестве.
Что же было дальше? А дальше было еще круче — Sli рулил, DOOM3 нагибал врагов чудовищным FPS и умопомрачительной графикой. Даже такие монстры стонали под натиском громадных текстур, ведь в SLi память каждого видеоадаптера не складывалась. Пищали и дроссели видеокарт и блоков питания, как и подрастающая молодежь, попробовавшая вкус SLi. Sli был как наркотик, один раз попробуешь, обратно не слезешь.
Сейчас сюда могут набежать многочисленные Павлики и Кириллы комментаторы, и вставить жестко свои 5 копеек, но я вам отвечу, коли SLi тогда не пробовали, не стоит и сейчас на форуме размазывать. Едем дальше. Прогресс набирал обороты, Nvidia выкатила 7000-ю серию видеокарт. Как же все обрадовались, я помню салюты возле дома. Даже один бомж спросил: «Вадим, а что за праздник?». Я говорю – Володя, это геймеры радуются. Владимир Сергеевич тогда не понял, кто такие эти геймеры, он грязно выругался и полез обратно в коробку из-под холодильника. Вот так у нас встретили новую линейку видеокарт.
Первой удар под дых нанесла геймерам ASUS, выпустив свою торпеду ASUS 7800GT Dual. Хотя это была не торпеда, это был ядерный авианосец с двумя десятками томагавков, готовых уничтожить все вокруг.

В качестве ядерного реактора выступал внешний блок питания видеокарты. Инженеры из ASUS пожалели бедных отцов геймеров, теперь их старые блоки питания не боялись работать в системе с такой видеокартой. Но теперь страх был у мамы. А причем тут мать? Да при том, что чадо требовало купить эту видеокарту, а в ASUS посчитали, что только 2000 геймеров смогут ее получить, так-как она вышла в серии Limited Edition. В Pr-отделе ASUS придумали новую маркетинговую стратегию, которая в последствии еще не раз всем нам аукнется.
Итак, все матери геймеров, сплотились в одну организацию противодействия секте Liminte Edition, но ничего не вышло. Демократия она такая.

Пока они ходили с транспарантами, пара мамаш подсуетилась и купила своим 20-ти летним сыночкам сразу по паре видеокарт. Зачем? А затем, что эти две видеокарты можно было объединять в SLi, хотя соединительного мостика они не имели! Вот сюрприз, так сюрприз, а ведь многие этого и не знали. Хотя за полтос данную инфу продавали бабки в одном переулке.

Когда геймеры видели такой скриншот, они прятались под стол. Ведь такого вообще быть не могло. Но теперь даже вы знаете, что это возможно! Это и есть та магия Voodoo 😉

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

Кто захочет испытать страх, сможет эту табличку и другие такие найти на THG.ru А потом все проснулись и выключили телевизор. Утром следующего дня Мир был уже не таким, как раньше. В Nvidia подумали, а почему они ходят в магазин, а сливки со сметаной все время достаются соседскому коту? Ну вы поняли, речь идет о своей прибыли. Почесав за ухом и щёлкнув пальцами, на свет была произведена по истине первая реальная DUAL-GPU видеокарт NVIDIA 7900 GX2 от самой основательницы.

Это миф или реальность? Никто не мог понять, что это за такое изделие, похоже на слоеный бутерброд. Это видеокарта – ответила маленькая девочка, ложа в свою сумочку такую же вторую. Да, теперь официально такие видеокарты поддерживали QUAD-SLi.
Если бы тогда был изобретен майнинг, все манеры бы застрелились еще тогда, только от вида таких четырех видеокарт в одной системе, и я бы вам не надоедал со своим анализом стоимости цен на видеокарты RTX 2000 и 3000-й серии. Но история пошла по другому пути.

Потом поняв, что они ошиблись, R&D Nvidia выпустил упрощенную модель NVIDIA 7950 GX2, карта была гораздо короче, что не давало такой статусности новому владельцу. И если основным производителем NVIDIA 7900 GX2 была сама Nvidia, то NVIDIA 7950 GX2 клепали все подряд. И таинства чуда и причастности к волшебству уже никто не получал. Очень жаль.

А далее события развивались по накатанной. После NVIDIA 7950 GX2 была выпущена NVIDIA 9800 GX2. Ну а что делать, деньги то нужны всем. На этот раз бутерброд обрел пластиковый кожух, который мог превращаться в маленький гробик, если геймер не пылесосил этот кирпич два раза в неделю.

Видеокарта было очень горячей, но, к сожалению, после 8800 Ultra, это уже стало нормой. Папа иногда гладил ею свой галстук, а мама могла приготовить на ней горячие пирожки, чтобы дать их собой в школу.
На этом я поставлю жирную точку. Хотя запятая была бы более актуальна, ведь история не закончилась, но я подожду ваших гнилых помидор в свой адрес в комментариях или хвалебных од в свой адрес. И вы мне скажите, что пора завязывать или писать продолжение.