Hardware · CUDA · Artificial intelligence

How I built my data science PC and installed CUDA

A personal and technical log of building my workstation—from choosing the components to getting Python and PyTorch to recognize the GPU correctly.

By Guillermo Fernández Vega Published in 2026 Approximate reading time: 10 minutes

This computer was not built only as a gaming machine. I assembled it as a tool for study, experimentation and professional development, capable of handling data analysis, machine learning, neural networks, image processing and locally executed AI projects.

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

Processor AMD Ryzen 7 9700X
Graphics card ASUS Prime GeForce RTX 5070 OC, 12 GB GDDR7
Motherboard ASRock X870 Steel Legend WiFi
Memory 32 GB Kingston Fury Beast DDR5 6400 CL32
Storage 2× Kingston NVMe SSDs — 1 TB (system) + 2 TB (data and projects)
Power supply and case Corsair 750 W and Corsair 480T Airflow

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

I did not build this computer alone; I assembled it with Angelo, a relative of mine and a network technician. His experience was essential for cable management, GPU installation and solving the first startup problems. Building together makes the process safer and teaches you twice as much.

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.

  1. I installed the Ryzen 7 9700X using the socket alignment marker.
  2. I mounted the cooling system and connected the fan to the CPU header.
  3. I installed the two RAM modules in the slots recommended by the manual.
  4. I installed the two Kingston NVMe SSDs (1 TB and 2 TB) with their heatsinks.
  5. I secured the motherboard inside the case.
  6. I installed the power supply and organized the main cables.
  7. I installed the RTX 5070 and connected its power correctly.
  8. I checked all connections, fans and the front panel before the first boot.
With a system at this level, it is worth taking time with cable routing, GPU power and memory installation. Most first-boot problems come from an incomplete connection, a poorly seated module or an aggressive memory configuration.

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:

  1. Install and verify the NVIDIA driver.
  2. Check the GPU with nvidia-smi.
  3. Install 64-bit Python.
  4. Create a virtual environment.
  5. Install a CUDA-compatible version of PyTorch.
  6. Run a real test from Python.

When the CUDA Toolkit is installed, the following command checks its compiler:

nvcc --version
It is not always necessary to install the full CUDA Toolkit manually to use PyTorch. Some PyTorch distributions include their own CUDA dependencies. The important thing is to follow the recommended installation for the PyTorch version and operating system being used.

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)
When the result shows a device such as 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.

Part 2 is available: I documented the real Superposition and Prime95 results, temperatures and memory configuration. View the benchmarks and stability tests →

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.