Один пакет NVLink имеет диапазон от 1 до 18 флитов. Каждый блок имеет размер 128 бит, что позволяет передавать 256 байт с использованием одного блока заголовка и 16 блоков полезной нагрузки для максимальной эффективности 94,12%, а также 64 байта с использованием одного блока заголовка и 4 блоков полезной нагрузки данных для односторонней эффективности 80. %. При двунаправленном трафике эффективность несколько снижается до 88,9% и 66,7% соответственно.
Пакеты содержат как минимум заголовок и, при необходимости, фрагменты расширения адреса (AE), фрагменты включения байта (BE) и до 16 фрагментов полезной нагрузки данных. Типичная транзакция содержит как минимум запрос и ответ, тогда как опубликованная операция не требует ответа.
NVLink канал называется Brick(илиNVLink Brick)。одинокий NVLink представляет собой двунаправленный интерфейс, каждое направление содержит 8 дифференциальные пары, всего 32 линии. Эти линии связаны по постоянному току с использованием встроенных часов. 85Ω Дифференциальное окончание. Для упрощения маршрутизации NVLink Поддерживаются реверс каналов и полярность каналов, что означает, что физический порядок каналов и их полярность могут быть изменены на противоположные между двумя устройствами.
NVLINK поддерживает два режима передачи данных: DMA и P2P.
Режим DMA: в режиме DMA ЦП может передавать данные непосредственно в видеопамять целевого графического процессора через мост NVLink. Этот процесс не требует участия целевого графического процессора, что эффективно повышает эффективность передачи данных.
Режим P2P: в режиме P2P данные могут передаваться напрямую между двумя графическими процессорами. Этот режим обычно используется для обмена данными между графическими процессорами или выполнения параллельных вычислительных задач.
ПроверятьNVLinkсостояние:Подробное объяснение команд серии NVIDIA-SMI (16)-NVLINK. Эта статья является шестнадцатым подробным объяснением команд серии NVIDIA-SMI-NVLINK, введение. - наггетсы (juejin.cn)
Установите NVLink: Просто подключите его к соответствующей карте. Как правило, устанавливать драйвер вручную не требуется.
Отключите NVLink: как правило, вы также можете отключить его напрямую.
Если в машине несколько карт,Только две карты с установленным NVLink могут взаимодействовать друг с другом.,Если карта не установлена, вы можете использовать только одну карту (что немного сложно).,Другими словами, пока на машине есть NVLink,Связь будет изменена на NVLink.,В результате нормальная связь между картами не может быть осуществлена). Для этой проблемы,существоватьncclПоднятыйIssues:Not all gpus have nvlinks, the communication data is all incorrect · Issue #1423 · NVIDIA/nccl (github.com)。
Решение 1. Отключите nvlink,Используйте только передачу данных PCIE. Если это процессор AMD,После отключения вам все равно потребуется войти в BIOS, чтобы принудительно выключить IOMMU.,Запретить программам прямой доступ к физической памяти,должен пройтиCPU。Подробную информацию см.Silent data corruption when moving data between GPUs · Issue #84803 · pytorch/pytorch (github.com)。После того, как я изменю вышеуказанные операции,,Doka Reasoning теперь может работать,Но обучение Doka будет подчиняться CUDA error: unspecified launch Позже выяснилось, что причиной сбоя стали более ранние версии трансформаторов, фонаря и других установочных пакетов. Используйте команду pip для обновления установочного пакета pip install --force-reinstall transformers==4.44.2 trl==0.10.1 torchvision==0.19.1。
Решение 2. Все карты подключены к nvlink (но некоторые карты имеют только один слот NVLink, например A6000, что означает, что можно объединить до двух карт)
Решение 3. Восемь карт имеют PCIE.,Опять есть NVLink,Кажется, на данный момент есть ошибка. Длительный фокус наIssues:Not all gpus have nvlinks, the communication data is all incorrect · Issue #1423 · NVIDIA/nccl (github.com)。
Хотя NVLink — двунаправленный интерфейс,Между двумя картами требуется только одно соединение,Но также легко найти,Только две подключенные карты могут наслаждаться высокоскоростной связью.,А на таких видеокартах, как A6000, есть только один слот NVLink.,Поэтому невозможно соединить несколько карт вместе. Новый продукт Nvidia NVSwitch призван решить эту проблему.,Подробную информацию см.Nvidiaиз官网介绍:NVIDIA NVLink and NVIDIA NVSwitch Supercharge Large Language Model Inference | NVIDIA Technical Blog
NVSwitch — это переключатель межсоединения видеокарты. При его использовании необходимо подключить один конец NVLink к видеокарте, а другой конец — к NVSwitch. Он позволяет соединять каждые две карты на полной скорости без блокировки. Последнее поколение NVSwitch также может соединять видеокарты между разными машинами и подключать до 576 видеокарт (что просто ужасно, а скорость передачи данных выше, чем у других). Инфини Бэнд).
Если используется NVLink, каждая карта должна быть подключена к другим картам через NVLink, а скорость передачи зависит от верхнего предела скорости одного NVLink.
Используя NVSwitch для соединения, как показано ниже, любые две карты могут работать на максимальной скорости 900 ГБ/с, а две карты 0 и 1 обмениваются данными, а другие карты также могут обмениваться данными на полной скорости, не влияя друг на друга.
Последняя версия NVSwitch может соединять вместе 576 карт. Эти карты распределены по десяткам машин. Вообще говоря, передача между машинами осуществляется через сеть. Самый высокоскоростной сетевой протокол — InfiniBand. Но NVSwitch пропускает эти действия и напрямую соединяет карты между несколькими машинами. Ниже приведено сравнение производительности при использовании межсоединений InfiniBand и NVSwitch:
Видно, что NVSwitch в 4,5 раза быстрее, чем InfiniBand. InfiniBand может использоваться только суперкомпьютерными центрами. Нвидиа просто извращенец. . . .
ссылка Связь:
Базовые знания AI Infra: начало работы с NVLink (qq.com)
Углубленное понимание технологии соединения графических процессоров — NVLINK (qq.com)
Углубленный анализ и анализ производительности NV Switch (qq.com)