GPU
January 29

UOMI

🪓 Telegram канал UTSA 🪓 Telegram чат UTSA

Web Discord Docs Staking Github Telemetry Explorer-EVM

UOMI - это блокчейн-платформа, разработанная для экосистем Polkadot и Ethereum, поддерживающая смарт-контракты Wasm и EVM. Окунитесь в новую эру децентрализованных экономических агентов, управляемых искусственным интеллектом

В данном руководстве будет описан процесс запуска валидатора

Тестовая сеть UOMI Finney Incentivized Testnet запущена

50 000 000 токенов $UOMI выделены для вознаграждения операторов нод, начиная с этой тестовой сети!

Валидаторы являются ядром экосистемы UOMI, обеспечивая производство блоков, вычисления ИИ и кросс-чейн взаимодействие. Запуская ноду валидатора Вы активно вносите вклад в рост сети, а токены $UOMI являются поощрениями за Ваше участие

Выберите тип узла, который подходит для Вашей настройки:

  • Ноды RPC: light, full или archive, оптимизированные для доступа к данным и взаимодействия (данные виды нод под вопросом на счет наград)
  • Ноды валидатора: требуют 48 ГБ оперативной памяти графического процессора и настройку full ноды для проверки транзакций и защиты сети

ВАЖНО:

  • для валидатора нужен сервер с видеокартой (картами), которая имеет 48 GB видеопамяти!!!
  • данный гайд подходит для ubuntu 24.04

Подготовка сервера

# обновляем репозитории
apt update && apt upgrade -y

# устанавливаем необходимые утилиты
apt install curl build-essential git wget jq make gcc tmux htop nvme-cli pkg-config libssl-dev libleveldb-dev tar clang bsdmainutils ncdu unzip libleveldb-dev libclang-dev -y

Драйвера на видеокарту

sudo apt-get install linux-headers-$(uname -r)

distribution=$(. /etc/os-release;echo $ID$VERSION_ID | sed -e 's/\.//g')

wget https://developer.download.nvidia.com/compute/cuda/repos/$distribution/x86_64/cuda-keyring_1.1-1_all.deb

sudo dpkg -i cuda-keyring_1.1-1_all.deb

sudo apt-get update

sudo apt-get -y install cuda-drivers

---

curl -fsSL https://nvidia.github.io/libnvidia-container/gpgkey | sudo gpg --dearmor -o /usr/share/keyrings/nvidia-container-toolkit-keyring.gpg \
  && curl -s -L https://nvidia.github.io/libnvidia-container/stable/deb/nvidia-container-toolkit.list | \
    sed 's#deb https://#deb [signed-by=/usr/share/keyrings/nvidia-container-toolkit-keyring.gpg] https://#g' | \
    sudo tee /etc/apt/sources.list.d/nvidia-container-toolkit.list

sed -i -e '/experimental/ s/^#//g' /etc/apt/sources.list.d/nvidia-container-toolkit.list

sudo apt-get update

sudo apt-get install -y nvidia-container-toolkit

---

sudo nvidia-ctk runtime configure --runtime=docker

sudo systemctl restart docker

nvidia-smi
#nvcc --version

Используемые порты

AI работает на порту 8888

# валидатор
ufw allow 30333 comment p2p
ufw allow 9944 comment rpc
ufw allow 9615 comment prometheus

Устанавливаем python 3.10

apt install software-properties-common -y
add-apt-repository ppa:deadsnakes/ppa
# нажимаем ентер
apt install python3.10

python3.10 --version
#

Установка AI

Клонируем репозиторий для AI

git clone https://github.com/Uomi-network/uomi-node-ai

Устанавливаем миниконду

mkdir -p /root/miniconda3/
wget https://repo.anaconda.com/miniconda/Miniconda3-latest-Linux-x86_64.sh -O /root/miniconda3/miniconda.sh
chmod +x /root/miniconda3/miniconda.sh
bash /root/miniconda3/miniconda.sh -b -u -p /root/miniconda3
tmux new-session -s miniconda3
# Чтобы инициализировать Miniconda, запускаем сценарий активации
source /root/miniconda3/etc/profile.d/conda.sh

# создать новую среду conda
conda create -n uomi-ai python=3.10 -y

# активируем
conda activate uomi-ai

