| # Running Miner |
|
|
| A high-performance decentralized video processing miner that leverages **Video2X** for AI-powered video upscaling. This guide provides detailed instructions to set up, configure, and run the miner effectively |
|
|
| --- |
|
|
| ## 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 4090 or higher |
| (Required for efficient video upscaling using Video2X) |
|
|
| --- |
|
|
| ## Install PM2 (Process Manager) |
|
|
| **PM2** is used to manage and monitor the miner 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. |
| 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. Once the `.env` file is properly configured, the application will use the specified credentials for S3 bucket and Pexels. |
|
|
|
|
| --- |
|
|
| ## Install Video2X |
|
|
| The miner requires **Video2X** for AI-powered video upscaling. Follow the steps below to install and configure Video2X. |
|
|
| --- |
|
|
| ### Step 1: 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). |
|
|
| --- |
|
|
| ### Step 2: Install CUDA and NVCC |
|
|
| Ensure your CUDA drivers and NVCC (NVIDIA Compiler) are properly installed and configured to support GPU acceleration. |
|
|
| 1. Verify your CUDA installation: |
| ```bash |
| nvcc --version |
| ``` |
|
|
| 2. Ensure you CUDA driver is installed correctly |
| <!-- Install or update the CUDA drivers if they are not already installed: |
| ```bash |
| sudo apt update |
| sudo apt install nvidia-cuda-toolkit -y |
| ``` --> |
|
|
| For more information, refer to the [CUDA Toolkit Installation Guide](https://developer.nvidia.com/cuda-toolkit). |
|
|
| --- |
|
|
| ### Step 3: Install Video2X |
|
|
| --- |
|
|
| ### Option 1: Install Video2X by downloading Debian Package: |
|
|
|
|
| 1. **Download the Video2X `.deb` package**: |
| ```bash |
| wget -P services/upscaling/models https://github.com/k4yt3x/video2x/releases/download/6.3.1/video2x-linux-ubuntu2404-amd64.deb |
| ``` |
|
|
| 2. **Install the package using `dpkg`**: |
| ```bash |
| sudo dpkg -i services/upscaling/models/video2x-linux-ubuntu2404-amd64.deb |
| ``` |
|
|
| 3. **Resolve dependencies** (if any): |
| ```bash |
| sudo apt-get install -f |
| ``` |
|
|
| ### Option 2: Install Video2X by Building Debian Package: |
|
|
| 1. Install Cargo |
| Cargo is required to build the Video2X package: |
| ```bash |
| sudo apt-get update |
| sudo apt-get install cargo -y |
| cargo install just --version=1.39.0 |
| ``` |
|
|
| 2. Clone the Video2X Repository |
| you can clone this repository within the current vidaio-subnet package |
| ```bash |
| git clone --recurse-submodules https://github.com/vidAio-subnet/video2x |
| cd video2x |
| ``` |
|
|
| 3. Build the Video2X Project |
| Before building, ensure `~/.cargo/bin` is included in your `PATH` environment variable: |
| ```bash |
| export PATH="$HOME/.cargo/bin:$PATH" |
| ``` |
|
|
| Run the following command to build the package: |
| ```bash |
| just ubuntu2404 |
| ``` |
|
|
| Once the build is complete, the `.deb` package will be located in the current directory. |
|
|
| 4. Install the Built Package |
| Install the `.deb` package using: |
| ```bash |
| sudo dpkg -i video2x-linux-ubuntu-amd64.deb |
| ``` |
|
|
| --- |
| For additional details, refer to the [Video2X Documentation](https://docs.video2x.org/building/linux.html). |
|
|
| ## Running the Video Upscaling Endpoint |
|
|
| You can run the video upscaling endpoint using **PM2** to manage the process: |
|
|
| ```bash |
| pm2 start "python services/upscaling/server.py" --name video-upscaler |
| ``` |
|
|
| ### Notes: |
| - The `video-upscaler` process will handle video upscaling requests. |
| - Use the following PM2 commands to manage the process: |
| - **View Logs**: `pm2 logs video-upscaler` |
| - **Restart**: `pm2 restart video-upscaler` |
| - **Stop**: `pm2 stop video-upscaler` |
|
|
| --- |
|
|
| ## Running the Video Compression Endpoint |
|
|
| You can also run the video Compression endpoint using **PM2** to manage the process: |
|
|
| ```bash |
| pm2 start "python services/compress/server.py" --name video-compressor |
| ``` |
|
|
| --- |
|
|
| ## Running the file deletion process |
|
|
| You can run the file deletion process using **PM2** to manage the process: |
|
|
| ```bash |
| pm2 start "python services/miner_utilities/file_deletion_server.py" --name video-deleter |
| ``` |
|
|
| ## Running the Miner with PM2 |
|
|
| To run the miner, use the following command: |
|
|
| ```bash |
| pm2 start "python3 neurons/miner.py --wallet.name [Your_Wallet_Name] --wallet.hotkey [Your_Hotkey_Name] --subtensor.network finney --netuid 85 --axon.port [port] --logging.debug" --name video-miner |
| ``` |
|
|
| ### 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., `292`). |
| - **`--axon.port`**: Replace `[port]` with the desired port number. |
| - **`--logging.debug`**: Enables debug-level logging for detailed output. |
|
|
| ### Managing the Miner Process: |
| - **Start the Miner**: The above command will start the miner as a PM2 process named `video-miner`. |
| - **View Logs**: Use `pm2 logs video-miner` to monitor miner logs in real time. |
| - **Restart the Miner**: Use `pm2 restart video-miner` to restart the process. |
| - **Stop the Miner**: Use `pm2 stop video-miner` to stop the process. |
|
|
| --- |
|
|
| ## Additional Notes |
|
|
| - Ensure all dependencies are installed and configured correctly before running the miner. |
| - Use a high-performance GPU and sufficient system resources for optimal performance. |
| - For troubleshooting and debugging, refer to the logs available in PM2. |
|
|