Giter Site home page Giter Site logo

solana-blackbox's Introduction

Blackbox для автоматического запуска блокчейна

В коде блокчейн систем можно найти некоторые глобальные константые значения, влияющие на рантайм и поведение системы - гиперпараметры. Есть предположение, что можно увеличить пропускную способность блокчейна путем оптимизации его гиперпараметров. Но оптимизационные задачи подразумевают работу с функциями. Определим неформально сигнатуру функцию для задачи оптимизации пропускной способности блокчейна: пусть функция на вход принимает значения каких-то параметров блокчейна, а на выходе возвращает результаты бенчмарка пропускной способности в TPS блокчейн-системы, которая была запущена с данными ей параметрами.

Данный проект реализует эту функцию-черный-ящик, на которой можно было бы использовать различные методы оптимизации для поиска лучших значений параметров. Для черного ящика была выбрана блокчейн сеть Solana. Валидаторы блокчейна запускаются в докер-контейнерах. В качестве инструмента для оркестрации используется DockerSwarm. Для установки зависимостей для запуска блокчейна можно использовать скрипт base_install.sh.

Анализ чувствительности

Заметим, что запуск блокчейн сети - ресурсоемкая задача. Если пытаться решать оптимизационную задачу на всех параметрах блокчейна, то потребуется большое количество итераций (запусков блокчейна). Для того, избежать этого было решено написать использовать методы анализа чувствительности - они позволяют определить самые значимые для целевой переменной параметры.

Структура проекта

  • /containers - конфигурационные файлы для оркестрации
  • /matlab - matlab-сервер, позволяющий запускать методы анализа чувствительности
  • /sensitivity_analysis - клиент на Python3 для matlab-сервера
  • /cluster - абстракции над различными варияциями блокчейн-кластеров
  • blackbox.py - функция для запуска кластера и декоратор, позволящий уменьшить количество нефиксированных параметров, на которых запускается блокчейн

Эксперименты

Для подтверждения работоспособности написанного кода был проведен следующий эксперимент с кластером из 2-х валидаторов на одном Docker-хосте:

  1. Запуск блокчейна на значениях по умолчанию
  2. 20 запусков со случайными значениями первых $66$ параметров в некоторой окресности значения по умолчанию: $12$ запусков с отступом в $10$% и $8$ запусков с $17$%. Размерность пространства была сокращена до $66$, из-за ресурсоемкости запусков.
  3. На полученных данных (матрица размерности $21\times 66$ и вектор размерности $21$) запустили методы анализа чувствительности. Каждый метод по-своему определил 5 самых значимых параметров.
  4. По параметрам одного из полученных списков самых значимых признаков запустили метод суррогатной опимизации.

Эксперимент дал выигрыш в пропускной способности на $14$%. Стоит учитывать, что пространство для оптимизации было обрезано, а используемое железо (CPU: 6 cores/6 threads, 2.38 GHz, RAM: 8GB, т.п.) не удовлетворяет минимальным требованиям валидаторов блокчейна: (CPU: 12 cores/24 threads, 2.8 GHz, RAM: 128GB, GPUs). При запуске полноценных экспериментов, возможно, с использованием других методов анализа чувствительности и оптимизации выигрыш может быть значительно больше.

solana-blackbox's People

Contributors

exponenci avatar

Watchers

 avatar

Forkers

marsskop

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.