Устанавливаем необходимое ПО

conda install pytorch==2.2.0 torchvision==0.17.0 torchaudio==2.2.0 pytorch-cuda=12.1 -c pytorch -c nvidia

# убедиться, что PyTorch CUDA установлен правильно
python -c "import torch; print(torch.cuda.is_available())"
#True

# установим CUDA toolkit и компилятор NVCC
conda install -c nvidia/label/cuda-12.1.0 cuda-nvcc=12.1 cuda-toolkit=12.1
nvcc --version

Устанавливаем дополнительные зависимости

conda install numpy=1.24
pip install flask
pip install psutil
pip install transformers
pip install 'accelerate>=0.26.0'
pip install autoawq
pip install 'triton==3.2.0'
pip install diffusers

Создаем сервисный файл

nano /etc/systemd/system/uomi-ai.service
[Unit]
Description=UOMI AI API Server
After=network.target
​
[Service]
User=root
WorkingDirectory=/root/uomi-node-ai
ExecStart=/bin/bash -c "source /root/miniconda3/etc/profile.d/conda.sh && conda activate uomi-ai && python3 uomi-ai.py"
Restart=always
RestartSec=10
TimeoutSec=30
StartLimitIntervalSec=500
StartLimitBurst=5
​
[Install]
WantedBy=multi-user.target
systemctl daemon-reload
systemctl enable uomi-ai.service
systemctl restart uomi-ai.service && journalctl -u uomi-ai.service -f


Настраиваем ноду валидатора

Создаем каталог для базы данных валидатора

mkdir -p $HOME/uomi

Скачиваем genesis

wget -O /usr/local/bin/genesis.json "https://github.com/Uomi-network/uomi-node/releases/download/v0.1.7/genesis.json"
chmod +x /usr/local/bin/genesis.json

sha256sum /usr/local/bin/genesis.json
#ac62c78e9465fdb25fce6e98138fd497089042785ac4bac70d75d379efddfb49

Скачиваем бинарный файл

wget -O /usr/local/bin/uomi "https://github.com/Uomi-network/uomi-node/releases/download/v0.2.0/uomi_ubuntu_24"
chmod +x /usr/local/bin/uomi
uomi --version
#uomi 0.2.0-cb36b469c43

Создаем кошелек и сохраняем вывод

uomi key generate --scheme Sr25519
# пример вывода
#Secret phrase:     tackle rebuild neither turn degree real capital armed giraffe novel resist human
#Network ID:        substrate
#Secret seed:       0x5c9499827e606bcf284e8a650a96ce13ebf0484bd64a280507ff96d99da6e174
#Public key (hex):  0x14ceec080a6aa464b4235dd951a85669d25e4fa659578f01a7a7dc5c95454931
#Account ID:        0x14ceec080a6aa464b4235dd951a85669d25e4fa659578f01a7a7dc5c95454931
#Public key (SS58): 5CXzHQ3DmYKemRAyY6NPyKsDWiChbeeKtxW3q5RWpmdUQvdR
#SS58 Address:      5CXzHQ3DmYKemRAyY6NPyKsDWiChbeeKtxW3q5RWpmdUQvdR

Обязательно сохраните вывод кошелька. Данные нам понадобятся позже

Генерируем ключ Ed25519 для GRANDPA, используя свою сид фразу полученную выше

uomi key inspect --scheme Ed25519 "<YOU_SEED>"

Обязательно сохраните вывод после данной команды. Данные нам понадобятся позже

Создаем сервисный файл

nano /etc/systemd/system/uomi.service
[Unit]
Description=Uomi Node
After=network.target
StartLimitIntervalSec=0

[Service]
Type=simple
User=root
Group=root
Restart=always
RestartSec=10
LimitNOFILE=65535
ExecStart=/usr/local/bin/uomi \
    --validator \
    --name "<MONIKER>" \
    --chain "/usr/local/bin/genesis.json" \
    --base-path "/root/uomi" \
    --state-pruning 1000 \
    --blocks-pruning 1000 \
    --enable-evm-rpc \
    --rpc-cors all \
    --prometheus-external \
    --telemetry-url "wss://telemetry.polkadot.io/submit/ 0"

