You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

128 lines
3.7 KiB

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

## 🚫 Отключение 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` и проверьте обмен между нодами.