## 🚫 Отключение IPv6 Если у сетевых интерфейсов настроены IPv6-адреса, `DeepSpeed` и `NCCL` могут пытаться использовать их для межнодового обмена, что часто приводит к ошибкам соединения или подвисаниям, особенно если IPv6 на вашей сети фактически не используется. Чтобы этого избежать, рекомендуется полностью отключить IPv6 на всех машинах. ### Как отключить IPv6 на Ubuntu Откройте (или создайте) файл `/etc/sysctl.conf`: ```bash sudo vim /etc/sysctl.conf ``` Добавьте в конец файла: ```ini # Disable IPv6 net.ipv6.conf.all.disable_ipv6 = 1 net.ipv6.conf.default.disable_ipv6 = 1 ``` Примените изменения: ```bash sudo sysctl -p ``` После этого проверьте, что IPv6 отключён: ```bash ip a | grep inet6 ``` Ничего не должно выводиться. --- ## 🔥 Разрешение портов в файрволе Если после настройки SSH и передачи интерфейсов через `-e NCCL_SOCKET_IFNAME=10gb0,10gb1` связь между машинами всё равно не устанавливается, причиной может быть блокировка портов файрволом. Для работы `NCCL` и `DeepSpeed` требуются открытые диапазоны TCP и UDP портов (по умолчанию в пределах `~1024-65535`). ### Проверяем и настраиваем UFW Смотрим статус: ```bash sudo ufw status verbose ``` Если включён, то разрешаем весь трафик на интерфейсе `10gb0`: ```bash sudo ufw allow in on 10gb0 sudo ufw allow out on 10gb0 ``` И аналогично для `10gb1`: ```bash sudo ufw allow in on 10gb1 sudo ufw allow out on 10gb1 ``` После чего перезагружаем UFW: ```bash sudo ufw reload ``` --- ### Проверяем и настраиваем iptables Посмотреть текущие правила: ```bash sudo iptables -L -v -n ``` Открыть весь трафик для интерфейсов: ```bash sudo iptables -A INPUT -i 10gb0 -j ACCEPT sudo iptables -A OUTPUT -o 10gb0 -j ACCEPT sudo iptables -A INPUT -i 10gb1 -j ACCEPT sudo iptables -A OUTPUT -o 10gb1 -j ACCEPT ``` Сохранить правила (Ubuntu): ```bash sudo iptables-save | sudo tee /etc/iptables/rules.v4 ``` --- ### Проверяем и настраиваем nftables Если у вас используется `nftables`, посмотреть таблицы можно так: ```bash sudo nft list ruleset ``` Добавить разрешающие правила: ```bash sudo nft add rule inet filter input iifname "10gb0" accept sudo nft add rule inet filter output oifname "10gb0" accept sudo nft add rule inet filter input iifname "10gb1" accept sudo nft add rule inet filter output oifname "10gb1" accept ``` Либо только для определенных портов для Docker: ```bash sudo nft add rule ip filter DOCKER tcp dport 48000-48031 ip saddr 172.16.45.0/24 accept sudo nft add rule ip filter DOCKER tcp sport 48000-48031 ip saddr 172.16.45.0/24 accept ``` После чего сохранить: ```bash sudo nft list ruleset > /etc/nftables.conf sudo systemctl restart nftables ``` --- После всех этих действий повторите запуск `DeepSpeed` / `torchrun` и проверьте обмен между нодами.