1. The goal of the system
During my Data Science Engineering studies, I began working with Python notebooks, Pandas, visualization, machine-learning models and neural networks. As the projects grew, so did the need for more memory, fast storage and a GPU compatible with NVIDIA’s ecosystem.
My goal was to build a balanced system: powerful enough to train models and process data, while also useful for web development, music production, multitasking and modern games.
2. Main components
The RTX 5070 was central to the project. Beyond graphics performance, an NVIDIA GPU enables CUDA and accelerates compatible workloads, especially in frameworks such as PyTorch.
The 32 GB of RAM is enough for a wide range of academic work, data analysis and medium-sized models. I still left room to expand to 64 GB if I later work with larger datasets, virtual machines or heavier training workloads.
3. The building process
The build began outside the case, with the processor, RAM and two Kingston NVMe drives installed on the motherboard first. This approach makes handling easier and helps verify that every component is seated correctly.
- I installed the Ryzen 7 9700X using the socket alignment marker.
- I mounted the cooling system and connected the fan to the CPU header.
- I installed the two RAM modules in the slots recommended by the manual.
- I installed the two Kingston NVMe SSDs (1 TB and 2 TB) with their heatsinks.
- I secured the motherboard inside the case.
- I installed the power supply and organized the main cables.
- I installed the RTX 5070 and connected its power correctly.
- I checked all connections, fans and the front panel before the first boot.
4. Windows, drivers and environment setup
After installing Windows, I first updated the operating system and then installed the AMD chipset, network, audio and GPU drivers. For CUDA, the NVIDIA driver must be working correctly before testing any framework.
The first check was to open a terminal and run:
nvidia-smi
This command confirms that Windows detects the card, the driver is loaded and the GPU can communicate correctly with the system.
I also prepared an isolated Python environment to avoid mixing libraries from different projects:
python -m venv .venv
.venv\Scripts\activate
python -m pip install --upgrade pip
5. Installing and verifying CUDA
One of the most important things I learned is that “having CUDA installed” can mean several different things. The NVIDIA driver includes what compatible applications need to use the GPU, while the CUDA Toolkit adds development tools, compilers and additional utilities.
I followed this order:
- Install and verify the NVIDIA driver.
- Check the GPU with
nvidia-smi. - Install 64-bit Python.
- Create a virtual environment.
- Install a CUDA-compatible version of PyTorch.
- Run a real test from Python.
When the CUDA Toolkit is installed, the following command checks its compiler:
nvcc --version
6. Testing with Python and PyTorch
The definitive check was not merely seeing the GPU in Windows, but getting the framework to recognize it from Python.
import torch print("PyTorch version:", torch.__version__) print("CUDA available:", torch.cuda.is_available()) if torch.cuda.is_available(): print("Detected GPU:", torch.cuda.get_device_name(0)) print("CUDA version used by PyTorch:", torch.version.cuda) else: print("PyTorch is running on the CPU only.")
To confirm that an operation could actually run on the graphics card, I tested by creating tensors directly in CUDA:
import torch device = torch.device("cuda" if torch.cuda.is_available() else "cpu") a = torch.rand((3000, 3000), device=device) b = torch.rand((3000, 3000), device=device) c = a @ b print("Device used:", c.device) print("Result:", c.shape)
cuda:0, it means the operation ran on the GPU and the environment is working correctly.
7. Problems and lessons learned
RAM and EXPO
One of the first difficulties was stability after enabling the EXPO memory profile. High frequencies may require memory training, BIOS updates or small adjustments. I learned that it is better to test the system at default settings first and enable EXPO only after confirming that everything works.
Drivers and displays
I also experienced some unusual behavior involving the monitors and graphics driver. That led me to check DisplayPort connections, reinstall the driver and test the system with HDR and adaptive synchronization disabled.
CUDA is not a visible application
At first, I expected a more obvious confirmation, as though CUDA were a traditional program. In reality, it is verified through tools, libraries and code. Seeing nvidia-smi, checking torch.cuda.is_available() and running a tensor on cuda:0 were much more useful tests.
Virtual environments prevent many problems
Installing each project in a separate virtual environment simplifies version management and reduces conflicts among Python, PyTorch, TensorFlow and other dependencies.
8. Final result
The result is a workstation capable of supporting several areas of my profile: data science, programming, artificial intelligence, music production, web development and gaming.
The RTX 5070 lets me experiment locally with deep-learning models, while the Ryzen 7 9700X and 32 GB of memory provide a solid foundation for multitasking, data analysis and more demanding projects.
Building this computer—with Angelo—was about more than choosing powerful components. It involved learning about compatibility, configuration, drivers, development environments and real-world troubleshooting.
The next step is to use that power to build concrete projects, document the results and continue turning technical learning into professional experience.