# Hardening
ProtectSystem=strict
PrivateTmp=true
PrivateDevices=true
NoNewPrivileges=true
ReadWritePaths=/root/uomi

[Install]
WantedBy=multi-user.target
systemctl daemon-reload
systemctl enable uomi.service
systemctl restart uomi.service && journalctl -u uomi.service -f

ВАЖНО - если нода не может подцепиться к пирам, то добавьте в сервисный файл резервный пир

--reserved-nodes "/ip4/5.9.87.231/tcp/30333/p2p/12D3KooWCAChuDHHpNER855r6NpAGDeLrSZ4U3sP6FocSWWJZDf5"

Добавление ключей ШАГ 1

Как только Ваша нода будет запущена, вставьте свои ключи

ВНИМАНИЕ - замените SECRET_PHRASE и PUBLIC KEY (hex) Вашими данными, полученными с помощью первой команды "key generate --scheme Sr25519"

for key_type in babe imon uomi ipfs; do
    curl -H "Content-Type: application/json" \
        -d '{"id":1, "jsonrpc":"2.0", "method":"author_insertKey", "params":["'$key_type'", "SECRET_PHRASE", "PUBLIC_KEY"]}' \
        http://localhost:9944
done

Добавление ключей ШАГ 2

ВНИМАНИЕ - замените SECRET_PHRASE и PUBLIC KEY (hex) Вашими данными, полученными с помощью второй команды "key inspect --scheme Ed25519"

curl -H "Content-Type: application/json" \
    -d '{"id":1, "jsonrpc":"2.0", "method":"author_insertKey", "params":["gran", "SECRET_PHRASE", "PUBLIC_KEY"]}' \
    http://localhost:9944

Наконец после того как нода будет полностью синхронизирована выполните следующую команду для создания сеансовых ключей при создании валидатора в polkadot js на сайте https://subexp.uomi.ai/#/staking/actions Необходимо выбрать раздел validator - кошелек - комиссию и вставить полученный ключ

curl -H "Content-Type: application/json" -d '{"id":1, "jsonrpc":"2.0", "method": "author_rotateKeys", "params":[]}' http://localhost:9944

Snapshot

every 48 hours | pruning: 1000

🌐 https://share102.utsa.tech/uomi/

# останавливаем ноду
systemctl stop uomi

# удаляем базу данных. При необходимости измените путь на свой
rm -r $HOME/uomi/chains/uomi/db/

# скачиваем snapshot. При необходимости измените путь на свой
curl -o - -L https://share102.utsa.tech/uomi/uomi_testnet.tar.lz4 | lz4 -c -d - | tar -x -C $HOME/uomi/chains/uomi/

# перезагружаем ноду
systemctl restart uomi && journalctl -u uomi -f -o cat

Полезные команды

# проверить логи
journalctl -u uomi.service -f
journalctl -u uomi-ai.service -f

Удалить ноду

# delete AI
systemctl stop uomi-ai
systemctl disable uomi-ai
rm /etc/systemd/system/uomi-ai.service

systemctl daemon-reload
cd
rm -r uomi-node-ai

# delete node
systemctl stop uomi
systemctl disable uomi
rm /etc/systemd/system/uomi.service

systemctl daemon-reload
cd
rm -r uomi

# Проверка конечной точки RPC
curl -H "Content-Type: application/json" \
    -d '{"id":1, "jsonrpc":"2.0", "method": "system_health", "params":[]}' \
    http://localhost:9944
# узнать свой peer
curl -H "Content-Type: application/json" -d '{"id":1, "jsonrpc":"2.0", "method": "system_localPeerId"}' http://localhost:9944
#{"jsonrpc":"2.0","result":"12D3KooWBTu7oEJzsyxEtuc1ktnuisyntF8sjFB6Q61yxEtuc1k","id":1}

# подставляем свои данные
ip4/<YOUR_IP>/tcp/30333/p2p/<RESULT_OF_CURL>
#/ip4/213.12.15.9/tcp/30333/p2p/12D3KooWBTu7oEJzsyxEtuc1ktnuisyntF8sjFB6Q61yxEtuc1k
Поддержим природу вместе: 0xa7476EC14cD663C742d527113638C77a1631Cc89 cosmos1m2mm7kzvw6m3464h94ryqg8xvr6tyeyyecppnq