AI in the Thai Rainforest

From Server rental store
Jump to navigation Jump to search

AI in the Thai Rainforest: Server Configuration

This document details the server configuration supporting the “AI in the Thai Rainforest” project, a research initiative deploying machine learning models for biodiversity monitoring. This guide is intended for new system administrators joining the project and assumes a basic understanding of Linux server administration. We utilize a distributed system architecture to handle the large datasets generated by remote sensors.

Overview

The project relies on a cluster of servers located in a secure data center in Bangkok, Thailand, processing data streamed from various sensor nodes deployed within several rainforest locations. The data includes images from camera traps, audio recordings, and environmental sensor readings. Processing involves object detection (identifying animals in images), acoustic event classification (identifying animal calls), and anomaly detection (identifying unusual environmental changes). This requires substantial computational power and storage capacity. The core system is built using Ubuntu Server 22.04 LTS and leverages Kubernetes for orchestration. Data is stored in a PostgreSQL database and analyzed using Python based machine learning frameworks like TensorFlow and PyTorch. Network connectivity is provided via a dedicated 10 Gigabit Ethernet connection. SSH access is strictly controlled through key-based authentication.

Server Roles & Specifications

We have three primary server roles:

  • Ingestion Servers: Responsible for receiving data from sensor nodes, performing initial validation, and queuing it for processing.
  • Processing Servers: Execute the machine learning models, performing analysis on the queued data.
  • Database Servers: Store and manage the processed data and metadata.

The following tables detail the hardware specifications for each role.

Server Role CPU RAM Storage Network Interface
Ingestion Servers (x3) Intel Xeon Silver 4310 (12 cores) 64 GB DDR4 ECC 2 x 1 TB NVMe SSD (RAID 1) 10 Gigabit Ethernet
Processing Servers (x6) AMD EPYC 7763 (64 cores) 256 GB DDR4 ECC 4 x 4 TB NVMe SSD (RAID 0) + 2 x 8 TB HDD (RAID 1, archival) 10 Gigabit Ethernet + InfiniBand 40Gbps
Database Servers (x2) Intel Xeon Gold 6338 (32 cores) 128 GB DDR4 ECC 8 x 4 TB SAS HDD (RAID 6) 10 Gigabit Ethernet

Software Configuration

Each server runs Ubuntu Server 22.04 LTS. A consistent software stack is maintained using Ansible for configuration management. Key software components include:

  • Docker: Containerization platform for application deployment.
  • Kubernetes: Orchestration of Docker containers. We utilize a Minikube cluster for development and testing, and a production cluster managed through kubeadm.
  • PostgreSQL: Relational database for storing processed data and metadata. Configurations are managed via pg_hba.conf for secure access.
  • Nginx: Reverse proxy and load balancer for web-based access to data analysis tools.
  • Prometheus & Grafana: Monitoring and alerting system. We use Node Exporter to collect server metrics.
  • Fluentd: Log aggregation and forwarding. Logs are centralized using Elasticsearch.


Network Configuration

The servers are located within a private network segment with a dedicated subnet of 192.168.10.0/24. The network is secured by a firewall configured using iptables. Access to the servers from outside the local network is restricted to SSH via a jump host with multi-factor authentication. Internal communication between servers occurs over the private network. The following table details key network settings:

Component IP Address Role
Jump Host 192.168.10.1 Access Gateway
Ingestion Server 1 192.168.10.10 Data Ingestion
Processing Server 1 192.168.10.20 Machine Learning Processing
Database Server 1 192.168.10.30 Data Storage

Data Pipeline

The data flows through the following pipeline:

1. Sensor Nodes transmit data to the Ingestion Servers via MQTT. 2. Ingestion Servers validate the data format and queue it in a RabbitMQ message broker. 3. Processing Servers consume messages from the queue, execute machine learning models, and store the results in the Database Servers. 4. Data analysis tools (accessible via Nginx) query the Database Servers to visualize and analyze the results.


Security Considerations

Security is paramount. We implement the following measures:

  • Regular Security Audits: Performed quarterly by an external security firm.
  • Intrusion Detection System (IDS): Using Snort to monitor network traffic.
  • Vulnerability Scanning: Using OpenVAS to identify and remediate vulnerabilities.
  • Data Encryption: All data at rest and in transit is encrypted using TLS/SSL.
  • Principle of Least Privilege: Access controls are strictly enforced. Users only have access to the resources they need.


Future Considerations

We plan to explore the use of GPU acceleration on the Processing Servers to further improve performance. We are also investigating the integration of a distributed file system like Ceph to provide greater storage scalability and resilience. Finally, we are looking at migrating to a more modern container runtime like containerd.


Intel-Based Server Configurations

Configuration Specifications Benchmark
Core i7-6700K/7700 Server 64 GB DDR4, NVMe SSD 2 x 512 GB CPU Benchmark: 8046
Core i7-8700 Server 64 GB DDR4, NVMe SSD 2x1 TB CPU Benchmark: 13124
Core i9-9900K Server 128 GB DDR4, NVMe SSD 2 x 1 TB CPU Benchmark: 49969
Core i9-13900 Server (64GB) 64 GB RAM, 2x2 TB NVMe SSD
Core i9-13900 Server (128GB) 128 GB RAM, 2x2 TB NVMe SSD
Core i5-13500 Server (64GB) 64 GB RAM, 2x500 GB NVMe SSD
Core i5-13500 Server (128GB) 128 GB RAM, 2x500 GB NVMe SSD
Core i5-13500 Workstation 64 GB DDR5 RAM, 2 NVMe SSD, NVIDIA RTX 4000

AMD-Based Server Configurations

Configuration Specifications Benchmark
Ryzen 5 3600 Server 64 GB RAM, 2x480 GB NVMe CPU Benchmark: 17849
Ryzen 7 7700 Server 64 GB DDR5 RAM, 2x1 TB NVMe CPU Benchmark: 35224
Ryzen 9 5950X Server 128 GB RAM, 2x4 TB NVMe CPU Benchmark: 46045
Ryzen 9 7950X Server 128 GB DDR5 ECC, 2x2 TB NVMe CPU Benchmark: 63561
EPYC 7502P Server (128GB/1TB) 128 GB RAM, 1 TB NVMe CPU Benchmark: 48021
EPYC 7502P Server (128GB/2TB) 128 GB RAM, 2 TB NVMe CPU Benchmark: 48021
EPYC 7502P Server (128GB/4TB) 128 GB RAM, 2x2 TB NVMe CPU Benchmark: 48021
EPYC 7502P Server (256GB/1TB) 256 GB RAM, 1 TB NVMe CPU Benchmark: 48021
EPYC 7502P Server (256GB/4TB) 256 GB RAM, 2x2 TB NVMe CPU Benchmark: 48021
EPYC 9454P Server 256 GB RAM, 2x2 TB NVMe

Order Your Dedicated Server

Configure and order your ideal server configuration

Need Assistance?

⚠️ *Note: All benchmark scores are approximate and may vary based on configuration. Server availability subject to stock.* ⚠️