| # Running Validator |
|
|
| --- |
|
|
| ## Machine Requirements |
|
|
| To achieve optimal results, we recommend the following setup: |
|
|
| - **Operating System**: Ubuntu 24.04 LTS or higher |
| [Learn more about Ubuntu 24.04 LTS](https://ubuntu.com/blog/tag/ubuntu-24-04-lts) |
| - **GPU**: NVIDIA RTX A6000 with 48GB VRAM and 30 CPU Cores |
|
|
| --- |
|
|
| ## Install PM2 (Process Manager) |
|
|
| **PM2** is used to manage and monitor the validator process. If you haven’t installed PM2 yet, follow these steps: |
|
|
| 1. Install `npm` and PM2: |
| ```bash |
| sudo apt update |
| sudo apt install npm -y |
| sudo npm install pm2 -g |
| pm2 update |
| ``` |
|
|
| 2. For more details, refer to the [PM2 Documentation](https://pm2.io/docs/runtime/guide/installation/). |
|
|
| --- |
|
|
| ## Install Redis |
|
|
| 1. Install 'redis' |
| ```bash |
| sudo apt update |
| sudo apt install redis-server |
| sudo systemctl start redis |
| sudo systemctl enable redis-server |
| sudo systemctl status redis |
| ``` |
|
|
|
|
| ## Install Project Dependencies |
|
|
| ### Prerequisites |
|
|
| - **Python**: Version 3.10 or higher |
| - **pip**: Python package manager |
| - **virtualenv** (optional): For dependency isolation |
|
|
| --- |
|
|
| ### 1. Clone the Repository |
|
|
| Clone the project repository to your local machine: |
| ```bash |
| git clone https://github.com/vidaio-subnet/vidaio-subnet.git |
| cd vidaio-subnet |
| ``` |
|
|
| --- |
|
|
| ### 2. Set Up a Virtual Environment (Recommended) |
|
|
| Create and activate a virtual environment to isolate project dependencies: |
| ```bash |
| python3 -m venv venv |
| source venv/bin/activate |
| ``` |
|
|
| --- |
|
|
| ### 3. Install the Package and Dependencies |
|
|
| Install the project and its dependencies using `pip`: |
| ```bash |
| pip install -e . |
| ``` |
|
|
| --- |
|
|
| ### 4. Configure Environment Variables |
|
|
| To configure environment variables, follow these steps: |
|
|
| 1. Create a `.env` file in the project root directory by referencing the provided `.env.template` file: |
| ```bash |
| cp .env.template .env |
| ``` |
| 2. Set up a bucket in cloud storage. The base miner code utilizes MinIO to connect with cloud storage services, so you'll need to prepare your bucket using a platform that supports MinIO integration, such as Backblaze. Alternatively, you can modify the code to suit your specific requirements. *IMPORTANT*: Note that currently the `region` of the storage is hardcoded, and must be adjusted in `vidaio_subnet_core/utilities/storage_client.py` for corresponding storage, such as AWS. |
| 3. Add the required variables to the `.env` file. For example: |
| ```env |
| BUCKET_NAME="S3 buckent name" |
| BUCKET_COMPATIBLE_ENDPOINT="S3 bucket endpoint" |
| BUTKET_COMPATIBLE_ACCESS_KEY="S3 bucket personal access key" |
| BUCKET_COMPATIBLE_SECRET_KEY="S3 bucket personal secret key" |
| PEXELS_API_KEY="Your Pexels account api key" |
| WANDB_API_KEY="Your WANDB account api key" |
| ``` |
|
|
| 4. Ensure that the bucket is configured with the appropriate permissions to allow file uploads and enable public access for downloads via presigned URLs. |
|
|
| 5. Create your Pexels API key and replace it. (https://www.pexels.com/) |
| 6. Once the `.env` file is properly configured, the application will use the specified credentials for S3 bucket, Pexels and Wandb. |
|
|
|
|
| --- |
|
|
| ## Install FFMPEG |
|
|
| FFMPEG is required for processing video files. Install it using the following commands: |
| ```bash |
| sudo apt update |
| sudo apt install ffmpeg -y |
| ``` |
|
|
| For more details, refer to the [FFMPEG Documentation](https://www.ffmpeg.org/download.html#build-linux). |
|
|
| --- |
|
|
| ## Install VMAF |
|
|
| To enable video quality validation, install **VMAF** by following the steps below to set up a clean virtual environment, install dependencies, and compile the tool. |
|
|
| --- |
|
|
| Clone the VMAF repository into the working root directory of your `vidaio-subnet` package. If the `vidaio-subnet` virtual environment is currently active, deactivate it first: |
|
|
| ```bash |
| git clone https://github.com/vidAio-subnet/vmaf.git |
| cd vmaf |
| ``` |
|
|
| --- |
|
|
| ### Step 1: Set Up a Virtual Environment in VMAF directory |
|
|
| 1. Install `venv` if it’s not already installed: |
| ```bash |
| python3 -m venv vmaf-venv |
| ``` |
|
|
| 2. Activate the virtual environment: |
| ```bash |
| source vmaf-venv/bin/activate |
| ``` |
|
|
| --- |
|
|
| ### Step 2: Install Dependencies |
|
|
| 1. Install `meson`: |
| ```bash |
| pip install meson |
| ``` |
|
|
| 2. Install system dependencies: |
| ```bash |
| sudo apt-get update |
| sudo apt-get install nasm ninja-build doxygen xxd |
| ``` |
| For Ninja, verify whether the package name is `ninja` or `ninja-build` before running the install command. |
|
|
| --- |
|
|
| ### Step 3: Compile VMAF |
|
|
|
|
| 1. Set up the build environment: |
| ```bash |
| cd libvmaf |
| meson setup build --buildtype release -Denable_avx512=true |
| ``` |
|
|
| 2. Optional flags: |
| - Use `-Denable_float=true` to enable floating-point feature extractors. |
| - Use `-Denable_avx512=true` to enable AVX-512 SIMD instructions for faster processing on supported CPUs. |
| - Use `-Denable_cuda=true` to build with CUDA support (requires `nvcc` and CUDA >= 11). |
| **Note:** To enable CUDA successfully, ensure `nvcc` and the CUDA driver are installed. Refer to the [CUDA and NVCC setup guide](miner_setup.md#step-2-install-cuda-and-nvcc). |
| - Use `-Denable_nvtx=true` to enable NVTX marker support for profiling with Nsight Systems. |
| - **Recommendation:** |
| We recommend adding `-Denable_avx512=true` to enhance validation speed. If CUDA is available, include the flag `-Denable_cuda=true` But At present, VMAF does not include support for CUDA integration. |
| |
| 3. Build the project: |
| ```bash |
| ninja -vC build |
| ``` |
|
|
| --- |
|
|
| ### Step 4: Test the Build |
|
|
| Run tests to verify the build: |
| ```bash |
| ninja -vC build test |
| ``` |
|
|
| --- |
|
|
| ### Step 5: Install VMAF |
|
|
| Install the library, headers, and the command-line tool: |
| ```bash |
| ninja -vC build install |
| ``` |
|
|
| --- |
|
|
| ### Step 6: Generate Documentation |
|
|
| Generate HTML documentation: |
| ```bash |
| ninja -vC build doc/html |
| ``` |
|
|
| ### Step 7: Deactivate vmaf-venv, activate project venv |
|
|
| ```bash |
| deactivate |
| cd .. |
| cd .. |
| source venv/bin/activate |
| ``` |
|
|
| ## Running the Validator with PM2 |
|
|
| To run the validator, use the following command: |
|
|
| ```bash |
| pm2 start run.sh --name vidaio_v_autoupdater -- --wallet.name [Your_Wallet_Name] --wallet.hotkey [Your_Hotkey_Name] --subtensor.network finney --netuid 85 --axon.port [port] --logging.debug |
| ``` |
|
|
| ### Parameters: |
| - **`--wallet.name`**: Replace `[Your_Wallet_Name]` with your wallet name. |
| - **`--wallet.hotkey`**: Replace `[Your_Hotkey_Name]` with your hotkey name. |
| - **`--subtensor.network`**: Specify the target network (e.g., `finney`). |
| - **`--netuid`**: Specify the network UID (e.g., `85`). |
| - **`--axon.port`**: Replace `[port]` with the desired port number. |
| - **`--logging.debug`**: Enables debug-level logging for detailed output. |
|
|
| --- |
|
|