> For the complete documentation index, see [llms.txt](https://gensyn-cis.gitbook.io/cis/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://gensyn-cis.gitbook.io/cis/nody/rl-swarm.md).

# RL-Swarm

RL Swarm — это полностью открытая платформа, разработанная GensynAI для создания распределённых систем обучения с подкреплением (Reinforcement Learning, RL) через интернет. В этом руководстве описывается, как развернуть узел RL Swarm и настроить веб-интерфейс (dashboard) для мониторинга активности сети.<br>

<figure><img src="/files/7H72KXdrxZrqpNILKkxQ" alt=""><figcaption></figcaption></figure>

#### Требования к оборудованию

В последнем обновлении Gensyn Testnet выполняет обучение наборов данных **reasoning-gym** в тестовой сети. Этот рой поддерживает следующие модели по умолчанию:

* Gensyn/Qwen2.5-0.5B-Instruct
* Qwen/Qwen3-0.6B
* nvidia/AceInstruct-1.5B
* dnotitia/Smoothie-Qwen3-1.7B
* Gensyn/Qwen2.5-1.5B-Instruct

Требования к оборудованию зависят от выбранной модели.\
Пользователям со слабыми системами рекомендуется выбирать меньшие модели (например, **Qwen2.5-0.5B** или **Qwen3-0.6B**).\
Если у вас мощное оборудование, можно выбрать более крупные модели.

#### Поддержка CPU и GPU

**Вариант 1: только CPU**

* Процессор: arm64 или x86
* Минимум 32 ГБ оперативной памяти\
  \&#xNAN;*(Если параллельно запустить другие приложения, обучение может завершиться сбоем.)*

**Вариант 2: GPU**\
Рекомендуемые видеокарты:

* RTX 3090
* RTX 4090
* RTX 5090
* A100
* H100

Рекомендуется использовать GPU с **≥24 ГБ видеопамяти**, но теперь Gensyn также поддерживает устройства с **<24 ГБ vRAM**.\
Требуется **драйвер CUDA версии 12.4 или выше**.<br>

**Метод 1 — Для пользователей Windows (домашний ПК):**

Если вы используете Windows, вам нужно установить Ubuntu в среде Windows.

1. **Установите Ubuntu на Windows:**&#x20;
2. После установки Ubuntu убедитесь, что у вас установлены драйвер NVIDIA и CUDA Toolkit:

```
# Install NVIDIA Toolkit
sudo apt-get update
sudo apt-get install -y nvidia-cuda-toolkit

# Verify NVIDIA Driver
nvidia-smi

# Verify CUDA Toolkit:
nvcc --version
```

\
**Метод 2 — Аренда облачного GPU:**

Вы можете воспользоваться руководством *Rent and Config GPU Guide* для более подробных инструкций или следовать шагам ниже.

1. Зарегистрируйтесь на [Vast.ai](https://vast.ai)
2. Создайте SSH-ключ на своём компьютере (если его ещё нет)
3. В Vast.ai откройте **≡ → Keys → SSH Keys**
4. Вставьте публичный SSH-ключ, созданный на вашем ПК
5. Выберите шаблон **Pytorch (Vast)**
6. Выберите поддерживаемый GPU (рекомендуется ≥24 ГБ vRAM, но Gensyn также поддерживает GPU с 8 ГБ vRAM)
7. Увеличьте объём диска до 4**0 ГБ**
8. Пополните баланс криптовалютой и арендуйте сервер
9. Перейдите в **Instances**, обновите страницу и нажмите на значок ключа
10. Если в разделе *Direct SSH connect* не отображается команда подключения, нажмите **Add SSH Key**
11. Скопируйте SSH-команду и добавьте флаг:

```
-L 3000:localhost:3000
```

12. Вставьте команду в **Windows PowerShell** и выполните
13. Если ранее вы задавали пароль для SSH-ключа — введите его. После этого откроется терминал вашего GPU

\
**Метод 3 — VPS-серверы (CPU-only)**

Хотя предпочтительно использовать GPU, можно успешно запустить CPU-версию узла на VPS с **16 ядрами и 24 ГБ RAM**.

* Официальные требования для CPU-only: **arm64 или x86**, минимум **32 ГБ RAM**
* &#x20;Приобрести VPS можно у **Hostbrr, Xorek, Servarica**

### <mark style="color:red;">УСТАНОВКА</mark>

#### **1) Установите зависимости**

1.Обновление системных пакетов

```
sudo apt update && sudo apt upgrade -y
```

2\.  Установка основных утилит и инструментов

```
sudo apt install screen curl iptables build-essential git wget lz4 jq make gcc nano automake autoconf tmux htop nvme-cli libgbm1 pkg-config libssl-dev libleveldb-dev tar clang bsdmainutils ncdu unzip libleveldb-dev -y
```

3\. Установка Python

```
sudo apt install python3 python3-pip python3-venv python3-dev -y
```

4\. Установка Node.js

```
sudo apt update
curl -fsSL https://deb.nodesource.com/setup_22.x | sudo bash -
sudo apt install -y nodejs
node -v
npm install -g yarn
yarn -v
```

5\. Установка Yarn

```
curl -o- -L https://yarnpkg.com/install.sh | bash
```

```
export PATH="$HOME/.yarn/bin:$HOME/.config/yarn/global/node_modules/.bin:$PATH"
source ~/.bashrc
```

#### **2) Клонирование репозитория**

```
git clone https://github.com/gensyn-ai/rl-swarm/
```

#### **3) Запуск Swarm**

Если вы уже являетесь пользователем, убедитесь, что файл `swarm.pem` вашего узла находится в директории `rl-swarm` **перед запуском**.\
Если нужно восстановить файл `swarm.pem`, следуйте инструкциям из раздела [**Recover**](https://github.com/0xmoei/gensyn-ai?tab=readme-ov-file#recover).

Используйте один из двух способов запуска узла — **через Bash (CLI)** или **Docker**.

**CLI-метод (GPU)**

1. Откройте новый сеанс screen, чтобы Swarm работал в фоне:

```
screen -S swarm
```

2. Перейдите в директорию rl-swarm

```
cd rl-swarm
```

3. Установка Swarm

```
python3 -m venv .venv

source .venv/bin/activate
# if not worked, then:
. .venv/bin/activate

./run_rl_swarm.sh
```

***

\
**Docker Method (GPU, Mac, CPU)**

* Хороший вариант для пользователей Mac или VPS с только CPU.
* По умолчанию файл `swarm.pem` для Docker-установки находится в `/rl-swarm/user/keys/`.
* Для пользователей облачных GPU:
  * Этот метод доступен только на провайдерах GPU с поддержкой Ubuntu VM-шаблонов, таких как Vast.ai.
  * Если вы используете QuickPod, Hyperbolic и т.д., используйте **Bash-метод**.

***

1. Установите Docker и Docker Compose по \[[руководству](https://github.com/0xmoei/Linux_Node_Guide/blob/main/linux-config.md#docker-docker-compose)]
2. Создайте сеанс screen:

```
screen -S swarm
```

3. Перейдите в директорию rl-swarm

```
cd rl-swarm
```

Установка \
\- Swarm (Mac или CPU-only)

```
docker compose run --rm --build -Pit swarm-cpu
```

&#x20;\- Swarm GPU

```
docker compose run --rm --build -Pit swarm-gpu
```

Примечание: при использовании Docker-функции файл `swarm.pem` сохраняется в `/root/rl-swarm/user/keys/`.

#### **5) Вход в систему**

1. Убедитесь, что в логах появилось сообщение:

```
Waiting for userData.json to be created...
```

2. Откройте страницу входа в браузере:

**Локальный ПК:** откройте <http://localhost:3000/>

**Пользователи GPU Cloud и VPS:** настройте туннель к внешнему URL

Откройте новый терминал

Установите localtunnel:

```
sudo npm install -g localtunnel
```

Получение пароля

```
curl https://loca.lt/mytunnelpassword
```

Пароль на самом деле — это IP вашего VPS.

Получение URL

```
lt --port 3000
```

Откройте выданный URL в браузере и введите ваш пароль (IP вашего VPS), чтобы получить доступ к странице входа Gensyn.

3. Войдите, выбрав предпочитаемый способ аутентификации.

После входа в систему ваш терминал начнёт процесс установки.

4. Ответьте на подсказки\вопросы:

* **Would you like to push models you train in the RL swarm to the Hugging Face Hub? \[y/N]**\
  → Нажмите **N**, чтобы присоединиться к тестовой сети.\
  \&#xNAN;*(HuggingFace требует 2 ГБ пропускной способности для загрузки каждой модели. Если хотите загрузку на HuggingFace, нажмите Y и введите свой access-token.)*
* **Enter the name of the model you want to use in huggingface repo/name format, or press \[Enter] to use the default model.**\
  → Для использования модели по умолчанию нажмите **Enter** или выберите одну из следующих моделей:
  * Gensyn/Qwen2.5-0.5B-Instruct
  * Qwen/Qwen3-0.6B
  * nvidia/AceInstruct-1.5B
  * dnotitia/Smoothie-Qwen3-1.7B
  * Gensyn/Qwen2.5-1.5B-Instruct

> Примечание: модели с более высоким числом параметров (B) требуют больше видеопамяти (vRAM).

#### **6) Присоединение к Judge**

Во время настройки вам будет задан вопрос о желании участвовать в **AI Prediction Market**:

```
Would you like to participate in the AI Prediction Market? (Y/n)
```

Вы будете автоматически добавлены в **Prediction Market**, если нажмёте **ENTER** или ответите **Y** на запрос о Prediction Market.

На панели управления Gensyn существует отдельная **таблица лидеров для Judge**.

Это эксперимент, в рамках которого:

* Модели RL Swarm участвуют на рынке и делают ставки на правильный ответ в задаче на рассуждение.
* Доказательства раскрываются постепенно, и модели обновляют свои прогнозы, делая новые ставки по мере поступления информации.
* Ранние правильные ставки приносят больше наград, что поощряет быстрые и уверенные модели.
* **Judge** оценивает окончательные доказательства и определяет успешные ставки.

***

#### <mark style="color:red;">Gswarm Role / Telegram Bot</mark>

Инструкции по настройке Telegram-бота для мониторинга узла Swarm и получению роли **The Swarm** в Discord.

* **Официальная документация Gswarm:** \[[Link](https://gswarm.dev/docs)]

***

**1) Установка Gswarm**

Удалите старую версию Go (если она есть):

```
# Install Go:
sudo rm -rf /usr/local/go
curl -L https://go.dev/dl/go1.22.4.linux-amd64.tar.gz | sudo tar -xzf - -C /usr/local
echo 'export PATH=$PATH:/usr/local/go/bin:$HOME/go/bin' >> $HOME/.bash_profile
echo 'export PATH=$PATH:$(go env GOPATH)/bin' >> $HOME/.bash_profile
source .bash_profile
go version
```

```
go install github.com/Deep-Commit/gswarm/cmd/gswarm@latest
```

После этого вы сможете запускать `gswarm` из любой директории (если путь к каталогу Go bin добавлен в PATH).

Проверьте установку:

```
gswarm --version
```

**2) Настройка Telegram-бота**

1. **Создайте Telegram-бота:**
   * Напишите @BotFather в Telegram
   * Отправьте команду `/newbot` и следуйте инструкциям (выберите имя и username)
   * Сохраните предоставленный токен бота
2. **Получите ваш Chat ID:**
   * Начните чат с новым ботом и отправьте несколько сообщений
   * Перейдите в браузере по ссылке:

     ```
     https://api.telegram.org/botYOUR_BOT_TOKEN/getUpdates
     ```

* Замените `<YOUR_BOT_TOKEN>` на ваш реальный токен бота. Убедитесь, что слово `bot` остаётся в URL перед токеном.
* В ответе найдите ваш Chat ID

**Пример:**\
Если токен вашего бота `1234567890:ABCdefGHIjklMNOpqrsTUVwxyz`, откройте:

```
https://api.telegram.org/bot1234567890:ABCdefGHIjklMNOpqrsTUVwxyz/getUpdates
```

В вашем браузере включите **Pretty-print** для лучшей читаемости ответа.

Пример ответа:

```
{
  "ok": true,
  "result": [
    {
      "message": {
        "message_id": 2021,
        "from": {
          "id": 123456789,
          "is_bot": false,
          "first_name": "GSwarm",
          "username": "gswarm_user",
          "language_code": "en"
        },
        "chat": {
          "id": 123456789,
          "first_name": "GSwarm",
          "username": "gswarm_user",
          "type": "private"
        },
        "date": 1704067200,
        "text": "Hello bot!"
      }
    }
  ]
}
```

Ваш **Chat ID** находится в поле `"chat" → "id"`.

Извлеките Chat ID: найдите поле `"chat":{"id":123456789}`. В этом примере Chat ID — **123456789**. Это ваш Telegram ID, который бот будет использовать для отправки уведомлений.

Примечание: если вы получите пустой результат:

```
{"ok":true,"result":[]}
```

Вам нужно сначала отправить сообщение вашему боту, а затем обновить URL.

**3) Запуск Gswarm Bot**

Запустите `gswarm` в терминале и следуйте подсказкам, чтобы ввести:

* Токен вашего бота
* Chat ID
* EOA-адрес

> EOA-адрес можно найти, войдя в [**Gensyn Dashboard**](https://dashboard.gensyn.ai/).

**4) Связь Discord и Telegram**

Чтобы связать ваши аккаунты Discord и Telegram:

1. **Получите код подтверждения:**
   * Перейдите в Discord в канал [`#|swarm-link`](https://discord.com/channels/852932483691577395/1397909075685146804/1403436609583579146)
   * Введите команду `/link-telegram` — вы получите код
2. **Подтвердите код:**
   * Перейдите в ваш Telegram-бот
   * Введите команду `/verify <code>` (замените `<code>` на полученный код)

После этого ваши аккаунты Discord и Telegram будут связаны, и вы получите роль **The Swarm**.

> Примечание: используйте команды screen, если хотите, чтобы бот продолжал работать в фоне.

*Источник:* <https://github.com/0xmoei/gensyn-ai?tab=readme-ov-file><br>

***

<h4 align="center"><strong>Оптимизированная установка Gensyn vLLM для больших моделей на GPU</strong></h4>

&#x20;  Если вы хотите запустить модель 1.5B на видеокартах RTX 3090, 4090 или любом GPU с ≥24 ГБ VRAM, вам потребуется оптимизированная настройка, спасибо **Gasoline** за предоставленный гайд.\
Она решает проблему ошибок **CUDA out of memory** при работе с большими моделями, такими как 1.5B.\
\
**1) Делаете этот** [**ЭТАП**](#id-1-ustanovite-zavisimosti)**, если у вас не было установленной ноды. Если уже установлена, то переходите к следующему этапу**\
\
**2) Клонирование Репозитория**

```
git clone https://github.com/gasoline2255/gensyn-testnet.git rl-swarm &&
cd rl-swarm &&
git clone https://github.com/gasoline2255/genrl
```

**3) Создание Screen и установка окружения и установка vllm**

```
screen -S swarm
```

```
cd rl-swarm
```

```
python3 -m venv .venv
source .venv/bin/activate
pip install vllm
```

**4) Запуск**

```
./run_rl_swarm.sh
```

\
Вход в систему такой же как в шаге [**5**](#id-5-vkhod-v-sistemu)\
\
**И теперь вы можете запускать модели** \
\
Gensyn/Qwen2.5-1.5B-Instruct\
\
nvidia/AceInstruct-1.5B<br>

***

<h4 align="center"><mark style="color:red;"><strong>Две ноды на одно устройство</strong></mark></h4>

На видеокартах RTX 3090 и RTX 4090 можно запускать 2 ноды одновремено, если использовать модель\
**Gensyn/Qwen2.5-0.5B-Instruct**\
\
Сначала ставим 1 ноду начиная с Шага [2](#id-2-klonirovanie-repozitoriya) \
Но, внося некоторые правки: \
\
Перед запуском \
Вводим команду в папке с нодой

```
nano rgym_exp/config/rg-swarm.yaml
```

Ищем строку\
**dtype: 'float32'** и меняем на **dtype: 'bfloat16'**\
Сохраняем изменения и запускаем ноду

```
python3 -m venv .venv
source .venv/bin/activate
./run_rl_swarm.sh
```

Перед выбором модели обучения посмотрите вашу версию Python в логах и остановите ноду\
Далее вводим команду

```
nano .venv/lib/python3.12/site-packages/genrl/trainer/grpo_trainer.py
```

Находим так же строку

```
dtype: str = "float32"
```

И меняем ее на&#x20;

```
dtype: str = "bfloat16"
```

Так же найдите строку:&#x20;

```
self.optimizer = torch.optim.Adam(
            self.model.parameters(), lr=self.args.learning_rate
        )
```

&#x20;и замените на:&#x20;

```
self.optimizer = torch.optim.Adafactor(
            self.model.parameters(), lr=self.args.learning_rate
        )
```

Сохраните изменения и запустите ноду.\
\
Далее выйдите из скрина\
И переходим к скачиванию второго репозитория

```jsx
git clone https://github.com/gensyn-ai/rl-swarm.git rl-swarm1
```

Далее перемещаемся в новую папку с нодой

```jsx
cd rl-swarm1
```

Нам нужно отредактировать 2 файла

```jsx
nano run_rl_swarm.sh
```

Находим там участок кода где указаны порты и меняем на 3001

**`Ctrl+S и Ctrl+X`**  Далее

```jsx
nano rgym_exp/config/rg-swarm.yaml
```

Тут меняете лишь в одном месте значение порт на **3001** \
и ищем строку\
**dtype: 'float32'** и меняем на **dtype: 'bfloat16'**

Открываем новый скрин

```jsx
screen -S gensyn1
```

И вводим команды

```jsx
cd rl-swarm1
python3 -m venv .venv
source .venv/bin/activate
PORT=3001 ./run_rl_swarm.sh
```

Далее все тоже самое что и [**тут**](#dve-nody-na-odno-ustroistvo) только порт уже указываем не 3000 а 3001.\
\
Останвливаем ноду, так же на выборе модели \
И вводим команду\
Если ваша версия Python 3.12

```
nano .venv/lib/python3.12/site-packages/genrl/trainer/grpo_trainer.py
```

Или если ваша версия Python 3.10

```
nano .venv/lib/python3.10/site-packages/genrl/trainer/grpo_trainer.py
```

Находим строку:

```
dtype: str = "float32"
```

И меняем ее на&#x20;

```
dtype: str = "bfloat16"
```

Так же найдите строку&#x20;

```
self.optimizer = torch.optim.Adam(
            self.model.parameters(), lr=self.args.learning_rate
        )
```

&#x20;И замените на&#x20;

```
   self.optimizer = torch.optim.Adafactor(
            self.model.parameters(), lr=self.args.learning_rate
        )

```

&#x20;Сохраните изменения и запустите ноду

```
PORT=3001 ./run_rl_swarm.sh
```

***

<h4 align="center"><mark style="color:red;"><strong>Обновление ноды</strong></mark></h4>

В каталоге **RL-SWARM**  если вы хотите сохранить изменения которые вы вносили ранее выполните:

```
deactivate
rm -rf .venv
git stash
git pull
git stash pop
 python3 -m venv .venv
source .venv/bin/activate
./run_rl_swarm.sh
```

Если делали дополнительно оптимизацию, то не забудь после запуска вернуть оптимизацию на место. Так, как в папке  .venv хранилась ваша оптимизация.\
\
Если никаких изменений не вносили просто выполните команду&#x20;

```
deactivate
rm -rf .venv
git stash
git pull
python3 -m venv .venv
source .venv/bin/activate
./run_rl_swarm.sh
```


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://gensyn-cis.gitbook.io/cis/nody/rl-swarm.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
